From 9013eb0015045dd7cdf7b1e3da5c6ca1dab27dbd Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 22 Jun 2021 12:43:15 +0000 Subject: [PATCH] Update content of files --- data/core.telegram.org/api.html | 251 ++ .../int.html => api/animated-emojis.html} | 54 +- data/core.telegram.org/api/auth.html | 209 -- .../{method/auth.sendCall => api/bots.html} | 103 +- data/core.telegram.org/api/bots/buttons.html | 242 -- data/core.telegram.org/api/bots/games.html | 171 - data/core.telegram.org/api/datacenter.html | 151 + data/core.telegram.org/api/dice.html | 149 + .../{bots/commands.html => discussion.html} | 53 +- .../{type/string.html => api/entities.html} | 49 +- data/core.telegram.org/api/files.html | 550 --- data/core.telegram.org/api/invoking.html | 155 + data/core.telegram.org/api/layers.html | 1446 -------- data/core.telegram.org/api/mentions.html | 152 - .../api/obtaining_api_id.html | 140 + data/core.telegram.org/api/offsets.html | 165 - data/core.telegram.org/api/payments.html | 366 ++ data/core.telegram.org/api/pfs.html | 138 + data/core.telegram.org/api/push-updates.html | 985 +++++ .../core.telegram.org/api/recent-actions.html | 154 + data/core.telegram.org/api/search.html | 179 + data/core.telegram.org/api/terms.html | 140 + data/core.telegram.org/api/top-rating.html | 145 - data/core.telegram.org/api/web-events.html | 177 + data/core.telegram.org/bots/2-0-intro.html | 230 ++ data/core.telegram.org/bots/games.html | 185 - data/core.telegram.org/bots/samples.html | 247 -- ...perNoFile.html => account.contentSettings} | 37 +- ...tionForm => account.passwordInputSettings} | 56 +- .../constructor/account.sentChangePhoneCode | 161 - ...oginTokenMigrateTo => account.tmpPassword} | 30 +- .../constructor/account.wallPapers | 155 + .../auth.authorizationSignUpRequired | 155 + .../constructor/auth.codeTypeFlashCall | 132 + ...rStatusLastMonth.html => auth.codeTypeSms} | 18 +- ...oad.cdnFile => auth.exportedAuthorization} | 27 +- .../constructor/autoDownloadSettings.html | 187 + ...ntactsReset.html => baseThemeClassic.html} | 18 +- ...{baseThemeDay.html => baseThemeNight.html} | 16 +- .../{inputChannelEmpty.html => boolTrue.html} | 18 +- .../constructor/botInfo.html | 157 + ...ze.html => botInlineMessageMediaAuto.html} | 55 +- ...html => botInlineMessageMediaContact.html} | 43 +- ...diaPoll.html => botInlineMessageText.html} | 42 +- .../{cdnConfig.html => cdnPublicKey.html} | 29 +- ...channelAdminLogEventActionChangeAbout.html | 152 + ...lAdminLogEventActionChangeLinkedChat.html} | 26 +- ...elAdminLogEventActionChangeStickerSet.html | 152 + ...dminLogEventActionDefaultBannedRights.html | 155 + ...annelAdminLogEventActionDeleteMessage.html | 147 + ...channelAdminLogEventActionEditMessage.html | 152 + ...lAdminLogEventActionParticipantInvite.html | 147 + ...elAdminLogEventActionParticipantLeave.html | 132 + ...annelAdminLogEventActionToggleInvites.html | 147 + ...elAdminLogEventActionToggleSignatures.html | 147 + .../{message.html => channelFull.html} | 261 +- .../constructor/channelParticipant.html | 152 + .../constructor/channelParticipantAdmin.html | 190 + ...ant.html => channelParticipantBanned.html} | 61 +- ...estDc.html => channelParticipantSelf.html} | 32 +- .../channelParticipantsMentions.html | 161 - .../channelParticipantsSearch.html | 147 + ...inactiveChats => channels.adminLogResults} | 28 +- ...highScores => channels.channelParticipant} | 26 +- .../constructor/chatForbidden.html | 152 + .../{peerSettings.html => chatInvite.html} | 62 +- ...atPhotoEmpty.html => chatInviteEmpty.html} | 18 +- ...lp.supportName => chatInviteExported.html} | 22 +- .../constructor/chatParticipantAdmin.html | 157 + .../constructor/chatPhotoEmpty.html | 132 + .../constructor/contact.html | 152 + .../{updates.html => contacts.blockedSlice} | 43 +- .../{messages.messages => contacts.contacts} | 32 +- ...serName.html => contacts.importedContacts} | 44 +- .../{messageService.html => dcOption.html} | 94 +- .../constructor/decryptedMessage.html | 217 ++ .../decryptedMessageActionRequestKey.html | 155 + ... decryptedMessageActionSetMessageTTL.html} | 23 +- .../decryptedMessageActionTyping.html | 148 - .../constructor/decryptedMessageLayer.html | 173 - ....state => decryptedMessageMediaAudio.html} | 50 +- .../decryptedMessageMediaContact.html | 163 + .../decryptedMessageMediaDocument.html | 191 + ...ecryptedMessageMediaExternalDocument.html} | 59 +- .../decryptedMessageMediaWebPage.html | 148 + .../constructor/disabledFeature.html | 163 - .../constructor/document.html | 200 + .../documentAttributeAnimated.html | 132 + ...Audio.html => documentAttributeVideo.html} | 44 +- .../constructor/documentEmpty.html | 147 + ...otModified.html => draftMessageEmpty.html} | 22 +- ...inputThemeSlug.html => emojiLanguage.html} | 22 +- ...tedChatWaiting.html => encryptedChat.html} | 32 +- ...rChat.html => encryptedChatDiscarded.html} | 22 +- ...atOnlines.html => encryptedChatEmpty.html} | 22 +- .../constructor/encryptedChatRequested.html | 185 + .../{fileLocation.html => encryptedFile.html} | 69 +- ...tbox.html => encryptedMessageService.html} | 42 +- ...tDialogPeerFolder.html => folderPeer.html} | 23 +- ...{help.termsOfService => help.deepLinkInfo} | 38 +- .../help.passportConfigNotModified | 132 - ...ccountDaysTTL.html => help.promoDataEmpty} | 22 +- .../help.termsOfServiceUpdateEmpty | 150 - .../help.userInfo} | 36 +- ...nputPeerUser.html => importedContact.html} | 26 +- .../inputBotInlineMessageMediaAuto.html | 165 + ...tml => inputBotInlineMessageMediaGeo.html} | 50 +- ...l => inputBotInlineMessageMediaVenue.html} | 56 +- ...html => inputBotInlineResultDocument.html} | 38 +- .../constructor/inputBotInlineResultGame.html | 157 + ...ze.html => inputBotInlineResultPhoto.html} | 41 +- .../constructor/inputClientProxy.html | 154 + ...eAllowAll.html => inputDocumentEmpty.html} | 18 +- .../constructor/inputEncryptedChat.html | 159 + .../inputEncryptedFileUploaded.html | 162 + .../constructor/inputFileBig.html | 160 + .../constructor/inputFileLocation.html | 165 + .../{inputChannel.html => inputGameID.html} | 30 +- .../constructor/inputGameShortName.html | 152 + ...StickerSetItem.html => inputGeoPoint.html} | 36 +- ...n.html => inputKeyboardButtonUrlAuth.html} | 61 +- .../constructor/inputMediaGeoLive.html | 175 + ...MediaGame.html => inputMediaGeoPoint.html} | 22 +- ...onCallback.html => inputMediaInvoice.html} | 66 +- ...logs.html => inputMediaUploadedPhoto.html} | 39 +- .../inputMessageCallbackQuery.html | 152 + ...essageReplyTo.html => inputMessageID.html} | 18 +- .../inputMessagesFilterContacts.html | 132 + .../constructor/inputMessagesFilterEmpty.html | 132 + ...oAppUpdate => inputMessagesFilterGif.html} | 18 +- .../constructor/inputMessagesFilterMusic.html | 132 + ...tml => inputMessagesFilterMyMentions.html} | 22 +- .../inputMessagesFilterPhoneCalls.html | 152 + ...ts.html => inputMessagesFilterPhotos.html} | 18 +- ...tml => inputMessagesFilterRoundVoice.html} | 18 +- .../constructor/inputMessagesFilterUrl.html | 132 + ...rnal.html => inputPaymentCredentials.html} | 30 +- .../inputPaymentCredentialsAndroidPay.html | 152 + ...s => inputPaymentCredentialsApplePay.html} | 24 +- ...html => inputPaymentCredentialsSaved.html} | 37 +- .../constructor/inputPeerEmpty.html | 132 + .../{inputTheme.html => inputPhoneCall.html} | 20 +- .../constructor/inputPhoneContact.html | 166 + .../constructor/inputPhoto.html | 162 + .../constructor/inputPhotoEmpty.html | 132 + .../constructor/inputPhotoFileLocation.html | 171 + ...mber.html => inputPrivacyKeyPhoneP2P.html} | 18 +- .../inputPrivacyKeyProfilePhoto.html | 132 + ...=> inputPrivacyValueDisallowContacts.html} | 12 +- .../inputPrivacyValueDisallowUsers.html | 147 + .../inputReportReasonCopyright.html | 132 + .../constructor/inputReportReasonOther.html | 147 + .../inputReportReasonPornography.html | 132 + ...ty.html => inputReportReasonViolence.html} | 18 +- ...sageReplies.html => inputSecureValue.html} | 73 +- .../constructor/inputSingleMedia.html | 174 + .../inputStickerSetAnimatedEmoji.html | 132 + .../constructor/inputStickerSetShortName.html | 147 + .../constructor/inputStickeredMediaPhoto.html | 147 + ...ySettings.html => inputThemeSettings.html} | 67 +- ...Message.html => inputUserFromMessage.html} | 26 +- .../constructor/inputWallPaperSlug.html | 147 + ...{messageMediaInvoice.html => invoice.html} | 73 +- ...ageListItemBlocks.html => jsonObject.html} | 24 +- .../{dataJSON.html => jsonString.html} | 22 +- .../constructor/keyboardButtonBuy.html | 147 + .../constructor/keyboardButtonGame.html | 147 + ...n.html => keyboardButtonRequestPhone.html} | 16 +- ...ountry => keyboardButtonSwitchInline.html} | 40 +- ...th.sentAppCode => langPackDifference.html} | 43 +- .../constructor/langPackStringDeleted.html | 147 + .../constructor/messageActionBotAllowed.html | 149 + ...l => messageActionChannelMigrateFrom.html} | 28 +- ...os.photo => messageActionChatAddUser.html} | 27 +- .../messageActionChatEditTitle.html | 147 + .../messageActionChatJoinedByLink.html | 147 + .../messageActionCustomAction.html | 147 + .../constructor/messageActionEmpty.html | 132 + .../constructor/messageActionGameScore.html | 152 + .../messageActionHistoryClear.html | 132 + .../messageActionPaymentSentMe.html | 179 + .../constructor/messageActionPinMessage.html | 132 + .../messageActionScreenshotTaken.html | 132 + ...l => messageActionSecureValuesSentMe.html} | 36 +- .../{photoEmpty.html => messageEmpty.html} | 22 +- .../constructor/messageEntityBankCard.html | 152 + ...ntityPhone.html => messageEntityBold.html} | 16 +- ...htag.html => messageEntityBotCommand.html} | 16 +- .../constructor/messageEntityMentionName.html | 162 + ...tyItalic.html => messageEntityStrike.html} | 16 +- .../constructor/messageEntityTextUrl.html | 160 + .../constructor/messageEntityUnderline.html | 152 - ...Hashtag.html => messageEntityUnknown.html} | 16 +- .../messageInteractionCounters.html | 157 + ...ckerSetDice.html => messageMediaDice.html} | 23 +- .../constructor/messageMediaGeoLive.html | 170 + .../constructor/messageMediaPoll.html | 152 + ...MediaVenue.html => messageMediaVenue.html} | 26 +- ...werVoters.html => messageReplyHeader.html} | 51 +- .../constructor/messages.affectedHistory | 157 - .../constructor/messages.chatsSlice | 155 + ...s.statedMessagesLinks => messages.dialogs} | 44 +- ...odeTypeSms => messages.dialogsNotModified} | 22 +- .../constructor/messages.dialogsSlice | 167 + ...nInbox.html => messages.discussionMessage} | 61 +- .../messages.featuredStickersNotModified | 147 + ...d => messages.foundStickerSetsNotModified} | 18 +- ...tion.html => messages.messagesNotModified} | 22 +- .../constructor/messages.messagesSlice | 185 - ...aturedStickers => messages.recentStickers} | 36 +- .../{messages.stickers => messages.savedGifs} | 22 +- ...Modified => messages.savedGifsNotModified} | 18 +- .../messages.stickerSetInstallResultArchive | 147 + ...notifyChats.html => notifyBroadcasts.html} | 16 +- .../constructor/notifyPeer.html | 147 + data/core.telegram.org/constructor/null.html | 132 + .../constructor/pageBlockAnchor.html | 147 + .../constructor/pageBlockEmbedPost.html | 177 + .../constructor/pageBlockMap.html | 167 + ...cipantCreator.html => pageBlockPhoto.html} | 39 +- ...Paragraph.html => pageBlockSubheader.html} | 18 +- ...eRequiredType.html => pageBlockVideo.html} | 38 +- .../constructor/pageListOrderedItemText.html | 152 + ...CallbackAnswer => pageRelatedArticle.html} | 73 +- .../{pageBlockList.html => pageTableRow.html} | 24 +- ...BKDF2HMACSHA512iter100000SHA256ModPow.html | 165 - .../{botCommand.html => paymentCharge.html} | 26 +- ....html => paymentSavedCredentialsCard.html} | 25 +- ...PackLanguage.html => payments.paymentForm} | 97 +- .../payments.paymentVerificationNeeded | 147 + .../{updateTheme.html => peerChannel.html} | 24 +- .../{messageMediaVideo.html => peerUser.html} | 24 +- .../phoneCallDiscardReasonDisconnect.html | 132 + .../phoneCallDiscardReasonMissed.html | 132 + .../constructor/phoneCallProtocol.html | 179 + ...lAccepted.html => phoneCallRequested.html} | 32 +- .../constructor/phoneCallWaiting.html | 187 + .../constructor/phoneConnection.html | 167 + .../{userProfilePhoto.html => photo.html} | 61 +- .../constructor/photoSize.html | 172 - .../constructor/photos.photosSlice | 157 + data/core.telegram.org/constructor/poll.html | 195 + ...pdateDraftMessage.html => pollAnswer.html} | 34 +- ...ctionAbortKey.html => popularContact.html} | 28 +- ...yPhoneP2P.html => privacyKeyForwards.html} | 16 +- ...nvite.html => privacyKeyProfilePhoto.html} | 16 +- .../privacyValueAllowChatParticipants.html | 147 + ...ow.html => privacyValueDisallowUsers.html} | 24 +- ...MeUrlUnknown.html => recentMeUrlChat.html} | 23 +- .../constructor/recentMeUrlChatInvite.html | 152 + .../constructor/recentMeUrlStickerSet.html | 152 + ...rceReply.html => replyKeyboardMarkup.html} | 28 +- .../constructor/savedPhoneContact.html | 162 + ...direct => secureCredentialsEncrypted.html} | 42 +- ...ecureFileUploaded.html => secureData.html} | 43 +- ...ckerSetEmpty.html => secureFileEmpty.html} | 12 +- .../securePasswordKdfAlgoSHA512.html | 147 + ...tSecureFile.html => securePlainPhone.html} | 29 +- .../constructor/secureValue.html | 194 + ... => secureValueErrorTranslationFiles.html} | 32 +- ...html => secureValueTypeBankStatement.html} | 16 +- ...l => secureValueTypeInternalPassport.html} | 16 +- ...assport.html => secureValueTypePhone.html} | 16 +- ...ml => secureValueTypeRentalAgreement.html} | 16 +- ...d.html => secureValueTypeUtilityBill.html} | 16 +- .../constructor/sendMessageCancelAction.html | 132 - .../sendMessageChooseContactAction.html | 132 - ...on.html => sendMessageGamePlayAction.html} | 16 +- .../sendMessageRecordRoundAction.html | 132 - .../constructor/stats.megagroupStats | 230 -- ...opInviter.html => statsDateRangeDays.html} | 26 +- ...PercentValue.html => statsGraphError.html} | 30 +- .../constructor/statsGroupTopAdmin.html | 165 - ...BlockCover.html => stickerSetCovered.html} | 27 +- .../constructor/storage.fileJpeg | 132 + .../constructor/storage.fileMp4 | 132 + ...ueDisallowAll.html => storage.filePartial} | 18 +- .../constructor/storage.filePdf | 132 + .../constructor/storage.fileUnknown | 132 + .../constructor/storage.fileWebp | 132 + .../{pageCaption.html => textEmail.html} | 26 +- .../constructor/textEmpty.html | 132 + .../constructor/textFixed.html | 147 + ...AttributeImageSize.html => textImage.html} | 27 +- .../{pageBlockKicker.html => textItalic.html} | 20 +- ...eBlockPreformatted.html => textPhone.html} | 22 +- .../constructor/textStrike.html | 147 + .../constructor/textSubscript.html | 147 + ...ll.html => topPeerCategoryBotsInline.html} | 18 +- ...ivider.html => topPeerCategoryBotsPM.html} | 18 +- .../constructor/topPeerCategoryPeers.html | 157 + .../topPeerCategoryPhoneCalls.html | 132 + .../constructor/updateBotCallbackQuery.html | 182 + .../constructor/updateBotInlineSend.html | 172 + .../updateBotPrecheckoutQuery.html | 184 + ...angPack.html => updateBotWebhookJSON.html} | 22 +- .../updateBotWebhookJSONQuery.html | 157 + .../updateChannelMessageForwards.html | 157 + ...Participants.html => updateDcOptions.html} | 22 +- ...ontents.html => updateDeleteMessages.html} | 22 +- ...lter.html => updateDialogFilterOrder.html} | 32 +- ...Order.html => updateDialogUnreadMark.html} | 26 +- ...ffectedMessages => updateEditMessage.html} | 27 +- ....html => updateEncryptedMessagesRead.html} | 26 +- ...oLiveViewed.html => updateEncryption.html} | 26 +- .../constructor/updateFavedStickers.html | 135 + .../constructor/updateLangPackTooLong.html | 150 + ...ages.html => updateNewChannelMessage.html} | 27 +- .../updateNewEncryptedMessage.html | 152 + .../constructor/updateNewStickerSet.html | 147 - .../constructor/updateNotifySettings.html | 152 - ...eerBlocked.html => updatePeerLocated.html} | 27 +- ...Inbox.html => updateReadChannelInbox.html} | 35 +- ...eStickerSets.html => updateSavedGifs.html} | 16 +- .../constructor/updateShortSentMessage.html | 187 + .../constructor/updateUserBlocked.html | 159 - ...pantCreator.html => updateUserStatus.html} | 25 +- ...erBlocked.html => updates.differenceEmpty} | 30 +- .../constructor/updates.differenceSlice | 175 + ...ccepted.html => urlAuthResultDefault.html} | 29 +- .../constructor/urlAuthResultRequest.html | 165 + .../constructor/userProfilePhotoEmpty.html | 132 + .../constructor/userStatusOffline.html | 147 - .../constructor/wallPaper.html | 192 + .../constructor/webDocument.html | 167 + .../constructor/webPage.html | 240 ++ .../core.telegram.org/css/bootstrap-extra.css | 3274 ----------------- data/core.telegram.org/css/telegram-extra.css | 246 -- data/core.telegram.org/js/jquery-ui.min.js | 9 - .../js/telegram-passport2.js | 413 --- ...kUsername => account.confirmPasswordEmail} | 36 +- .../method/account.finishTakeoutSession | 172 - .../method/account.getAutoDownloadSettings | 134 - .../method/account.getPassword | 134 - .../{account.createTheme => account.getTheme} | 66 +- .../method/account.getWallPapers | 153 + ...s.saveDraft => account.initTakeoutSession} | 71 +- ...rAllDrafts => account.resendPasswordEmail} | 20 +- ...NotifySettings => account.resetWallPapers} | 16 +- ...installWallPaper => account.saveWallPaper} | 23 +- .../method/account.sendConfirmPhoneCode | 174 + ...nstallStickerSet => account.setAccountTTL} | 26 +- ...ialogUnread => account.setContentSettings} | 25 +- ...tings => account.setGlobalPrivacySettings} | 33 +- ...{account.getPrivacy => account.setPrivacy} | 28 +- .../method/account.unregisterDevice | 180 - ...dEncryption => account.updateDeviceLocked} | 52 +- .../method/account.updateTheme | 179 - .../method/account.updateUsername | 182 - .../method/account.uploadWallPaper | 160 + .../method/auth.bindTempAuthKey | 257 -- .../{account.confirmPhone => auth.cancelCode} | 36 +- .../method/auth.exportLoginToken | 166 - ...uth.checkPassword => auth.recoverPassword} | 40 +- .../{account.verifyPhone => auth.resendCode} | 47 +- ...help.hidePromoData => bots.setBotCommands} | 22 +- ...deleteMessages => channels.deleteMessages} | 51 +- ...ages.sendMultiMedia => channels.editAdmin} | 165 +- ...annels.editCreator => channels.editBanned} | 54 +- ...teNotifySettings => channels.editLocation} | 57 +- .../method/channels.editTitle | 201 + .../method/channels.exportMessageLink | 204 + ...esolveUsername => channels.getFullChannel} | 55 +- ...PinnedDialogs => channels.getLeftChannels} | 37 +- ...iscussionGroup => channels.getParticipant} | 63 +- ...essages.sendVote => channels.leaveChannel} | 62 +- ...adMessageContents => channels.readHistory} | 22 +- ....saveRecentSticker => channels.reportSpam} | 56 +- .../method/channels.toggleSlowMode | 200 + ...unt.reportPeer => channels.updateUsername} | 67 +- .../method/contacts.addContact | 212 -- .../method/contacts.blockFromReplies | 179 - .../method/contacts.getBlocked | 155 + .../method/contacts.getContacts | 155 + .../method/contacts.getLocated | 192 - .../{upload.getFile => contacts.getTopPeers} | 136 +- data/core.telegram.org/method/contacts.search | 178 - ...tNotifyExceptions => folders.deleteFolder} | 37 +- .../method/help.getAppChangelog | 162 - ....resetAuthorizations => help.getAppConfig} | 48 +- data/core.telegram.org/method/help.getConfig | 202 - .../{help.getInviteText => help.getSupport} | 20 +- .../method/help.getTermsOfServiceUpdate | 135 - ...rtBotAuthorization => initConnection.html} | 92 +- .../method/invokeAfterMsg.html | 154 + ...adDiscussion => invokeWithoutUpdates.html} | 44 +- ...ck.getLanguages => langpack.getDifference} | 31 +- .../method/messages.acceptEncryption | 190 - ...teRequestedInfo => messages.deleteHistory} | 58 +- ...tacts => messages.deleteScheduledMessages} | 27 +- .../method/messages.editChatTitle | 193 + ...sages.sendMessage => messages.editMessage} | 169 +- ...lineBotResult => messages.forwardMessages} | 128 +- .../method/messages.getAllDrafts | 143 + ....getUserPhotos => messages.getCommonChats} | 41 +- .../method/messages.getDhConfig | 175 - .../method/messages.getDialogs | 218 ++ .../method/messages.getDiscussionMessage | 162 + ...fo => messages.getEmojiKeywordsDifference} | 30 +- ...tChannelDifference => messages.getHistory} | 116 +- ...syncGraph => messages.getInlineBotResults} | 89 +- .../method/messages.getMessageReactionsList | 178 + .../method/messages.getMessages | 153 + ...Stickers => messages.getMessagesReactions} | 31 +- .../method/messages.getMessagesViews | 199 + .../method/messages.getOldFeaturedStickers | 163 + .../method/messages.getPeerSettings | 171 - ...es.migrateChat => messages.getPollResults} | 44 +- .../method/messages.getScheduledHistory | 182 + ...tDialogFilters => messages.getSplitRanges} | 21 +- ....getCountriesList => messages.getStickers} | 27 +- ...earchGlobal => messages.getUnreadMentions} | 89 +- ...koutResults => messages.getWebPagePreview} | 61 +- ...ateStatus => messages.hidePeerSettingsBar} | 28 +- .../method/messages.installStickerSet | 172 - .../{contacts.block => messages.reportSpam} | 35 +- .../method/messages.requestEncryption | 185 - .../method/messages.requestUrlAuth | 164 - data/core.telegram.org/method/messages.search | 286 ++ ...StickerSets => messages.searchStickerSets} | 46 +- .../method/messages.sendEncryptedService | 200 + .../method/messages.sendMedia | 438 --- ...ameScore => messages.setBotCallbackAnswer} | 54 +- .../method/messages.setBotShippingResults | 186 - .../method/messages.toggleDialogPin | 177 - ...getCdnConfig => messages.unpinAllMessages} | 37 +- .../method/payments.clearSavedInfo | 160 - ...tRecentMeUrls => payments.getBankCardData} | 24 +- ...essageEditData => payments.getPaymentForm} | 44 +- ...endReaction => payments.getPaymentReceipt} | 45 +- .../method/payments.sendPaymentForm | 190 + ...{help.getNearestDc => phone.getCallConfig} | 20 +- .../method/phone.receivedCall | 172 - .../{phone.acceptCall => phone.requestCall} | 74 +- .../method/phone.sendSignalingData | 156 + ...{phone.discardCall => phone.setCallRating} | 44 +- ...elp.getSupportName => photos.deletePhotos} | 37 +- ...dateDialogFilter => stats.getMessageStats} | 47 +- .../method/stickers.changeStickerPosition | 177 + .../method/stickers.createStickerSet | 257 -- ...ickerToSet => stickers.setStickerSetThumb} | 29 +- ...oad.getCdnFileHashes => upload.getCdnFile} | 54 +- data/core.telegram.org/mtproto.html | 260 ++ .../mtproto/TL-abstract-types.html | 202 - .../mtproto/TL-combinators.html | 251 -- data/core.telegram.org/mtproto/TL-formal.html | 319 ++ .../core.telegram.org/mtproto/TL-optargs.html | 151 + .../Audio.html => mtproto/TL-patterns.html} | 43 +- data/core.telegram.org/mtproto/TL-tl.html | 308 ++ .../auth.sendSms => mtproto/TL-types.html} | 79 +- data/core.telegram.org/mtproto/auth_key.html | 202 + .../mtproto/description.html | 242 -- .../mtproto/security_guidelines.html | 177 + data/core.telegram.org/passport/example.html | 585 --- .../passport/sdk-ios-mac.html | 246 ++ data/core.telegram.org/schema.html | 1651 +++++++++ .../schema/end-to-end-json.html | 1 + data/core.telegram.org/schema/end-to-end.html | 225 ++ .../tdlib/getting-started.html | 198 + ...{EncryptedFile.html => Authorization.html} | 31 +- .../type/BankCardOpenUrl.html | 143 + data/core.telegram.org/type/Bool.html | 662 ++++ .../type/BotInlineResult.html | 148 - .../type/ChannelAdminLogEvent.html | 143 + .../type/ChannelAdminLogEventAction.html | 243 ++ ...gesFilter.html => ChannelParticipant.html} | 42 +- .../type/ChannelParticipantsFilter.html | 178 - .../type/{ChatParticipants.html => Chat.html} | 41 +- .../type/ChatBannedRights.html | 146 - .../{payments.SavedInfo => ChatOnlines.html} | 26 +- data/core.telegram.org/type/ChatPhoto.html | 148 + data/core.telegram.org/type/Config.html | 162 - .../type/{ContactStatus.html => Contact.html} | 20 +- .../{Video.html => DecryptedDataBlock.html} | 16 +- data/core.telegram.org/type/Dialog.html | 148 - data/core.telegram.org/type/DialogFilter.html | 143 - .../{InputDialogPeer.html => DialogPeer.html} | 26 +- .../type/DocumentAttribute.html | 173 - ...{MessageReplies.html => DraftMessage.html} | 29 +- ...rofilePhoto.html => EncryptedMessage.html} | 26 +- .../type/{FolderPeer.html => Error.html} | 20 +- .../type/{Folder.html => HighScore.html} | 20 +- ...dButtonRow.html => InlineBotSwitchPM.html} | 20 +- ...putPeer.html => InputBotInlineResult.html} | 53 +- .../{InputDocument.html => InputContact.html} | 25 +- .../type/InputEncryptedChat.html | 143 + data/core.telegram.org/type/InputFile.html | 148 - .../type/{InputTheme.html => InputGame.html} | 26 +- ...User.html => InputPaymentCredentials.html} | 38 +- ...putFolderPeer.html => InputPhoneCall.html} | 20 +- .../{InputAppEvent.html => InputPhoto.html} | 25 +- .../type/InputPrivacyKey.html | 178 + .../type/InputStickeredMedia.html | 148 + data/core.telegram.org/type/Invoice.html | 143 + .../type/JSONObjectValue.html | 143 + .../type/{phone.PhoneCall => JSONValue.html} | 61 +- data/core.telegram.org/type/MaskCoords.html | 143 - .../{MessageUserVote.html => Message.html} | 32 +- .../type/MessageInteractionCounters.html | 143 + ...Feature.html => MessageReactionsList.html} | 14 +- ...MessageAction.html => MessagesFilter.html} | 112 +- data/core.telegram.org/type/Page.html | 143 + ...RelatedArticle.html => PageTableCell.html} | 20 +- data/core.telegram.org/type/PageTableRow.html | 143 + .../type/PaymentSavedCredentials.html | 143 + .../type/PeerNotifySettings.html | 162 + .../type/PhoneCallProtocol.html | 143 - data/core.telegram.org/type/Photo.html | 148 - data/core.telegram.org/type/Poll.html | 143 + .../type/PollAnswerVoters.html | 143 + ...DownloadSettings.html => PollResults.html} | 20 +- .../{UrlAuthResult.html => PrivacyRule.html} | 77 +- .../{ChatInvite.html => ReportReason.html} | 63 +- data/core.telegram.org/type/SecureData.html | 146 + .../type/SecureSecretSettings.html | 145 + data/core.telegram.org/type/StatsGraph.html | 172 - .../type/StatsGroupTopInviter.html | 146 + ...allPaper.html => StatsGroupTopPoster.html} | 35 +- .../{FileLocation.html => StickerPack.html} | 20 +- .../type/StickerSetCovered.html | 148 + .../core.telegram.org/type/ThemeSettings.html | 143 + .../type/{BotInfo.html => TopPeer.html} | 20 +- .../{Document.html => TopPeerCategory.html} | 77 +- .../type/TopPeerCategoryPeers.html | 143 + data/core.telegram.org/type/True.html | 145 + data/core.telegram.org/type/Update.html | 562 --- .../{LangPackLanguage.html => UserFull.html} | 26 +- data/core.telegram.org/type/Vector t.html | 143 + data/core.telegram.org/type/VideoSize.html | 143 + .../type/WebAuthorization.html | 143 + data/core.telegram.org/type/WebDocument.html | 148 - .../messages.getWebPage => type/WebPage.html} | 70 +- data/core.telegram.org/type/account.Password | 162 - .../type/account.SentChangePhoneCode | 128 - .../type/account.SentEmailCode | 162 + ...ccount.ContentSettings => account.Takeout} | 26 +- data/core.telegram.org/type/account.Themes | 167 + .../core.telegram.org/type/account.WallPapers | 167 + .../type/{User.html => auth.Authorization} | 59 +- data/core.telegram.org/type/auth.CodeType | 153 + .../type/auth.ExportedAuthorization | 162 + ...wordKdfAlgo.html => auth.PasswordRecovery} | 40 +- ...eLink.html => channels.ChannelParticipant} | 26 +- ...ntacts.Found => contacts.ImportedContacts} | 26 +- data/core.telegram.org/type/double.html | 118 - data/core.telegram.org/type/help.CountryCode | 143 - data/core.telegram.org/type/help.InviteText | 162 + .../type/help.PassportConfig | 169 + .../type/{help.SupportName => help.Support} | 26 +- ...lp.PromoData => help.TermsOfServiceUpdate} | 32 +- ...sages.MessageViews => messages.BotResults} | 26 +- data/core.telegram.org/type/messages.DhConfig | 167 - ...llbackAnswer => messages.FoundStickerSets} | 31 +- data/core.telegram.org/type/messages.Messages | 229 ++ ...sages.InactiveChats => messages.SavedGifs} | 31 +- .../type/messages.SearchCounter | 143 + ....StatedMessages => messages.StatedMessage} | 14 +- .../type/payments.PaymentReceipt | 162 + ...Difference.html => payments.PaymentResult} | 36 +- ...sages.AffectedHistory => storage.FileType} | 88 +- .../type/updates.ChannelDifference | 172 - .../{account.Authorizations => updates.State} | 26 +- .../type/{upload.WebFile => upload.CdnFile} | 31 +- data/core.telegram.org/type/upload.File | 167 + data/core.telegram.org/widgets/login.html | 404 -- data/desktop.telegram.org/changelog.html | 249 ++ data/instantview.telegram.org/checklist.html | 624 ---- data/instantview.telegram.org/rules.html | 251 ++ data/telegram.org.html | 284 ++ data/telegram.org/blog.html | 268 ++ data/telegram.org/blog/6-years.html | 1355 +++++++ data/telegram.org/blog/android-streaming.html | 241 ++ .../{polls.html => android-wear-2-0.html} | 56 +- .../blog/{channels.html => apple-watch.html} | 51 +- .../blog/archive-and-new-design.html | 318 ++ data/telegram.org/blog/autoplay.html | 245 ++ .../{supergroups.html => bot-revolution.html} | 124 +- .../blog/{games.html => bots-2-0.html} | 98 +- data/telegram.org/blog/calls.html | 266 -- ...link-preview.html => desktop-compact.html} | 36 +- ...0.html => discover-stickers-and-more.html} | 65 +- data/telegram.org/blog/edit.html | 245 ++ data/telegram.org/blog/folders.html | 298 -- data/telegram.org/blog/instant-camera.html | 229 ++ data/telegram.org/blog/invite-links.html | 217 ++ data/telegram.org/blog/login.html | 257 ++ data/telegram.org/blog/moar-stickers.html | 343 ++ ...s.html => new-profiles-people-nearby.html} | 98 +- .../blog/photo-editor-and-passcodes.html | 252 -- .../{payments.html => pin-and-ifttt.html} | 108 +- .../blog/privacy-discussions-web-bots.html | 284 ++ ...-hashtags.html => privacy-revolution.html} | 70 +- ...profile-videos-people-nearby-and-more.html | 315 ++ .../blog/scheduled-reminders-themes.html | 264 ++ data/telegram.org/blog/search-and-media.html | 232 ++ data/telegram.org/blog/supergroups5k.html | 232 ++ .../blog/{desktop-1-0.html => tdlib.html} | 82 +- ...end-and-usage.html => telegram-5-ios.html} | 115 +- data/telegram.org/blog/telegram-x.html | 262 ++ .../blog/{passport.html => telegraph.html} | 73 +- ...or-gifs.html => unsend-privacy-emoji.html} | 95 +- ...hannels-2-0.html => voice-2-secret-3.html} | 79 +- data/telegram.org/blog/voice-chats.html | 311 -- .../blog/winter-contest-ends.html | 224 -- data/telegram.org/faq_channels.html | 165 + data/telegram.org/faq_spam.html | 163 + data/telegram.org/jobs.html | 156 + data/telegram.org/js/games.js | 206 -- data/telegram.org/press.html | 194 + data/telegram.org/privacy.html | 294 ++ data/telegram.org/privacy/gmailbot.html | 161 - .../{api.html => template31.html} | 2 +- data/telegram.org/teststore.html | 284 ++ data/telegram.org/tour/channels.html | 294 -- data/telegram.org/tour/groups.html | 266 -- data/telegram.org/tour/quizbot.html | 213 ++ data/telegram.org/tour/screenshots.html | 217 ++ data/translations.telegram.org.html | 297 -- data/translations.telegram.org/en.html | 333 -- .../en/android_x.html | 388 -- .../en/tdesktop.html | 388 -- 621 files changed, 51060 insertions(+), 30859 deletions(-) create mode 100644 data/core.telegram.org/api.html rename data/core.telegram.org/{type/int.html => api/animated-emojis.html} (51%) delete mode 100644 data/core.telegram.org/api/auth.html rename data/core.telegram.org/{method/auth.sendCall => api/bots.html} (55%) delete mode 100644 data/core.telegram.org/api/bots/buttons.html delete mode 100644 data/core.telegram.org/api/bots/games.html create mode 100644 data/core.telegram.org/api/datacenter.html create mode 100644 data/core.telegram.org/api/dice.html rename data/core.telegram.org/api/{bots/commands.html => discussion.html} (52%) rename data/core.telegram.org/{type/string.html => api/entities.html} (54%) delete mode 100644 data/core.telegram.org/api/files.html create mode 100644 data/core.telegram.org/api/invoking.html delete mode 100644 data/core.telegram.org/api/layers.html delete mode 100644 data/core.telegram.org/api/mentions.html create mode 100644 data/core.telegram.org/api/obtaining_api_id.html delete mode 100644 data/core.telegram.org/api/offsets.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/push-updates.html create mode 100644 data/core.telegram.org/api/recent-actions.html create mode 100644 data/core.telegram.org/api/search.html create mode 100644 data/core.telegram.org/api/terms.html delete mode 100644 data/core.telegram.org/api/top-rating.html create mode 100644 data/core.telegram.org/api/web-events.html create mode 100644 data/core.telegram.org/bots/2-0-intro.html delete mode 100644 data/core.telegram.org/bots/games.html delete mode 100644 data/core.telegram.org/bots/samples.html rename data/core.telegram.org/constructor/{wallPaperNoFile.html => account.contentSettings} (86%) rename data/core.telegram.org/constructor/{account.authorizationForm => account.passwordInputSettings} (76%) delete mode 100644 data/core.telegram.org/constructor/account.sentChangePhoneCode rename data/core.telegram.org/constructor/{auth.loginTokenMigrateTo => account.tmpPassword} (88%) create mode 100644 data/core.telegram.org/constructor/account.wallPapers create mode 100644 data/core.telegram.org/constructor/auth.authorizationSignUpRequired create mode 100644 data/core.telegram.org/constructor/auth.codeTypeFlashCall rename data/core.telegram.org/constructor/{userStatusLastMonth.html => auth.codeTypeSms} (89%) rename data/core.telegram.org/constructor/{upload.cdnFile => auth.exportedAuthorization} (86%) create mode 100644 data/core.telegram.org/constructor/autoDownloadSettings.html rename data/core.telegram.org/constructor/{updateContactsReset.html => baseThemeClassic.html} (91%) rename data/core.telegram.org/constructor/{baseThemeDay.html => baseThemeNight.html} (93%) rename data/core.telegram.org/constructor/{inputChannelEmpty.html => boolTrue.html} (91%) create mode 100644 data/core.telegram.org/constructor/botInfo.html rename data/core.telegram.org/constructor/{videoSize.html => botInlineMessageMediaAuto.html} (79%) rename data/core.telegram.org/constructor/{keyboardButtonRequestPoll.html => botInlineMessageMediaContact.html} (82%) rename data/core.telegram.org/constructor/{inputMediaPoll.html => botInlineMessageText.html} (85%) rename data/core.telegram.org/constructor/{cdnConfig.html => cdnPublicKey.html} (87%) create mode 100644 data/core.telegram.org/constructor/channelAdminLogEventActionChangeAbout.html rename data/core.telegram.org/constructor/{messageEntityEmail.html => channelAdminLogEventActionChangeLinkedChat.html} (87%) create mode 100644 data/core.telegram.org/constructor/channelAdminLogEventActionChangeStickerSet.html create mode 100644 data/core.telegram.org/constructor/channelAdminLogEventActionDefaultBannedRights.html create mode 100644 data/core.telegram.org/constructor/channelAdminLogEventActionDeleteMessage.html create mode 100644 data/core.telegram.org/constructor/channelAdminLogEventActionEditMessage.html create mode 100644 data/core.telegram.org/constructor/channelAdminLogEventActionParticipantInvite.html create mode 100644 data/core.telegram.org/constructor/channelAdminLogEventActionParticipantLeave.html create mode 100644 data/core.telegram.org/constructor/channelAdminLogEventActionToggleInvites.html create mode 100644 data/core.telegram.org/constructor/channelAdminLogEventActionToggleSignatures.html rename data/core.telegram.org/constructor/{message.html => channelFull.html} (50%) create mode 100644 data/core.telegram.org/constructor/channelParticipant.html create mode 100644 data/core.telegram.org/constructor/channelParticipantAdmin.html rename data/core.telegram.org/constructor/{updateChannelParticipant.html => channelParticipantBanned.html} (80%) rename data/core.telegram.org/constructor/{nearestDc.html => channelParticipantSelf.html} (87%) delete mode 100644 data/core.telegram.org/constructor/channelParticipantsMentions.html create mode 100644 data/core.telegram.org/constructor/channelParticipantsSearch.html rename data/core.telegram.org/constructor/{messages.inactiveChats => channels.adminLogResults} (86%) rename data/core.telegram.org/constructor/{messages.highScores => channels.channelParticipant} (86%) create mode 100644 data/core.telegram.org/constructor/chatForbidden.html rename data/core.telegram.org/constructor/{peerSettings.html => chatInvite.html} (77%) rename data/core.telegram.org/constructor/{inputChatPhotoEmpty.html => chatInviteEmpty.html} (91%) rename data/core.telegram.org/constructor/{help.supportName => chatInviteExported.html} (90%) create mode 100644 data/core.telegram.org/constructor/chatParticipantAdmin.html create mode 100644 data/core.telegram.org/constructor/chatPhotoEmpty.html create mode 100644 data/core.telegram.org/constructor/contact.html rename data/core.telegram.org/constructor/{updates.html => contacts.blockedSlice} (85%) rename data/core.telegram.org/constructor/{messages.messages => contacts.contacts} (85%) rename data/core.telegram.org/constructor/{updateUserName.html => contacts.importedContacts} (78%) rename data/core.telegram.org/constructor/{messageService.html => dcOption.html} (73%) create mode 100644 data/core.telegram.org/constructor/decryptedMessage.html create mode 100644 data/core.telegram.org/constructor/decryptedMessageActionRequestKey.html rename data/core.telegram.org/constructor/{decryptedMessageActionReadMessages.html => decryptedMessageActionSetMessageTTL.html} (86%) delete mode 100644 data/core.telegram.org/constructor/decryptedMessageActionTyping.html delete mode 100644 data/core.telegram.org/constructor/decryptedMessageLayer.html rename data/core.telegram.org/constructor/{updates.state => decryptedMessageMediaAudio.html} (80%) create mode 100644 data/core.telegram.org/constructor/decryptedMessageMediaContact.html create mode 100644 data/core.telegram.org/constructor/decryptedMessageMediaDocument.html rename data/core.telegram.org/constructor/{secureFile.html => decryptedMessageMediaExternalDocument.html} (80%) create mode 100644 data/core.telegram.org/constructor/decryptedMessageMediaWebPage.html delete mode 100644 data/core.telegram.org/constructor/disabledFeature.html create mode 100644 data/core.telegram.org/constructor/document.html create mode 100644 data/core.telegram.org/constructor/documentAttributeAnimated.html rename data/core.telegram.org/constructor/{documentAttributeAudio.html => documentAttributeVideo.html} (84%) create mode 100644 data/core.telegram.org/constructor/documentEmpty.html rename data/core.telegram.org/constructor/{webPageNotModified.html => draftMessageEmpty.html} (89%) rename data/core.telegram.org/constructor/{inputThemeSlug.html => emojiLanguage.html} (91%) rename data/core.telegram.org/constructor/{encryptedChatWaiting.html => encryptedChat.html} (85%) rename data/core.telegram.org/constructor/{inputPeerChat.html => encryptedChatDiscarded.html} (90%) rename data/core.telegram.org/constructor/{chatOnlines.html => encryptedChatEmpty.html} (90%) create mode 100644 data/core.telegram.org/constructor/encryptedChatRequested.html rename data/core.telegram.org/constructor/{fileLocation.html => encryptedFile.html} (86%) rename data/core.telegram.org/constructor/{updateReadHistoryOutbox.html => encryptedMessageService.html} (82%) rename data/core.telegram.org/constructor/{inputDialogPeerFolder.html => folderPeer.html} (91%) rename data/core.telegram.org/constructor/{help.termsOfService => help.deepLinkInfo} (82%) delete mode 100644 data/core.telegram.org/constructor/help.passportConfigNotModified rename data/core.telegram.org/constructor/{accountDaysTTL.html => help.promoDataEmpty} (89%) delete mode 100644 data/core.telegram.org/constructor/help.termsOfServiceUpdateEmpty rename data/core.telegram.org/{method/help.editUserInfo => constructor/help.userInfo} (84%) rename data/core.telegram.org/constructor/{inputPeerUser.html => importedContact.html} (87%) create mode 100644 data/core.telegram.org/constructor/inputBotInlineMessageMediaAuto.html rename data/core.telegram.org/constructor/{inputChatUploadedPhoto.html => inputBotInlineMessageMediaGeo.html} (77%) rename data/core.telegram.org/constructor/{postAddress.html => inputBotInlineMessageMediaVenue.html} (79%) rename data/core.telegram.org/constructor/{botInlineResult.html => inputBotInlineResultDocument.html} (82%) create mode 100644 data/core.telegram.org/constructor/inputBotInlineResultGame.html rename data/core.telegram.org/constructor/{photoPathSize.html => inputBotInlineResultPhoto.html} (82%) create mode 100644 data/core.telegram.org/constructor/inputClientProxy.html rename data/core.telegram.org/constructor/{privacyValueAllowAll.html => inputDocumentEmpty.html} (91%) create mode 100644 data/core.telegram.org/constructor/inputEncryptedChat.html create mode 100644 data/core.telegram.org/constructor/inputEncryptedFileUploaded.html create mode 100644 data/core.telegram.org/constructor/inputFileBig.html create mode 100644 data/core.telegram.org/constructor/inputFileLocation.html rename data/core.telegram.org/constructor/{inputChannel.html => inputGameID.html} (87%) create mode 100644 data/core.telegram.org/constructor/inputGameShortName.html rename data/core.telegram.org/constructor/{inputStickerSetItem.html => inputGeoPoint.html} (85%) rename data/core.telegram.org/constructor/{updateServiceNotification.html => inputKeyboardButtonUrlAuth.html} (70%) create mode 100644 data/core.telegram.org/constructor/inputMediaGeoLive.html rename data/core.telegram.org/constructor/{inputMediaGame.html => inputMediaGeoPoint.html} (91%) rename data/core.telegram.org/constructor/{keyboardButtonCallback.html => inputMediaInvoice.html} (73%) rename data/core.telegram.org/constructor/{updatePinnedDialogs.html => inputMediaUploadedPhoto.html} (83%) create mode 100644 data/core.telegram.org/constructor/inputMessageCallbackQuery.html rename data/core.telegram.org/constructor/{inputMessageReplyTo.html => inputMessageID.html} (91%) create mode 100644 data/core.telegram.org/constructor/inputMessagesFilterContacts.html create mode 100644 data/core.telegram.org/constructor/inputMessagesFilterEmpty.html rename data/core.telegram.org/constructor/{help.noAppUpdate => inputMessagesFilterGif.html} (90%) create mode 100644 data/core.telegram.org/constructor/inputMessagesFilterMusic.html rename data/core.telegram.org/constructor/{updatesTooLong.html => inputMessagesFilterMyMentions.html} (86%) create mode 100644 data/core.telegram.org/constructor/inputMessagesFilterPhoneCalls.html rename data/core.telegram.org/constructor/{channelParticipantsBots.html => inputMessagesFilterPhotos.html} (90%) rename data/core.telegram.org/constructor/{channelParticipantsRecent.html => inputMessagesFilterRoundVoice.html} (90%) create mode 100644 data/core.telegram.org/constructor/inputMessagesFilterUrl.html rename data/core.telegram.org/constructor/{inputMediaDocumentExternal.html => inputPaymentCredentials.html} (86%) create mode 100644 data/core.telegram.org/constructor/inputPaymentCredentialsAndroidPay.html rename data/core.telegram.org/constructor/{stats.messageStats => inputPaymentCredentialsApplePay.html} (88%) rename data/core.telegram.org/constructor/{secureValueError.html => inputPaymentCredentialsSaved.html} (87%) create mode 100644 data/core.telegram.org/constructor/inputPeerEmpty.html rename data/core.telegram.org/constructor/{inputTheme.html => inputPhoneCall.html} (91%) create mode 100644 data/core.telegram.org/constructor/inputPhoneContact.html create mode 100644 data/core.telegram.org/constructor/inputPhoto.html create mode 100644 data/core.telegram.org/constructor/inputPhotoEmpty.html create mode 100644 data/core.telegram.org/constructor/inputPhotoFileLocation.html rename data/core.telegram.org/constructor/{privacyKeyPhoneNumber.html => inputPrivacyKeyPhoneP2P.html} (91%) create mode 100644 data/core.telegram.org/constructor/inputPrivacyKeyProfilePhoto.html rename data/core.telegram.org/constructor/{privacyValueDisallowContacts.html => inputPrivacyValueDisallowContacts.html} (92%) create mode 100644 data/core.telegram.org/constructor/inputPrivacyValueDisallowUsers.html create mode 100644 data/core.telegram.org/constructor/inputReportReasonCopyright.html create mode 100644 data/core.telegram.org/constructor/inputReportReasonOther.html create mode 100644 data/core.telegram.org/constructor/inputReportReasonPornography.html rename data/core.telegram.org/constructor/{inputMediaEmpty.html => inputReportReasonViolence.html} (91%) rename data/core.telegram.org/constructor/{messageReplies.html => inputSecureValue.html} (68%) create mode 100644 data/core.telegram.org/constructor/inputSingleMedia.html create mode 100644 data/core.telegram.org/constructor/inputStickerSetAnimatedEmoji.html create mode 100644 data/core.telegram.org/constructor/inputStickerSetShortName.html create mode 100644 data/core.telegram.org/constructor/inputStickeredMediaPhoto.html rename data/core.telegram.org/constructor/{peerNotifySettings.html => inputThemeSettings.html} (79%) rename data/core.telegram.org/constructor/{inputChannelFromMessage.html => inputUserFromMessage.html} (88%) create mode 100644 data/core.telegram.org/constructor/inputWallPaperSlug.html rename data/core.telegram.org/constructor/{messageMediaInvoice.html => invoice.html} (74%) rename data/core.telegram.org/constructor/{pageListItemBlocks.html => jsonObject.html} (90%) rename data/core.telegram.org/constructor/{dataJSON.html => jsonString.html} (91%) create mode 100644 data/core.telegram.org/constructor/keyboardButtonBuy.html create mode 100644 data/core.telegram.org/constructor/keyboardButtonGame.html rename data/core.telegram.org/constructor/{keyboardButtonRequestGeoLocation.html => keyboardButtonRequestPhone.html} (92%) rename data/core.telegram.org/constructor/{help.country => keyboardButtonSwitchInline.html} (81%) rename data/core.telegram.org/constructor/{auth.sentAppCode => langPackDifference.html} (84%) create mode 100644 data/core.telegram.org/constructor/langPackStringDeleted.html create mode 100644 data/core.telegram.org/constructor/messageActionBotAllowed.html rename data/core.telegram.org/constructor/{updateChannelAvailableMessages.html => messageActionChannelMigrateFrom.html} (87%) rename data/core.telegram.org/constructor/{photos.photo => messageActionChatAddUser.html} (88%) create mode 100644 data/core.telegram.org/constructor/messageActionChatEditTitle.html create mode 100644 data/core.telegram.org/constructor/messageActionChatJoinedByLink.html create mode 100644 data/core.telegram.org/constructor/messageActionCustomAction.html create mode 100644 data/core.telegram.org/constructor/messageActionEmpty.html create mode 100644 data/core.telegram.org/constructor/messageActionGameScore.html create mode 100644 data/core.telegram.org/constructor/messageActionHistoryClear.html create mode 100644 data/core.telegram.org/constructor/messageActionPaymentSentMe.html create mode 100644 data/core.telegram.org/constructor/messageActionPinMessage.html create mode 100644 data/core.telegram.org/constructor/messageActionScreenshotTaken.html rename data/core.telegram.org/constructor/{messageActionGeoProximityReached.html => messageActionSecureValuesSentMe.html} (81%) rename data/core.telegram.org/constructor/{photoEmpty.html => messageEmpty.html} (92%) create mode 100644 data/core.telegram.org/constructor/messageEntityBankCard.html rename data/core.telegram.org/constructor/{messageEntityPhone.html => messageEntityBold.html} (93%) rename data/core.telegram.org/constructor/{messageEntityCashtag.html => messageEntityBotCommand.html} (93%) create mode 100644 data/core.telegram.org/constructor/messageEntityMentionName.html rename data/core.telegram.org/constructor/{messageEntityItalic.html => messageEntityStrike.html} (94%) create mode 100644 data/core.telegram.org/constructor/messageEntityTextUrl.html delete mode 100644 data/core.telegram.org/constructor/messageEntityUnderline.html rename data/core.telegram.org/constructor/{messageEntityHashtag.html => messageEntityUnknown.html} (93%) create mode 100644 data/core.telegram.org/constructor/messageInteractionCounters.html rename data/core.telegram.org/constructor/{inputStickerSetDice.html => messageMediaDice.html} (90%) create mode 100644 data/core.telegram.org/constructor/messageMediaGeoLive.html create mode 100644 data/core.telegram.org/constructor/messageMediaPoll.html rename data/core.telegram.org/constructor/{inputMediaVenue.html => messageMediaVenue.html} (87%) rename data/core.telegram.org/constructor/{pollAnswerVoters.html => messageReplyHeader.html} (81%) delete mode 100644 data/core.telegram.org/constructor/messages.affectedHistory create mode 100644 data/core.telegram.org/constructor/messages.chatsSlice rename data/core.telegram.org/constructor/{messages.statedMessagesLinks => messages.dialogs} (85%) rename data/core.telegram.org/constructor/{auth.sentCodeTypeSms => messages.dialogsNotModified} (89%) create mode 100644 data/core.telegram.org/constructor/messages.dialogsSlice rename data/core.telegram.org/constructor/{updateReadChannelDiscussionInbox.html => messages.discussionMessage} (77%) create mode 100644 data/core.telegram.org/constructor/messages.featuredStickersNotModified rename data/core.telegram.org/constructor/{messages.favedStickersNotModified => messages.foundStickerSetsNotModified} (90%) rename data/core.telegram.org/constructor/{sendMessageUploadAudioAction.html => messages.messagesNotModified} (88%) delete mode 100644 data/core.telegram.org/constructor/messages.messagesSlice rename data/core.telegram.org/constructor/{messages.featuredStickers => messages.recentStickers} (84%) rename data/core.telegram.org/constructor/{messages.stickers => messages.savedGifs} (91%) rename data/core.telegram.org/constructor/{messages.stickersNotModified => messages.savedGifsNotModified} (90%) create mode 100644 data/core.telegram.org/constructor/messages.stickerSetInstallResultArchive rename data/core.telegram.org/constructor/{notifyChats.html => notifyBroadcasts.html} (92%) create mode 100644 data/core.telegram.org/constructor/notifyPeer.html create mode 100644 data/core.telegram.org/constructor/null.html create mode 100644 data/core.telegram.org/constructor/pageBlockAnchor.html create mode 100644 data/core.telegram.org/constructor/pageBlockEmbedPost.html create mode 100644 data/core.telegram.org/constructor/pageBlockMap.html rename data/core.telegram.org/constructor/{channelParticipantCreator.html => pageBlockPhoto.html} (84%) rename data/core.telegram.org/constructor/{pageBlockParagraph.html => pageBlockSubheader.html} (92%) rename data/core.telegram.org/constructor/{secureRequiredType.html => pageBlockVideo.html} (85%) create mode 100644 data/core.telegram.org/constructor/pageListOrderedItemText.html rename data/core.telegram.org/constructor/{messages.botCallbackAnswer => pageRelatedArticle.html} (80%) rename data/core.telegram.org/constructor/{pageBlockList.html => pageTableRow.html} (89%) delete mode 100644 data/core.telegram.org/constructor/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow.html rename data/core.telegram.org/constructor/{botCommand.html => paymentCharge.html} (89%) rename data/core.telegram.org/constructor/{shippingOption.html => paymentSavedCredentialsCard.html} (88%) rename data/core.telegram.org/constructor/{langPackLanguage.html => payments.paymentForm} (61%) create mode 100644 data/core.telegram.org/constructor/payments.paymentVerificationNeeded rename data/core.telegram.org/constructor/{updateTheme.html => peerChannel.html} (90%) rename data/core.telegram.org/constructor/{messageMediaVideo.html => peerUser.html} (91%) create mode 100644 data/core.telegram.org/constructor/phoneCallDiscardReasonDisconnect.html create mode 100644 data/core.telegram.org/constructor/phoneCallDiscardReasonMissed.html create mode 100644 data/core.telegram.org/constructor/phoneCallProtocol.html rename data/core.telegram.org/constructor/{phoneCallAccepted.html => phoneCallRequested.html} (87%) create mode 100644 data/core.telegram.org/constructor/phoneCallWaiting.html create mode 100644 data/core.telegram.org/constructor/phoneConnection.html rename data/core.telegram.org/constructor/{userProfilePhoto.html => photo.html} (77%) delete mode 100644 data/core.telegram.org/constructor/photoSize.html create mode 100644 data/core.telegram.org/constructor/photos.photosSlice create mode 100644 data/core.telegram.org/constructor/poll.html rename data/core.telegram.org/constructor/{updateDraftMessage.html => pollAnswer.html} (85%) rename data/core.telegram.org/constructor/{decryptedMessageActionAbortKey.html => popularContact.html} (88%) rename data/core.telegram.org/constructor/{privacyKeyPhoneP2P.html => privacyKeyForwards.html} (90%) rename data/core.telegram.org/constructor/{privacyKeyChatInvite.html => privacyKeyProfilePhoto.html} (91%) create mode 100644 data/core.telegram.org/constructor/privacyValueAllowChatParticipants.html rename data/core.telegram.org/constructor/{keyboardButtonRow.html => privacyValueDisallowUsers.html} (89%) rename data/core.telegram.org/constructor/{recentMeUrlUnknown.html => recentMeUrlChat.html} (91%) create mode 100644 data/core.telegram.org/constructor/recentMeUrlChatInvite.html create mode 100644 data/core.telegram.org/constructor/recentMeUrlStickerSet.html rename data/core.telegram.org/constructor/{replyKeyboardForceReply.html => replyKeyboardMarkup.html} (84%) create mode 100644 data/core.telegram.org/constructor/savedPhoneContact.html rename data/core.telegram.org/constructor/{upload.fileCdnRedirect => secureCredentialsEncrypted.html} (79%) rename data/core.telegram.org/constructor/{inputSecureFileUploaded.html => secureData.html} (83%) rename data/core.telegram.org/constructor/{inputStickerSetEmpty.html => secureFileEmpty.html} (93%) create mode 100644 data/core.telegram.org/constructor/securePasswordKdfAlgoSHA512.html rename data/core.telegram.org/constructor/{inputSecureFile.html => securePlainPhone.html} (86%) create mode 100644 data/core.telegram.org/constructor/secureValue.html rename data/core.telegram.org/constructor/{secureValueErrorFile.html => secureValueErrorTranslationFiles.html} (73%) rename data/core.telegram.org/constructor/{secureValueTypeDriverLicense.html => secureValueTypeBankStatement.html} (92%) rename data/core.telegram.org/constructor/{secureValueTypePassportRegistration.html => secureValueTypeInternalPassport.html} (91%) rename data/core.telegram.org/constructor/{secureValueTypePassport.html => secureValueTypePhone.html} (93%) rename data/core.telegram.org/constructor/{secureValueTypePersonalDetails.html => secureValueTypeRentalAgreement.html} (92%) rename data/core.telegram.org/constructor/{secureValueTypeIdentityCard.html => secureValueTypeUtilityBill.html} (92%) delete mode 100644 data/core.telegram.org/constructor/sendMessageCancelAction.html delete mode 100644 data/core.telegram.org/constructor/sendMessageChooseContactAction.html rename data/core.telegram.org/constructor/{sendMessageTypingAction.html => sendMessageGamePlayAction.html} (92%) delete mode 100644 data/core.telegram.org/constructor/sendMessageRecordRoundAction.html delete mode 100644 data/core.telegram.org/constructor/stats.megagroupStats rename data/core.telegram.org/constructor/{statsGroupTopInviter.html => statsDateRangeDays.html} (88%) rename data/core.telegram.org/constructor/{statsPercentValue.html => statsGraphError.html} (86%) delete mode 100644 data/core.telegram.org/constructor/statsGroupTopAdmin.html rename data/core.telegram.org/constructor/{pageBlockCover.html => stickerSetCovered.html} (87%) create mode 100644 data/core.telegram.org/constructor/storage.fileJpeg create mode 100644 data/core.telegram.org/constructor/storage.fileMp4 rename data/core.telegram.org/constructor/{privacyValueDisallowAll.html => storage.filePartial} (91%) create mode 100644 data/core.telegram.org/constructor/storage.filePdf create mode 100644 data/core.telegram.org/constructor/storage.fileUnknown create mode 100644 data/core.telegram.org/constructor/storage.fileWebp rename data/core.telegram.org/constructor/{pageCaption.html => textEmail.html} (90%) create mode 100644 data/core.telegram.org/constructor/textEmpty.html create mode 100644 data/core.telegram.org/constructor/textFixed.html rename data/core.telegram.org/constructor/{documentAttributeImageSize.html => textImage.html} (88%) rename data/core.telegram.org/constructor/{pageBlockKicker.html => textItalic.html} (92%) rename data/core.telegram.org/constructor/{pageBlockPreformatted.html => textPhone.html} (89%) create mode 100644 data/core.telegram.org/constructor/textStrike.html create mode 100644 data/core.telegram.org/constructor/textSubscript.html rename data/core.telegram.org/constructor/{privacyKeyPhoneCall.html => topPeerCategoryBotsInline.html} (91%) rename data/core.telegram.org/constructor/{pageBlockDivider.html => topPeerCategoryBotsPM.html} (91%) create mode 100644 data/core.telegram.org/constructor/topPeerCategoryPeers.html create mode 100644 data/core.telegram.org/constructor/topPeerCategoryPhoneCalls.html create mode 100644 data/core.telegram.org/constructor/updateBotCallbackQuery.html create mode 100644 data/core.telegram.org/constructor/updateBotInlineSend.html create mode 100644 data/core.telegram.org/constructor/updateBotPrecheckoutQuery.html rename data/core.telegram.org/constructor/{updateLangPack.html => updateBotWebhookJSON.html} (90%) create mode 100644 data/core.telegram.org/constructor/updateBotWebhookJSONQuery.html create mode 100644 data/core.telegram.org/constructor/updateChannelMessageForwards.html rename data/core.telegram.org/constructor/{updateChatParticipants.html => updateDcOptions.html} (88%) rename data/core.telegram.org/constructor/{updateReadMessagesContents.html => updateDeleteMessages.html} (88%) rename data/core.telegram.org/constructor/{updateDialogFilter.html => updateDialogFilterOrder.html} (86%) rename data/core.telegram.org/constructor/{updateStickerSetsOrder.html => updateDialogUnreadMark.html} (88%) rename data/core.telegram.org/constructor/{messages.affectedMessages => updateEditMessage.html} (89%) rename data/core.telegram.org/constructor/{updateChatParticipantDelete.html => updateEncryptedMessagesRead.html} (88%) rename data/core.telegram.org/constructor/{updateGeoLiveViewed.html => updateEncryption.html} (88%) create mode 100644 data/core.telegram.org/constructor/updateFavedStickers.html create mode 100644 data/core.telegram.org/constructor/updateLangPackTooLong.html rename data/core.telegram.org/constructor/{updateDeleteChannelMessages.html => updateNewChannelMessage.html} (86%) create mode 100644 data/core.telegram.org/constructor/updateNewEncryptedMessage.html delete mode 100644 data/core.telegram.org/constructor/updateNewStickerSet.html delete mode 100644 data/core.telegram.org/constructor/updateNotifySettings.html rename data/core.telegram.org/constructor/{updatePeerBlocked.html => updatePeerLocated.html} (89%) rename data/core.telegram.org/constructor/{updateReadHistoryInbox.html => updateReadChannelInbox.html} (86%) rename data/core.telegram.org/constructor/{updateStickerSets.html => updateSavedGifs.html} (89%) create mode 100644 data/core.telegram.org/constructor/updateShortSentMessage.html delete mode 100644 data/core.telegram.org/constructor/updateUserBlocked.html rename data/core.telegram.org/constructor/{chatParticipantCreator.html => updateUserStatus.html} (89%) rename data/core.telegram.org/constructor/{peerBlocked.html => updates.differenceEmpty} (89%) create mode 100644 data/core.telegram.org/constructor/updates.differenceSlice rename data/core.telegram.org/constructor/{urlAuthResultAccepted.html => urlAuthResultDefault.html} (91%) create mode 100644 data/core.telegram.org/constructor/urlAuthResultRequest.html create mode 100644 data/core.telegram.org/constructor/userProfilePhotoEmpty.html delete mode 100644 data/core.telegram.org/constructor/userStatusOffline.html create mode 100644 data/core.telegram.org/constructor/wallPaper.html create mode 100644 data/core.telegram.org/constructor/webDocument.html create mode 100644 data/core.telegram.org/constructor/webPage.html delete mode 100644 data/core.telegram.org/css/bootstrap-extra.css delete mode 100644 data/core.telegram.org/css/telegram-extra.css delete mode 100644 data/core.telegram.org/js/jquery-ui.min.js delete mode 100644 data/core.telegram.org/js/telegram-passport2.js rename data/core.telegram.org/method/{account.checkUsername => account.confirmPasswordEmail} (84%) delete mode 100644 data/core.telegram.org/method/account.finishTakeoutSession delete mode 100644 data/core.telegram.org/method/account.getAutoDownloadSettings delete mode 100644 data/core.telegram.org/method/account.getPassword rename data/core.telegram.org/method/{account.createTheme => account.getTheme} (83%) create mode 100644 data/core.telegram.org/method/account.getWallPapers rename data/core.telegram.org/method/{messages.saveDraft => account.initTakeoutSession} (74%) rename data/core.telegram.org/method/{messages.clearAllDrafts => account.resendPasswordEmail} (87%) rename data/core.telegram.org/method/{account.resetNotifySettings => account.resetWallPapers} (91%) rename data/core.telegram.org/method/{account.installWallPaper => account.saveWallPaper} (89%) create mode 100644 data/core.telegram.org/method/account.sendConfirmPhoneCode rename data/core.telegram.org/method/{messages.uninstallStickerSet => account.setAccountTTL} (89%) rename data/core.telegram.org/method/{messages.markDialogUnread => account.setContentSettings} (89%) rename data/core.telegram.org/method/{account.getGlobalPrivacySettings => account.setGlobalPrivacySettings} (88%) rename data/core.telegram.org/method/{account.getPrivacy => account.setPrivacy} (87%) delete mode 100644 data/core.telegram.org/method/account.unregisterDevice rename data/core.telegram.org/method/{messages.discardEncryption => account.updateDeviceLocked} (83%) delete mode 100644 data/core.telegram.org/method/account.updateTheme delete mode 100644 data/core.telegram.org/method/account.updateUsername create mode 100644 data/core.telegram.org/method/account.uploadWallPaper delete mode 100644 data/core.telegram.org/method/auth.bindTempAuthKey rename data/core.telegram.org/method/{account.confirmPhone => auth.cancelCode} (85%) delete mode 100644 data/core.telegram.org/method/auth.exportLoginToken rename data/core.telegram.org/method/{auth.checkPassword => auth.recoverPassword} (85%) rename data/core.telegram.org/method/{account.verifyPhone => auth.resendCode} (78%) rename data/core.telegram.org/method/{help.hidePromoData => bots.setBotCommands} (90%) rename data/core.telegram.org/method/{messages.deleteMessages => channels.deleteMessages} (82%) rename data/core.telegram.org/method/{messages.sendMultiMedia => channels.editAdmin} (76%) rename data/core.telegram.org/method/{channels.editCreator => channels.editBanned} (86%) rename data/core.telegram.org/method/{account.updateNotifySettings => channels.editLocation} (82%) create mode 100644 data/core.telegram.org/method/channels.editTitle create mode 100644 data/core.telegram.org/method/channels.exportMessageLink rename data/core.telegram.org/method/{contacts.resolveUsername => channels.getFullChannel} (82%) rename data/core.telegram.org/method/{messages.getPinnedDialogs => channels.getLeftChannels} (80%) rename data/core.telegram.org/method/{channels.setDiscussionGroup => channels.getParticipant} (76%) rename data/core.telegram.org/method/{messages.sendVote => channels.leaveChannel} (86%) rename data/core.telegram.org/method/{channels.readMessageContents => channels.readHistory} (91%) rename data/core.telegram.org/method/{messages.saveRecentSticker => channels.reportSpam} (81%) create mode 100644 data/core.telegram.org/method/channels.toggleSlowMode rename data/core.telegram.org/method/{account.reportPeer => channels.updateUsername} (81%) delete mode 100644 data/core.telegram.org/method/contacts.addContact delete mode 100644 data/core.telegram.org/method/contacts.blockFromReplies create mode 100644 data/core.telegram.org/method/contacts.getBlocked create mode 100644 data/core.telegram.org/method/contacts.getContacts delete mode 100644 data/core.telegram.org/method/contacts.getLocated rename data/core.telegram.org/method/{upload.getFile => contacts.getTopPeers} (68%) delete mode 100644 data/core.telegram.org/method/contacts.search rename data/core.telegram.org/method/{account.getNotifyExceptions => folders.deleteFolder} (86%) delete mode 100644 data/core.telegram.org/method/help.getAppChangelog rename data/core.telegram.org/method/{auth.resetAuthorizations => help.getAppConfig} (77%) delete mode 100644 data/core.telegram.org/method/help.getConfig rename data/core.telegram.org/method/{help.getInviteText => help.getSupport} (88%) delete mode 100644 data/core.telegram.org/method/help.getTermsOfServiceUpdate rename data/core.telegram.org/method/{auth.importBotAuthorization => initConnection.html} (74%) create mode 100644 data/core.telegram.org/method/invokeAfterMsg.html rename data/core.telegram.org/method/{messages.readDiscussion => invokeWithoutUpdates.html} (81%) rename data/core.telegram.org/method/{langpack.getLanguages => langpack.getDifference} (83%) delete mode 100644 data/core.telegram.org/method/messages.acceptEncryption rename data/core.telegram.org/method/{payments.validateRequestedInfo => messages.deleteHistory} (79%) rename data/core.telegram.org/method/{contacts.deleteContacts => messages.deleteScheduledMessages} (91%) create mode 100644 data/core.telegram.org/method/messages.editChatTitle rename data/core.telegram.org/method/{messages.sendMessage => messages.editMessage} (79%) rename data/core.telegram.org/method/{messages.sendInlineBotResult => messages.forwardMessages} (78%) create mode 100644 data/core.telegram.org/method/messages.getAllDrafts rename data/core.telegram.org/method/{photos.getUserPhotos => messages.getCommonChats} (79%) delete mode 100644 data/core.telegram.org/method/messages.getDhConfig create mode 100644 data/core.telegram.org/method/messages.getDialogs create mode 100644 data/core.telegram.org/method/messages.getDiscussionMessage rename data/core.telegram.org/method/{help.getDeepLinkInfo => messages.getEmojiKeywordsDifference} (83%) rename data/core.telegram.org/method/{updates.getChannelDifference => messages.getHistory} (64%) rename data/core.telegram.org/method/{stats.loadAsyncGraph => messages.getInlineBotResults} (73%) create mode 100644 data/core.telegram.org/method/messages.getMessageReactionsList create mode 100644 data/core.telegram.org/method/messages.getMessages rename data/core.telegram.org/method/{messages.readFeaturedStickers => messages.getMessagesReactions} (87%) create mode 100644 data/core.telegram.org/method/messages.getMessagesViews create mode 100644 data/core.telegram.org/method/messages.getOldFeaturedStickers delete mode 100644 data/core.telegram.org/method/messages.getPeerSettings rename data/core.telegram.org/method/{messages.migrateChat => messages.getPollResults} (88%) create mode 100644 data/core.telegram.org/method/messages.getScheduledHistory rename data/core.telegram.org/method/{messages.getDialogFilters => messages.getSplitRanges} (86%) rename data/core.telegram.org/method/{help.getCountriesList => messages.getStickers} (82%) rename data/core.telegram.org/method/{messages.searchGlobal => messages.getUnreadMentions} (77%) rename data/core.telegram.org/method/{messages.setBotPrecheckoutResults => messages.getWebPagePreview} (61%) rename data/core.telegram.org/method/{account.updateStatus => messages.hidePeerSettingsBar} (83%) delete mode 100644 data/core.telegram.org/method/messages.installStickerSet rename data/core.telegram.org/method/{contacts.block => messages.reportSpam} (86%) delete mode 100644 data/core.telegram.org/method/messages.requestEncryption delete mode 100644 data/core.telegram.org/method/messages.requestUrlAuth create mode 100644 data/core.telegram.org/method/messages.search rename data/core.telegram.org/method/{messages.toggleStickerSets => messages.searchStickerSets} (78%) create mode 100644 data/core.telegram.org/method/messages.sendEncryptedService delete mode 100644 data/core.telegram.org/method/messages.sendMedia rename data/core.telegram.org/method/{messages.setInlineGameScore => messages.setBotCallbackAnswer} (81%) delete mode 100644 data/core.telegram.org/method/messages.setBotShippingResults delete mode 100644 data/core.telegram.org/method/messages.toggleDialogPin rename data/core.telegram.org/method/{help.getCdnConfig => messages.unpinAllMessages} (83%) delete mode 100644 data/core.telegram.org/method/payments.clearSavedInfo rename data/core.telegram.org/method/{help.getRecentMeUrls => payments.getBankCardData} (86%) rename data/core.telegram.org/method/{messages.getMessageEditData => payments.getPaymentForm} (82%) rename data/core.telegram.org/method/{messages.sendReaction => payments.getPaymentReceipt} (83%) create mode 100644 data/core.telegram.org/method/payments.sendPaymentForm rename data/core.telegram.org/method/{help.getNearestDc => phone.getCallConfig} (88%) delete mode 100644 data/core.telegram.org/method/phone.receivedCall rename data/core.telegram.org/method/{phone.acceptCall => phone.requestCall} (81%) create mode 100644 data/core.telegram.org/method/phone.sendSignalingData rename data/core.telegram.org/method/{phone.discardCall => phone.setCallRating} (88%) rename data/core.telegram.org/method/{help.getSupportName => photos.deletePhotos} (85%) rename data/core.telegram.org/method/{messages.updateDialogFilter => stats.getMessageStats} (80%) create mode 100644 data/core.telegram.org/method/stickers.changeStickerPosition delete mode 100644 data/core.telegram.org/method/stickers.createStickerSet rename data/core.telegram.org/method/{stickers.addStickerToSet => stickers.setStickerSetThumb} (87%) rename data/core.telegram.org/method/{upload.getCdnFileHashes => upload.getCdnFile} (82%) create mode 100644 data/core.telegram.org/mtproto.html delete mode 100644 data/core.telegram.org/mtproto/TL-abstract-types.html delete mode 100644 data/core.telegram.org/mtproto/TL-combinators.html create mode 100644 data/core.telegram.org/mtproto/TL-formal.html create mode 100644 data/core.telegram.org/mtproto/TL-optargs.html rename data/core.telegram.org/{type/Audio.html => mtproto/TL-patterns.html} (51%) create mode 100644 data/core.telegram.org/mtproto/TL-tl.html rename data/core.telegram.org/{method/auth.sendSms => mtproto/TL-types.html} (59%) create mode 100644 data/core.telegram.org/mtproto/auth_key.html delete mode 100644 data/core.telegram.org/mtproto/description.html create mode 100644 data/core.telegram.org/mtproto/security_guidelines.html delete mode 100644 data/core.telegram.org/passport/example.html create mode 100644 data/core.telegram.org/passport/sdk-ios-mac.html create mode 100644 data/core.telegram.org/schema.html create mode 100644 data/core.telegram.org/schema/end-to-end-json.html create mode 100644 data/core.telegram.org/schema/end-to-end.html create mode 100644 data/core.telegram.org/tdlib/getting-started.html rename data/core.telegram.org/type/{EncryptedFile.html => Authorization.html} (81%) create mode 100644 data/core.telegram.org/type/BankCardOpenUrl.html create mode 100644 data/core.telegram.org/type/Bool.html delete mode 100644 data/core.telegram.org/type/BotInlineResult.html create mode 100644 data/core.telegram.org/type/ChannelAdminLogEvent.html create mode 100644 data/core.telegram.org/type/ChannelAdminLogEventAction.html rename data/core.telegram.org/type/{ChannelMessagesFilter.html => ChannelParticipant.html} (70%) delete mode 100644 data/core.telegram.org/type/ChannelParticipantsFilter.html rename data/core.telegram.org/type/{ChatParticipants.html => Chat.html} (66%) delete mode 100644 data/core.telegram.org/type/ChatBannedRights.html rename data/core.telegram.org/type/{payments.SavedInfo => ChatOnlines.html} (86%) create mode 100644 data/core.telegram.org/type/ChatPhoto.html delete mode 100644 data/core.telegram.org/type/Config.html rename data/core.telegram.org/type/{ContactStatus.html => Contact.html} (90%) rename data/core.telegram.org/type/{Video.html => DecryptedDataBlock.html} (92%) delete mode 100644 data/core.telegram.org/type/Dialog.html delete mode 100644 data/core.telegram.org/type/DialogFilter.html rename data/core.telegram.org/type/{InputDialogPeer.html => DialogPeer.html} (87%) delete mode 100644 data/core.telegram.org/type/DocumentAttribute.html rename data/core.telegram.org/type/{MessageReplies.html => DraftMessage.html} (81%) rename data/core.telegram.org/type/{UserProfilePhoto.html => EncryptedMessage.html} (83%) rename data/core.telegram.org/type/{FolderPeer.html => Error.html} (90%) rename data/core.telegram.org/type/{Folder.html => HighScore.html} (89%) rename data/core.telegram.org/type/{KeyboardButtonRow.html => InlineBotSwitchPM.html} (88%) rename data/core.telegram.org/type/{InputPeer.html => InputBotInlineResult.html} (71%) rename data/core.telegram.org/type/{InputDocument.html => InputContact.html} (85%) create mode 100644 data/core.telegram.org/type/InputEncryptedChat.html delete mode 100644 data/core.telegram.org/type/InputFile.html rename data/core.telegram.org/type/{InputTheme.html => InputGame.html} (87%) rename data/core.telegram.org/type/{InputUser.html => InputPaymentCredentials.html} (77%) rename data/core.telegram.org/type/{InputFolderPeer.html => InputPhoneCall.html} (90%) rename data/core.telegram.org/type/{InputAppEvent.html => InputPhoto.html} (87%) create mode 100644 data/core.telegram.org/type/InputPrivacyKey.html create mode 100644 data/core.telegram.org/type/InputStickeredMedia.html create mode 100644 data/core.telegram.org/type/Invoice.html create mode 100644 data/core.telegram.org/type/JSONObjectValue.html rename data/core.telegram.org/type/{phone.PhoneCall => JSONValue.html} (76%) delete mode 100644 data/core.telegram.org/type/MaskCoords.html rename data/core.telegram.org/type/{MessageUserVote.html => Message.html} (71%) create mode 100644 data/core.telegram.org/type/MessageInteractionCounters.html rename data/core.telegram.org/type/{DisabledFeature.html => MessageReactionsList.html} (93%) rename data/core.telegram.org/type/{SendMessageAction.html => MessagesFilter.html} (55%) create mode 100644 data/core.telegram.org/type/Page.html rename data/core.telegram.org/type/{PageRelatedArticle.html => PageTableCell.html} (87%) create mode 100644 data/core.telegram.org/type/PageTableRow.html create mode 100644 data/core.telegram.org/type/PaymentSavedCredentials.html create mode 100644 data/core.telegram.org/type/PeerNotifySettings.html delete mode 100644 data/core.telegram.org/type/PhoneCallProtocol.html delete mode 100644 data/core.telegram.org/type/Photo.html create mode 100644 data/core.telegram.org/type/Poll.html create mode 100644 data/core.telegram.org/type/PollAnswerVoters.html rename data/core.telegram.org/type/{AutoDownloadSettings.html => PollResults.html} (86%) rename data/core.telegram.org/type/{UrlAuthResult.html => PrivacyRule.html} (69%) rename data/core.telegram.org/type/{ChatInvite.html => ReportReason.html} (74%) create mode 100644 data/core.telegram.org/type/SecureData.html create mode 100644 data/core.telegram.org/type/SecureSecretSettings.html delete mode 100644 data/core.telegram.org/type/StatsGraph.html create mode 100644 data/core.telegram.org/type/StatsGroupTopInviter.html rename data/core.telegram.org/type/{InputWallPaper.html => StatsGroupTopPoster.html} (84%) rename data/core.telegram.org/type/{FileLocation.html => StickerPack.html} (87%) create mode 100644 data/core.telegram.org/type/StickerSetCovered.html create mode 100644 data/core.telegram.org/type/ThemeSettings.html rename data/core.telegram.org/type/{BotInfo.html => TopPeer.html} (89%) rename data/core.telegram.org/type/{Document.html => TopPeerCategory.html} (71%) create mode 100644 data/core.telegram.org/type/TopPeerCategoryPeers.html create mode 100644 data/core.telegram.org/type/True.html delete mode 100644 data/core.telegram.org/type/Update.html rename data/core.telegram.org/type/{LangPackLanguage.html => UserFull.html} (81%) create mode 100644 data/core.telegram.org/type/Vector t.html create mode 100644 data/core.telegram.org/type/VideoSize.html create mode 100644 data/core.telegram.org/type/WebAuthorization.html delete mode 100644 data/core.telegram.org/type/WebDocument.html rename data/core.telegram.org/{method/messages.getWebPage => type/WebPage.html} (78%) delete mode 100644 data/core.telegram.org/type/account.Password delete mode 100644 data/core.telegram.org/type/account.SentChangePhoneCode create mode 100644 data/core.telegram.org/type/account.SentEmailCode rename data/core.telegram.org/type/{account.ContentSettings => account.Takeout} (86%) create mode 100644 data/core.telegram.org/type/account.Themes create mode 100644 data/core.telegram.org/type/account.WallPapers rename data/core.telegram.org/type/{User.html => auth.Authorization} (65%) create mode 100644 data/core.telegram.org/type/auth.CodeType create mode 100644 data/core.telegram.org/type/auth.ExportedAuthorization rename data/core.telegram.org/type/{PasswordKdfAlgo.html => auth.PasswordRecovery} (79%) rename data/core.telegram.org/type/{ExportedMessageLink.html => channels.ChannelParticipant} (83%) rename data/core.telegram.org/type/{contacts.Found => contacts.ImportedContacts} (81%) delete mode 100644 data/core.telegram.org/type/double.html delete mode 100644 data/core.telegram.org/type/help.CountryCode create mode 100644 data/core.telegram.org/type/help.InviteText create mode 100644 data/core.telegram.org/type/help.PassportConfig rename data/core.telegram.org/type/{help.SupportName => help.Support} (87%) rename data/core.telegram.org/type/{help.PromoData => help.TermsOfServiceUpdate} (79%) rename data/core.telegram.org/type/{messages.MessageViews => messages.BotResults} (80%) delete mode 100644 data/core.telegram.org/type/messages.DhConfig rename data/core.telegram.org/type/{messages.BotCallbackAnswer => messages.FoundStickerSets} (81%) create mode 100644 data/core.telegram.org/type/messages.Messages rename data/core.telegram.org/type/{messages.InactiveChats => messages.SavedGifs} (84%) create mode 100644 data/core.telegram.org/type/messages.SearchCounter rename data/core.telegram.org/type/{messages.StatedMessages => messages.StatedMessage} (93%) create mode 100644 data/core.telegram.org/type/payments.PaymentReceipt rename data/core.telegram.org/type/{LangPackDifference.html => payments.PaymentResult} (80%) rename data/core.telegram.org/type/{messages.AffectedHistory => storage.FileType} (68%) delete mode 100644 data/core.telegram.org/type/updates.ChannelDifference rename data/core.telegram.org/type/{account.Authorizations => updates.State} (85%) rename data/core.telegram.org/type/{upload.WebFile => upload.CdnFile} (82%) create mode 100644 data/core.telegram.org/type/upload.File delete mode 100644 data/core.telegram.org/widgets/login.html create mode 100644 data/desktop.telegram.org/changelog.html delete mode 100644 data/instantview.telegram.org/checklist.html create mode 100644 data/instantview.telegram.org/rules.html create mode 100644 data/telegram.org.html create mode 100644 data/telegram.org/blog.html create mode 100644 data/telegram.org/blog/6-years.html create mode 100644 data/telegram.org/blog/android-streaming.html rename data/telegram.org/blog/{polls.html => android-wear-2-0.html} (68%) rename data/telegram.org/blog/{channels.html => apple-watch.html} (70%) create mode 100644 data/telegram.org/blog/archive-and-new-design.html create mode 100644 data/telegram.org/blog/autoplay.html rename data/telegram.org/blog/{supergroups.html => bot-revolution.html} (55%) rename data/telegram.org/blog/{games.html => bots-2-0.html} (62%) delete mode 100644 data/telegram.org/blog/calls.html rename data/telegram.org/blog/{link-preview.html => desktop-compact.html} (78%) rename data/telegram.org/blog/{backgrounds-2-0.html => discover-stickers-and-more.html} (66%) create mode 100644 data/telegram.org/blog/edit.html delete mode 100644 data/telegram.org/blog/folders.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/login.html create mode 100644 data/telegram.org/blog/moar-stickers.html rename data/telegram.org/blog/{animated-stickers.html => new-profiles-people-nearby.html} (54%) delete mode 100644 data/telegram.org/blog/photo-editor-and-passcodes.html rename data/telegram.org/blog/{payments.html => pin-and-ifttt.html} (54%) create mode 100644 data/telegram.org/blog/privacy-discussions-web-bots.html rename data/telegram.org/blog/{replies-mentions-hashtags.html => privacy-revolution.html} (64%) create mode 100644 data/telegram.org/blog/profile-videos-people-nearby-and-more.html create mode 100644 data/telegram.org/blog/scheduled-reminders-themes.html create mode 100644 data/telegram.org/blog/search-and-media.html create mode 100644 data/telegram.org/blog/supergroups5k.html rename data/telegram.org/blog/{desktop-1-0.html => tdlib.html} (64%) rename data/telegram.org/blog/{unsend-and-usage.html => telegram-5-ios.html} (52%) create mode 100644 data/telegram.org/blog/telegram-x.html rename data/telegram.org/blog/{passport.html => telegraph.html} (65%) rename data/telegram.org/blog/{video-editor-gifs.html => unsend-privacy-emoji.html} (58%) rename data/telegram.org/blog/{channels-2-0.html => voice-2-secret-3.html} (63%) delete mode 100644 data/telegram.org/blog/voice-chats.html delete mode 100644 data/telegram.org/blog/winter-contest-ends.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/jobs.html delete mode 100644 data/telegram.org/js/games.js create mode 100644 data/telegram.org/press.html create mode 100644 data/telegram.org/privacy.html delete mode 100644 data/telegram.org/privacy/gmailbot.html rename data/telegram.org/{api.html => template31.html} (99%) create mode 100644 data/telegram.org/teststore.html delete mode 100644 data/telegram.org/tour/channels.html delete mode 100644 data/telegram.org/tour/groups.html create mode 100644 data/telegram.org/tour/quizbot.html create mode 100644 data/telegram.org/tour/screenshots.html delete mode 100644 data/translations.telegram.org.html delete mode 100644 data/translations.telegram.org/en.html delete mode 100644 data/translations.telegram.org/en/android_x.html delete mode 100644 data/translations.telegram.org/en/tdesktop.html diff --git a/data/core.telegram.org/api.html b/data/core.telegram.org/api.html new file mode 100644 index 0000000000..8afc42b26e --- /dev/null +++ b/data/core.telegram.org/api.html @@ -0,0 +1,251 @@ + + + + + Telegram APIs + + + + + + + + + + + + + +
+ +
+
+
+
+

Telegram APIs

+ +

We offer two kinds of APIs for developers. The Bot API allows you to easily create programs that use Telegram messages for an interface. The Telegram API and TDLib allow you to build your own customized Telegram clients. You are welcome to use both APIs free of charge.

+

You can also add Telegram Widgets to your website.

+

Designers are welcome to create Animated Stickers or Custom Themes for Telegram.

+
+

Bot API

+
+ +
+

This API allows you to connect bots to our system. Telegram Bots 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.

+

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.

+
+

Learn more about the Bot API here »

+
+

Bot developers can also make use of our Payments API to accept payments from Telegram users around the world.

+
+

TDLib – build your own Telegram

+

Even if you're looking for maximum customization, you don't have to create your app from scratch. Try our Telegram Database Library (or simply TDLib), a tool for third-party developers that makes it easy to build fast, secure and feature-rich Telegram apps.

+

TDLib takes care of all network implementation details, encryption and local data storage, so that you can dedicate more time to design, responsive interfaces and beautiful animations.

+

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 any programming language.

+
+

Learn more about TDLib here »

+
+
+

Telegram API

+

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 source code of existing Telegram applications for examples of how things work here. Don't forget to register your application in our system.

+ +

Getting started

+

Creating an application

+

How to get your application identifier and create a new Telegram app.

+

User authorization

+

How to register a user's phone to start using the API.

+

Two-factor authentication

+

How to login to a user's account if they have enabled 2FA, how to change password.

+

QR code login

+

QR code login flow

+

Error handling

+

How to handle API return errors correctly.

+

Handling different data centers

+

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.

+

Handling updates

+

How to subscribe to updates and handle them properly.

+

Handling PUSH-notifications

+

How to subscribe and handle them properly.

+

Channels, supergroups and groups

+

How to handle channels, supergroups, groups, and what's the difference between them.

+

Channel statistics

+

Telegram offers detailed channel statistics for channels and supergroups.

+

Calling methods

+

Additional options for calling methods.

+

Uploading and Downloading Files

+

How to transfer large data batches correctly.

+

Pagination

+

How to fetch results from large lists of objects.

+

Client configuration

+

The MTProto API has multiple client configuration parameters that can be fetched with the appropriate methods.

+

Security

+

Secret chats, end-to-end encryption

+

End-to-end-encrypted messaging.

+

Security guidelines

+

Important checks required in your client application.

+

Perfect Forward Secrecy

+

Binding temporary authorization key to permanent ones.

+

End-to-End Encryption in Voice and Video Calls

+

End-to-end-encrypted calls.

+

Optimization

+

Client optimization

+

Ways to boost API interactions.

+

API methods

+

Available method list

+

A list of available high-level methods.

+

API TL-schema, as JSON

+

Text and JSON-presentation of types and methods used in API.

+

Available layer list

+

A list of available schema versions.

+

Other articles

+

Working with bots, using the MTProto API

+

How to work with bots using the MTProto API.

+

Commands

+

Bots offer a set of commands that can be used by users in private, or in a chat.

+

Buttons

+

Users can interact with your bot via buttons or even inline buttons, straight from inline messages in any chat.

+

Inline queries

+

Users can interact with your bot via inline queries, straight from the text input field in any chat.

+

Games

+

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.

+

Search & filters

+

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.

+

Polls

+

Telegram allows sending polls and quizes, that can be voted on by thousands, if not milions of users in chats and channels.

+

Admin, banned and default rights for channels, supergroups and groups

+

How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups.

+

Discussion groups

+

Groups can be associated to a channel as a discussion group, to allow users to discuss about posts.

+

Channel comments and message threads

+

Telegram allows commenting on a channel post or on a generic group message, thanks to message threads.

+

Admin log

+

Both supergroups and channels offer a so-called admin log, 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.

+

Pinned messages

+

Telegram allows pinning multiple messages on top of a specific chat.

+

Mentions

+

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.

+

Scheduled messages

+

Telegram allows scheduling messages.

+

Live geolocations

+

Telegram allows sending the live geolocation of a user in a chat, optionally setting a proximity alert.

+

Min constructors

+

Sometimes, user and channel constructors met in group chat updates may not contain full info about the user: how to handle such constructors.

+

Account deletion

+

How to reset an account if the 2FA password was forgotten.

+

Telegram Passport

+

How to work with Telegram Passport directly using the MTProto API.

+

Telegram Payments

+

How to work with Telegram Payments directly using the MTProto API.

+

Styled text with message entities

+

How to create styled text with message entities

+

Working with animated emojis

+

Graphical telegram clients should transform emojis into their respective animated version.

+

Working with animated dice

+

Telegram supports sending animated dice emojis.

+

Message drafts

+

How to handle message drafts

+

Folders

+

Working with folders

+

Top peer rating

+

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).

+

Handling file references

+

How to handle file references.

+

Seamless Telegram Login

+

Handle Seamless Telegram Login URL authorization requests.

+

Web events

+

When interacting with HTML5 games and the websites of payment gateways, Telegram apps should expose the following JS APIs.

+ +
+ +
+
+ +
+ + + + + + diff --git a/data/core.telegram.org/type/int.html b/data/core.telegram.org/api/animated-emojis.html similarity index 51% rename from data/core.telegram.org/type/int.html rename to data/core.telegram.org/api/animated-emojis.html index 5a6f6bdc91..b88fa154f4 100644 --- a/data/core.telegram.org/type/int.html +++ b/data/core.telegram.org/api/animated-emojis.html @@ -2,12 +2,12 @@ - int + Animated Emojis - - + + - + @@ -26,9 +26,9 @@
  • Home
  • -
  • API
  • +
  • API
  • Protocol
  • -
  • Schema
  • +
  • Schema
  • @@ -36,13 +36,43 @@
    - -

    int

    + +

    Animated Emojis

    -

    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.

    -

    More on basic types »

    -

    Related pages

    -

    Binary Data Serialization

    +

    Graphical telegram clients should transform emojis into their respective animated version.

    +
    inputStickerSetAnimatedEmoji#28703c8 = InputStickerSet;
    +
    +messages.stickerSet#b60a24a6 set:StickerSet packs:Vector<StickerPack> documents:Vector<Document> = messages.StickerSet;
    +
    +---functions---
    +
    +messages.getStickerSet#2619a90e stickerset:InputStickerSet = messages.StickerSet;
    +

    On startup, clients should fetch the animated emoji stickerset by calling the messages.getStickerSet method, providing inputStickerSetAnimatedEmoji to the stickerset field.
    +The returned stickerset will contain a set of animated stickers, one for each of the supported emojis.

    +

    Clients should substitute messages containing only one instance of one of the allowed emojis with the respective animated sticker.

    +

    Animated emojis should loop only once when first sent or received, or when clicked.

    +

    For special dice emojis like 🎲, 🎯, or 🏀, clients are supposed to behave differently both when sending and receiving such emojis: click here for more info ».

    +

    Emojis with sounds

    +

    Certained animated emojis should play sound when clicked, as specified by server-side configuration.

    +

    The returned JSON object will contain the following map, with a list of file IDs to download:

    +
        "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"
    +        },
    +    }
    +

    The file reference field should be base64-decoded before downloading the file

    diff --git a/data/core.telegram.org/api/auth.html b/data/core.telegram.org/api/auth.html deleted file mode 100644 index 8069ebf828..0000000000 --- a/data/core.telegram.org/api/auth.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - User Authorization - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    User Authorization

    - -
    - -

    Authorization is associated with a client’s encryption key identifier: auth_key_id. No additional parameters need to be passed into methods following authorization.

    -

    To log in as a bot, follow these instructions ».

    -

    Sending a verification code

    -

    Example implementations: telegram for android, tdlib.

    -

    To show a nicely formatted and validated phone number field, the help.countriesList constructor can be obtained using the help.getCountriesList method.
    -The help.countriesList config is then used as described here ».

    -

    Authorization requires that a text message containing an authorization code first be sent to the user’s phone.
    -This may be done using the auth.sendCode method. -The system will automatically choose how to send the authorization code; there are four possible ways the code can arrive:

    -
      -
    • Telegram code
    • -
    • SMS code
    • -
    • Phone call: a synthesized voice will tell the user which verification code to input
    • -
    • Flash phone call: the code will be sent via a flash phone call, that will be closed immediately. -In the last case, the phone code will then be the phone number itself, just make sure that the phone number matches the specified pattern (see auth.sentCodeTypeFlashCall).
    • -
    -

    The auth.sendCode method also has parameters for enabling/disabling use of flash calls, and allows passing an SMS token that will be included in the sent SMS. -For example, the latter is required in newer versions of android, to use the android SMS receiver APIs.

    -

    The returned auth.SentCode object will contain multiple parameters:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    flags#Flags, see TL conditional fields
    typeauth.SentCodeTypePhone code type
    phone_code_hashstringPhone code hash, to be stored and later re-used with auth.signIn
    next_typeflags.1?auth.CodeTypePhone code type that will be sent next, if the phone code is not received within timeout seconds: to send it use auth.resendCode
    timeoutflags.2?intTimeout for reception of the phone code
    -

    If the message takes too long (timeout seconds) to arrive at the phone, the auth.resendCode method may be invoked to resend a code of type next_type. -If the same happens again, you can use auth.resendCode with the next_type returned by the previous call to auth.resendCode. -To cancel the verification code use auth.cancelCode.

    -

    Sign in/sign up

    -

    When user enters verification code, the auth.signIn method must be used to validate it and possibly sign user in.

    -

    If the code was entered correctly, but the method returns auth.authorizationSignUpRequired, 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 (auth.signUp) must be invoked.

    -

    2FA

    -

    When trying to sign in using auth.signIn, an error 400 SESSION_PASSWORD_NEEDED may be returned, if the user has two-factor authentication enabled. -In this case, instructions for SRP 2FA authentication must be followed.

    -

    To set up two-factor authorization on an already authorized account, follow the SRP 2FA authentication docs.

    -

    Test Phone Numbers

    -

    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.

    -

    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 Test DCs (their IP addresses for TCP transport are availble in API development tools panel after api_id was obtained, URI format for HTTPS/Websocket transport).

    -

    If you wish to emulate an application of a user associated with DC number X, it is sufficient to specify the phone number as 99966XYYYY, 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).

    -

    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.

    -

    Proceed with User Authorization flows in Production DCs only after you make sure everything works correctly on Test DCs first to avoid reaching flood limits.

    -
    -

    To help you with working on production DCs, logins with the same phone number with which the api_id was registered have more generous flood limits.

    -
    -

    We are authorized

    -

    As a result of authorization, the client key, auth_key_id, 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.

    -

    Only a small portion of the API methods are available to unauthorized users:

    - -

    Other methods will result in an error: 401 UNAUTHORIZED.

    - -
    - -
    -
    - -
    - - - - - - - - diff --git a/data/core.telegram.org/method/auth.sendCall b/data/core.telegram.org/api/bots.html similarity index 55% rename from data/core.telegram.org/method/auth.sendCall rename to data/core.telegram.org/api/bots.html index e1f9dae2b9..f8eeef96f4 100644 --- a/data/core.telegram.org/method/auth.sendCall +++ b/data/core.telegram.org/api/bots.html @@ -2,12 +2,16 @@ - auth.sendCall + Bots - - + + - + @@ -36,70 +40,30 @@
    - -

    auth.sendCall

    + +

    Bots

    -

    Makes a voice call to the passed phone number. A robot will repeat the confirmation code from a previously sent SMS message.

    -

    {scheme}

    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    phone_numberstringPhone number in the international format
    phone_code_hashstringSMS-message ID
    -

    Result

    -

    Bool

    -

    Query example

    -
    (auth.sendCall "79991234567" "2dc02d2cda9e615c84")
    -=
    -(boolTrue)
    +  
    -03c51564 3939370b 33323139 37363534 63643212 32643230 39616463 35313665 00343863 64e1a61b -= -997275b5
    -

    Possible errors

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    CodeTypeDescription
    400PHONE_NUMBER_INVALIDInvalid phone number
    400PHONE_CODE_HASH_EMPTYphone_code_hash was not sent
    400PHONE_CODE_EXPIREDSMS expired
    +

    Working with bots, using the MTProto API.

    +

    See here for more info about bots.

    +

    Please note that you can also use the simplified HTTP Bot API to use bots, see here for more info ».

    +

    Login

    +
    ---functions---
    +
    +auth.importBotAuthorization#67a3ff2c flags:int api_id:int api_hash:string bot_auth_token:string = auth.Authorization;
    +

    In order to login as a bot, instead of using the standard login code flow, simply provide the bot token generated by @botfather.
    +You must still provide your API ID, as per user logins.

    +

    After successful authorization, you will be able to use most MTProto API methods, just as any normal user.
    +Methods that can be called by bots will have a Bots can use this method notice.

    +

    Commands

    +

    Bots offer a set of commands that can be used by users in private, or in a chat.

    +

    Buttons

    +

    Users can interact with your bot via buttons or even inline buttons, straight from inline messages in any chat.

    +

    Inline queries

    +

    Users can interact with your bot via inline queries, straight from the text input field in any chat.

    +

    Games

    +

    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.

    @@ -166,8 +130,11 @@
    - - + + + diff --git a/data/core.telegram.org/api/bots/buttons.html b/data/core.telegram.org/api/bots/buttons.html deleted file mode 100644 index fafef10e7e..0000000000 --- a/data/core.telegram.org/api/bots/buttons.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - - Buttons - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    Buttons

    - -
    - -

    Users can interact with your bot via buttons or even inline buttons, straight from inline messages in any chat.
    -This article describes the full button flow, using the MTProto API.

    -

    For a simplified description using the HTTP bot API, see here ».

    -

    Buttons

    -
    keyboardButton#a2fa4880 text:string = KeyboardButton;
    -keyboardButtonUrl#258aff05 text:string url:string = KeyboardButton;
    -keyboardButtonCallback#35bbdb6b flags:# requires_password:flags.0?true text:string data:bytes = KeyboardButton;
    -keyboardButtonRequestPhone#b16a6c29 text:string = KeyboardButton;
    -keyboardButtonRequestGeoLocation#fc796b3f text:string = KeyboardButton;
    -keyboardButtonSwitchInline#568a748 flags:# same_peer:flags.0?true text:string query:string = KeyboardButton;
    -keyboardButtonGame#50f41ccf text:string = KeyboardButton;
    -keyboardButtonBuy#afd93fbb text:string = KeyboardButton;
    -keyboardButtonUrlAuth#10b78d29 flags:# text:string fwd_text:flags.0?string url:string button_id:int = KeyboardButton;
    -inputKeyboardButtonUrlAuth#d02e7fd4 flags:# request_write_access:flags.0?true text:string fwd_text:flags.1?string url:string bot:InputUser = KeyboardButton;
    -keyboardButtonRequestPoll#bbc7515d flags:# quiz:flags.0?Bool text:string = KeyboardButton;
    -
    -keyboardButtonRow#77608b83 buttons:Vector<KeyboardButton> = KeyboardButtonRow;
    -
    -replyKeyboardHide#a03e5b85 flags:# selective:flags.2?true = ReplyMarkup;
    -replyKeyboardForceReply#f4108aa0 flags:# single_use:flags.1?true selective:flags.2?true = ReplyMarkup;
    -replyKeyboardMarkup#3502758c flags:# resize:flags.0?true single_use:flags.1?true selective:flags.2?true rows:Vector<KeyboardButtonRow> = ReplyMarkup;
    -replyInlineMarkup#48a30254 rows:Vector<KeyboardButtonRow> = ReplyMarkup;
    -
    -message#58ae39c9 flags:# 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 id:int from_id:flags.8?Peer peer_id:Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to:flags.3?MessageReplyHeader date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector<MessageEntity> views:flags.10?int forwards:flags.10?int replies:flags.23?MessageReplies edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long restriction_reason:flags.22?Vector<RestrictionReason> = Message;
    -
    ----functions---
    -
    -messages.sendMessage#520c3870 flags:# no_webpage:flags.1?true silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:InputPeer reply_to_msg_id:flags.0?int message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> schedule_date:flags.10?int = Updates;
    -

    Bots can attach a ReplyMarkup constructor to outgoing messages, to attach an inline keyboard or a custom reply keyboard:

    - -

    Pressing buttons

    -
    keyboardButton#a2fa4880 text:string = KeyboardButton;
    -keyboardButtonUrl#258aff05 text:string url:string = KeyboardButton;
    -keyboardButtonCallback#35bbdb6b flags:# requires_password:flags.0?true text:string data:bytes = KeyboardButton;
    -keyboardButtonRequestPhone#b16a6c29 text:string = KeyboardButton;
    -keyboardButtonRequestGeoLocation#fc796b3f text:string = KeyboardButton;
    -keyboardButtonRequestPoll#bbc7515d flags:# quiz:flags.0?Bool text:string = KeyboardButton;
    -keyboardButtonSwitchInline#568a748 flags:# same_peer:flags.0?true text:string query:string = KeyboardButton;
    -keyboardButtonGame#50f41ccf text:string = KeyboardButton;
    -keyboardButtonBuy#afd93fbb text:string = KeyboardButton;
    -keyboardButtonUrlAuth#10b78d29 flags:# text:string fwd_text:flags.0?string url:string button_id:int = KeyboardButton;
    -
    -// Used by bots to send a keyboardButtonUrlAuth
    -inputKeyboardButtonUrlAuth#d02e7fd4 flags:# request_write_access:flags.0?true text:string fwd_text:flags.1?string url:string bot:InputUser = KeyboardButton;
    -
    -keyboardButtonRow#77608b83 buttons:Vector<KeyboardButton> = KeyboardButtonRow;
    -

    Both reply and inline keyboards are composed of a vector of rows, each row containing a vector of buttons, for each column.
    -Each row can have a different number of columns, and user clients should properly handle clicking buttons of every type.

    -

    Buttons available only in reply keyboards:

    - -

    Buttons available only in inline keyboards:

    - -

    Callback queries

    -

    keyboardButtonCallback buttons can be used to send the specified data payload back to the bot, when they are clicked.
    -Additionally, a bot can verify a user's identity by requiring they verify their 2FA password with SRP.

    -

    Sending a callback query

    -
    keyboardButtonGame#50f41ccf text:string = KeyboardButton;
    -keyboardButtonCallback#35bbdb6b flags:# requires_password:flags.0?true text:string data:bytes = KeyboardButton;
    -
    -messages.botCallbackAnswer#36585ea4 flags:# alert:flags.1?true has_url:flags.3?true native_ui:flags.4?true message:flags.0?string url:flags.2?string cache_time:int = messages.BotCallbackAnswer;
    -
    ----functions---
    -
    -messages.getBotCallbackAnswer#9342ca07 flags:# game:flags.1?true peer:InputPeer msg_id:int data:flags.0?bytes password:flags.2?InputCheckPasswordSRP = messages.BotCallbackAnswer;
    -

    When the user clicks on a keyboardButtonCallback in a message sent by a bot, or generated by an inline query, messages.getBotCallbackAnswer should be called, passing the peer and ID of the message.
    -The same should happen when clicking on keyboardButtonGame buttons, with the difference that the game flag must be set instead of the data parameter.

    -

    Make sure to properly handle bot timeouts in the form of BOT_RESPONSE_TIMEOUT RPC errors, as the bot may be offline and unable to reply.

    -

    The returned messages.botCallbackAnswer constructor contains:

    -
      -
    • message if specified, a message that should be shown in a non-blocking toast notification
    • -
    • alert indicates whether the message should be shown as a dismissable prompt, instead of a simple toast notification
    • -
    • has_url Whether an URL is present
    • -
    • url if specified, the client should open the URL, without showing a confirmation prompt.
      This is safe and allowed, because here, bots can only return:
        -
      • URLs to themselves with added query parameters (t.me/bot?start=aaa)
      • -
      • URLs to a valid game, if the bot has manually configured games, and the clicked button was a keyboardButtonGame.
      • -
      -
    • -
    • native_ui whether to open game URLs in a WebView or in native UI.
    • -
    • cache_time specifies for how long should this answer be cached, client-side
    • -
    -
    SRP verification
    -

    If the requires_password flag is set, the SRP 2FA payload must also be generated and attached to the query, to verify the identity of the user.

    -

    Note that the bot will NOT be able to access your password or the SRP payload.

    -

    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.
    -This is just a way of verifying the identity of the user, mainly used by the official @botfather bot to allow securely transferring the ownership of a bot to another user.

    -

    Answering a callback query

    -
    updateBotCallbackQuery#e73547e1 flags:# query_id:long user_id:int peer:Peer msg_id:int chat_instance:long data:flags.0?bytes game_short_name:flags.1?string = Update;
    -
    -updateInlineBotCallbackQuery#f9d27a5a flags:# query_id:long user_id:int msg_id:InputBotInlineMessageID chat_instance:long data:flags.0?bytes game_short_name:flags.1?string = Update;
    -
    ----functions---
    -
    -messages.setBotCallbackAnswer#d58f130a flags:# alert:flags.1?true query_id:long message:flags.0?string url:flags.2?string cache_time:int = Bool;
    -

    After the user invokes messages.getBotCallbackAnswer, an updateBotCallbackQuery or updateInlineBotCallbackQuery 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 inline query.

    -

    Either way, bots must reply to the query as quickly as possible using messages.setBotCallbackAnswer:

    - -

    If a game_short_name is present in the update, the bot should return the URL of the game with the specified name.
    -The messages.setBotCallbackAnswer method must be called anyway, even if no message or url is returned, to avoid timeouts on the client.

    - -
    - -
    -
    - -
    - - - - - - - - diff --git a/data/core.telegram.org/api/bots/games.html b/data/core.telegram.org/api/bots/games.html deleted file mode 100644 index e2414edf79..0000000000 --- a/data/core.telegram.org/api/bots/games.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - Games - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    Games

    - -
    - -

    Bots can offer users HTML5 games to play solo or to compete against each other in groups and one-on-one chats.

    -

    Sending a game

    -
    inputUserSelf#f7c1b13f = InputUser;
    -
    -inputGameID#32c3e77 id:long access_hash:long = InputGame;
    -inputGameShortName#c331e80a bot_id:InputUser short_name:string = InputGame;
    -
    -inputMediaGame#d33f43f3 id:InputGame = InputMedia;
    -
    -game#bdf9653b flags:# id:long access_hash:long short_name:string title:string description:string photo:Photo document:flags.0?Document = Game;
    -messageMediaGame#fdb19008 game:Game = MessageMedia;
    -
    ----functions---
    -
    -messages.sendMedia#3491eba9 flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:InputPeer reply_to_msg_id:flags.0?int media:InputMedia message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> schedule_date:flags.10?int = Updates;
    -

    Bots can directly send a game using messages.sendMedia, providing:

    -
      -
    • The bot's shortname obtained from @BotFather to inputGameShortName.short_name
    • -
    • The current bot's info to inputGameShortName.bot_id
    • -
    -

    The sent message will contain a messageMediaGame with a game, that can then be used by users to forward the game using sendMedia with inputGameID.

    -

    Starting a game

    -

    Games are started clicking on the button, which triggers an callback query that returns the game URL, for more info see here &raquo.
    -The game should then be opened in a WebView or in native UI (specified by the native_ui flag), exposing the appropriate HTML5 APIs in order to receive various JS game events directly from the code of the game, as described here ».

    -

    Setting highscores

    -
    ---functions---
    -
    -messages.setGameScore#8ef8ecc0 flags:# edit_message:flags.0?true force:flags.1?true peer:InputPeer id:int user_id:InputUser score:int = Updates;
    -messages.setInlineGameScore#15ad9f64 flags:# edit_message:flags.0?true force:flags.1?true id:InputBotInlineMessageID user_id:InputUser score:int = Bool;
    -

    Games are supposed to report back to the MTProto API every time the user looses a game with a new highscore.
    -Since games run in the browser, they cannot directly report data to the API using the bot token, which must be kept secret.
    -Instead, they should send highscores to an intermediate server, that will then report scores using messages.setGameScore or messages.setInlineGameScore, depending on the source of the game.

    -
      -
    • The edit_message flag should be set if the game message should be automatically edited to include the current scoreboard
    • -
    • The force flag should be set if the high score is allowed to decrease. This can be useful when fixing mistakes or banning cheaters.
    • -
    -

    Getting highscores

    -
    messageActionGameScore#92a72876 game_id:long score:int = MessageAction;
    -
    -messageService#286fa604 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true legacy:flags.19?true id:int from_id:flags.8?Peer peer_id:Peer reply_to:flags.3?MessageReplyHeader date:int action:MessageAction = Message;
    -
    -highScore#58fffcd0 pos:int user_id:int score:int = HighScore;
    -
    -messages.highScores#9a3bfd99 scores:Vector<HighScore> users:Vector<User> = messages.HighScores;
    -
    ----functions---
    -
    -messages.getGameHighScores#e822649d peer:InputPeer id:int user_id:InputUser = messages.HighScores;
    -messages.getInlineGameHighScores#f635e1b id:InputBotInlineMessageID user_id:InputUser = messages.HighScores;
    -

    Every time a highscore is reached, and the edit_message flag is set when reporting the score, a messageService with a messageActionGameScore is generated, indicating that the highscore of a certain game has changed, thanks to a certain user_id.
    -Our own current position of the scoreboard is also reported as pos.

    -

    When receiving such an update, graphical clients should refetch the scoreboard using messages.getGameHighScores or messages.getInlineGameHighScores.

    - -
    - -
    -
    - -
    - - - - - - - - diff --git a/data/core.telegram.org/api/datacenter.html b/data/core.telegram.org/api/datacenter.html new file mode 100644 index 0000000000..11cfe243a0 --- /dev/null +++ b/data/core.telegram.org/api/datacenter.html @@ -0,0 +1,151 @@ + + + + + Working with Different Data Centers + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    Working with Different Data Centers

    + +

    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 help.getConfig:

    +
    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;
    +

    In this context, this_dc is the number of the current DC, dc_options is a list of all DCs available at the moment, each of which has an id, ip, and port for establishing a connection. Please note that ip and port may change frequently, based on proxy server load and the user's current location.

    +

    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.

    +

    Registration/Authorization

    +

    The auth.sendCode 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.

    +

    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 phone_number 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).

    +

    Testing Redirects

    +

    There are reserved phone number prefixes to test the correctness of the application’s handling of redirects between DCs. Read more in User Authorization article.

    +

    File Access

    +

    A file saved by a user with upload.saveFilePart will be available for direct download only from the DC where the query was executed. That is why each file has a dc_id parameter:

    +
    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#69d3ab26 flags:# has_video:flags.0?true photo_id:long photo_small:FileLocation photo_big:FileLocation dc_id:int = UserProfilePhoto;
    +chatPhoto#d20b9f3c flags:# has_video:flags.0?true photo_small:FileLocation photo_big:FileLocation dc_id:int = ChatPhoto;
    +

    To download the file, an encrypted connection to DC dc_id must be established and used to execute the upload.getFile query. +If an attempt is made to download the file over a wrong connection, the FILE_MIGRATE_X error will be returned.

    +

    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 authorization transfer.

    +

    User Migration

    +

    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.

    +

    Authorization Transfer

    +

    The following methods can be used to eliminate the need for users to enter the code from a text message every time:

    +
    auth.exportedAuthorization#df969c2d id:int bytes:bytes = auth.ExportedAuthorization;
    +auth.authorization#cd050916 flags:# tmp_sessions:flags.0?int user:User = auth.Authorization;
    +---functions---
    +auth.importAuthorization#e3ef9613 id:int bytes:bytes = auth.Authorization;
    +auth.exportAuthorization#e5bfffcd dc_id:int = auth.ExportedAuthorization;
    +

    auth.exportAuthorization must be executed in the current DC (the DC with which a connection has already been established), passing in dc_id 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.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/api/dice.html b/data/core.telegram.org/api/dice.html new file mode 100644 index 0000000000..e42cf38a73 --- /dev/null +++ b/data/core.telegram.org/api/dice.html @@ -0,0 +1,149 @@ + + + + + Dice + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    Dice

    + +

    Telegram supports sending animated dice emojis.
    +This is implemented by using the dice constructors:

    +
    inputMediaDice#e66fbf7b emoticon:string = InputMedia;
    +messageMediaDice#3f7ee58b value:int emoticon:string = MessageMedia;
    +
    +inputStickerSetDice#e67f520e emoticon:string = InputStickerSet;
    +
    +messages.stickerSet#b60a24a6 set:StickerSet packs:Vector<StickerPack> documents:Vector<Document> = messages.StickerSet;
    +
    +---functions---
    +
    +messages.sendMedia#3491eba9 flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:InputPeer reply_to_msg_id:flags.0?int media:InputMedia message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> schedule_date:flags.10?int = Updates;
    +
    +messages.getStickerSet#2619a90e stickerset:InputStickerSet = messages.StickerSet;
    +
    +help.getAppConfig#98914110 = JSONValue;
    +

    On startup, clients should fetch app configuration using help.getAppConfig.
    +Then, for each dice emoji contained in the emojies_send_dice field, clients should fetch the dice emoji stickerset by calling the messages.getStickerSet method, providing the properly populated inputStickerSetDice to the stickerset field.
    +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.

    +

    If a user attempts to send a single emoji from the ones specified in emojies_send_dice, the dice should be sent using messages.sendMedia, providing the dice emoji to the emoticon field.

    +

    Incoming dice stickers will be received as a messageMediaDice constructor, along with a randomly generated server-side value, ranging from 1 to the maximum allowed value for this type of dice.
    +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, value can be used to directly index the documents sticker array from the animated stickerset.

    +

    The emojies_send_dice_success configuration parameter contains more info about dice emojis other than the basic 🎲:

    +
        "emojies_send_dice_success": {
    +        "\ud83c\udfaf": {
    +            "value": 6,
    +            "frame_start": 62
    +        },
    +        "\ud83c\udfc0": {
    +            "value": 5,
    +            "frame_start": 110
    +        }
    +    }
    +

    For each of the dice emojis, a maximum "winning" value is specified, along with the frame number at which to show the fireworks 🎆.
    +Please note that dice animated stickers should loop only once, right after being sent/received for the first time; clicking on the dice sticker should bring up a popup, inviting the user to send a new dice of the same type.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/api/bots/commands.html b/data/core.telegram.org/api/discussion.html similarity index 52% rename from data/core.telegram.org/api/bots/commands.html rename to data/core.telegram.org/api/discussion.html index 145dcf980f..f03d904938 100644 --- a/data/core.telegram.org/api/bots/commands.html +++ b/data/core.telegram.org/api/discussion.html @@ -2,12 +2,12 @@ - Commands + Discussion groups - - + + - + @@ -36,32 +36,43 @@
    - -

    Commands

    + +

    Discussion groups

    -

    Bots offer a set of commands that can be used by users in private, or in a chat.

    -

    For a simplified description using the HTTP bot API, see here ».

    -

    Getting commands

    -
    botCommand#c27ac8c7 command:string description:string = BotCommand;
    -
    -botInfo#98e81d3a user_id:int description:string commands:Vector<BotCommand> = BotInfo;
    +

    Groups can be associated to a channel as a discussion group, to allow users to discuss about posts.

    +
    boolFalse#bc799737 = Bool;
    +boolTrue#997275b5 = Bool;
     
     channelFull#f0e6672a flags:# 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:int about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:ExportedChatInvite bot_info:Vector<BotInfo> migrated_from_chat_id:flags.4?int migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int folder_id:flags.11?int linked_chat_id:flags.14?int location:flags.15?ChannelLocation slowmode_seconds:flags.17?int slowmode_next_send_date:flags.18?int stats_dc:flags.12?int pts:int = ChatFull;
    -userFull#edf17c12 flags:# 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:User about:flags.1?string settings:PeerSettings profile_photo:flags.2?Photo notify_settings:PeerNotifySettings bot_info:flags.3?BotInfo pinned_msg_id:flags.6?int common_chats_count:int folder_id:flags.11?int = UserFull;
     
    -user#938458c1 flags:# 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 id:int access_hash:flags.0?long first_name:flags.1?string last_name:flags.2?string username:flags.3?string phone:flags.4?string photo:flags.5?UserProfilePhoto status:flags.6?UserStatus bot_info_version:flags.14?int restriction_reason:flags.18?Vector<RestrictionReason> bot_inline_placeholder:flags.19?string lang_code:flags.22?string = User;
    -

    The botInfo constructors contained in the userFull, chatFull, channelFull contain a list of commands, and for groups, the ID and a description of each bot.

    -

    In graphical clients, when users begin a message with a /, 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.

    -

    If the command list of a bot changes, the bot_info_version contained in the user constructor received in updates will change; this indicates that the client should refetch full bot information using users.getFullUser.

    -

    Setting commands

    -
    botCommand#c27ac8c7 command:string description:string = BotCommand;
    +messages.chats#64ff9fd5 chats:Vector<Chat> = messages.Chats;
     
     ---functions---
     
    -bots.setBotCommands#805d46f6 commands:Vector<BotCommand> = Bool;
    -

    The command list can be changed by the owner of the bot through @botfather, but bots can also change their own command list by invoking bots.setBotCommands.

    +channels.setDiscussionGroup#40582bb2 broadcast:InputChannel group:InputChannel = Bool; +channels.getGroupsForDiscussion#f5dad378 = messages.Chats; +

    A discussion group can be associated to a channel using channels.setDiscussionGroup.
    +The discussion group can be accessed in the client by clicking on the discuss button of the channel, or by accessing the comment section of a specific post; the discussion group ID is also present in the linked_chat_id field of the channelFull constructor.

    +

    All messages sent to the channel will also be sent to the linked group (with sender peer from_id equal to the peer of the linked channel); those messages will also be automatically pinned in the group.

    +

    Linking a discussion group

    +

    To obtain a list of admined supergroups that a channel admin can possibly associate to a channel, use channels.getGroupsForDiscussion.
    +Returned legacy group chats must be first upgraded to supergroups before they can be set as a discussion group.
    +Before linking a supergroup to a channel, access to the supergroup's old messages must also be enabled using channels.togglePreHistoryHidden.

    +

    To set a returned supergroup as a discussion group use channels.setDiscussionGroup.

    +

    Schema:

    +
    boolFalse#bc799737 = Bool;
    +boolTrue#997275b5 = Bool;
    +
    +messages.chats#64ff9fd5 chats:Vector<Chat> = messages.Chats;
    +
    +---functions---
    +
    +channels.setDiscussionGroup#40582bb2 broadcast:InputChannel group:InputChannel = Bool;
    +channels.getGroupsForDiscussion#f5dad378 = messages.Chats;
    +
    +channels.togglePreHistoryHidden#eabbb94c channel:InputChannel enabled:Bool = Updates;
    diff --git a/data/core.telegram.org/type/string.html b/data/core.telegram.org/api/entities.html similarity index 54% rename from data/core.telegram.org/type/string.html rename to data/core.telegram.org/api/entities.html index 472761b35a..35be5bb67b 100644 --- a/data/core.telegram.org/type/string.html +++ b/data/core.telegram.org/api/entities.html @@ -2,12 +2,12 @@ - string + Styled text with message entities - - - - + + + + @@ -26,9 +26,9 @@
  • Home
  • -
  • API
  • +
  • API
  • Protocol
  • -
  • Schema
  • +
  • Schema
  • @@ -36,21 +36,32 @@
    - -

    string

    + +

    Styled text with message entities

    -

    A basic bare type. Values of type string look differently depending on the length L of the string being serialized:

    +

    Telegram supports styled text using message entities.

    +

    A client that wants to send styled messages would simply have to integrate a Markdown/HTML parser, and generate an array of message entities by iterating through the parsed tags.

    +

    Special care must be taken to consider the UTF-8 length of strings when generating message entities, see example implementations: tdlib, MadelineProto.

    +

    Nested entities are supported.
    +For example the following HTML/Markdown aliases for message entities can be used:

      -
    • 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 little-endian integers.
    • -
    • If L >= 254, the serialization contains byte 254, followed by 3 bytes with the string length L in little-endian order, followed by L bytes of the string, further followed by 0 to 3 null padding bytes.
    • +
    • messageEntityBold => <b>bold</b>, <strong>bold</strong>, **bold**
    • +
    • messageEntityItalic => <i>italic</i>, <em>italic</em> *italic*
    • +
    • messageEntityCode => <code>code</code>, `code`
    • +
    • messageEntityStrike => <s>strike</s>, <strike>strike</strike>, <del>strike</del>, ~~strike~~
    • +
    • messageEntityUnderline => <u>underline</u>
    • +
    • messageEntityPre => <pre language="c++">code</pre>,
    -

    All strings passed to the API must be encoded in UTF-8. When arbitrary byte sequences have to be serialized, bytes alias is to be used.

    -

    Further details on basic types»

    -

    Related pages

    -

    bytes

    -

    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.

    -

    When computing crc32 for a constructor or method it is necessary to replace all byte types with string types.

    -

    Binary Data Serialization

    +
    +```c++
    +code
    +```
    +
    +

    The following entities can also be used to mention users:

    +
    diff --git a/data/core.telegram.org/api/files.html b/data/core.telegram.org/api/files.html deleted file mode 100644 index 5d3ebb8eff..0000000000 --- a/data/core.telegram.org/api/files.html +++ /dev/null @@ -1,550 +0,0 @@ - - - - - Uploading and Downloading Files - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    Uploading and Downloading Files

    - -
    - -

    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.

    -

    Uploading files

    -

    There are a number of API methods to save files. The schema of the types and methods used is presented below:

    -
    inputFile#f52ff27f id:long parts:int name:string md5_checksum:string = InputFile;
    -inputFileBig#fa4f0bb5 id:long parts:int name:string = InputFile;
    -
    -
    -inputEncryptedFileUploaded#64bd0306 id:long parts:int md5_checksum:string key_fingerprint:int = InputEncryptedFile;
    -inputEncryptedFileBigUploaded#2dc173c8 id:long parts:int key_fingerprint:int = InputEncryptedFile;
    -
    -inputSecureFileUploaded#3334b0f0 id:long parts:int md5_checksum:string file_hash:bytes secret:bytes = InputSecureFile;
    -inputSecureFile#5367e5be id:long access_hash:long = InputSecureFile;
    -
    -inputMediaUploadedPhoto#1e287d04 flags:# file:InputFile stickers:flags.0?Vector<InputDocument> ttl_seconds:flags.1?int = InputMedia;
    -inputMediaUploadedDocument#5b38c6c1 flags:# nosound_video:flags.3?true force_file:flags.4?true file:InputFile thumb:flags.2?InputFile mime_type:string attributes:Vector<DocumentAttribute> stickers:flags.0?Vector<InputDocument> ttl_seconds:flags.1?int = InputMedia;
    -
    -inputChatUploadedPhoto#c642724e flags:# file:flags.0?InputFile video:flags.1?InputFile video_start_ts:flags.2?double = InputChatPhoto;
    -
    -
    ----functions---
    -
    -messages.sendMedia#3491eba9 flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:InputPeer reply_to_msg_id:flags.0?int media:InputMedia message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> schedule_date:flags.10?int = Updates;
    -messages.uploadMedia#519bc2b1 peer:InputPeer media:InputMedia = MessageMedia;
    -messages.sendEncryptedFile#5559481d flags:# silent:flags.0?true peer:InputEncryptedChat random_id:long data:bytes file:InputEncryptedFile = messages.SentEncryptedMessage;
    -
    -photos.uploadProfilePhoto#89f30f69 flags:# file:flags.0?InputFile video:flags.1?InputFile video_start_ts:flags.2?double = photos.Photo;    
    -
    -upload.saveFilePart#b304a621 file_id:long file_part:int bytes:bytes = Bool;
    -upload.saveBigFilePart#de7b673d file_id:long file_part:int file_total_parts:int bytes:bytes = Bool;
    -

    Before transmitting the contents of the file itself, the file has to be assigned a unique 64-bit client identifier: file_id.

    -

    The file’s binary content is then split into parts. All parts must have the same size ( part_size ) and the following conditions must be met:

    -
      -
    • part_size % 1024 = 0 (divisible by 1KB)
    • -
    • 524288 % part_size = 0 (512KB must be evenly divisible by part_size)
    • -
    -

    The last part does not have to satisfy these conditions, provided its size is less than part_size.

    -

    Each part should have a sequence number, file_part, with a value ranging from 0 to 2,999.

    -

    After the file has been partitioned you need to choose a method for saving it on the server. Use upload.saveBigFilePart in case the full size of the file is more than 10 MB and upload.saveFilePart for smaller files.

    -

    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.

    -

    When using one of the methods mentioned above to save file parts, one of the following data input errors may be returned:

    -
      -
    • FILE_PARTS_INVALID - Invalid number of parts. The value is not between 1..3000
    • -
    • FILE_PART_INVALID: The file part number is invalid. The value is not between 0 and 2,999.
    • -
    • FILE_PART_TOO_BIG: The size limit (512 KB) for the content of the file part has been exceeded
    • -
    • FILE_PART_EMPTY: The file part sent is empty
    • -
    • FILE_PART_SIZE_INVALID - 512KB cannot be evenly divided by part_size
    • -
    • FILE_PART_SIZE_CHANGED - The part size is different from the size of one of the previous parts in the same file
    • -
    -

    While the parts are being uploaded, an MD5 hash of the file contents can also be computed to be used later as the md5_checksum parameter in the inputFile 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 inputFile object. In case the upload.saveBigFilePart method is used, the inputFileBig constructor must be passed, in other cases use inputFile.

    - -

    The file save operation may return one of the following data input errors:

    -
      -
    • FILE_PARTS_INVALID: The number of file parts is invalid The value is not between 1 and 3,000.
    • -
    • 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.
    • -
    • MD5_CHECKSUM_INVALID: The file’s checksum did not match the md5_checksum parameter
    • -
    -

    Albums, grouped media

    -
    inputMediaUploadedPhoto#1e287d04 flags:# file:InputFile stickers:flags.0?Vector<InputDocument> ttl_seconds:flags.1?int = InputMedia;
    -inputMediaUploadedDocument#5b38c6c1 flags:# nosound_video:flags.3?true force_file:flags.4?true file:InputFile thumb:flags.2?InputFile mime_type:string attributes:Vector<DocumentAttribute> stickers:flags.0?Vector<InputDocument> ttl_seconds:flags.1?int = InputMedia;
    -
    -inputSingleMedia#1cc6e91f flags:# media:InputMedia random_id:long message:string entities:flags.0?Vector<MessageEntity> = InputSingleMedia;
    -
    ----functions---
    -
    -messages.sendMultiMedia#cc0110cb flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:InputPeer reply_to_msg_id:flags.0?int multi_media:Vector<InputSingleMedia> schedule_date:flags.10?int = Updates;
    -

    Telegram allows grouping photos into albums and generic files (audio, docuemnts) into media groups.

    -

    To do this, messages.sendMultiMedia is used, wrapping each InputMedia constructor (uploaded or pre-existing, maximum 10 per media group) into an inputSingleMedia constructor, optionally providing a custom per-file caption in message.

    -

    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.
    -Other grouped media can display a caption under each file.

    -

    Re-using pre-uploaded files

    -
    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;
    -
    ----functions---
    -
    -messages.getDocumentByHash#338e2464 sha256:bytes size:int mime_type:string = Document;
    -

    For some types of documents like GIFs, messages.getDocumentByHash 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 document is returned.

    -

    Uploading profile or chat pictures

    -
    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;
    -
    -photos.photo#20212ca8 photo:Photo users:Vector<User> = photos.Photo;
    -
    -inputPhoto#3bb3b94a id:long access_hash:long file_reference:bytes = InputPhoto;
    -
    -inputFile#f52ff27f id:long parts:int name:string md5_checksum:string = InputFile;
    -
    -inputChatUploadedPhoto#c642724e flags:# file:flags.0?InputFile video:flags.1?InputFile video_start_ts:flags.2?double = InputChatPhoto;
    -inputChatPhoto#8953ad37 id:InputPhoto = InputChatPhoto;
    -
    ----functions---
    -
    -photos.updateProfilePhoto#72d4742c id:InputPhoto = photos.Photo;
    -photos.uploadProfilePhoto#89f30f69 flags:# file:flags.0?InputFile video:flags.1?InputFile video_start_ts:flags.2?double = photos.Photo;
    -
    -messages.editChatPhoto#ca4c79d8 chat_id:int photo:InputChatPhoto = Updates;
    -
    -channels.editPhoto#f12e57c9 channel:InputChannel photo:InputChatPhoto = Updates;
    -

    User profile pictures can be uploaded using the photos.uploadProfilePhoto method: the actual profile picture has to be uploaded as for normal files.
    -photos.uploadProfilePhoto can also be used to reupload previously uploaded profile pictures.

    -

    Animated profile pictures

    -

    Animated profile pictures are also supported, by populating the video constructor: square MPEG4 videos up to 1080x1080 are supported, 800x800 is the recommended resolution.
    -The video_start_ts is a floating point UNIX timestamp in seconds, indicating the frame of the video that should be used as static preview.

    -

    Chat, channel and supergroup profile photos and videos can be uploaded using messages.editChatPhoto (legacy groups) or channels.editPhoto (channels, supergroups).
    -Use the inputChatPhoto to reuse previously uploaded profile pictures.

    -

    Downloading files

    -

    There are methods available to download files which have been successfully uploaded. The schema of the types and methods used is presented below:

    -
    upload.file#96a18d5 type:storage.FileType mtime:int bytes:bytes = upload.File;
    -upload.fileCdnRedirect#f18cda44 dc_id:int file_token:bytes encryption_key:bytes encryption_iv:bytes file_hashes:Vector<FileHash> = upload.File;
    -
    -storage.fileUnknown#aa963b05 = storage.FileType;
    -storage.fileJpeg#7efe0e = storage.FileType;
    -storage.fileGif#cae1aadf = storage.FileType;
    -storage.filePng#a4f63c0 = storage.FileType;
    -storage.fileMp3#528a0677 = storage.FileType;
    -storage.fileMov#4b09ebbc = storage.FileType;
    -storage.filePartial#40bc6f52 = storage.FileType;
    -storage.fileMp4#b3cea0e4 = storage.FileType;
    -storage.fileWebp#1081464c = storage.FileType;
    -
    ----functions---
    -
    -upload.getFile#b15a9afc flags:# precise:flags.0?true cdn_supported:flags.1?true location:InputFileLocation offset:int limit:int = upload.File;
    -

    Any file can be downloaded by calling upload.getFile. -The data for the input parameter of the InputFileLocation type is generated as follows:

    -
    inputFileLocation#dfdaabe1 volume_id:long local_id:int secret:long file_reference:bytes = InputFileLocation;
    -inputEncryptedFileLocation#f5235d55 id:long access_hash:long = InputFileLocation;
    -inputDocumentFileLocation#bad07584 id:long access_hash:long file_reference:bytes thumb_size:string = InputFileLocation;
    -inputSecureFileLocation#cbc7ee28 id:long access_hash:long = InputFileLocation;
    -inputTakeoutFileLocation#29be5899 = InputFileLocation;
    -inputPhotoFileLocation#40181ffe id:long access_hash:long file_reference:bytes thumb_size:string = InputFileLocation;
    -inputPhotoLegacyFileLocation#d83466f3 id:long access_hash:long file_reference:bytes volume_id:long local_id:int secret:long = InputFileLocation;
    -inputPeerPhotoFileLocation#27d69997 flags:# big:flags.0?true peer:InputPeer volume_id:long local_id:int = InputFileLocation;
    -inputStickerSetThumb#dbaeae9 stickerset:InputStickerSet volume_id:long local_id:int = InputFileLocation;
    -
    -inputStickerSetEmpty#ffb62b95 = InputStickerSet;
    -inputStickerSetID#9de7a269 id:long access_hash:long = InputStickerSet;
    -inputStickerSetShortName#861cc8a0 short_name:string = InputStickerSet;
    -
    -inputPeerSelf#7da07ec9 = InputPeer;
    -inputPeerChat#179be863 chat_id:int = InputPeer;
    -inputPeerUser#7b8e7de6 user_id:int access_hash:long = InputPeer;
    -inputPeerChannel#20adaef8 channel_id:int access_hash:long = InputPeer;
    -
    -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;
    -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;
    -
    -photoSize#77bfb61b type:string location:FileLocation w:int h:int size:int = PhotoSize;
    -photoCachedSize#e9a734fa type:string location:FileLocation w:int h:int bytes:bytes = PhotoSize;
    -
      -
    • -

      For photos, inputPhotoFileLocation is used:

      -
        -
      • id, file_reference and access_hash taken from the photo constructor
      • -
      • thumb_size taken from the type field of the desired PhotoSize of the photo
      • -
      -
    • -
    • -

      For profile pictures of users, channels, supergroups and groups, since in most occasions they are encountered as simple fileLocationToBeDeprecated constructors without an associated photo, inputPeerPhotoFileLocation has to be used:

      -
        -
      • peer is the identifier of the peer whose photo we want to download
      • -
      • volume_id and local_id are extracted from the fileLocationToBeDeprecated of the desired quality (the logic for selecting the quality of profile pictures will be changed soon)
      • -
      -
    • -
    • -

      For documents, inputDocumentFileLocation is used:

      -
        -
      • id, file_reference and access_hash taken from the document constructor
      • -
      • If downloading the thumbnail of a document, thumb_size should be taken from the type field of the desired PhotoSize of the photo; otherwise, provide an empty string.
      • -
      -
    • -
    • -

      For encrypted secret chat and telegram passport documents, respectively inputEncryptedFileLocation and inputSecureFileLocation have to be used, with parameters extracted from encryptedFile and secureFile (passport docs).

      -
    • -
    • -

      For previews of sticker sets, inputStickerSetThumb is used (note: to download stickers and previews of stickers use the document method described above):

      - -
    • -
    • -

      For old deprecated photos, if the client has cached some old fileLocations with the deprecated secret identifier, inputFileLocation is used (this is mainly used for backwards compatiblity with bot API file IDs, all user clients must use the modern inputPhotoFileLocation file IDs):

      -
        -
      • All fields are taken from the previously cached fileLocation except for id, file_reference and access_hash taken from the photo constructor
      • -
      -
    • -
    -

    The size of each file in bytes is available, which makes it possible to download the file in parts using the parameters offset and limit, similar to the way files are uploaded.

    -

    If precise flag is not specified, then

    -
      -
    • The parameter offset must be divisible by 4 KB.
    • -
    • The parameter limit must be divisible by 4 KB.
    • -
    • 1048576 (1 MB) must be divisible by limit.
    • -
    -

    If precise is specified, then

    -
      -
    • The parameter offset must be divisible by 1 KB.
    • -
    • The parameter limit must be divisible by 1 KB.
    • -
    • limit must not exceed 1048576 (1 MB).
    • -
    -

    In any case the requested part should be within one 1 MB chunk from the beginning of the file, i. e.

    -
      -
    • offset / (1024 * 1024) == (offset + limit - 1) / (1024 * 1024).
    • -
    -

    The file download operation may return a FILE_REFERENCE_EXPIRED error (or another error starting with FILE_REFERENCE_): in this case, the file_reference field of the input location must be refreshed. -The file download operation may return an upload.fileCdnRedirect constructor: in this case, these instructions must be followed for downloading CDN files. -The file download operation may also return one of the following data input errors:

    -
      -
    • FILE_ID_INVALID: The file address is invalid
    • -
    • OFFSET_INVALID: The offset value is invalid
    • -
    • LIMIT_INVALID: The limit value is invalid
    • -
    • FILE_MIGRATE_X: The file is in the datacenter No. X
    • -
    -

    Verifying downloaded chunks

    -
    fileHash#6242c773 offset:int limit:int hash:bytes = FileHash;
    -
    ----functions---
    -
    -upload.getFileHashes#c7025931 location:InputFileLocation offset:int = Vector<FileHash>;
    -

    In order to confirm the integrity of the downloaded file, clients are recommended to verify hashes for each downloaded part, as for CDN DCs. -upload.getFileHashes contain FileHash constructors. Each of these constructors contains the SHA-256 hash of a part of the file that starts with offset and takes limit bytes.

    -

    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 upload.getFileHashes method to obtain the missing hash.

    -

    Handling audio, video and vector previews

    -

    Scheme:

    -
    photoSizeEmpty#e17e23c type:string = PhotoSize;
    -photoSize#77bfb61b type:string location:FileLocation w:int h:int size:int = PhotoSize;
    -photoCachedSize#e9a734fa type:string location:FileLocation w:int h:int bytes:bytes = PhotoSize;
    -photoStrippedSize#e0b0bc2e type:string bytes:bytes = PhotoSize;
    -photoSizeProgressive#5aa86a51 type:string location:FileLocation w:int h:int sizes:Vector<int> = PhotoSize;
    -photoPathSize#d8214d41 type:string bytes:bytes = PhotoSize;
    -
    -videoSize#e831c556 flags:# type:string location:FileLocation w:int h:int size:int video_start_ts:flags.0?double = VideoSize;
    -
    -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;
    -
    -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;
    -

    Telegram attaches a vector of thumbnails with reduced resolution to all uploaded media.
    -The server also generates a trimmed and scaled down video preview for videos, GIFs and animated profile pictures.

    -

    Image thumbnail types

    -

    Each photo preview has a specific type, indicating the resolution and image transform that was applied server-side.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeImage filterSize
    sbox100x100
    mbox320x320
    xbox800x800
    ybox1280x1280
    wbox2560x2560
    acrop160x160
    bcrop320x320
    ccrop640x640
    dcrop1280x1280
    -

    Special types:

    - - - - - - - - - - - - - - - - - -
    TypeImage filter
    istrip
    joutline
    -

    Stripped thumbnails

    -
    photoStrippedSize#e0b0bc2e type:string bytes:bytes = PhotoSize;
    -

    A photoStrippedSize (with type i) is an extremely low-res thumbnail, embedded directly inside media location objects.
    -It should be shown to the user in chat message previews, or while still downloading the most appropriately sized photoSize through the media DCs as described above.

    -

    The stripped bytes payload should be inflated to a JPG payload as seen here ».

    -

    Vector thumbnails

    -
    photoPathSize#d8214d41 type:string bytes:bytes = PhotoSize;
    -

    Messages with animated stickers 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 j type photoPathSize thumbnail.

    -

    This specific vector thumbnail consists in an SVG path, specially encoded to save space.
    -This path will be the outline of the animated sticker, and should be shown to the user while downloading the actual sticker.

    -

    As for stripped sizes, the payload should be inflated using the following algorithm:

    -
    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"
    -

    path will contain the actual SVG path that can be directly inserted in the d attribute of an svg <path> element:

    -
    <?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>
    -

    Video types

    -
    videoSize#e831c556 flags:# type:string location:FileLocation w:int h:int size:int video_start_ts:flags.0?double = VideoSize;
    -

    A videoSize constructor is typically used for [animated profile pictures]() and video previews.

    - - - - - - - - - - - - - - - - - - - - -
    TypeDescriptionFormat
    uAnimated profile pictureMPEG4
    vVideo previewMPEG4
    -

    Downloading webfiles

    -

    Remote HTTP files sent by inline bots in response to inline queries and in other places are represented by WebDocument constructors. -When forwarding such remote HTTP files, they should be sent using external InputMedia constructors. -Remote HTTP files can only be downloaded directly by the client if contained in a webDocumentNoProxy constructor: in this case, the file is deemed safe to download (this is the case for HTTPS files from certain trusted domains).

    -

    However, if the remote file is contained in a webDocument, to avoid leaking sensitive information the file must be downloaded through telegram's servers. -This can be done in a manner similar to normal files, with the difference that upload.getWebFile must be used, instead.

    -
    upload.webFile#21e753bc size:int mime_type:string file_type:storage.FileType mtime:int bytes:bytes = upload.WebFile;
    -
    -storage.fileUnknown#aa963b05 = storage.FileType;
    -storage.fileJpeg#7efe0e = storage.FileType;
    -storage.fileGif#cae1aadf = storage.FileType;
    -storage.filePng#a4f63c0 = storage.FileType;
    -storage.fileMp3#528a0677 = storage.FileType;
    -storage.fileMov#4b09ebbc = storage.FileType;
    -storage.filePartial#40bc6f52 = storage.FileType;
    -storage.fileMp4#b3cea0e4 = storage.FileType;
    -storage.fileWebp#1081464c = storage.FileType;
    -
    - ---functions---
    -
    -upload.getWebFile#24e6818d location:InputWebFileLocation offset:int limit:int = upload.WebFile;
    -

    The InputWebFileLocation constructor is generated as follows.

    -
    inputWebFileLocation#c239d686 url:string access_hash:long = InputWebFileLocation;
    -inputWebFileGeoPointLocation#9f2221c9 geo_point:InputGeoPoint access_hash:long w:int h:int zoom:int scale:int = InputWebFileLocation;
    -
    -webDocument#1c570ed1 url:string access_hash:long size:int mime_type:string attributes:Vector<DocumentAttribute> = WebDocument;
    -
    -inputGeoPoint#48222faf flags:# lat:double long:double accuracy_radius:flags.0?int = InputGeoPoint;
    -
    -geoPoint#b2a2f663 flags:# long:double lat:double access_hash:long accuracy_radius:flags.0?int = GeoPoint;
    -
      -
    • inputWebFileLocation is simply generated by taking the url and access_hash fields of the webDocument constructor.
    • -
    • inputWebFileGeoPointLocation is used to download a server-generated image with the map preview from a geoPoint.
        -
      • geo_point is generated from the lat, long accuracy_radius parameters of the geoPoint
      • -
      • access_hash is the access hash of the geoPoint
      • -
      • w - Map width in pixels before applying scale; 16-1024
      • -
      • h - Map height in pixels before applying scale; 16-1024
      • -
      • zoom - Map zoom level; 13-20
      • -
      • scale - Map scale; 1-3
      • -
      -
    • -
    -

    General Considerations

    -

    It is recommended that large queries (upload.getFile, upload.saveFilePart, upload.getWebFile) 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 getting updates and other method calls.

    -

    Related articles

    -

    Handling file references

    -

    How to handle file references.

    - -
    - -
    -
    - -
    - - - - - - - - diff --git a/data/core.telegram.org/api/invoking.html b/data/core.telegram.org/api/invoking.html new file mode 100644 index 0000000000..13e792b8c4 --- /dev/null +++ b/data/core.telegram.org/api/invoking.html @@ -0,0 +1,155 @@ + + + + + Calling API Methods + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    Calling API Methods

    + +
    + +

    Layers

    +

    Versioning in the API is supported by so-called TL layers.

    +

    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. +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.

    +

    There is helper method to let the API know that a client supports Layer layer:

    +
    invokeWithLayer#da9b0d0d {X:Type} layer:int query:!X = X;
    +

    The helper method invokeWithLayer can be used only together with initConnection: the present layer will be saved with all other parameters of the client and future calls will be using this saved value. See more below..

    +

    List of Available Layers

    +

    Saving Client Info

    +

    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 call.

    +

    The helper method initConnection 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.

    +

    initConnection must also be called after each auth.bindTempAuthKey.

    +

    When calling this method, the current layer used by the client is also saved (the layer in which initConnection was wrapped is used). After a successful call to initConnection it is no longer necessary to wrap each API call in invokeWithLayerN.

    +

    Disabling updates

    +
    invokeWithoutUpdates#bf9459b7 {X:Type} query:!X = X;
    +

    invokeWithoutUpdates can be used to invoke a request without subscribing the used connection for updates (this is enabled by default for file queries).

    +

    Sequential Calls

    +

    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, there is a chance that 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).

    +

    There are helper methods for making several consecutive API calls without wasting time waiting for a response:

    +
    +

    invokeAfterMsg#cb9f372d {X:Type} msg_id:long query:!X = X;
    +invokeAfterMsgs#3dc4b4f0 {X:Type} msg_ids:Vector query:!X = X;

    +
    +

    They may be used, for example, if a client attempts to send accumulated messages after the Internet connection has been restored after being absent for a long time. In this case, the 32-bit number 0xcb9f372d must be added before the method number in each call, followed by a 64-bit message identifier, msg_id, which contains the previous call in the queue. +The second method is similar, except it takes several messages that must be waited for.

    +

    If the waiting period exceeds 0.5 seconds (this value may change in the future) and no result has appeared, the method will be executed just the same. If any of the queries returns an error, all its dependent queries will also return the 400 MSG_WAIT_FAILED error.

    +

    Helper Method Sequence

    +

    Important: if the helper methods invokeAfterMsg / invokeAfterMsgs are used together with invokeWithLayerN or other helper methods, invokeAfterMsg / invokeAfterMsgs must always be the outermost wrapper.

    +

    Data Compression

    +

    We recommend using gzip compression when making method calls in order to reduce the amount of network traffic.

    +

    The schema and constructor information are given in the protocol documentation.

    +

    Data Compression when Making a Call

    +

    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 gzip_packed constructor.

    +

    There is no point in doing the above when transmitting binary multimedia data (photos, videos) or small messages (up to 255 bytes).

    +

    Uncompressing Data

    +

    By default, the server compresses the response to any call as well as updates, in accordance with the rules stated above. If the gzip_packed 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.

    + +
    + +
    +
    + +
    + + + + + + + + diff --git a/data/core.telegram.org/api/layers.html b/data/core.telegram.org/api/layers.html deleted file mode 100644 index c0e81d1050..0000000000 --- a/data/core.telegram.org/api/layers.html +++ /dev/null @@ -1,1446 +0,0 @@ - - - - - Layers - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    Layers

    - -
    - -

    Below you will find information on scheme changes. For more details on the use of layers, see Invoking API methods.

    -

    Layer 121

    -

    Added SVG path previews for animated stickers.

    -

    Scheme changes

    -
    New Constructors
    -
      -
    • Added photoPathSize - Messages with animated stickers can have a compressed svg (< 300 bytes) to show the outline of the sticker before fetching the actual lottie animation.
    • -
    -

    Scheme

    -
    photoPathSize#d8214d41 type:string bytes:bytes = PhotoSize;
    -

    Layer 120

    -

    Added message statistics, and a method to unpin all pinned messages in a chat.

    -

    Scheme changes

    -
    New Methods
    - -
    Changed Methods
    -
      -
    • Changed type of from_id from flags.0?InputUser to flags.0?InputPeer in messages.search
    • -
    -
    New Constructors
    - -
    Changed Constructors
    - -
    Deleted Constructors
    -
      -
    • Removed updateChannelPinnedMessage
    • -
    • Removed updateUserPinnedMessage
    • -
    • Removed updateChatPinnedMessage
    • -
    -

    PUSH notification changes

    -
    New PUSH notifications
    - -

    Scheme

    -
    inputGeoPoint#48222faf flags:# lat:double long:double accuracy_radius:flags.0?int = InputGeoPoint;
    -geoPoint#b2a2f663 flags:# long:double lat:double access_hash:long accuracy_radius:flags.0?int = GeoPoint;
    -messages.messagesSlice#3a54685e flags:# inexact:flags.1?true count:int next_rate:flags.0?int offset_id_offset:flags.2?int messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Messages; -messages.channelMessages#64479808 flags:# inexact:flags.1?true pts:int count:int offset_id_offset:flags.2?int messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Messages;
    -inputBotInlineMessageMediaGeo#96929a85 flags:# geo_point:InputGeoPoint heading:flags.0?int period:flags.1?int proximity_notification_radius:flags.3?int reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage;
    -botInlineMessageMediaGeo#051846fd flags:# geo:GeoPoint heading:flags.0?int period:flags.1?int proximity_notification_radius:flags.3?int reply_markup:flags.2?ReplyMarkup = BotInlineMessage;
    -inputMediaGeoLive#971fa843 flags:# stopped:flags.0?true geo_point:InputGeoPoint heading:flags.2?int period:flags.1?int proximity_notification_radius:flags.3?int = InputMedia;
    -messageMediaGeoLive#b940c666 flags:# geo:GeoPoint heading:flags.0?int period:int proximity_notification_radius:flags.1?int = MessageMedia;
    -inputMessageCallbackQuery#acfa1a7e id:int query_id:long = InputMessage;
    -channelParticipantLeft#c3c6796b user_id:int = ChannelParticipant; -channelParticipantsMentions#e04b5ceb flags:# q:flags.0?string top_msg_id:flags.1?int = ChannelParticipantsFilter;
    -updatePinnedMessages#ed85eab5 flags:# pinned:flags.0?true peer:Peer messages:Vector<int> pts:int pts_count:int = Update; -updatePinnedChannelMessages#8588878b flags:# pinned:flags.0?true channel_id:int messages:Vector<int> pts:int pts_count:int = Update;
    -inputMessagesFilterPinned#1bb00451 = MessagesFilter;
    -stats.messageStats#8999f295 views_graph:StatsGraph = stats.MessageStats;
    -messageActionGeoProximityReached#98e0d697 from_id:Peer to_id:Peer distance:int = MessageAction;
    ----functions---
    -messages.search#0c352eec flags:# peer:InputPeer q:string from_id:flags.0?InputPeer top_msg_id:flags.1?int filter:MessagesFilter min_date:int max_date:int offset_id:int add_offset:int limit:int max_id:int min_id:int hash:int = messages.Messages;
    -stats.getMessagePublicForwards#5630281b channel:InputChannel msg_id:int offset_rate:int offset_peer:InputPeer offset_id:int limit:int = messages.Messages; -stats.getMessageStats#b6e0a3f5 flags:# dark:flags.0?true channel:InputChannel msg_id:int = stats.MessageStats;
    -messages.unpinAllMessages#f025bc8b peer:InputPeer = messages.AffectedHistory;
    -

    Layer 119

    -

    Added message threads and comment sections in channel posts.

    -

    Scheme changes

    -
    New Methods
    - -
    Changed Methods
    - -
    New Constructors
    - -
    Changed Constructors
    -
      -
    • Added pinned, peer_id, reply_to, forwards, replies parameters, removed to_id, reply_to_msg_id parameters, changed type of from_id from flags.8?int to flags.8?Peer in message
    • -
    • Added peer_id, reply_to parameters, removed to_id, reply_to_msg_id parameters, changed type of from_id from flags.8?int to flags.8?Peer in messageService
    • -
    • Added chats parameter, changed type of blocked from Vector<ContactBlocked> to Vector<PeerBlocked> in contacts.blocked
    • -
    • Added chats parameter, changed type of blocked from Vector<ContactBlocked> to Vector<PeerBlocked> in contacts.blockedSlice
    • -
    • Added reply_to parameter, removed reply_to_msg_id parameter in updateShortMessage
    • -
    • Added reply_to parameter, removed reply_to_msg_id parameter in updateShortChatMessage
    • -
    • Added admin_rights parameter in channelParticipantCreator
    • -
    • Removed channel_id parameter, changed type of from_id from flags.0?int to flags.0?Peer in messageFwdHeader
    • -
    -
    Deleted Constructors
    -
      -
    • Removed contactBlocked
    • -
    • Removed updateUserBlocked
    • -
    -

    Scheme

    -
    message#58ae39c9 flags:# 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 id:int from_id:flags.8?Peer peer_id:Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to:flags.3?MessageReplyHeader date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector<MessageEntity> views:flags.10?int forwards:flags.10?int replies:flags.23?MessageReplies edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long restriction_reason:flags.22?Vector<RestrictionReason> = Message;
    -messageService#286fa604 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true legacy:flags.19?true id:int from_id:flags.8?Peer peer_id:Peer reply_to:flags.3?MessageReplyHeader date:int action:MessageAction = Message;
    -contacts.blocked#0ade1591 blocked:Vector<PeerBlocked> chats:Vector<Chat> users:Vector<User> = contacts.Blocked; -contacts.blockedSlice#e1664194 count:int blocked:Vector<PeerBlocked> chats:Vector<Chat> users:Vector<User> = contacts.Blocked;
    -updateShortMessage#2296d2c8 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:int user_id:int message:string pts:int pts_count:int date:int fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to:flags.3?MessageReplyHeader entities:flags.7?Vector<MessageEntity> = Updates; -updateShortChatMessage#402d5dbb flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:int from_id:int chat_id:int message:string pts:int pts_count:int date:int fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to:flags.3?MessageReplyHeader entities:flags.7?Vector<MessageEntity> = Updates;
    -channelParticipantCreator#447dca4b flags:# user_id:int admin_rights:ChatAdminRights rank:flags.0?string = ChannelParticipant;
    -messageFwdHeader#5f777dce flags:# from_id:flags.0?Peer from_name:flags.5?string date:int channel_post:flags.2?int post_author:flags.3?string saved_from_peer:flags.4?Peer saved_from_msg_id:flags.4?int psa_type:flags.6?string = MessageFwdHeader; -messageViews#455b853d flags:# views:flags.0?int forwards:flags.1?int replies:flags.2?MessageReplies = MessageViews;
    -updateChannelMessageForwards#6e8a84df channel_id:int id:int forwards:int = Update;
    -photoSizeProgressive#5aa86a51 type:string location:FileLocation w:int h:int sizes:Vector<int> = PhotoSize;
    -messages.messageViews#b6c4f543 views:Vector<MessageViews> chats:Vector<Chat> users:Vector<User> = messages.MessageViews;
    -updateReadChannelDiscussionInbox#1cc7de54 flags:# channel_id:int top_msg_id:int read_max_id:int broadcast_id:flags.0?int broadcast_post:flags.0?int = Update; -updateReadChannelDiscussionOutbox#4638a26c channel_id:int top_msg_id:int read_max_id:int = Update;
    -messages.discussionMessage#f5dd8f9d flags:# messages:Vector<Message> max_id:flags.0?int read_inbox_max_id:flags.1?int read_outbox_max_id:flags.2?int chats:Vector<Chat> users:Vector<User> = messages.DiscussionMessage; -messageReplyHeader#a6d57763 flags:# reply_to_msg_id:int reply_to_peer_id:flags.0?Peer reply_to_top_id:flags.1?int = MessageReplyHeader; -messageReplies#4128faac flags:# comments:flags.0?true replies:int replies_pts:int recent_repliers:flags.1?Vector<Peer> channel_id:flags.0?int max_id:flags.2?int read_max_id:flags.3?int = MessageReplies;
    -updatePeerBlocked#246a4b22 peer_id:Peer blocked:Bool = Update;
    -peerBlocked#e8fd8014 peer_id:Peer date:int = PeerBlocked;
    -updateChannelUserTyping#ff2abe9f flags:# channel_id:int top_msg_id:flags.0?int user_id:int action:SendMessageAction = Update;
    ----functions---
    -contacts.block#68cc1411 id:InputPeer = Bool; -contacts.unblock#bea65d50 id:InputPeer = Bool;
    -messages.search#4e17810b flags:# peer:InputPeer q:string from_id:flags.0?InputUser top_msg_id:flags.1?int filter:MessagesFilter min_date:int max_date:int offset_id:int add_offset:int limit:int max_id:int min_id:int hash:int = messages.Messages; -messages.setTyping#58943ee2 flags:# peer:InputPeer top_msg_id:flags.0?int action:SendMessageAction = Bool; -messages.getMessagesViews#5784d3e1 peer:InputPeer id:Vector<int> increment:Bool = messages.MessageViews; -messages.searchGlobal#4bc6589a flags:# folder_id:flags.0?int q:string filter:MessagesFilter min_date:int max_date:int offset_rate:int offset_peer:InputPeer offset_id:int limit:int = messages.Messages;
    -channels.exportMessageLink#e63fadeb flags:# grouped:flags.0?true thread:flags.1?true channel:InputChannel id:int = ExportedMessageLink;
    -messages.getReplies#24b581ba peer:InputPeer msg_id:int offset_id:int offset_date:int add_offset:int limit:int max_id:int min_id:int hash:int = messages.Messages; -messages.getDiscussionMessage#446972fd peer:InputPeer msg_id:int = messages.DiscussionMessage; -messages.readDiscussion#f731a9f4 peer:InputPeer msg_id:int read_max_id:int = Bool;
    -contacts.blockFromReplies#29a8962c flags:# delete_message:flags.0?true delete_history:flags.1?true report_spam:flags.2?true msg_id:int = Updates;
    -

    Layer 118

    -

    Added method for fetching country names and phone patterns.

    -

    Scheme changes

    -
    New Methods
    -
      -
    • Added help.getCountriesList - Get name, ISO code, localized name and phone codes/patterns of all available countries
    • -
    -
    Changed Methods
    - -
    New Constructors
    - -
    Changed Constructors
    - -

    Scheme

    -
    keyboardButtonCallback#35bbdb6b flags:# requires_password:flags.0?true text:string data:bytes = KeyboardButton;
    -help.countryCode#4203c5ef flags:# country_code:string prefixes:flags.0?Vector<string> patterns:flags.1?Vector<string> = help.CountryCode; -help.country#c3878e23 flags:# hidden:flags.0?true iso2:string default_name:string name:flags.1?string country_codes:Vector<help.CountryCode> = help.Country; -help.countriesListNotModified#93cc1f32 = help.CountriesList; -help.countriesList#87d0759e countries:Vector<help.Country> hash:int = help.CountriesList;
    ----functions---
    -messages.sendEncrypted#44fa7a15 flags:# silent:flags.0?true peer:InputEncryptedChat random_id:long data:bytes = messages.SentEncryptedMessage; -messages.sendEncryptedFile#5559481d flags:# silent:flags.0?true peer:InputEncryptedChat random_id:long data:bytes file:InputEncryptedFile = messages.SentEncryptedMessage; -messages.getBotCallbackAnswer#9342ca07 flags:# game:flags.1?true peer:InputPeer msg_id:int data:flags.0?bytes password:flags.2?InputCheckPasswordSRP = messages.BotCallbackAnswer;
    -help.getCountriesList#735787a8 lang_code:string hash:int = help.CountriesList;
    -

    Layer 117

    -

    Added WebRTC endpoint constructors.

    -

    Scheme changes

    -
    New Constructors
    - -

    Scheme

    -
    phoneConnectionWebrtc#635fe375 flags:# turn:flags.0?true stun:flags.1?true id:long ip:string ipv6:string port:int username:string password:string = PhoneConnection;
    -

    Layer 116

    -

    Added supergroup statistics and global privacy settings.

    -

    Scheme changes

    -
    New Methods
    - -
    Changed Methods
    - -
    New Constructors
    - -
    Changed Constructors
    - -

    Scheme

    -
    inputChatUploadedPhoto#c642724e flags:# file:flags.0?InputFile video:flags.1?InputFile video_start_ts:flags.2?double = InputChatPhoto;
    -userProfilePhoto#69d3ab26 flags:# has_video:flags.0?true photo_id:long photo_small:FileLocation photo_big:FileLocation dc_id:int = UserProfilePhoto;
    -chatPhoto#d20b9f3c flags:# has_video:flags.0?true photo_small:FileLocation photo_big:FileLocation dc_id:int = ChatPhoto;
    -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; -peerSettings#733f2961 flags:# 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 geo_distance:flags.6?int = PeerSettings;
    -encryptedChatRequested#62718a82 flags:# folder_id:flags.0?int id:int access_hash:long date:int admin_id:int participant_id:int g_a:bytes = EncryptedChat;
    -videoSize#e831c556 flags:# type:string location:FileLocation w:int h:int size:int video_start_ts:flags.0?double = VideoSize;
    -statsGroupTopPoster#18f3d0f7 user_id:int messages:int avg_chars:int = StatsGroupTopPoster; -statsGroupTopAdmin#6014f412 user_id:int deleted:int kicked:int banned:int = StatsGroupTopAdmin; -statsGroupTopInviter#31962a4c user_id:int invitations:int = StatsGroupTopInviter; -stats.megagroupStats#ef7ff916 period:StatsDateRangeDays members:StatsAbsValueAndPrev messages:StatsAbsValueAndPrev viewers:StatsAbsValueAndPrev posters:StatsAbsValueAndPrev growth_graph:StatsGraph members_graph:StatsGraph new_members_by_source_graph:StatsGraph languages_graph:StatsGraph messages_graph:StatsGraph actions_graph:StatsGraph top_hours_graph:StatsGraph weekdays_graph:StatsGraph top_posters:Vector<StatsGroupTopPoster> top_admins:Vector<StatsGroupTopAdmin> top_inviters:Vector<StatsGroupTopInviter> users:Vector<User> = stats.MegagroupStats;
    -globalPrivacySettings#bea2f424 flags:# archive_and_mute_new_noncontact_peers:flags.0?Bool = GlobalPrivacySettings;
    -updateChannelParticipant#65d2b464 flags:# channel_id:int date:int user_id:int prev_participant:flags.0?ChannelParticipant new_participant:flags.1?ChannelParticipant qts:int = Update;
    ----functions---
    -photos.updateProfilePhoto#72d4742c id:InputPhoto = photos.Photo; -photos.uploadProfilePhoto#89f30f69 flags:# file:flags.0?InputFile video:flags.1?InputFile video_start_ts:flags.2?double = photos.Photo;
    -stats.getMegagroupStats#dcdf8607 flags:# dark:flags.0?true channel:InputChannel = stats.MegagroupStats;
    -account.getGlobalPrivacySettings#eb2b4cf6 = GlobalPrivacySettings; -account.setGlobalPrivacySettings#1edaaac2 settings:GlobalPrivacySettings = GlobalPrivacySettings;
    -help.dismissSuggestion#077fa99f suggestion:string = Bool;
    -

    Layer 115

    -

    Added a chat invitation that also allows peeking into the group to read messages without joining it.

    -

    Scheme changes

    -
    New Constructors
    -
      -
    • Added chatInvitePeek - A chat invitation that also allows peeking into the group to read messages without joining it.
    • -
    -

    Scheme

    -
    chatInvitePeek#61695cb0 chat:Chat expires:int = ChatInvite;
    -

    Layer 114

    -

    Added WebRTC signaling methods.

    -

    Scheme changes

    -
    New Methods
    - -
    Changed Methods
    - -
    Deleted Methods
    -
      -
    • Removed messages.searchGifs
    • -
    -
    New Constructors
    - -
    Changed Constructors
    - -
    Deleted Constructors
    -
      -
    • Removed foundGif
    • -
    • Removed foundGifCached
    • -
    • Removed inputMediaGifExternal
    • -
    • Removed messages.foundGifs
    • -
    -

    Scheme

    -
    userFull#edf17c12 flags:# 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:User about:flags.1?string settings:PeerSettings profile_photo:flags.2?Photo notify_settings:PeerNotifySettings bot_info:flags.3?BotInfo pinned_msg_id:flags.6?int common_chats_count:int folder_id:flags.11?int = UserFull;
    -inputMediaUploadedDocument#5b38c6c1 flags:# nosound_video:flags.3?true force_file:flags.4?true file:InputFile thumb:flags.2?InputFile mime_type:string attributes:Vector<DocumentAttribute> stickers:flags.0?Vector<InputDocument> ttl_seconds:flags.1?int = InputMedia;
    -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;
    -user#938458c1 flags:# 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 id:int access_hash:flags.0?long first_name:flags.1?string last_name:flags.2?string username:flags.3?string phone:flags.4?string photo:flags.5?UserProfilePhoto status:flags.6?UserStatus bot_info_version:flags.14?int restriction_reason:flags.18?Vector<RestrictionReason> bot_inline_placeholder:flags.19?string lang_code:flags.22?string = User;
    -channelFull#f0e6672a flags:# 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:int about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:ExportedChatInvite bot_info:Vector<BotInfo> migrated_from_chat_id:flags.4?int migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int folder_id:flags.11?int linked_chat_id:flags.14?int location:flags.15?ChannelLocation slowmode_seconds:flags.17?int slowmode_next_send_date:flags.18?int stats_dc:flags.12?int pts:int = ChatFull;
    -phoneCallWaiting#1b8f4ad1 flags:# video:flags.6?true id:long access_hash:long date:int admin_id:int participant_id:int protocol:PhoneCallProtocol receive_date:flags.0?int = PhoneCall; -phoneCallRequested#87eabb53 flags:# video:flags.6?true id:long access_hash:long date:int admin_id:int participant_id:int g_a_hash:bytes protocol:PhoneCallProtocol = PhoneCall; -phoneCallAccepted#997c454a flags:# video:flags.6?true id:long access_hash:long date:int admin_id:int participant_id:int g_b:bytes protocol:PhoneCallProtocol = PhoneCall; -phoneCall#8742ae7f flags:# p2p_allowed:flags.5?true video:flags.6?true id:long access_hash:long date:int admin_id:int participant_id:int g_a_or_b:bytes key_fingerprint:long protocol:PhoneCallProtocol connections:Vector<PhoneConnection> start_date:int = PhoneCall; -phoneCallDiscarded#50ca4de1 flags:# need_rating:flags.2?true need_debug:flags.3?true video:flags.6?true id:long reason:flags.0?PhoneCallDiscardReason duration:flags.1?int = PhoneCall;
    -chatAdminRights#5fb224d5 flags:# 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 = ChatAdminRights;
    -videoSize#435bb987 type:string location:FileLocation w:int h:int size:int = VideoSize;
    -updatePhoneCallSignalingData#2661bf09 phone_call_id:long data:bytes = Update;
    ----functions---
    -messages.forwardMessages#d9fee60e flags:# silent:flags.5?true background:flags.6?true with_my_score:flags.8?true from_peer:InputPeer id:Vector<int> random_id:Vector<long> to_peer:InputPeer schedule_date:flags.10?int = Updates; -messages.updatePinnedMessage#d2aaf7ec flags:# silent:flags.0?true unpin:flags.1?true pm_oneside:flags.2?true peer:InputPeer id:int = Updates;
    -phone.sendSignalingData#ff7a9383 peer:InputPhoneCall data:bytes = Bool;
    -

    Layer 113

    -

    Public Service Announcement constructors and better PUSH notifications.
    -Notice that all PINNED_* PUSH notifications have two variants: one for groups, and one for channels.

    -

    Scheme changes

    -
    New Methods
    - -
    Deleted Methods
    -
      -
    • Removed help.getProxyData
    • -
    -
    New Constructors
    - -
    Changed Constructors
    - -
    Deleted Constructors
    -
      -
    • Removed help.proxyDataEmpty
    • -
    • Removed help.proxyDataPromo
    • -
    -

    PUSH notification changes

    -
    New PUSH notifications
    - -
    Changed PUSH notifications
    - -

    Scheme

    -
    messageFwdHeader#353a686b flags:# from_id:flags.0?int from_name:flags.5?string date:int channel_id:flags.1?int channel_post:flags.2?int post_author:flags.3?string saved_from_peer:flags.4?Peer saved_from_msg_id:flags.4?int psa_type:flags.6?string = MessageFwdHeader;
    -help.promoDataEmpty#98f6ac75 expires:int = help.PromoData; -help.promoData#8c39793f flags:# proxy:flags.0?true expires:int peer:Peer chats:Vector<Chat> users:Vector<User> psa_type:flags.1?string psa_message:flags.2?string = help.PromoData;
    ----functions---
    -help.getPromoData#c0977421 = help.PromoData; -help.hidePromoData#1e251c95 peer:InputPeer = Bool;
    -

    Layer 112

    -

    Scheme changes

    -
    New Methods
    - -
    Changed Constructors
    - -

    Scheme

    -
    messages.featuredStickersNotModified#c6dc0c66 count:int = messages.FeaturedStickers;
    -messages.featuredStickers#b6abc341 hash:int count:int sets:Vector<StickerSetCovered> unread:Vector<long> = messages.FeaturedStickers;
    -poll#86e18161 id:long flags:# closed:flags.0?true public_voters:flags.1?true multiple_choice:flags.2?true quiz:flags.3?true question:string answers:Vector<PollAnswer> close_period:flags.4?int close_date:flags.5?int = Poll; -pollResults#badcc1a3 flags:# min:flags.0?true results:flags.1?Vector<PollAnswerVoters> total_voters:flags.2?int recent_voters:flags.3?Vector<int> solution:flags.4?string solution_entities:flags.4?Vector<MessageEntity> = PollResults;
    -inputMediaPoll#0f94e5f1 flags:# poll:Poll correct_answers:flags.0?Vector<bytes> solution:flags.1?string solution_entities:flags.1?Vector<MessageEntity> = InputMedia; -inputMediaDice#e66fbf7b emoticon:string = InputMedia;
    -messageMediaDice#3f7ee58b value:int emoticon:string = MessageMedia;
    -inputStickerSetDice#e67f520e emoticon:string = InputStickerSet;
    ----functions---
    -initConnection#c1cd5ea9 {X:Type} flags:# api_id:int device_model:string system_version:string app_version:string system_lang_code:string lang_pack:string lang_code:string proxy:flags.0?InputClientProxy params:flags.1?JSONValue query:!X = X;
    -messages.getOldFeaturedStickers#5fe7025b offset:int limit:int hash:int = messages.FeaturedStickers;
    -

    Layer 111

    -

    Folders, channel stats, bot and sticker improvements

    -

    Scheme changes

    -
    New Methods
    - -
    Changed Methods
    - -
    New Constructors
    - -
    Changed Constructors
    - -

    Scheme

    -
    channelFull#f0e6672a flags:# can_view_participants:flags.3?true can_set_username:flags.6?true can_set_stickers:flags.7?true hidden_prehistory:flags.10?true can_view_stats:flags.12?true can_set_location:flags.16?true has_scheduled:flags.19?true id:int about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:ExportedChatInvite bot_info:Vector<BotInfo> migrated_from_chat_id:flags.4?int migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int folder_id:flags.11?int linked_chat_id:flags.14?int location:flags.15?ChannelLocation slowmode_seconds:flags.17?int slowmode_next_send_date:flags.18?int stats_dc:flags.12?int pts:int = ChatFull;
    -webPageNotModified#7311ca11 flags:# cached_page_views:flags.0?int = WebPage;
    -phoneCallProtocol#fc878fc8 flags:# udp_p2p:flags.0?true udp_reflector:flags.1?true min_layer:int max_layer:int library_versions:Vector<string> = PhoneCallProtocol; -page#98657f0d flags:# part:flags.0?true rtl:flags.1?true v2:flags.2?true url:string blocks:Vector<PageBlock> photos:Vector<Photo> documents:Vector<Document> views:flags.3?int = Page;
    -dialogFilter#7438f7e8 flags:# 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:int title:string emoticon:flags.25?string pinned_peers:Vector<InputPeer> include_peers:Vector<InputPeer> exclude_peers:Vector<InputPeer> = DialogFilter; -dialogFilterSuggested#77744d4a filter:DialogFilter description:string = DialogFilterSuggested;
    -updateDialogFilter#26ffde7d flags:# id:int filter:flags.0?DialogFilter = Update; -updateDialogFilterOrder#a5d72105 order:Vector<int> = Update; -updateDialogFilters#3504914f = Update;
    -statsDateRangeDays#b637edaf min_date:int max_date:int = StatsDateRangeDays; -statsAbsValueAndPrev#cb43acde current:double previous:double = StatsAbsValueAndPrev; -statsPercentValue#cbce2fe0 part:double total:double = StatsPercentValue; -statsGraphAsync#4a27eb2d token:string = StatsGraph; -statsGraphError#bedc9822 error:string = StatsGraph; -statsGraph#8ea464b6 flags:# json:DataJSON zoom_token:flags.0?string = StatsGraph;
    -messageInteractionCounters#ad4fc9bd msg_id:int views:int forwards:int = MessageInteractionCounters;
    -stats.broadcastStats#bdf78394 period:StatsDateRangeDays followers:StatsAbsValueAndPrev views_per_post:StatsAbsValueAndPrev shares_per_post:StatsAbsValueAndPrev enabled_notifications:StatsPercentValue growth_graph:StatsGraph followers_graph:StatsGraph mute_graph:StatsGraph top_hours_graph:StatsGraph interactions_graph:StatsGraph iv_interactions_graph:StatsGraph views_by_source_graph:StatsGraph new_followers_by_source_graph:StatsGraph languages_graph:StatsGraph recent_message_interactions:Vector<MessageInteractionCounters> = stats.BroadcastStats;
    -inputMediaDice#aeffa807 = InputMedia;
    -messageMediaDice#638fe46b value:int = MessageMedia;
    -inputStickerSetDice#79e21a53 = InputStickerSet;
    ----functions---
    -initConnection#785188b8 {X:Type} flags:# api_id:int device_model:string system_version:string app_version:string system_lang_code:string lang_pack:string lang_code:string proxy:flags.0?InputClientProxy params:flags.1?JSONValue query:!X = X;
    -stickers.createStickerSet#f1036780 flags:# masks:flags.0?true animated:flags.1?true user_id:InputUser title:string short_name:string thumb:flags.2?InputDocument stickers:Vector<InputStickerSetItem> = messages.StickerSet;
    -messages.getDialogFilters#f19ed96d = Vector<DialogFilter>; -messages.getSuggestedDialogFilters#a29cd42c = Vector<DialogFilterSuggested>; -messages.updateDialogFilter#1ad4a04a flags:# id:int filter:flags.0?DialogFilter = Bool; -messages.updateDialogFiltersOrder#c563c1e4 order:Vector<int> = Bool;
    -stats.getBroadcastStats#ab42441a flags:# dark:flags.0?true channel:InputChannel = stats.BroadcastStats; -stats.loadAsyncGraph#621d5fa0 flags:# token:string x:flags.0?long = StatsGraph; -stickers.setStickerSetThumb#9a364e30 stickerset:InputStickerSet thumb:InputDocument = messages.StickerSet;
    -bots.setBotCommands#805d46f6 commands:Vector<BotCommand> = Bool;
    -

    Layer 110

    -

    Credit card information

    -

    Scheme changes

    -
    New Methods
    - -
    Changed Methods
    - -
    New Constructors
    - -

    Scheme

    -
    messageEntityBankCard#761e6af4 offset:int length:int = MessageEntity;
    -bankCardOpenUrl#f568028a url:string name:string = BankCardOpenUrl;
    -payments.bankCardData#3e24e573 title:string open_urls:Vector<BankCardOpenUrl> = payments.BankCardData; -peerSelfLocated#f8ec284b expires:int = PeerLocated;
    ----functions---
    -initConnection#785188b8 {X:Type} flags:# api_id:int device_model:string system_version:string app_version:string system_lang_code:string lang_pack:string lang_code:string proxy:flags.0?InputClientProxy query:!X = X;
    -contacts.getLocated#d348bc44 flags:# background:flags.1?true geo_point:InputGeoPoint self_expires:flags.0?int = Updates;
    -payments.getBankCardData#2e79d779 number:string = payments.BankCardData;
    -

    Layer 109

    -

    Non-anonymous polls, improved sticker management

    -

    Scheme changes

    -
    New Methods
    - -
    Changed Methods
    - -
    New Constructors
    - -
    Changed Constructors
    - -

    Scheme

    -
    pollResults#c87024a2 flags:# min:flags.0?true results:flags.1?Vector<PollAnswerVoters> total_voters:flags.2?int recent_voters:flags.3?Vector<int> = PollResults;
    -inputMediaPoll#abe9ca25 flags:# poll:Poll correct_answers:flags.0?Vector<bytes> = InputMedia;
    -updateMessagePollVote#42f88f2c poll_id:long user_id:int options:Vector<bytes> = Update;
    -messageUserVote#a28e5559 user_id:int option:bytes date:int = MessageUserVote; -messageUserVoteInputOption#36377430 user_id:int date:int = MessageUserVote; -messageUserVoteMultiple#0e8fe0de user_id:int options:Vector<bytes> date:int = MessageUserVote; -messages.votesList#0823f649 flags:# count:int votes:Vector<MessageUserVote> users:Vector<User> next_offset:flags.0?string = messages.VotesList;
    -keyboardButtonRequestPoll#bbc7515d flags:# quiz:flags.0?Bool text:string = KeyboardButton;
    ----functions---
    -initConnection#785188b8 {X:Type} flags:# api_id:int device_model:string system_version:string app_version:string system_lang_code:string lang_pack:string lang_code:string proxy:flags.0?InputClientProxy params:flags.1?JSONValue query:!X = X;
    -messages.getPollVotes#b86e380e flags:# peer:InputPeer id:int option:flags.0?bytes offset:flags.1?string limit:int = messages.VotesList; -messages.toggleStickerSets#b5052fea flags:# uninstall:flags.0?true archive:flags.1?true unarchive:flags.2?true stickersets:Vector<InputStickerSet> = Bool;
    -

    Layer 108

    -

    Login with QR-code, sensitive content settings, quizes, multiple-choice and public polls, get inactive chats, improved wallpapers and themes.

    -

    Scheme changes

    -
    New Methods
    - -
    Changed Methods
    - -
    New Constructors
    - -
    Changed Constructors
    -
      -
    • Added attributes parameter, removed documents parameter in webPage
    • -
    • Added public_voters, multiple_choice, quiz parameters in poll
    • -
    • Added correct parameter in pollAnswerVoters
    • -
    • Added second_background_color, rotation parameters in wallPaperSettings
    • -
    • Added video_upload_maxbitrate parameter in autoDownloadSettings
    • -
    • Added settings parameter in theme
    • -
    -
    Deleted Constructors
    -
      -
    • Removed themeDocumentNotModified
    • -
    -

    Scheme

    -
    webPage#e89c45b2 flags:# id:long url:string display_url:string hash:int type:flags.0?string site_name:flags.1?string title:flags.2?string description:flags.3?string photo:flags.4?Photo embed_url:flags.5?string embed_type:flags.5?string embed_width:flags.6?int embed_height:flags.6?int duration:flags.7?int author:flags.8?string document:flags.9?Document cached_page:flags.10?Page attributes:flags.12?Vector<WebPageAttribute> = WebPage;
    -poll#d5529d06 id:long flags:# closed:flags.0?true public_voters:flags.1?true multiple_choice:flags.2?true quiz:flags.3?true question:string answers:Vector<PollAnswer> = Poll; -pollAnswerVoters#3b6ddad2 flags:# chosen:flags.0?true correct:flags.1?true option:bytes voters:int = PollAnswerVoters;
    -wallPaperSettings#05086cf8 flags:# blur:flags.1?true motion:flags.2?true background_color:flags.0?int second_background_color:flags.4?int intensity:flags.3?int rotation:flags.4?int = WallPaperSettings;
    -autoDownloadSettings#e04232f3 flags:# 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:int video_size_max:int file_size_max:int video_upload_maxbitrate:int = AutoDownloadSettings;
    -inputPhotoLegacyFileLocation#d83466f3 id:long access_hash:long file_reference:bytes volume_id:long local_id:int secret:long = InputFileLocation;
    -theme#028f1114 flags:# creator:flags.0?true default:flags.1?true id:long access_hash:long slug:string title:string document:flags.2?Document settings:flags.3?ThemeSettings installs_count:int = Theme;
    -updateGeoLiveViewed#871fb939 peer:Peer msg_id:int = Update; -updateLoginToken#564fe691 = Update;
    -auth.loginToken#629f1980 expires:int token:bytes = auth.LoginToken; -auth.loginTokenMigrateTo#068e9916 dc_id:int token:bytes = auth.LoginToken; -auth.loginTokenSuccess#390d5c5e authorization:auth.Authorization = auth.LoginToken; -account.contentSettings#57e28221 flags:# sensitive_enabled:flags.0?true sensitive_can_change:flags.1?true = account.ContentSettings;
    -messages.inactiveChats#a927fec5 dates:Vector<int> chats:Vector<Chat> users:Vector<User> = messages.InactiveChats;
    -baseThemeClassic#c3a12462 = BaseTheme; -baseThemeDay#fbd81688 = BaseTheme; -baseThemeNight#b7b31ea8 = BaseTheme; -baseThemeTinted#6d5f77ee = BaseTheme; -baseThemeArctic#5b11125a = BaseTheme;
    -inputWallPaperNoFile#8427bbac = InputWallPaper;
    -wallPaperNoFile#8af40b25 flags:# default:flags.1?true dark:flags.4?true settings:flags.2?WallPaperSettings = WallPaper;
    -inputThemeSettings#bd507cd1 flags:# base_theme:BaseTheme accent_color:int message_top_color:flags.0?int message_bottom_color:flags.0?int wallpaper:flags.1?InputWallPaper wallpaper_settings:flags.1?WallPaperSettings = InputThemeSettings;
    -themeSettings#9c14984a flags:# base_theme:BaseTheme accent_color:int message_top_color:flags.0?int message_bottom_color:flags.0?int wallpaper:flags.1?WallPaper = ThemeSettings;
    -webPageAttributeTheme#54b56617 flags:# documents:flags.0?Vector<Document> settings:flags.1?ThemeSettings = WebPageAttribute;
    ----functions---
    -upload.getFile#b15a9afc flags:# precise:flags.0?true cdn_supported:flags.1?true location:InputFileLocation offset:int limit:int = upload.File;
    -account.createTheme#8432c21f flags:# slug:string title:string document:flags.2?InputDocument settings:flags.3?InputThemeSettings = Theme; -account.updateTheme#5cb367d5 flags:# format:string theme:InputTheme slug:flags.0?string title:flags.1?string document:flags.2?InputDocument settings:flags.3?InputThemeSettings = Theme; -auth.exportLoginToken#b1b41517 api_id:int api_hash:string except_ids:Vector<int> = auth.LoginToken; -auth.importLoginToken#95ac5ce4 token:bytes = auth.LoginToken; -auth.acceptLoginToken#e894ad4d token:bytes = Authorization; -account.setContentSettings#b574b16b flags:# sensitive_enabled:flags.0?true = Bool; -account.getContentSettings#8b9b4dae = account.ContentSettings;
    -channels.getInactiveChannels#11e831ee = messages.InactiveChats;
    -account.getMultiWallPapers#65ad71dc wallpapers:Vector<InputWallPaper> = Vector<WallPaper>;
    -

    Layer 105

    -

    The API underwent huge changes, a full reread of the documentation is required.

    -

    Layer 23

    -

    Scheme changes

    -
    New Methods
    - -
    Deleted Methods
    -
      -
    • Removed invokeWithLayer18
    • -
    -
    New Constructors
    - -
    Changed Constructors
    - -

    Scheme

    -
    contactStatus#d3680c61 user_id:int status:UserStatus = ContactStatus;
    -config#7dae33e0 date:int expires:int test_mode:Bool this_dc:int dc_options:Vector<DcOption> chat_big_size:int chat_size_max:int broadcast_size_max:int disabled_features:Vector<DisabledFeature> = Config;
    -inputMediaUploadedDocument#ffe76b78 file:InputFile mime_type:string attributes:Vector<DocumentAttribute> = InputMedia; -inputMediaUploadedThumbDocument#41481486 file:InputFile thumb:InputFile mime_type:string attributes:Vector<DocumentAttribute> = InputMedia;
    -document#f9a39f4f id:long access_hash:long date:int mime_type:string size:int thumb:PhotoSize dc_id:int attributes:Vector<DocumentAttribute> = Document;
    -userStatusRecently#e26f42f1 = UserStatus; -userStatusLastWeek#07bf09fc = UserStatus; -userStatusLastMonth#77ebc742 = UserStatus; -updatePrivacy#ee3b272a key:PrivacyKey rules:Vector<PrivacyRule> = Update;
    -inputPrivacyKeyStatusTimestamp#4f96cb18 = InputPrivacyKey;
    -privacyKeyStatusTimestamp#bc2eab30 = PrivacyKey;
    -inputPrivacyValueAllowContacts#0d09e07b = InputPrivacyRule; -inputPrivacyValueAllowAll#184b35ce = InputPrivacyRule; -inputPrivacyValueAllowUsers#131cc67f users:Vector<InputUser> = InputPrivacyRule; -inputPrivacyValueDisallowContacts#0ba52007 = InputPrivacyRule; -inputPrivacyValueDisallowAll#d66b66c9 = InputPrivacyRule; -inputPrivacyValueDisallowUsers#90110467 users:Vector<InputUser> = InputPrivacyRule;
    -privacyValueAllowContacts#fffe1bac = PrivacyRule; -privacyValueAllowAll#65427b82 = PrivacyRule; -privacyValueAllowUsers#4d5bbe0c users:Vector<int> = PrivacyRule; -privacyValueDisallowContacts#f888fa1a = PrivacyRule; -privacyValueDisallowAll#8b73e763 = PrivacyRule; -privacyValueDisallowUsers#0c7f49b7 users:Vector<int> = PrivacyRule;
    -account.privacyRules#554abb6f rules:Vector<PrivacyRule> users:Vector<User> = account.PrivacyRules; -accountDaysTTL#b8d0afdf days:int = AccountDaysTTL; -account.sentChangePhoneCode#a4f58c4c phone_code_hash:string send_call_timeout:int = account.SentChangePhoneCode;
    -updateUserPhone#12b9417b user_id:int phone:string = Update;
    -documentAttributeImageSize#6c37c15c w:int h:int = DocumentAttribute; -documentAttributeAnimated#11b58939 = DocumentAttribute; -documentAttributeSticker#fb0a5727 = DocumentAttribute; -documentAttributeVideo#5910cccb duration:int w:int h:int = DocumentAttribute; -documentAttributeAudio#051448e5 duration:int = DocumentAttribute; -documentAttributeFilename#15590068 file_name:string = DocumentAttribute;
    -messages.stickersNotModified#f1749a22 = messages.Stickers; -messages.stickers#8a8ecd32 hash:string stickers:Vector<Document> = messages.Stickers;
    -stickerPack#12b299d4 emoticon:string documents:Vector<long> = StickerPack;
    -messages.allStickersNotModified#e86602c3 = messages.AllStickers; -messages.allStickers#dcef3102 hash:string packs:Vector<StickerPack> documents:Vector<Document> = messages.AllStickers;
    -disabledFeature#ae636f24 feature:string description:string = DisabledFeature;
    ----functions---
    -account.getPrivacy#dadbc950 key:InputPrivacyKey = account.PrivacyRules; -account.setPrivacy#c9f81ce8 key:InputPrivacyKey rules:Vector<InputPrivacyRule> = account.PrivacyRules; -account.deleteAccount#418d4e0b reason:string = Bool; -account.getAccountTTL#08fc711d = AccountDaysTTL; -account.setAccountTTL#2442485e ttl:AccountDaysTTL = Bool;
    -invokeWithLayer#da9b0d0d {X:Type} layer:int query:!X = X;
    -contacts.resolveUsername#0bf0131c username:string = User;
    -account.sendChangePhoneCode#a407a8f4 phone_number:string = account.SentChangePhoneCode; -account.changePhone#70c32edb phone_number:string phone_code_hash:string phone_code:string = User;
    -messages.getStickers#ae22e045 emoticon:string hash:string = messages.Stickers; -messages.getAllStickers#aa3bc868 hash:string = messages.AllStickers;
    -account.updateDeviceLocked#38df3532 period:int = Bool;
    -

    End-to-end scheme changes

    -
    New Constructors
    - -

    End-to-end scheme

    -
    ===20===
    -decryptedMessageActionCommitKey#ec2e0b9b exchange_id:long key_fingerprint:long = DecryptedMessageAction; -decryptedMessageActionNoop#a82fdd63 = DecryptedMessageAction; -decryptedMessageActionAbortKey#dd05ec6b exchange_id:long = DecryptedMessageAction; -decryptedMessageActionAcceptKey#6fe1735b exchange_id:long g_b:bytes key_fingerprint:long = DecryptedMessageAction; -decryptedMessageActionRequestKey#f3c9611b exchange_id:long g_a:bytes = DecryptedMessageAction;
    -===23=== -documentAttributeImageSize#6c37c15c w:int h:int = DocumentAttribute; -documentAttributeAnimated#11b58939 = DocumentAttribute; -documentAttributeSticker#fb0a5727 = DocumentAttribute; -documentAttributeVideo#5910cccb duration:int w:int h:int = DocumentAttribute; -documentAttributeAudio#051448e5 duration:int = DocumentAttribute; -documentAttributeFilename#15590068 file_name:string = DocumentAttribute;
    -photoSizeEmpty#0e17e23c type:string = PhotoSize; -photoSize#77bfb61b type:string location:FileLocation w:int h:int size:int = PhotoSize; -photoCachedSize#e9a734fa type:string location:FileLocation w:int h:int bytes:bytes = PhotoSize;
    -fileLocationUnavailable#7c596b46 volume_id:long local_id:int secret:long = FileLocation; -fileLocation#53d69076 dc_id:int volume_id:long local_id:int secret:long = FileLocation;
    -decryptedMessageMediaExternalDocument#fa95b0dd id:long access_hash:long date:int mime_type:string size:int thumb:PhotoSize dc_id:int attributes:Vector<DocumentAttribute> = DecryptedMessageMedia;
    -

    Layer 18

    -

    Added username support and a new type of updates for service messages.

    -

    Schema changes

    - -

    Schema

    -
    contactFound user_id:int = ContactFound;
    -
    -contacts.found results:Vector<ContactFound> users:Vector<User> = contacts.Found;
    -
    -updateUserName user_id:int first_name:string last_name:string username:string = Update;
    -
    -userSelf id:int first_name:string last_name:string username:string phone:string photo:UserProfilePhoto status:UserStatus inactive:Bool = User;
    -userContact id:int first_name:string last_name:string username:string access_hash:long phone:string photo:UserProfilePhoto status:UserStatus = User;
    -userRequest id:int first_name:string last_name:string username:string access_hash:long phone:string photo:UserProfilePhoto status:UserStatus = User;
    -userForeign id:int first_name:string last_name:string username:string access_hash:long photo:UserProfilePhoto status:UserStatus = User;
    -userDeleted id:int first_name:string last_name:string username:string = User;
    -
    -updateServiceNotification type:string message:string media:MessageMedia popup:Bool = Update;
    -
    ----functions---
    -
    -account.checkUsername username:string = Bool;
    -account.updateUsername username:string = User;
    -
    -contacts.search q:string limit:int = contacts.Found;
    -
    -invokeWithLayer18#1c900537 {X:Type} query:!X = X;
    -

    Layer 17

    -

    Added new events for recording and uploading media, selecting contacts and locations to share.

    -

    Read status for multimedia (messages containing messageMediaVideo or messageMediaAudio) was moved to the new method messages.readMessageContents. In case read_contents is not passed or messages.readHistory is used with an older layer, messages will be marked as read in the traditional way.

    -

    Schema changes

    -
      -
    • Added new type SendMessageAction for user actions aside from typing (recording, uploading media, etc.). It is used in updates updateUserTyping, updateChatUserTyping, in the method messages.setTyping, and in the new encrypted service message decryptedMessageActionTyping.
    • -
    • unread and out parameters in the constructors of the Message type were joined to form the new flags parameter, containing a flag mask.
    • -
    • Added new method messages.readMessageContents, to be called once the user listened to a voice message or watched a video.
    • -
    • Added parameters for end-to-end encrypted messages in_seq_no, out_seq_no and ttl.
    • -
    • Added mime_type field to secret chat audio and video constructors.
    • -
    -

    Schema

    -
    sendMessageTypingAction = SendMessageAction;
    -sendMessageCancelAction = SendMessageAction;
    -sendMessageRecordVideoAction = SendMessageAction;
    -sendMessageUploadVideoAction = SendMessageAction;
    -sendMessageRecordAudioAction = SendMessageAction;
    -sendMessageUploadAudioAction = SendMessageAction;
    -sendMessageUploadPhotoAction = SendMessageAction;
    -sendMessageUploadDocumentAction = SendMessageAction;
    -sendMessageGeoLocationAction = SendMessageAction;
    -sendMessageChooseContactAction = SendMessageAction;
    -
    -updateUserTyping user_id:int action:SendMessageAction = Update;
    -updateChatUserTyping chat_id:int user_id:int action:SendMessageAction = Update;
    -
    -// Message object
    -message flags:int id:int from_id:int to_id:Peer date:int message:string media:MessageMedia = Message;
    -messageForwarded flags:int id:int fwd_from_id:int fwd_date:int from_id:int to_id:Peer date:int message:string media:MessageMedia = Message;
    -messageService flags:int id:int from_id:int to_id:Peer date:int action:MessageAction = Message;
    -
    ----functions---
    -
    -messages.setTyping peer:InputPeer action:SendMessageAction = Bool;
    -
    -messages.readHistory peer:InputPeer max_id:int offset:int read_contents:Bool = messages.AffectedHistory;
    -messages.readMessageContents id:Vector<int> = Vector<int>;
    -
    -invokeWithLayer17#50858a19 {X:Type} query:!X = X;
    -

    End-to-end schema

    -
    ===17===
    -
    -
    -// Layer
    -decryptedMessageLayer random_bytes:bytes layer:int in_seq_no:int out_seq_no:int message:DecryptedMessage = DecryptedMessageLayer;
    -
    -decryptedMessageMediaAudio duration:int mime_type:string size:int key:bytes iv:bytes = DecryptedMessageMedia;
    -decryptedMessageMediaVideo thumb:bytes thumb_w:int thumb_h:int duration:int mime_type:string w:int h:int size:int key:bytes iv:bytes = DecryptedMessageMedia;
    -
    -sendMessageTypingAction = SendMessageAction;
    -sendMessageCancelAction = SendMessageAction;
    -sendMessageRecordVideoAction = SendMessageAction;
    -sendMessageUploadVideoAction = SendMessageAction;
    -sendMessageRecordAudioAction = SendMessageAction;
    -sendMessageUploadAudioAction = SendMessageAction;
    -sendMessageUploadPhotoAction = SendMessageAction;
    -sendMessageUploadDocumentAction = SendMessageAction;
    -sendMessageGeoLocationAction = SendMessageAction;
    -sendMessageChooseContactAction = SendMessageAction;
    -
    -decryptedMessageActionNotifyLayer layer:int = DecryptedMessageAction;
    -decryptedMessageActionTyping action:SendMessageAction = DecryptedMessageAction;
    -
    -decryptedMessage random_id:long ttl:int message:string media:DecryptedMessageMedia = DecryptedMessage;
    -decryptedMessageService random_id:long action:DecryptedMessageAction = DecryptedMessage;
    -

    Layer 16

    -

    Added new sms_type = 5 in the method auth.sendCode.

    -

    Schema changes

    -
      -
    • Added new constructor: auth.sentAppCode to determine whether a code was sent via Telegram.
    • -
    • Added new method auth.sendSms to force re-sending a code via SMS.
    • -
    -

    Schema

    -
    auth.sentAppCode phone_registered:Bool phone_code_hash:string send_call_timeout:int is_password:Bool = auth.SentCode;
    -
    ----functions---
    -
    -auth.sendSms phone_number:string phone_code_hash:string = Bool;
    -
    -invokeWithLayer16#cf5f0987 {X:Type} query:!X = X;
    -

    Layer 15

    -

    Modified behavior of the offset parameter in the method messages.getHistory. From now on it's possible to combine message_id offset and a numeric offset.

    -

    Schema

    -
    invokeWithLayer15#b4418b64 {X:Type} query:!X = X;
    -

    Layer 14

    -

    Schema changes

    - -

    Schema

    -
    notifyPeer peer:Peer = NotifyPeer;
    -notifyUsers = NotifyPeer;
    -notifyChats = NotifyPeer;
    -notifyAll = NotifyPeer;
    -
    -dialog peer:Peer top_message:int unread_count:int notify_settings:PeerNotifySettings = Dialog;
    -
    -updateUserBlocked user_id:int blocked:Bool = Update;
    -updateNotifySettings peer:NotifyPeer notify_settings:PeerNotifySettings = Update;
    -
    ----functions---
    -
    -invokeWithLayer14#2b9b08fa {X:Type} query:!X = X;
    -

    Layer 13

    -

    Schema changes

    -
      -
    • Added mime_type field to all audio and video constructors.
    • -
    • Added new service message types in secret chats: messages read, messages deleted, screenshot taken, chat history cleared and API layer used by client notifications.
    • -
    • Added retry_contacts field to the contacts.importedContacts constructor: ids of contacts, that will have to be imported at a later date.
    • -
    -

    Schema

    -
    contacts.importedContacts imported:Vector<ImportedContact> retry_contacts:Vector<long> users:Vector<User> = contacts.Im portedContacts;
    -
    -inputMediaUploadedAudio file:InputFile duration:int mime_type:string = InputMedia;
    -inputMediaUploadedVideo file:InputFile duration:int w:int h:int mime_type:string = InputMedia;
    -inputMediaUploadedThumbVideo file:InputFile thumb:InputFile duration:int w:int h:int mime_type:string = InputMedia;
    -
    -audio id:long access_hash:long user_id:int date:int duration:int mime_type:string size:int dc_id:int = Audio;
    -video id:long access_hash:long user_id:int date:int caption:string duration:int mime_type:string size:int thumb:PhotoSize dc_id:int w:int h:int = Video;
    -
    ----functions---
    -
    -invokeWithLayer13#427c8ea2 {X:Type} query:!X = X;
    -

    Layer 12

    -

    Schema changes

    -
      -
    • Added method help.getSupport for obtaining support user id.
    • -
    • Added broadcast_size_max field to the constructor config, contaning maximum number of broadcast recipients.
    • -
    • Added send_call_timeout field to the constructor auth.sentCode, containing required delay before calling auth.sendCall. New field is_password in the same constructor.
    • -
    -

    Schema

    -
    auth.sentCode phone_registered:Bool phone_code_hash:string send_call_timeout:int is_password:Bool = auth.SentCode;
    -
    -config date:int test_mode:Bool this_dc:int dc_options:Vector<DcOption> chat_size_max:int broadcast_size_max:int = Config;
    -
    -help.support phone_number:string user:User = help.Support;
    -
    ----functions---
    -
    -help.getSupport = help.Support;
    -
    -invokeWithLayer12#dda60d3c {X:Type} query:!X = X;
    -

    Layer 11

    -

    Schema changes

    -
      -
    • The nonce parameter was removed from secret chat constructors. For purposes of backward compatibility, in all previous layers this field will contain empty bytes.
    • -
    -

    Schema

    -
    encryptedChatRequested id:int access_hash:long date:int admin_id:int participant_id:int g_a:bytes = EncryptedChat;
    -encryptedChat id:int access_hash:long date:int admin_id:int participant_id:int g_a_or_b:bytes key_fingerprint:long = EncryptedChat;
    -
    ----functions---
    -
    -invokeWithLayer11#a6b88fdf {X:Type} query:!X = X;
    -

    Layer 10

    -

    Added brief constructors for editing group members. Added new attachment types for ordinary and secret chats.

    -

    Schema changes

    - -

    Schema

    -
    updateChatParticipantAdd chat_id:int user_id:int inviter_id:int version:int = Update;
    -updateChatParticipantDelete chat_id:int user_id:int version:int = Update;
    -
    -
    -inputMediaUploadedAudio file:InputFile duration:int = InputMedia;
    -inputMediaAudio id:InputAudio = InputMedia;
    -
    -inputMediaUploadedDocument file:InputFile file_name:string mime_type:string = InputMedia;
    -inputMediaUploadedThumbDocument file:InputFile thumb:InputFile file_name:string mime_type:string = InputMedia;
    -inputMediaDocument id:InputDocument = InputMedia;
    -
    -messageMediaDocument document:Document = MessageMedia;
    -messageMediaAudio audio:Audio = MessageMedia;
    -
    -// Input Audio
    -inputAudioEmpty = InputAudio;
    -inputAudio id:long access_hash:long = InputAudio;
    -
    -// Input Document
    -inputDocumentEmpty = InputDocument;
    -inputDocument id:long access_hash:long = InputDocument;
    -
    -// Input location
    -inputAudioFileLocation id:long access_hash:long = InputFileLocation;
    -inputDocumentFileLocation id:long access_hash:long = InputFileLocation;
    -
    -
    -decryptedMessageMediaDocument thumb:bytes thumb_w:int thumb_h:int file_name:string mime_type:string size:int key:bytes iv:bytes = DecryptedMessageMedia;
    -decryptedMessageMediaAudio duration:int size:int key:bytes iv:bytes = DecryptedMessageMedia;
    -
    -
    -// Audio object
    -audioEmpty id:long = Audio;
    -audio id:long access_hash:long user_id:int date:int duration:int size:int dc_id:int = Audio;
    -
    -// Video object
    -documentEmpty id:long = Document;
    -document id:long access_hash:long user_id:int date:int file_name:string mime_type:string size:int thumb:PhotoSize dc_id:int = Document;
    -
    ----functions---
    -
    -invokeWithLayer10#39620c41 {X:Type} query:!X = X;
    -PUSH-notifications
    -
    -Added MESSAGE_DOC, MESSAGE_AUDIO notifications — a message with document or audio received
    -Added CHAT_MESSAGE_DOC, CHAT_MESSAGE_AUDIO notifications —  a message with document or audio received in a group
    -

    Layer 9

    -

    Increased efficiency when loading big files. Added important checks for certain methods.

    -

    Schema changes

    - -

    Schema

    -
    inputFileBig id:long parts:int name:string = InputFile;
    -
    -inputEncryptedFileBigUploaded id:long parts:int key_fingerprint:int = InputEncryptedFile;
    -
    ----functions---
    -
    -upload.saveBigFilePart file_id:long file_part:int file_total_parts:int bytes:bytes = Bool;
    -
    -initConnection#69796de9 {X:Type} api_id:int device_model:string system_version:string app_version:string lang_code:string query:!X = X;
    -
    -invokeWithLayer9#76715a63 {X:Type} query:!X = X;
    -

    Layer 8

    -

    Added support for end-to-end encryption in secret chats. More...

    -

    Schema changes

    -
      -
    • Added many constructors and methods for secret chats.
    • -
    • Added qts field in constructor updates.state.
    • -
    • Added 4 new constructors of Update type
    • -
    -

    Schema

    -
    updateNewEncryptedMessage message:EncryptedMessage qts:int = Update;
    -updateEncryptedChatTyping chat_id:int = Update;
    -updateEncryption chat:EncryptedChat date:int = Update;
    -updateEncryptedMessagesRead chat_id:int max_date:int = Update;
    -
    -// EncryptedChat object
    -encryptedChatEmpty id:int = EncryptedChat;
    -encryptedChatWaiting id:int access_hash:long date:int admin_id:int participant_id:int = EncryptedChat;
    -encryptedChatRequested id:int access_hash:long date:int admin_id:int participant_id:int g_a:bytes = EncryptedChat;
    -encryptedChat id:int access_hash:long date:int admin_id:int participant_id:int g_a_or_b:bytes key_fingerprint:long = EncryptedChat;
    -encryptedChatDiscarded id:int = EncryptedChat;
    -
    -inputEncryptedChat chat_id:int access_hash:long = InputEncryptedChat;
    -
    -// EncryptedFile object
    -encryptedFileEmpty = EncryptedFile;
    -encryptedFile id:long access_hash:long size:int dc_id:int key_fingerprint:int = EncryptedFile;
    -
    -inputEncryptedFileEmpty = InputEncryptedFile;
    -inputEncryptedFileUploaded id:long parts:int md5_checksum:string key_fingerprint:int = InputEncryptedFile;
    -inputEncryptedFile id:long access_hash:long = InputEncryptedFile;
    -
    -inputEncryptedFileLocation id:long access_hash:long = InputFileLocation;
    -
    -// Encrypted message
    -encryptedMessage random_id:long chat_id:int date:int bytes:bytes file:EncryptedFile = EncryptedMessage;
    -encryptedMessageService random_id:long chat_id:int date:int bytes:bytes = EncryptedMessage;
    -
    -// Diffie-Hellman config
    -messages.dhConfigNotModified random:bytes = messages.DhConfig;
    -messages.dhConfig g:int p:bytes version:int random:bytes = messages.DhConfig;
    -
    -messages.sentEncryptedMessage date:int = messages.SentEncryptedMessage;
    -messages.sentEncryptedFile date:int file:EncryptedFile = messages.SentEncryptedMessage;
    -
    -// Updated state with qts
    -updates.state pts:int qts:int date:int seq:int unread_count:int = updates.State;
    -updates.difference new_messages:Vector<Message> new_encrypted_messages:Vector<EncryptedMessage> other_updates:Vector<Update> chats:Vector<Chat> users:Vector<User> state:updates.State = updates.Difference;
    -updates.differenceSlice new_messages:Vector<Message> new_encrypted_messages:Vector<EncryptedMessage> other_updates:Vector<Update> chats:Vector<Chat> users:Vector<User> intermediate_state:updates.State = updates.Difference;
    -
    ----functions---
    -
    -messages.getDhConfig version:int random_length:int = messages.DhConfig;
    -messages.requestEncryption user_id:InputUser random_id:int g_a:bytes = EncryptedChat;
    -messages.acceptEncryption peer:InputEncryptedChat g_b:bytes key_fingerprint:long = EncryptedChat;
    -messages.discardEncryption chat_id:int = Bool;
    -
    -messages.setEncryptedTyping peer:InputEncryptedChat typing:Bool = Bool;
    -messages.readEncryptedHistory peer:InputEncryptedChat max_date:int = Bool;
    -messages.sendEncrypted peer:InputEncryptedChat random_id:long data:bytes = messages.SentEncryptedMessage;
    -messages.sendEncryptedFile peer:InputEncryptedChat random_id:long data:bytes file:InputEncryptedFile = messages.SentEncryptedMessage;
    -messages.sendEncryptedService peer:InputEncryptedChat random_id:long data:bytes = messages.SentEncryptedMessage;
    -messages.receivedQueue max_qts:int = Vector<long>;
    -
    -updates.getDifference pts:int date:int qts:int = updates.Difference;
    -
    -invokeWithLayer8#e9abd9fd {X:Type} query:!X = X;
    -

    Push-notifications

    -
      -
    • Added notification of ENCRYPTION_REQUEST type -- a contact requested secret chat creation
    • -
    • Added notification of ENCRYPTION_ACCEPT type -- a contact confirmed secret chat creation
    • -
    • Added notification of ENCRYPTED_MESSAGE type -- a contact sent message in a secret chat
    • -
    -

    End-to-end schema

    -
    ===8===
    -decryptedMessage random_id:long random_bytes:bytes message:string media:DecryptedMessageMedia = DecryptedMessage;
    -decryptedMessageService random_id:long random_bytes:bytes action:DecryptedMessageAction = DecryptedMessage;
    -
    -decryptedMessageMediaEmpty = DecryptedMessageMedia;
    -decryptedMessageMediaPhoto thumb:bytes thumb_w:int thumb_h:int w:int h:int size:int key:bytes iv:bytes = DecryptedMessageMedia;
    -decryptedMessageMediaVideo thumb:bytes thumb_w:int thumb_h:int duration:int w:int h:int size:int key:bytes iv:bytes = DecryptedMessageMedia;
    -decryptedMessageMediaGeoPoint lat:double long:double = DecryptedMessageMedia;
    -decryptedMessageMediaContact phone_number:string first_name:string last_name:string user_id:int = DecryptedMessageMedia;
    -
    -decryptedMessageActionSetMessageTTL ttl_seconds:int = DecryptedMessageAction;
    -
    -decryptedMessageMediaDocument thumb:bytes thumb_w:int thumb_h:int file_name:string mime_type:string size:int key:bytes iv:bytes = DecryptedMessageMedia;
    -decryptedMessageMediaAudio duration:int size:int key:bytes iv:bytes = DecryptedMessageMedia;
    -
    -decryptedMessageActionReadMessages random_ids:Vector<long> = DecryptedMessageAction;
    -decryptedMessageActionDeleteMessages random_ids:Vector<long> = DecryptedMessageAction;
    -decryptedMessageActionScreenshotMessages random_ids:Vector<long> = DecryptedMessageAction;
    -decryptedMessageActionFlushHistory = DecryptedMessageAction;
    -

    Layer 7

    -

    Added wallpaper constructor wallPaperSolid.

    -

    Schema

    -
    wallPaperSolid id:int title:string bg_color:int color:int = WallPaper;
    ----functions---
    -invokeWithLayer7#a5be56d3 {X:Type} query:!X = X;
    -

    Layer 6

    -

    Added location identifiers from foursquare.

    -

    Schema

    -
    geoChat id:int access_hash:long title:string address:string venue:string geo:GeoPoint photo:ChatPhoto participants_count:int date:int checked_in:Bool version:int = Chat;
    ----functions---
    -geochats.createGeoChat title:string geo_point:InputGeoPoint address:string venue:string = geochats.StatedMessage;
    -
    -invokeWithLayer6#3a64d54d {X:Type} query:!X = X;
    -

    Layer 5

    -

    Added parameters for internationalization.

    -

    Schema changes

    - -

    Schema

    -
    ---functions---
    -auth.sendCode phone_number:string sms_type:int api_id:int api_hash:string lang_code:string = auth.SentCode;
    -account.registerDevice token_type:int token:string device_model:string system_version:string app_version:string app_sandbox:Bool lang_code:string = Bool;
    -
    -invokeWithLayer5#417a57ae {X:Type} query:!X = X;
    -

    Layer 4

    -

    Added geochats. More...

    -

    Schema changes

    -
      -
    • Added many constructors and methods for geochats.
    • -
    • Added friends_unread_count field to constructor updates.state.
    • -
    -

    Schema

    -
    inputGeoChat chat_id:int access_hash:long = InputGeoChat;
    -
    -geoChat id:int access_hash:long title:string address:string geo:GeoPoint photo:ChatPhoto participants_count:int date:int left:Bool version:int = Chat;
    -
    -geoChatMessageEmpty chat_id:int id:int = GeoChatMessage;
    -geoChatMessage chat_id:int id:int from_id:int date:int message:string media:MessageMedia = GeoChatMessage;
    -geoChatMessageService chat_id:int id:int from_id:int date:int action:MessageAction = GeoChatMessage;
    -
    -geochats.statedMessage message:GeoChatMessage chats:Vector<Chat> users:Vector<User> seq:int = geochats.StatedMessage;
    -
    -geochats.located results:Vector<ChatLocated> messages:Vector<GeoChatMessage> chats:Vector<Chat> users:Vector<User> = geochats.Located;
    -
    -geochats.messages messages:Vector<GeoChatMessage> chats:Vector<Chat> users:Vector<User> = geochats.Messages;
    -geochats.messagesSlice count:int messages:Vector<GeoChatMessage> chats:Vector<Chat> users:Vector<User> = geochats.Messages;
    -
    -messageActionGeoChatCreate title:string address:string = MessageAction;
    -messageActionGeoChatCheckin = MessageAction;
    -updateNewGeoChatMessage message:GeoChatMessage = Update;
    -updates.state pts:int date:int seq:int unread_count:int friends_unread_count:int = updates.State;
    -
    ----functions---
    -
    -geochats.getLocated geo_point:InputGeoPoint radius:int limit:int = geochats.Located;
    -geochats.checkin peer:InputGeoChat = geochats.StatedMessage;
    -geochats.getFullChat peer:InputGeoChat = messages.ChatFull;
    -geochats.editChatTitle peer:InputGeoChat title:string address:string = geochats.StatedMessage;
    -geochats.editChatPhoto peer:InputGeoChat photo:InputChatPhoto = geochats.StatedMessage;
    -geochats.search peer:InputGeoChat q:string filter:MessagesFilter min_date:int max_date:int offset:int max_id:int limit:int = geochats.Messages;
    -geochats.getHistory peer:InputGeoChat offset:int max_id:int limit:int = geochats.Messages;
    -geochats.setTyping peer:InputGeoChat typing:Bool = Bool;
    -geochats.sendMessage peer:InputGeoChat message:string random_id:long = geochats.StatedMessage;
    -geochats.sendMedia peer:InputGeoChat media:InputMedia random_id:long = geochats.StatedMessage;
    -geochats.createGeoChat title:string geo_point:InputGeoPoint address:string = geochats.StatedMessage;
    -
    -invokeWithLayer4#dea0d430 {X:Type} query:!X = X;
    -

    Push-notifications

    -
      -
    • Added notification of GEOCHAT_CHECKIN type -- a user has checked-in in a geochat.
    • -
    -

    Layer 3

    -

    Support for link changes for a contact when a message is sent. Now, if user X has user Y in the contact list and if user Y writes a message to user X, number X will become available for him. More...

    -

    Schema changes

    - -

    Schema

    -
    messages.statedMessagesLinks messages:Vector<Message> chats:Vector<Chat> users:Vector<User> links:Vector<contacts.Link> pts:int seq:int = messages.StatedMessages;
    -messages.statedMessageLink message:Message chats:Vector<Chat> users:Vector<User> links:Vector<contacts.Link> pts:int seq:int = messages.StatedMessage;
    -messages.sentMessageLink id:int date:int pts:int seq:int links:Vector<contacts.Link> = messages.SentMessage;
    -
    ----functions---
    -
    -messages.forwardMessage peer:InputPeer id:int random_id:long = messages.StatedMessage;
    -messages.sendBroadcast contacts:Vector<InputUser> message:string media:InputMedia = messages.StatedMessages;
    -
    -invokeWithLayer3#b7475268 {X:Type} query:!X = X;
    -

    Layer 2

    -

    Support for notifications on changes of contact profile images. It is assumed that receiving such image changed notification a client will add a record on this event in the message history with this contact.

    -

    Schema changes

    - -

    Schema

    -
    inputPeerNotifySettings mute_until:int sound:string show_previews:Bool events_mask:int = InputPeerNotifySettings;
    -peerNotifySettings mute_until:int sound:string show_previews:Bool events_mask:int = PeerNotifySettings;
    -updateUserPhoto user_id:int date:int photo:UserProfilePhoto previous:Bool = Update;
    -userProfilePhoto photo_id:long photo_small:FileLocation photo_big:FileLocation = UserProfilePhoto;
    -
    ----functions---
    -
    -photos.getUserPhotos user_id:InputUser offset:int max_id:int limit:int = photos.Photos;
    -
    -invokeWithLayer2#289dd1f6 {X:Type} query:!X = X;
    -

    Push-notifications

    -
      -
    • Added notification of CONTACT_PHOTO type -- a contact has changed profile image.
    • -
    - -
    - -
    -
    - -
    - - - - - - - - diff --git a/data/core.telegram.org/api/mentions.html b/data/core.telegram.org/api/mentions.html deleted file mode 100644 index a2fe10611f..0000000000 --- a/data/core.telegram.org/api/mentions.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - Mentions - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    Mentions

    - -
    - -

    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.

    -
    messageEntityMention#fa04579d offset:int length:int = MessageEntity;
    -messageEntityMentionName#352dca58 offset:int length:int user_id:int = MessageEntity;
    -inputMessageEntityMentionName#208e68c9 offset:int length:int user_id:InputUser = MessageEntity;
    -
    -message#58ae39c9 flags:# 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 id:int from_id:flags.8?Peer peer_id:Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to:flags.3?MessageReplyHeader date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector<MessageEntity> views:flags.10?int forwards:flags.10?int replies:flags.23?MessageReplies edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long restriction_reason:flags.22?Vector<RestrictionReason> = Message;
    -
    -channelParticipantsMentions#e04b5ceb flags:# q:flags.0?string top_msg_id:flags.1?int = ChannelParticipantsFilter;
    -
    ----functions---
    -
    -messages.sendMessage#520c3870 flags:# no_webpage:flags.1?true silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:InputPeer reply_to_msg_id:flags.0?int message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> schedule_date:flags.10?int = Updates;
    -
    -channels.getParticipants#123e05e9 channel:InputChannel filter:ChannelParticipantsFilter offset:int limit:int hash:int = channels.ChannelParticipants;
    -

    Mentions are implemented as message entities, passed to the messages.sendMessage method:

    - -

    Incoming messages mentioning to the current user will have the mentioned flag set, and will contain one or more messageEntityMention and messageEntityMentionName constructors.

    -

    Graphical clients can show a list of mentionable users when the user starts entering an @ in the text bar; for this purpose, the channelParticipantsMentions filter can be used in channels.getParticipants.
    -This filter can be enhanced by providing an additional query string q (anything the user enters after @); it will also return non-participant users, in case of channel users commenting in post comment sections.

    -

    Dialog mentions

    -
    dialog#2c171f72 flags:# pinned:flags.2?true unread_mark:flags.3?true peer:Peer top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_mentions_count:int notify_settings:PeerNotifySettings pts:flags.0?int draft:flags.1?DraftMessage folder_id:flags.4?int = Dialog;
    -
    ----functions---
    -
    -messages.getUnreadMentions#46578472 peer:InputPeer offset_id:int add_offset:int limit:int max_id:int min_id:int = messages.Messages;
    -messages.readMentions#f0189d3 peer:InputPeer = messages.AffectedHistory;
    -

    Graphical clients are supposed to show a blue mention indicator next to the message counter of chats in the dialog list.
    -The dialog constructor contains an unread_mentions_count field to isolate chats with unread mentions; the actual mention counter should be shown inside of the chat itself, above an @ button that can be used, by clicking multiple times, to navigate back (using messages.getUnreadMentions) through the mention history.

    -

    When the last unread mention is read, or when long-clicking on the @ button, all mentions for a chat should marked as read using messages.readMentions.

    - -
    - -
    -
    - -
    - - - - - - - - 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..10d2f80e72 --- /dev/null +++ b/data/core.telegram.org/api/obtaining_api_id.html @@ -0,0 +1,140 @@ + + + + + Creating your Telegram Application + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    Creating your Telegram Application

    + +

    We welcome all developers to use our API and source code to create Telegram-like messaging applications on our platform free of charge.

    +
    +

    In order to ensure consistency and security across the Telegram ecosystem, +all third-party client apps must comply with the API Terms of Service.

    +
    +

    Obtaining api_id

    +

    In order to obtain an API id and develop your own application using the Telegram API you need to do the following:

    +
      +
    • Sign up for Telegram using any application.
    • +
    • Log in to your Telegram core: https://my.telegram.org.
    • +
    • Go to 'API development tools' and fill out the form.
    • +
    • You will get basic addresses as well as the api_id and api_hash parameters required for user authorization.
    • +
    • For the moment each number can only have one api_id connected to it.
    • +
    +

    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.

    +

    Using the api_id

    +

    Before using the MTProto Telegram API, please note that all API client libraries are strictly monitored to prevent abuse.

    +

    If you use the Telegram API for flooding, spamming, faking subscriber and view counters of channels, you will be banned forever.

    +

    Due to excessive abuse of the Telegram API, all accounts that sign up or log in using unofficial Telegram API clients are automatically put under observation to avoid violations of the Terms of Service.

    +

    If you didn't violate the Terms of Service but your account does get banned after using the API, write to recover@telegram.org explaining what you intend to do with the API, asking to unban your account.
    +Please note that emails are checked by a human, so automatically generated emails will be detected and banned.

    +

    Using Telegram's open source code

    +

    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 own API id before you publish your app.

    +
    +

    Please remember to publish your code as well in order to comply with the GNU GPL licences.

    +
    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/api/offsets.html b/data/core.telegram.org/api/offsets.html deleted file mode 100644 index 450c35c847..0000000000 --- a/data/core.telegram.org/api/offsets.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - Pagination in the API - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    Pagination in the API

    - -
    - -

    Lots of Telegram API methods provide access to potentially large lists of objects, which requires pagination.

    -

    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.

    -

    Typically, results are returned in antichronological order with descending object ID values.

    -

    limit parameter

    -

    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.

    -

    offset-based pagination

    -

    For a few methods with mostly static data this parameter allows to skip offset elements from the beginning of list; negative values are ignored.

    -

    offset_id-based pagination

    -

    For most methods where results are real-time data (e.g. any chat history) offset value is not passed directly. Instead it is calculated from the passed offset_id and add_offset parameter values as offsetFromID(offset_id) + add_offset, where offsetFromID(offset_id) is a number of results from the beginning of list up to the result with ID offset_id, inclusive.

    -

    Sample use cases:

    -
      -
    • -

      Loading 20 messages, older than message with ID MSGID:

      -

      messages.getHistory({offset_id: MSGID, add_offset: 0, limit: 20})

      -
    • -
    • -

      Loading 20 messages, newer than message with ID MSGID:

      -

      messages.getHistory({offset_id: MSGID, add_offset: -20, limit: 20})

      -
    • -
    • -

      Loading 20 messages around message with ID MSGID:

      -

      messages.getHistory({offset_id: MSGID, add_offset: -10, limit: 20})

      -
    • -
    -

    Additional filtering

    -

    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:

    -
      -
    • max_id: Can be used to only return results with ID strictly smaller than max_id (e.g. message ID)
    • -
    • min_id: Can be used to only return results with ID strictly greater than min_id(e.g. message ID)
    • -
    • max_date: Can be used to only return results that are older than max_date:
    • -
    • min_date: Can be used to only return results with are newer than min_date:
    • -
    • hash: See below.
    • -
    -

    Hash generation

    -

    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 ETag.

    -

    When the client has cached results for API request, it can calculate the hash value for it by taking the result IDs (message IDs or other fields with name id) and using them to compute a 32-bit hash with the following algorithm:

    -
    hash = 0
    -for id in ids:
    -    hash = (((hash * 0x4F25) & 0x7FFFFFFF) + id) & 0x7FFFFFFF
    -

    In some cases, the result container already has a hash field, that can be used instead.

    -

    When the client passes a correct value, the API will return one of *NotModified constructors, e.g. messages.messagesNotModified instead of the actual results.

    -

    Example methods

    -
      -
    • messages.getHistory supports all result navigation parameters including message ID hashes and except filters
    • -
    • channels.getParticipants supports simple navigation using limit and offset, along with filtering and hash reducing using the user IDs of returned participants
    • -
    - -
    - -
    -
    - -
    - - - - - - - - diff --git a/data/core.telegram.org/api/payments.html b/data/core.telegram.org/api/payments.html new file mode 100644 index 0000000000..cea7b3b259 --- /dev/null +++ b/data/core.telegram.org/api/payments.html @@ -0,0 +1,366 @@ + + + + + Payments API + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    Payments API

    + +
    + +

    You can accept payments from Telegram users via Telegram Bots.

    +
    +

    Note: This article is intended for MTProto API developers. If you're looking for a general overview of Telegram Payments, check out the Telegram blog and the bot API payment manual.

    +
    +

    Introducing Payments

    +

    Telegram bots can accept payments for goods and services from users. +For more info on how payments work, check out the Telegram Blog and the bot API payment manual.

    +

    This page will elaborate on the actions required to work with payments using the MTProto API.

    +
    +

    A simplified version of the process is available only for bots using the bot API.

    +
    +

    The first step for bots is enable payments as described here ».

    +

    Then, we work with payments as follows.

    +

    1. Create Invoice

    +
    inputWebDocument#9bed434d url:string size:int mime_type:string attributes:Vector<DocumentAttribute> = InputWebDocument;
    +
    +labeledPrice#cb296bf8 label:string amount:long = LabeledPrice;
    +
    +invoice#c30aa358 flags:# 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:string prices:Vector<LabeledPrice> = Invoice;
    +
    +inputMediaInvoice#f4e096c3 flags:# title:string description:string photo:flags.0?InputWebDocument invoice:Invoice payload:bytes provider:string provider_data:DataJSON start_param:string = InputMedia;
    +
    +---functions---
    +
    +messages.sendMedia#3491eba9 flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true peer:InputPeer reply_to_msg_id:flags.0?int media:InputMedia message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> schedule_date:flags.10?int = Updates;
    +

    The user contacts the bot and requests to purchase something. +The bot forms an inputMediaInvoice with an invoice constructor with a description of the goods or service, amount to be paid, as well as requested shipping info. +The provider parameter of the inputMediaInvoice constructor is where you put the token value that you've obtained earlier via Botfather. It is possible for one merchant bot to use several different tokens for different users or different goods and services.

    +

    Use the messages.sendMedia method to send the invoice. +You can also attach an inline keyboard to the message using the reply_markup field: if provided, the first button must be a keyboardButtonBuy button. Otherwise, an inline keyboard will be generated automatically, with a Pay 'total price' keyboardButtonBuy as only button.

    +

    An invoice message with a pay button can only be sent to a private chat with the user. Groups and channels are not supported.

    +

    2. Order information

    +

    2.1 Invoice message

    +
    keyboardButtonBuy#afd93fbb text:string = KeyboardButton;
    +
    +keyboardButtonRow#77608b83 buttons:Vector<KeyboardButton> = KeyboardButtonRow;
    +replyInlineMarkup#48a30254 rows:Vector<KeyboardButtonRow> = ReplyMarkup;
    +
    +webDocument#1c570ed1 url:string access_hash:long size:int mime_type:string attributes:Vector<DocumentAttribute> = WebDocument;
    +webDocumentNoProxy#f9c8bcc6 url:string size:int mime_type:string attributes:Vector<DocumentAttribute> = WebDocument;
    +
    +messageMediaInvoice#84551347 flags:# shipping_address_requested:flags.1?true test:flags.3?true title:string description:string photo:flags.0?WebDocument receipt_msg_id:flags.2?int currency:string total_amount:long start_param:string = MessageMedia;
    +
    +message#58ae39c9 flags:# 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 id:int from_id:flags.8?Peer peer_id:Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to:flags.3?MessageReplyHeader date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector<MessageEntity> views:flags.10?int forwards:flags.10?int replies:flags.23?MessageReplies edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long restriction_reason:flags.22?Vector<RestrictionReason> = Message;
    +
    +updateNewMessage#1f2b0afd message:Message pts:int pts_count:int = Update;
    +

    The user receives an updateNewMessage constructor from the bot, containing a messageMediaInvoice constructor with basic info about the product.

    +

    The message will also have a replyInlineMarkup keyboard attached to it. +The the first button of the keyboard will always be a keyboardButtonBuy button.

    +

    2.2 Getting invoice info about the product

    +
    invoice#c30aa358 flags:# 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:string prices:Vector<LabeledPrice> = Invoice;
    +
    +paymentRequestedInfo#909c3f94 flags:# name:flags.0?string phone:flags.1?string email:flags.2?string shipping_address:flags.3?PostAddress = PaymentRequestedInfo;
    +
    +paymentSavedCredentialsCard#cdc27a1f id:string title:string = PaymentSavedCredentials;
    +
    +payments.paymentForm#3f56aea3 flags:# can_save_credentials:flags.2?true password_missing:flags.3?true bot_id:int invoice:Invoice provider_id:int url:string native_provider:flags.4?string native_params:flags.4?DataJSON saved_info:flags.0?PaymentRequestedInfo saved_credentials:flags.1?PaymentSavedCredentials users:Vector<User> = payments.PaymentForm;
    +
    +---functions---
    +
    +payments.getPaymentForm#99f09745 msg_id:int = payments.PaymentForm;
    +

    If the user clicks on the keyboardButtonBuy button, the client proceeds to call payments.getPaymentForm with the message ID of the invoice preview message to get the payment form.

    +

    The returned form will contain fields that should be passed to the payment provider along with the full invoice. +The payment form also contains info about previously saved payment credentials and order information (name, phone number, email, shipping address & so on).

    +

    The full invoice contains info about the information required for the order, the price and the currency, and whether this is a test order.

    +

    2.3 Verifying information

    +
    invoice#c30aa358 flags:# 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:string prices:Vector<LabeledPrice> = Invoice;
    +
    +postAddress#1e8caaeb street_line1:string street_line2:string city:string state:string country_iso2:string post_code:string = PostAddress;
    +
    +paymentRequestedInfo#909c3f94 flags:# name:flags.0?string phone:flags.1?string email:flags.2?string shipping_address:flags.3?PostAddress = PaymentRequestedInfo;
    +
    +payments.validatedRequestedInfo#d1451883 flags:# id:flags.0?string shipping_options:flags.1?Vector<ShippingOption> = payments.ValidatedRequestedInfo;
    +
    +---functions---
    +
    +payments.validateRequestedInfo#770a8e74 flags:# save:flags.0?true msg_id:int info:PaymentRequestedInfo = payments.ValidatedRequestedInfo;
    +

    If any data at all is requested by the invoice (name_requested, phone_requested, email_requested, shipping_address_requested), the user must call payments.validateRequestedInfo, providing the required data (as usual, msg_id is the ID of the invoice message). +The user can choose to save order information for future use by setting the save flag. +Data can be autofilled as described in autofill.

    +

    If no errors are found in the submitted info, the response of the method will contain an id flag, to be used later to complete the payment.

    +

    If the flexible flag of the invoice is set, calling the payments.validateRequestedInfo method will send a shipping query update to the bot, to which the bot will reply with the available shipping options for the specified address as described here ». +The return value in this case will also contain a shipping_options field with the available shipping options.

    +

    If any errors are found in the submmitted data, a service notification will be sent to the user, with a description of the error from the bot.

    +

    2.3.1 Autofill

    +
    payments.savedInfo#fb8fe43c flags:# has_saved_credentials:flags.1?true saved_info:flags.0?PaymentRequestedInfo = payments.SavedInfo;
    +
    +---functions---
    +
    +payments.getSavedInfo#227d824b = payments.SavedInfo;
    +payments.clearSavedInfo#d83d70c1 flags:# credentials:flags.0?true info:flags.1?true = Bool;
    +

    The requested fields can be autofilled with the info provided in the saved_info field of the payment form, or with the info fetched manually using payments.getSavedInfo.

    +

    Saved order information can also be cleared using payments.clearSavedInfo.

    +

    2.4 Select delivery option

    +
    labeledPrice#cb296bf8 label:string amount:long = LabeledPrice;
    +
    +shippingOption#b6213cdf id:string title:string prices:Vector<LabeledPrice> = ShippingOption;
    +
    +updateBotShippingQuery#e0cdc940 query_id:long user_id:int payload:bytes shipping_address:PostAddress = Update;
    +
    +---functions---
    +
    +messages.setBotShippingResults#e5f672fa flags:# query_id:long error:flags.0?string shipping_options:flags.1?Vector<ShippingOption> = Bool;
    +

    If a shipping address was requested and the bot included the parameter flexible, when the user validates order information the Telegram API will send an updateBotShippingQuery to the bot. +The bot must respond using messages.setBotShippingResults 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).

    +

    The returned shipping options or the shipping error will be returned to the user while validating order information.

    +

    3. Payment

    +
    inputPaymentCredentialsSaved#c10eb2cf id:string tmp_password:bytes = InputPaymentCredentials;
    +inputPaymentCredentials#3417d728 flags:# save:flags.0?true data:DataJSON = InputPaymentCredentials;
    +inputPaymentCredentialsApplePay#aa1c39f payment_data:DataJSON = InputPaymentCredentials;
    +inputPaymentCredentialsAndroidPay#ca05d50e payment_token:DataJSON google_transaction_id:string = InputPaymentCredentials;
    +
    +
    +payments.paymentForm#3f56aea3 flags:# can_save_credentials:flags.2?true password_missing:flags.3?true bot_id:int invoice:Invoice provider_id:int url:string native_provider:flags.4?string native_params:flags.4?DataJSON saved_info:flags.0?PaymentRequestedInfo saved_credentials:flags.1?PaymentSavedCredentials users:Vector<User> = payments.PaymentForm;
    +

    3.1 Web payment

    +
    inputPaymentCredentials#3417d728 flags:# save:flags.0?true data:DataJSON = InputPaymentCredentials;
    +
    +payments.paymentForm#3f56aea3 flags:# can_save_credentials:flags.2?true password_missing:flags.3?true bot_id:int invoice:Invoice provider_id:int url:string native_provider:flags.4?string native_params:flags.4?DataJSON saved_info:flags.0?PaymentRequestedInfo saved_credentials:flags.1?PaymentSavedCredentials users:Vector<User> = payments.PaymentForm;
    +

    Typically, payment takes place by opening the url in the specified payment form, which leads to a payment form on the website of the payment gateway. +Once the user finishes entering their payment credentials, a payment_form_submit web event is generated by the payment gateway, containing data and title JSON fields.

    +

    The title is used by the client app to represent the payment credentials (typically a censored version of credit card information). +The data is used to generate an inputPaymentCredentials constructor. +Eventually, you can set the save flag to save the credit card info for future use, only if 2FA is enabled.

    +

    Telegram does not have access to your card information. Credit card details will be handled only by the payment system.

    +

    3.2 Native payment

    +
    inputPaymentCredentials#3417d728 flags:# save:flags.0?true data:DataJSON = InputPaymentCredentials;
    +
    +payments.paymentForm#3f56aea3 flags:# can_save_credentials:flags.2?true password_missing:flags.3?true bot_id:int invoice:Invoice provider_id:int url:string native_provider:flags.4?string native_params:flags.4?DataJSON saved_info:flags.0?PaymentRequestedInfo saved_credentials:flags.1?PaymentSavedCredentials users:Vector<User> = payments.PaymentForm;
    +

    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.

    +

    This is done using the JSON native_params parameters field of the payments.paymentForm constructor, which contains an object, which can contain one or more of the following fields:

    +
      +
    • publishable_key: Stripe API publishable key
    • +
    • apple_pay_merchant_id: Apple Pay merchant ID
    • +
    • android_pay_public_key: Android Pay public key
    • +
    • android_pay_bgcolor: Android Pay form background color
    • +
    • android_pay_inverse: Whether to use the dark theme in the Android Pay form
    • +
    • need_country: True, if the user country must be provided,
    • +
    • need_zip: True, if the user ZIP/postal code must be provided,
    • +
    • need_cardholder_name: True, if the cardholder name must be provided
    • +
    +

    The payment gateway to use is decided based on the value of the native_provider field.

    +
    3.2.1 Stripe
    +
    inputPaymentCredentials#3417d728 flags:# save:flags.0?true data:DataJSON = InputPaymentCredentials;
    +
    +payments.paymentForm#3f56aea3 flags:# can_save_credentials:flags.2?true password_missing:flags.3?true bot_id:int invoice:Invoice provider_id:int url:string native_provider:flags.4?string native_params:flags.4?DataJSON saved_info:flags.0?PaymentRequestedInfo saved_credentials:flags.1?PaymentSavedCredentials users:Vector<User> = payments.PaymentForm;
    +

    If the native_provider field is set and equal to stripe, the client can make use of the native Stripe token APIs with the publishable_key from the native_params to add a payment method to Stripe, and then use the token type and id to generate a JSON object:

    +
    {"type":"token.type", "id":"token.id"}"
    +

    The generated JSON object can then be passed to the data field of the inputPaymentCredentials. +Eventually, you can set the save flag to save the credit card info for future use, only if 2FA is enabled.

    +

    Telegram does not have access to your card information. Credit card details will be handled only by the payment system.

    +

    Example implementation: Telegram for Android.

    +

    3.3 Apple pay

    +
    inputPaymentCredentialsApplePay#aa1c39f payment_data:DataJSON = InputPaymentCredentials;
    +

    On iOS devices, Apple Pay can be used to generate payment data, which is then sent using the inputPaymentCredentialsApplePay constructor.

    +

    Example implementation: Telegram for iOS.

    +

    3.4 Android pay

    +
    inputPaymentCredentialsAndroidPay#ca05d50e payment_token:DataJSON google_transaction_id:string = InputPaymentCredentials;
    +

    On Android devices, Google Pay can be used to generate payment data, which is then sent using the inputPaymentCredentialsAndroidPay constructor.

    +

    Example implementation: Telegram for Android.

    +

    3.5 Using saved payment credentials

    +
    inputPaymentCredentialsSaved#c10eb2cf id:string tmp_password:bytes = InputPaymentCredentials;
    +
    +paymentSavedCredentialsCard#cdc27a1f id:string title:string = PaymentSavedCredentials;
    +
    +payments.paymentForm#3f56aea3 flags:# can_save_credentials:flags.2?true password_missing:flags.3?true bot_id:int invoice:Invoice provider_id:int url:string native_provider:flags.4?string native_params:flags.4?DataJSON saved_info:flags.0?PaymentRequestedInfo saved_credentials:flags.1?PaymentSavedCredentials users:Vector<User> = payments.PaymentForm;
    +
    +account.tmpPassword#db64fd34 tmp_password:bytes valid_until:int = account.TmpPassword;
    +
    +---functions---
    +
    +account.getTmpPassword#449e0b51 password:InputCheckPasswordSRP period:int = account.TmpPassword;
    +

    To reuse saved payment methods, the saved_credentials field of the payment form is used. +The title of the paymentSavedCredentialsCard can be used to preview a censored version of credit card info. +The id 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 is not saved on Telegram Servers, and cannot be fetched by the user.

    +

    In order to use the saved payment method, 2FA must be enabled: the user must verify their identity by entering their 2FA password, which is then used as described in the SRP docs to generate SRP parameters which must be passed to account.getTmpPassword.

    +

    The generated temporary password can then be used to make payments using the saved credentials using the inputPaymentCredentialsSaved constructor.

    + +

    Example implementation: Telegram for Android.

    +

    4. Pre-Checkout

    +
    inputPaymentCredentialsSaved#c10eb2cf id:string tmp_password:bytes = InputPaymentCredentials;
    +inputPaymentCredentials#3417d728 flags:# save:flags.0?true data:DataJSON = InputPaymentCredentials;
    +inputPaymentCredentialsApplePay#aa1c39f payment_data:DataJSON = InputPaymentCredentials;
    +inputPaymentCredentialsAndroidPay#ca05d50e payment_token:DataJSON google_transaction_id:string = InputPaymentCredentials;
    +
    +payments.paymentResult#4e5f810d updates:Updates = payments.PaymentResult;
    +payments.paymentVerificationNeeded#d8411139 url:string = payments.PaymentResult;
    +
    +---functions---
    +
    +payments.sendPaymentForm#2b8879b3 flags:# msg_id:int requested_info_id:flags.0?string shipping_option_id:flags.1?string credentials:InputPaymentCredentials = payments.PaymentResult;
    +

    After verifying order information, the final step for the client is to call payments.sendPaymentForm, with the following parameters:

    +
      +
    • The msg_id is set to the ID of the invoice message
    • +
    • requested_info_id is set to the id of the verified order information, if it was requested
    • +
    • shipping_option_id is set to the selected delivery option, if shipping was requested.
    • +
    • credentials are the payment credentials generated by the payment provider, required to complete the order.
    • +
    +

    Payment method info can also be saved to the Telegram Servers and reused, by setting the save flag of inputPaymentCredentials when sending the form. +This is only possible on accounts with 2FA enabled.

    +

    The bot then replies to the received precheckout query, finally the user proceeds to checkout.

    +

    Please note that if the result of the method is a payments.paymentVerificationNeeded, before proceeding to checkout the payment provider requires the user to verify his identity by opening the provided url and following instructions. +Once the user finishes working with the webpage, the client can proceed to checkout.

    +

    Eventual errors are returned in the form of RPC errors, with the description of the error by the bot contained in service updates.

    +

    4.1 Receiving pre-checkout query

    +
    paymentRequestedInfo#909c3f94 flags:# name:flags.0?string phone:flags.1?string email:flags.2?string shipping_address:flags.3?PostAddress = PaymentRequestedInfo;
    +
    +updateBotPrecheckoutQuery#5d2f3aa9 flags:# query_id:long user_id:int payload:bytes info:flags.0?PaymentRequestedInfo shipping_option_id:flags.1?string currency:string total_amount:long = Update;
    +
    +---functions---
    +
    +messages.setBotPrecheckoutResults#9c2dd95 flags:# success:flags.1?true query_id:long error:flags.0?string = Bool;
    +

    The user enters their payment information as described above and presses the final pay button. +At this moment the Telegram API sends an updateBotPrecheckoutQuery constructor that contains all the available information about the order to the bot. +The bot must reply using messages.setBotPrecheckoutResults within 10 seconds after receiving this update or the transaction is canceled.

    +

    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.

    +

    5. Checkout

    +
    keyboardButtonBuy#afd93fbb text:string = KeyboardButton;
    +
    +keyboardButtonRow#77608b83 buttons:Vector<KeyboardButton> = KeyboardButtonRow;
    +replyInlineMarkup#48a30254 rows:Vector<KeyboardButtonRow> = ReplyMarkup;
    +
    +messageMediaInvoice#84551347 flags:# shipping_address_requested:flags.1?true test:flags.3?true title:string description:string photo:flags.0?WebDocument receipt_msg_id:flags.2?int currency:string total_amount:long start_param:string = MessageMedia;
    +
    +message#58ae39c9 flags:# 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 id:int from_id:flags.8?Peer peer_id:Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to:flags.3?MessageReplyHeader date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector<MessageEntity> views:flags.10?int forwards:flags.10?int replies:flags.23?MessageReplies edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long restriction_reason:flags.22?Vector<RestrictionReason> = Message;
    +
    +updateNewMessage#1f2b0afd message:Message pts:int pts_count:int = Update;
    +
    +payments.paymentReceipt#500911e1 flags:# date:int bot_id:int invoice:Invoice provider_id:int info:flags.0?PaymentRequestedInfo shipping:flags.1?ShippingOption currency:string total_amount:long credentials_title:string users:Vector<User> = payments.PaymentReceipt;
    +
    +---functions---
    +
    +payments.getPaymentReceipt#a092a980 msg_id:int = payments.PaymentReceipt;
    +

    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.

    +

    If all is OK, the user receives a payments.paymentResult in reply to the payments.sendPaymentForm query, containing info about the updated invoice message in the form of an updateEditMessage.

    +

    The invoice message will be updated as follows: the attached messageMediaInvoice will now have a receipt_msg_id field. +Clients should treat invoice messages with a receipt_msg_id field as receipt messages, locally modifying the label of the keyboardButtonBuy button to a localized version of the word Receipt. +From this point, clicking on the Receipt button should trigger a call to payments.getPaymentReceipt, providing the receipt_msg_id to the msg_id field, which will return info about the transaction.

    +

    The payment will also generate one service message of type messageActionPaymentSent or messageActionPaymentSentMe, replying to the invoice. +For bots, the service message will be of type messageActionPaymentSentMe, for users it will be a messageActionPaymentSent.

    +
    messageActionPaymentSentMe#8f31b327 flags:# currency:string total_amount:long payload:bytes info:flags.0?PaymentRequestedInfo shipping_option_id:flags.1?string charge:PaymentCharge = MessageAction;
    +messageActionPaymentSent#40699cd0 currency:string total_amount:long = MessageAction;
    + +
    + +
    +
    + +
    + + + + + + + + diff --git a/data/core.telegram.org/api/pfs.html b/data/core.telegram.org/api/pfs.html new file mode 100644 index 0000000000..fb931f0d94 --- /dev/null +++ b/data/core.telegram.org/api/pfs.html @@ -0,0 +1,138 @@ + + + + + Perfect Forward Secrecy + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    Perfect Forward Secrecy

    + +
    Related articles
    +

    +
    +

    This article is about Perfect Forward Secrecy in cloud chats, see also PFS in Secret Chats.

    +
    +
    +

    Telegram supports Perfect Forward Secrecy (PFS).

    +

    To make this possible, the client generates a permanent authorization key using p_q_inner_data and a temporary key using p_q_inner_data_temp. (See Creating an Authorization Key for more info.) These 2 operations may be done in parallel and even using the same connection. The client must save an expires_at unix timestamp expires_at = time + expires_in.

    +

    Important: in order to achieve PFS, the client must never use the permanent auth_key_id directly. Every message that is sent to MTProto, must be encrypted by a temp_auth_key_id, that was bound to the perm_auth_key_id.

    +

    An unbound temp_auth_key_id may only be used with the following methods:

    + +

    In order to bind a temporary authorization key to the permanent key the client creates a special binding message and executes the auth.bindTempAuthKey method using temp_auth_key. Once auth.bindTempAuthKey has been executed successfully, the client may signUp / signIn using other auth.* methods and continue using the API as usual; the client must also rewrite client info using initConnection after each binding. Each permanent key may only be bound to one temporary key at a time, binding a new temporary key overwrites the previous one.

    +

    Once the temporary key expires, the client needs to generate a new temporary key using p_q_inner_data_temp. 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.

    +

    For additional security, the client can store the temporary authorization key in RAM only and never save it in persistent storage.

    +

    A temporary authorization key may expire at any moment before expires_at, 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).

    + +
    + +
    +
    + +
    + + + + + + 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..e5bd34b668 --- /dev/null +++ b/data/core.telegram.org/api/push-updates.html @@ -0,0 +1,985 @@ + + + + + Handling PUSH-notifications + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    Handling PUSH-notifications

    + +
    + +

    Configuring the application

    +

    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 application settings.

    +

    Subscribing to notifications

    +

    To subscribe to notifications, the client must invoke the account.registerDevice query, passing in token_type and token 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 account.unregisterDevice to unsubscribe.

    +

    The following modes are supported:

    +
      +
    • 1 - APNS (device token for apple push)
    • +
    • 2 - FCM (firebase token for google firebase)
    • +
    • 3 - MPNS (channel URI for microsoft push)
    • +
    • 4 - Deprecated: Simple push (endpoint for firefox's simple push API)
    • +
    • 5 - Ubuntu phone (token for ubuntu push)
    • +
    • 6 - Blackberry (token for blackberry push)
    • +
    • 7 - MTProto separate session
    • +
    • 8 - WNS (windows push)
    • +
    • 9 - APNS VoIP (token for apple push VoIP)
    • +
    • 10 - Web push (web push, see below)
    • +
    • 11 - MPNS VoIP (token for microsoft push VoIP)
    • +
    • 12 - Tizen (token for tizen push)
    • +
    +

    For 10 web push, the token must be a JSON-encoded object with the following keys:

    +
      +
    • endpoint: Absolute URL exposed by the push service where the application server can send push messages
    • +
    • keys: P-256 elliptic curve Diffie-Hellman parameters in the following object
        +
      • p256dh: Base64url-encoded P-256 elliptic curve Diffie-Hellman public key
      • +
      • auth: Base64url-encoded authentication secret
      • +
      +
    • +
    +

    Notification encryption

    +

    For FCM and APNS VoIP, an optional encryption key used to encrypt push notifications can be passed to account.registerDevice (secret). This key (auth_key) is used to encrypt the payloads using MTProto v2.

    +

    The FCM payload will be a JSON payload, containing a p field with the base64-encoded encrypted MTProto payload. 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 MTProto docs.

    +

    Example implementation.

    +

    As mentioned above, payloads can also be encrypted using P-256 Elliptic Curve Diffie-Hellman when using web push.

    +

    Notification structure

    +

    An (optionally encrypted) notification is provided as a JSON object in the following format:

    +
    {
    +  "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",
    +  }
    +}
    +

    Each notification has several parameters that describe it.

    +

    Notification type

    +

    data.loc_key - A string literal in the form /[A-Z_0-9]+/, which summarizes the notification. For example, CHAT_MESSAGE_TEXT.

    +

    Notification text arguments

    +

    data.loc_args - A list or arguments which, when inserted into a template, produce a readable notification.

    +

    Custom parameters

    +

    data.custom - Parameters which are be passed into the application when a notification is opened.

    +

    Sound

    +

    data.sound - The name of an audio file to be played.

    +

    User id

    +

    data.user_id - ID of the account to which the PUSH notification should be delivered, in case of clients with multiple accounts active and running.

    +

    Processing notifications

    +

    In principle, data.loc_key, data.custom, 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. data.user_id is the ID of the account to which the PUSH notification should be delivered, in case of clients with multiple accounts active and running.

    +

    Service notifications

    +

    The following notifications can be used to update app settings.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeExtra custom argumentsDescription
    DC_UPDATEdc - number of the data-center
    addr - server address with port number in the format 111.112.113.114:443
    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 (dc=1), it is recommended to call it immediately using help.getConfig to update dc-configuration.
    MESSAGE_DELETEDchannel_id: For channels and supergroups, Channel/supergroup identifier
    chat_id: For chats, Chat identifier
    from_id: For PMs, Author identifier
    messages: Comma-separated IDs of messages that were deleted
    Messages were deleted, remove multiple notifications for this chat
    READ_HISTORYchannel_id: For channels and supergroups, Channel/supergroup identifier
    chat_id: For chats, Chat identifier
    from_id: For PMs, Author identifier
    max_id: Maximum ID of read messages
    Message history was read, remove multiple notifications for this chat
    GEO_LIVE_PENDING Any of the live locations currently being shared should be updated
    SESSION_REVOKE Logout and remove DB for specified session by data.user_id, only apply if coming from an MTProto-encrypted payload
    MESSAGE_MUTED Sent rarely, every 10th message in chats or once per 15 sec in PM, to update badge or download messages
    +

    Possible Notifications

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeTemplate exampleArgumentsExtra custom arguments
    MESSAGE_PLAYLIST{1} sent you {2} music files1. User name
    2. Number of audio files that were sent
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_DOCS{1} sent you {2} files1. User name
    2. Number of documents that were sent
    attachb64: Base64-encoded version of the attached media (related to the first message)
    chat_from_id: Groups only, message author identifier (related to the first message)
    edit_date: When was the message last edited (related to the first message)
    from_id: Author identifier (related to the first message)
    mention: Whether the user was mentioned in the message (related to the first message)
    msg_id: ID of the message (related to the first message)
    silent: Whether the message was posted silently (no notification should be issued) (related to the first message)
    CHAT_MESSAGE_PLAYLIST{1} sent {3} music files to the group {2}1. User name
    2. Group name
    3. Number of audio files that were sent
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    chat_id: Chat identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    CHAT_MESSAGE_DOCS{1} sent {3} files to the group {2}1. User name
    2. Group name
    3. Number of documents that were sent
    attachb64: Base64-encoded version of the attached media (related to the first message)
    chat_from_id: Groups only, message author identifier (related to the first message)
    chat_id: Chat identifier (related to the first message)
    edit_date: When was the message last edited (related to the first message)
    mention: Whether the user was mentioned in the message (related to the first message)
    msg_id: ID of the message (related to the first message)
    silent: Whether the message was posted silently (no notification should be issued) (related to the first message)
    CHANNEL_MESSAGE_PLAYLIST{1} posted {2} music files1. Channel name
    2. Number of audio files that were posted
    attachb64: Base64-encoded version of the attached media
    channel_id: Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    CHANNEL_MESSAGE_DOCS{1} posted {2} files1. Channel name
    2. Number of documents that were posted
    attachb64: Base64-encoded version of the attached media (related to the first message)
    channel_id: Channel/supergroup identifier (related to the first message)
    chat_from_id: Groups only, message author identifier (related to the first message)
    edit_date: When was the message last edited (related to the first message)
    mention: Whether the user was mentioned in the message (related to the first message)
    msg_id: ID of the message (related to the first message)
    silent: Whether the message was posted silently (no notification should be issued) (related to the first message)
    MESSAGE_TEXT{1}: {2}1. Message author
    2. Message body
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_NOTEXT{1} sent you a message1. Message authorattachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_PHOTO{1} sent you a photo1. Message authorattachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_PHOTO_SECRET{1} sent you a self-destructing photo1. User nameattachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_VIDEO{1} sent you a video1. Message authorattachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_VIDEO_SECRET{1} sent you a self-destructing video1. User nameattachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_SCREENSHOT{1} took a screenshot1. User nameattachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_ROUND{1} sent you a video message1. User nameattachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_DOC{1} sent you a file1. User nameattachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_STICKER{1} sent you a {2}sticker1. User name
    2. Sticker emoji with included trailing space or empty string
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_AUDIO{1} sent you a voice message1. Message authorattachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_CONTACT{1} shared a contact {2} with you1. User name
    2. Contact name
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_QUIZ{1} sent you a quiz {2}1. User name
    2. Quiz name
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_GEO{1} sent you a map1. Message authorattachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_GEOLIVE{1} started sharing their live location1. User nameattachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_POLL{1} sent you a poll {2}1. User name
    2. Poll name
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_GIF{1} sent you a GIF1. User nameattachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_GAME{1} invited you to play {2}1. User name
    2. Game name
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_GAME_SCORE{1} scored {3} in game {2}1. User name
    2. Game name
    3. Score
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_INVOICE{1} sent you an invoice for {2}1. User name
    2. Product
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    from_id: Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    MESSAGE_FWDS{1} forwarded you {2} messages1. User name
    2. Number of messages that were forwarded
    attachb64: Base64-encoded version of the attached media (related to the first message)
    chat_from_id: Groups only, message author identifier (related to the first message)
    edit_date: When was the message last edited (related to the first message)
    from_id: Author identifier (related to the first message)
    mention: Whether the user was mentioned in the message (related to the first message)
    msg_id: ID of the message (related to the first message)
    silent: Whether the message was posted silently (no notification should be issued) (related to the first message)
    MESSAGE_PHOTOS{1} sent you {2} photos1. User name
    2. Number of photos that were sent
    attachb64: Base64-encoded version of the attached media (related to the first message)
    chat_from_id: Groups only, message author identifier (related to the first message)
    edit_date: When was the message last edited (related to the first message)
    from_id: Author identifier (related to the first message)
    mention: Whether the user was mentioned in the message (related to the first message)
    msg_id: ID of the message (related to the first message)
    silent: Whether the message was posted silently (no notification should be issued) (related to the first message)
    MESSAGE_VIDEOS{1} sent you {2} videos1. User name
    2. Number of videos that were sent
    attachb64: Base64-encoded version of the attached media (related to the first message)
    chat_from_id: Groups only, message author identifier (related to the first message)
    edit_date: When was the message last edited (related to the first message)
    from_id: Author identifier (related to the first message)
    mention: Whether the user was mentioned in the message (related to the first message)
    msg_id: ID of the message (related to the first message)
    silent: Whether the message was posted silently (no notification should be issued) (related to the first message)
    MESSAGES{1} sent you an album1. User namefrom_id: author identifier
    CHANNEL_MESSAGE_TEXT{1}: {2}1. Channel name
    2. Message body
    attachb64: Base64-encoded version of the attached media
    channel_id: Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHANNEL_MESSAGE_NOTEXT{1} posted a message1. Channel nameattachb64: Base64-encoded version of the attached media
    channel_id: Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHANNEL_MESSAGE_PHOTO{1} posted a photo1. Channel nameattachb64: Base64-encoded version of the attached media
    channel_id: Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHANNEL_MESSAGE_VIDEO{1} posted a video1. Channel nameattachb64: Base64-encoded version of the attached media
    channel_id: Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHANNEL_MESSAGE_ROUND{1} posted a video message1. Channel nameattachb64: Base64-encoded version of the attached media
    channel_id: Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHANNEL_MESSAGE_DOC{1} posted a file1. Message authorattachb64: Base64-encoded version of the attached media
    channel_id: Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHANNEL_MESSAGE_STICKER{1} posted a {2}sticker1. Channel name
    2. Sticker emoji with included trailing space or empty string
    attachb64: Base64-encoded version of the attached media
    channel_id: Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHANNEL_MESSAGE_AUDIO{1} posted a voice message1. Message authorattachb64: Base64-encoded version of the attached media
    channel_id: Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHANNEL_MESSAGE_CONTACT{1} posted a contact {2}1. Message author
    2. Contact name
    attachb64: Base64-encoded version of the attached media
    channel_id: Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHANNEL_MESSAGE_GEO{1} posted a map1. Channel nameattachb64: Base64-encoded version of the attached media
    channel_id: Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHANNEL_MESSAGE_GEOLIVE{1} posted a live location1. Channel nameattachb64: Base64-encoded version of the attached media
    channel_id: Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHANNEL_MESSAGE_POLL{1} posted a poll {2}1. Channel name
    2. Poll name
    attachb64: Base64-encoded version of the attached media
    channel_id: Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHANNEL_MESSAGE_QUIZ{1} posted a quiz {2}1. Channel name
    2. Quiz name
    attachb64: Base64-encoded version of the attached media
    channel_id: Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHANNEL_MESSAGE_GIF{1} posted a GIF1. Channel nameattachb64: Base64-encoded version of the attached media
    channel_id: Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHANNEL_MESSAGE_GAME{1} invited you to play {2}1. Message author
    2. Game name
    attachb64: Base64-encoded version of the attached media
    channel_id: Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHANNEL_MESSAGE_GAME_SCORE{1} scored {3} in game {2}1. User
    2. Game name
    3. Score
    attachb64: Base64-encoded version of the attached media
    channel_id: Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHANNEL_MESSAGE_FWDS{1} posted {2} forwarded messages1. Message author
    2. Number of forwarded messages
    attachb64: Base64-encoded version of the attached media (related to the first message)
    channel_id: Channel/supergroup identifier (related to the first message)
    chat_from_id: Groups only, message author identifier (related to the first message)
    edit_date: When was the message last edited (related to the first message)
    mention: Whether the user was mentioned in the message (related to the first message)
    msg_id: ID of the message (related to the first message)
    silent: Whether the message was posted silently (no notification should be issued) (related to the first message)
    CHANNEL_MESSAGE_PHOTOS{1} posted {2} photos1. Channel name
    2. Number of photos that was sent
    attachb64: Base64-encoded version of the attached media (related to the first message)
    channel_id: Channel/supergroup identifier (related to the first message)
    chat_from_id: Groups only, message author identifier (related to the first message)
    edit_date: When was the message last edited (related to the first message)
    mention: Whether the user was mentioned in the message (related to the first message)
    msg_id: ID of the message (related to the first message)
    silent: Whether the message was posted silently (no notification should be issued) (related to the first message)
    CHANNEL_MESSAGE_VIDEOS{1} posted {2} videos1. Channel name
    2. Number of videos that were posted
    attachb64: Base64-encoded version of the attached media (related to the first message)
    channel_id: Channel/supergroup identifier (related to the first message)
    chat_from_id: Groups only, message author identifier (related to the first message)
    edit_date: When was the message last edited (related to the first message)
    mention: Whether the user was mentioned in the message (related to the first message)
    msg_id: ID of the message (related to the first message)
    silent: Whether the message was posted silently (no notification should be issued) (related to the first message)
    CHANNEL_MESSAGES{1} posted an album1. Message authorattachb64: Base64-encoded version of the attached media (related to the first message)
    channel_id: Channel/supergroup identifier (related to the first message)
    chat_from_id: Groups only, message author identifier (related to the first message)
    edit_date: When was the message last edited (related to the first message)
    mention: Whether the user was mentioned in the message (related to the first message)
    msg_id: ID of the message (related to the first message)
    silent: Whether the message was posted silently (no notification should be issued) (related to the first message)
    CHAT_MESSAGE_TEXT{1}@{2}: {3}1. Message author
    2. Chat name
    3. Message body
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    chat_id: Chat identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHAT_MESSAGE_NOTEXT{1} sent a message to the group {2}1. Message author
    2. Chat name
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    chat_id: Chat identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHAT_MESSAGE_PHOTO{1} sent a photo to the group {2}1. Message author
    2. Chat name
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    chat_id: Chat identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHAT_MESSAGE_VIDEO{1} sent a video to the group {2}1. Message author
    2. Chat name
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    chat_id: Chat identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHAT_MESSAGE_ROUND{1} sent a video message to the group {2}1. User name
    2. Group name
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    chat_id: Chat identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHAT_MESSAGE_DOC{1} sent a file to the group {2}1. User name
    2. Group name
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    chat_id: Chat identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHAT_MESSAGE_STICKER{1} sent a {3}sticker to the group {2}1. User name
    2. Group name
    3. Sticker emoji with included trailing space or empty string
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    chat_id: Chat identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHAT_MESSAGE_AUDIO{1} sent a voice message to the group {2}1. Message author
    2. Chat name
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    chat_id: Chat identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHAT_MESSAGE_CONTACT{1} shared a contact {3} in the group {2}1. User name
    2. Group name
    3. Contact name
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    chat_id: Chat identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHAT_MESSAGE_GEO{1} sent a map to the group {2}1. Message author
    2. Chat name
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    chat_id: Chat identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHAT_MESSAGE_GEOLIVE{1} started sharing their live location with {2}1. User name
    2. Group name
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    chat_id: Chat identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHAT_MESSAGE_POLL{1} sent a poll {3} to the group {2}1. User name
    2. Group name
    3. Poll name
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    chat_id: Chat identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHAT_MESSAGE_QUIZ{1} sent a quiz {3} to the group {2}1. User name
    2. Group name
    3. Quiz name
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    chat_id: Chat identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHAT_MESSAGE_GIF{1} sent a GIF to the group {2}1. User name
    2. Group name
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    chat_id: Chat identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHAT_MESSAGE_GAME{1} invited the group {2} to play {3}.1. User name
    2. Group name
    3. Game name
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    chat_id: Chat identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHAT_MESSAGE_GAME_SCORE{1} scored {4} in game {3} in the group {2}1. User name
    2. Group name
    3. Game name
    4. Score
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    chat_id: Chat identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHAT_MESSAGE_INVOICE{1} sent an invoice to the group {2} for {3}1. User name
    2. Group name
    3. Product name
    attachb64: Base64-encoded version of the attached media
    chat_from_id: Groups only, message author identifier
    chat_id: Chat identifier
    edit_date: When was the message last edited
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    scheduled: Whether this is a scheduled message
    silent: Whether the message was posted silently (no notification should be issued)
    CHAT_CREATED{1} invited you to the group {2}1. Message author
    2. Chat name
    chat_id: chat identifier
    CHAT_TITLE_EDITED{1} edited the group's {2} name1. User name
    2. Group name
    chat_id: chat identifier
    CHAT_PHOTO_EDITED{1} edited the group's {2} photo1. Message author
    2. Chat name
    chat_from_id: Message author identifier
    chat_id: chat identifier
    msg_id: ID of the message
    CHAT_ADD_MEMBER{1} invited {3} to the group {2}1. Message author
    2. Chat name
    3. New participant name
    chat_id: chat identifier
    CHAT_ADD_YOU{1} invited you to the group {2}1. User name
    2. Group name
    chat_id: chat identifier
    CHAT_DELETE_MEMBER{1} kicked {3} from the group {2}1. Message author
    2. Chat name
    3. Dropped participant name
    chat_id: chat identifier
    CHAT_DELETE_YOU{1} kicked you from the group {2}1. Message author
    2. Chat name
    chat_id: chat identifier
    CHAT_LEFT{1} has left the group {2}1. Message author
    2. Chat name
    chat_id: chat identifier
    CHAT_RETURNED{1} has returned to the group {2}1. Message author
    2. Chat name
    chat_id: chat identifier
    CHAT_JOINED{1} has joined the group {2}1. User name
    2. Group name
    chat_id: chat identifier
    CHAT_MESSAGE_FWDS{1} forwarded {3} messages to the group {2}1. User name
    2. Group name
    3. Number of messages that were forwarded
    attachb64: Base64-encoded version of the attached media (related to the first message)
    chat_from_id: Groups only, message author identifier (related to the first message)
    chat_id: Chat identifier (related to the first message)
    edit_date: When was the message last edited (related to the first message)
    mention: Whether the user was mentioned in the message (related to the first message)
    msg_id: ID of the message (related to the first message)
    silent: Whether the message was posted silently (no notification should be issued) (related to the first message)
    CHAT_MESSAGE_PHOTOS{1} sent {3} photos to the group {2}1. User name
    2. Group name
    3. Number of photos that were sent
    attachb64: Base64-encoded version of the attached media (related to the first message)
    chat_from_id: Groups only, message author identifier (related to the first message)
    chat_id: Chat identifier (related to the first message)
    edit_date: When was the message last edited (related to the first message)
    mention: Whether the user was mentioned in the message (related to the first message)
    msg_id: ID of the message (related to the first message)
    silent: Whether the message was posted silently (no notification should be issued) (related to the first message)
    CHAT_MESSAGE_VIDEOS{1} sent {3} videos to the group {2}1. User name
    2. Group name
    3. Number of videos that were sent
    attachb64: Base64-encoded version of the attached media (related to the first message)
    chat_from_id: Groups only, message author identifier (related to the first message)
    chat_id: Chat identifier (related to the first message)
    edit_date: When was the message last edited (related to the first message)
    mention: Whether the user was mentioned in the message (related to the first message)
    msg_id: ID of the message (related to the first message)
    silent: Whether the message was posted silently (no notification should be issued) (related to the first message)
    CHAT_MESSAGES{1} sent an album to the group {2}1. User name
    2. Group name
    chat_from_id: Message author identifier
    chat_id: chat identifier
    mention: Whether the user was mentioned in the message
    PINNED_TEXT{1} pinned "{2}"1. User name
    2. Message body
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_TEXT{1} pinned "{3}" in the group {2}1. User name
    2. Group name
    3. Message body
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_NOTEXT{1} pinned a message1. User nameattachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_NOTEXT{1} pinned a message in the group {2}1. User name
    2. Group name
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_PHOTO{1} pinned a photo1. User nameattachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_PHOTO{1} pinned a photo in the group {2}1. User name
    2. Group name
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_VIDEO{1} pinned a video1. User nameattachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_VIDEO{1} pinned a video in the group {2}1. User name
    2. Group name
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_ROUND{1} pinned a video message1. User nameattachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_ROUND{1} pinned a video message in the group {2}1. User name
    2. Group name
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_DOC{1} pinned a file1. User nameattachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_DOC{1} pinned a file in the group {2}1. User name
    2. Group name
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_STICKER{1} pinned a {2}sticker1. User name
    2. Sticker emoji with included trailing space or empty string
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_STICKER{1} pinned a {3}sticker in the group {2}1. User name
    2. Group name
    3. Sticker emoji with included trailing space or empty string
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_AUDIO{1} pinned a voice message1. User nameattachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_AUDIO{1} pinned a voice message in the group {2}1. User name
    2. Group name
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_CONTACT{1} pinned a contact {2}1. User name
    2. Contact name
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_CONTACT{1} pinned a contact {3} in the group {2}1. User name
    2. Group name
    3. Contact name
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_GEO{1} pinned a map1. User nameattachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_GEO{1} pinned a map in the group {2}1. User name
    2. Group name
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_GEOLIVE{1} pinned a live location1. User nameattachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_GEOLIVE{1} pinned a live location in the group {2}1. User name
    2. Group name
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_POLL{1} pinned a poll {2}1. User name
    2. Poll name
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_POLL{1} pinned a poll {3} in the group {2}1. User name
    2. Group name
    3. Poll name
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_QUIZ{1} pinned a quiz {2}1. User name
    2. Quiz name
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_QUIZ{1} pinned a quiz {3} in the group {2}1. User name
    2. Group name
    3. Quiz name
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_GAME{1} pinned a game1. User nameattachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_GAME{1} pinned a game in the group {2}1. User name
    2. Group name
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_GAME_SCORE{1} pinned a game score1. User nameattachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_GAME_SCORE{1} pinned a game score in the group {2}1. User name
    2. Group name
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_INVOICE{1} pinned an invoice1. User nameattachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_INVOICE{1} pinned an invoice in the group {2}1. User name
    2. Group name
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_GIF{1} pinned a GIF1. User nameattachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    PINNED_GIF{1} pinned a GIF in the group {2}1. User name
    2. Group name
    attachb64: Base64-encoded version of the attached media
    channel_id: For channels and supergroups, Channel/supergroup identifier
    chat_from_id: Groups only, message author identifier
    chat_id: For chats, Chat identifier
    edit_date: When was the message last edited
    from_id: For PMs, Author identifier
    mention: Whether the user was mentioned in the message
    msg_id: ID of the message
    silent: Whether the message was posted silently (no notification should be issued)
    CONTACT_JOINED{1} joined Telegram!1. Contact namecontact_id: contact identifier
    AUTH_UNKNOWNNew login from unrecognized device {1}1. Device name 
    AUTH_REGIONNew login from unrecognized device {1}, location: {2}1. Device name
    2. Location
     
    ENCRYPTION_REQUESTYou have a new message encryption_id: secret chat identifier
    ENCRYPTION_ACCEPTYou have a new message encryption_id: secret chat identifier
    ENCRYPTED_MESSAGEYou have a new message encryption_id: secret chat identifier
    random_id: message identifier
    LOCKED_MESSAGEYou have a new message  
    PHONE_CALL_REQUEST{1} is calling you!1. User namecall_ah: Call access hash
    call_id: Call ID
    PHONE_CALL_MISSEDYou missed a call from {1}1. User name 
    MESSAGE_ANNOUNCEMENT{1}1. Announcementannouncement: Announcement: roughly equivalent to a message received from the service notifications (Telegram Notifications, id 777000) user, but must be delivered via push notifications, without contacting the API.
    + +
    + +
    +
    + +
    + + + + + + + + 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..433be8da35 --- /dev/null +++ b/data/core.telegram.org/api/recent-actions.html @@ -0,0 +1,154 @@ + + + + + Admin log + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    Admin log

    + +
    + +

    Both supergroups and channels offer a so-called admin log, 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.

    +
    channelAdminLogEventActionChangeTitle#e6dfb825 prev_value:string new_value:string = ChannelAdminLogEventAction;
    +channelAdminLogEventActionChangeAbout#55188a2e prev_value:string new_value:string = ChannelAdminLogEventAction;
    +channelAdminLogEventActionChangeUsername#6a4afc38 prev_value:string new_value:string = ChannelAdminLogEventAction;
    +channelAdminLogEventActionChangePhoto#434bd2af prev_photo:Photo new_photo:Photo = ChannelAdminLogEventAction;
    +channelAdminLogEventActionToggleInvites#1b7907ae new_value:Bool = ChannelAdminLogEventAction;
    +channelAdminLogEventActionToggleSignatures#26ae0971 new_value:Bool = ChannelAdminLogEventAction;
    +channelAdminLogEventActionUpdatePinned#e9e82c18 message:Message = ChannelAdminLogEventAction;
    +channelAdminLogEventActionEditMessage#709b2405 prev_message:Message new_message:Message = ChannelAdminLogEventAction;
    +channelAdminLogEventActionDeleteMessage#42e047bb message:Message = ChannelAdminLogEventAction;
    +channelAdminLogEventActionParticipantJoin#183040d3 = ChannelAdminLogEventAction;
    +channelAdminLogEventActionParticipantLeave#f89777f2 = ChannelAdminLogEventAction;
    +channelAdminLogEventActionParticipantInvite#e31c34d8 participant:ChannelParticipant = ChannelAdminLogEventAction;
    +channelAdminLogEventActionParticipantToggleBan#e6d83d7e prev_participant:ChannelParticipant new_participant:ChannelParticipant = ChannelAdminLogEventAction;
    +channelAdminLogEventActionParticipantToggleAdmin#d5676710 prev_participant:ChannelParticipant new_participant:ChannelParticipant = ChannelAdminLogEventAction;
    +channelAdminLogEventActionChangeStickerSet#b1c3caa7 prev_stickerset:InputStickerSet new_stickerset:InputStickerSet = ChannelAdminLogEventAction;
    +channelAdminLogEventActionTogglePreHistoryHidden#5f5c95f1 new_value:Bool = ChannelAdminLogEventAction;
    +channelAdminLogEventActionDefaultBannedRights#2df5fc0a prev_banned_rights:ChatBannedRights new_banned_rights:ChatBannedRights = ChannelAdminLogEventAction;
    +channelAdminLogEventActionStopPoll#8f079643 message:Message = ChannelAdminLogEventAction;
    +channelAdminLogEventActionChangeLinkedChat#a26f881b prev_value:int new_value:int = ChannelAdminLogEventAction;
    +channelAdminLogEventActionChangeLocation#e6b76ae prev_value:ChannelLocation new_value:ChannelLocation = ChannelAdminLogEventAction;
    +channelAdminLogEventActionToggleSlowMode#53909779 prev_value:int new_value:int = ChannelAdminLogEventAction;
    +
    +channelAdminLogEvent#3b5a3e40 id:long date:int user_id:int action:ChannelAdminLogEventAction = ChannelAdminLogEvent;
    +
    +channels.adminLogResults#ed8af74d events:Vector<ChannelAdminLogEvent> chats:Vector<Chat> users:Vector<User> = channels.AdminLogResults;
    +
    +channelAdminLogEventsFilter#ea107ae4 flags:# 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 = ChannelAdminLogEventsFilter;
    +
    +---functions---
    +
    +channels.getAdminLog#33ddf480 flags:# channel:InputChannel q:string events_filter:flags.0?ChannelAdminLogEventsFilter admins:flags.1?Vector<InputUser> max_id:long min_id:long limit:int = channels.AdminLogResults;
    +

    channels.getAdminLog can be used to list recent admin activity.
    +A channelAdminLogEventsFilter can be used to filter out actions of a certain type, and the admins field can be used to show only actions by certain admins.
    +q can also be used to filter only logs matching a query string.

    + +
    + +
    +
    + +
    + + + + + + + + diff --git a/data/core.telegram.org/api/search.html b/data/core.telegram.org/api/search.html new file mode 100644 index 0000000000..45f6d282c9 --- /dev/null +++ b/data/core.telegram.org/api/search.html @@ -0,0 +1,179 @@ + + + + + Search + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    Search

    + +
    + +

    Telegram allows applying detailed message filters while looking for messages in chats.

    +

    Search filters

    +
    inputMessagesFilterEmpty#57e2f66c = MessagesFilter;
    +inputMessagesFilterPhotos#9609a51c = MessagesFilter;
    +inputMessagesFilterVideo#9fc00e65 = MessagesFilter;
    +inputMessagesFilterPhotoVideo#56e9f0e4 = MessagesFilter;
    +inputMessagesFilterDocument#9eddf188 = MessagesFilter;
    +inputMessagesFilterUrl#7ef0dd87 = MessagesFilter;
    +inputMessagesFilterGif#ffc86587 = MessagesFilter;
    +inputMessagesFilterVoice#50f5c392 = MessagesFilter;
    +inputMessagesFilterMusic#3751b49e = MessagesFilter;
    +inputMessagesFilterChatPhotos#3a20ecb8 = MessagesFilter;
    +inputMessagesFilterPhoneCalls#80c99768 flags:# missed:flags.0?true = MessagesFilter;
    +inputMessagesFilterRoundVoice#7a7c17a4 = MessagesFilter;
    +inputMessagesFilterRoundVideo#b549da53 = MessagesFilter;
    +inputMessagesFilterMyMentions#c1f8e69a = MessagesFilter;
    +inputMessagesFilterGeo#e7026d0d = MessagesFilter;
    +inputMessagesFilterContacts#e062db83 = MessagesFilter;
    +inputMessagesFilterPinned#1bb00451 = MessagesFilter;
    +
    +messages.messages#8c718e87 messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Messages;
    +messages.messagesSlice#3a54685e flags:# inexact:flags.1?true count:int next_rate:flags.0?int offset_id_offset:flags.2?int messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Messages;
    +messages.channelMessages#64479808 flags:# inexact:flags.1?true pts:int count:int offset_id_offset:flags.2?int messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Messages;
    +messages.messagesNotModified#74535f21 count:int = messages.Messages;
    +
    +---functions---
    +
    +messages.search#c352eec flags:# peer:InputPeer q:string from_id:flags.0?InputPeer top_msg_id:flags.1?int filter:MessagesFilter min_date:int max_date:int offset_id:int add_offset:int limit:int max_id:int min_id:int hash:int = messages.Messages;
    +
    +messages.searchGlobal#4bc6589a flags:# folder_id:flags.0?int q:string filter:MessagesFilter min_date:int max_date:int offset_rate:int offset_peer:InputPeer offset_id:int limit:int = messages.Messages;
    +

    When using messages.search or messages.searchGlobal, a certain message filter may be applied.
    +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:

    + +

    The returned messages.Messages constructors contain parameters for pagination, the messages themselves and two offset_id_offset/count parameters that can be used to display a progress/total counter like photo 134 of 200.
    +For example, when displaying the chat photo gallery, we could display a photo ${offset_id_offset} of ${count} indicator on top.

    +

    Search counters

    +
    messages.searchCounter#e844ebff flags:# inexact:flags.1?true filter:MessagesFilter count:int = messages.SearchCounter;
    +
    +---functions---
    +
    +messages.getSearchCounters#732eef00 peer:InputPeer filters:Vector<MessagesFilter> = Vector<messages.SearchCounter>;
    +

    Chat counters with filters can also be returned without fetching the actual messages, as seen in the scheme above.

    + +
    + +
    +
    + +
    + + + + + + + + diff --git a/data/core.telegram.org/api/terms.html b/data/core.telegram.org/api/terms.html new file mode 100644 index 0000000000..434e3efd4d --- /dev/null +++ b/data/core.telegram.org/api/terms.html @@ -0,0 +1,140 @@ + + + + + Telegram API Terms of Service + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    Telegram API Terms of Service

    + +
    + +

    We welcome all developers to use our API and source code to create Telegram-like messaging applications on our platform free of charge. In order to ensure consistency and security across the Telegram ecosystem, all third-party client apps must comply with the following Terms of Service.

    +

    1. Privacy & Security

    +

    1.1. Telegram is a privacy-oriented platform. All client apps must, therefore, guard their users' privacy with utmost care and comply with our Security Guidelines.
    +1.2. Developers are welcome to add new features or improve and extend existing Telegram features provided that these modifications do not violate these Terms of Service.
    +1.3. As a client developer, you must make sure that all the basic features of the main Telegram apps function correctly and in an expected way both in your app and when users of your app communicate with other Telegram users. It is forbidden to force users of other Telegram clients to download your app in order to view certain messages and content sent using your app.
    +1.4. It is forbidden to interfere with the basic functionality of Telegram. This includes but is not limited to: making actions on behalf of the user without the user's knowledge and consent, preventing self-destructing content from disappearing, preventing last seen and online statuses from being displayed correctly, tampering with the 'read' statuses of messages (e.g. implementing a 'ghost mode'), preventing typing statuses from being sent/displayed, etc.

    +

    2. Transparency

    +

    2.1. You must obtain your own api_id for your application.
    +2.2. We offer our API free of charge, but your users must be aware of the fact that your app uses the Telegram API and is part of the Telegram ecosystem. This fact must be featured prominently in the app's description in the app stores and in the in-app intro if your app has it.
    +2.3. To avoid confusion, the title of your app must not include the word “Telegram”. An exception can be made if the word “Telegram” is preceded with the word “Unofficial” in the title.
    +2.4. You must not use the official Telegram logo for your app. Both the Telegram brand and its logo are registered trademarks protected by law in almost every country.

    +

    3. Advertising & Monetization

    +

    3.1. Developers are allowed to monetize their coding efforts through advertising or other legitimate means.
    +3.2. If you decide to monetize your app, you must clearly mention all the methods of monetization that are used in your app in all its app store descriptions.

    +

    4. Breach of terms

    +

    4.1. If your app violates these terms, we will notify the Telegram account responsible for the app about the breach of terms.
    +4.2. If you do not update the app to fix the highlighted issues within 10 days, we will have to discontinue your access to Telegram API and contact the app stores about the removal of your apps that are using the Telegram API in violation of these terms.

    +

    We reserve the right to expand these terms and guidelines as the need arises. We will inform client developers of such changes via an in-app notification to their accounts connected to the app in question.

    +
    +

    Back to Creating Your Telegram Application »

    +
    + +
    + +
    +
    + +
    + + + + + + + + diff --git a/data/core.telegram.org/api/top-rating.html b/data/core.telegram.org/api/top-rating.html deleted file mode 100644 index a4860d908e..0000000000 --- a/data/core.telegram.org/api/top-rating.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - Top peer rating - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    Top peer rating

    - -

    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).

    -

    Schema:

    -
    topPeer#edcdc05b peer:Peer rating:double = TopPeer;
    -
    -topPeerCategoryBotsPM#ab661b5b = TopPeerCategory;
    -topPeerCategoryBotsInline#148677e2 = TopPeerCategory;
    -topPeerCategoryCorrespondents#637b7ed = TopPeerCategory;
    -topPeerCategoryGroups#bd17a14a = TopPeerCategory;
    -topPeerCategoryChannels#161d9628 = TopPeerCategory;
    -topPeerCategoryPhoneCalls#1e76a78c = TopPeerCategory;
    -topPeerCategoryForwardUsers#a8406ca9 = TopPeerCategory;
    -topPeerCategoryForwardChats#fbeec0f0 = TopPeerCategory;
    -
    -topPeerCategoryPeers#fb834291 category:TopPeerCategory count:int peers:Vector<TopPeer> = TopPeerCategoryPeers;
    -
    -contacts.topPeersNotModified#de266ef5 = contacts.TopPeers;
    -contacts.topPeers#70b772a8 categories:Vector<TopPeerCategoryPeers> chats:Vector<Chat> users:Vector<User> = contacts.TopPeers;
    -contacts.topPeersDisabled#b52c939d = contacts.TopPeers;
    -
    ----functions---
    -
    -contacts.getTopPeers#d4982db5 flags:# 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:int limit:int hash:int = contacts.TopPeers;
    -

    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 exponential decay from config.

    -

    Example: -Client-side, every time a user opens chat 123456789 the following operation must be done on the cached top peer info.

    -
      -
    • dateOpened indicates when was the peer used
    • -
    • normalizeRate is an arbitrary time in the recent past. -When ratings are received from the server using contacts.getTopPeers and the scheme described above, it is the time when they were received.
    • -
    -
    topPeer.rating += e^((dateOpened - normalizeRate) / config.rating_e_decay)
    - -
    - -
    -
    - -
    - - - - - - 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..b82ec4ec1a --- /dev/null +++ b/data/core.telegram.org/api/web-events.html @@ -0,0 +1,177 @@ + + + + + Web events + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    Web events

    + +
    + +

    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.

    +

    Event APIs

    +

    Games and payment gateways can generate events that are meant to be received by the Telegram apps. +Typically events are generated by using the postEvent method of the GamingCommunication library. +The postEvent function will try sending the event to the Telegram app in a number of different ways.

    +

    WebviewProxy

    +

    In mobile apps, the event receiver API should be typically exposed as a window.TelegramWebviewProxy object with a postEvent method.

    +
    window.TelegramWebviewProxy.postEvent(eventType, eventData)
    +

    window.external

    +

    Alternatively, a window.external.notify method can be exposed, accepting a string JSON payload with the event type and payload:

    +
    window.external.notify(JSON.stringify({eventType: eventType, eventData: eventData}));
    +

    postMessage API

    +

    Finally, web MTProto clients that need to open a game or process a payment in an iframe can use the postMessage API to receive events from iframes. +The GamingCommunication library by defaultwill use '*' as targetOrigin, sending messages to parent pages regardless of the origin of the embedder.

    +
    window.parent.postMessage(JSON.stringify({eventType: eventType, eventData: eventData}), targetOrigin);
    +

    Event types

    +

    eventType is a simple string indicating the event type, and eventData is a payload with an object that will be parsed by the Telegram app.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    eventTypeeventDataDescription
    payment_form_submitJSON object with data and title fieldstitle is the censored credit card title.
    data is a service-specific JSON payload with information about the payment credentials provided by the user to the payment system.
    Neither Telegram, nor bots will have access to your credit card information.
    Credit card details will be handled only by the payment system.
    share_scorenullWill be called by games when the user explicitly clicks on the share score button to share the game, along with his score.
    Typically done by using messages.forwardMessages on the game message with the with_my_score flag.
    share_gamenullWill be called by games when the user explicitly clicks on the share game button to share the game, without sharing his score.
    Typically done by using messages.forwardMessages on the game message without the with_my_score flag, or by sharing the game's short URL.
    game_overnullCan be called by games when the user loses a game
    game_loadednullCan be called by games once the game fully loads
    resize_frameJSON object with height fieldCalled by supported pages inside of IV iframe embeds, indicates the new size of the embed frame.
    + +
    + +
    +
    + +
    + + + + + + + + diff --git a/data/core.telegram.org/bots/2-0-intro.html b/data/core.telegram.org/bots/2-0-intro.html new file mode 100644 index 0000000000..eaf0513a80 --- /dev/null +++ b/data/core.telegram.org/bots/2-0-intro.html @@ -0,0 +1,230 @@ + + + + + Introducing Bot API 2.0 + + + + + + + + + + + + + +
    + +
    +
    +
    +
    +

    Introducing Bot API 2.0

    + +
    + +
    +

    Howdy! This text assumes that you‘re familiar with Telegram’s bot platform.
    If this is not the case, kindly check out our Introduction to Bots.

    +
    +

    Today we‘re introducing the biggest change to Telegram’s Bot Platform since June 2015. These new tools will help you create fluid and intuitive interfaces for your bots. And bots are becoming a lot more capable. They can now send any type of content supported on Telegram, provide location-based services and integrate with other services deeply based on users' phone numbers.

    +

    If you'd like a more concise changelog, you can find one in the Bot API Manual.

    +

    New Inline Keyboards

    +

    To begin with, we're adding a new type of keyboard that is integrated directly into the message it belongs to. Inline keyboards are available for messages sent both in chat mode and inline mode.

    +
    + + + +

    + + + +
    + +

    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: callback buttons, URL buttons and switch to inline buttons.

    +
    +

    Manual: Inline keyboards »

    +
    +

    Callback buttons

    +

    When a user presses a callback button, no messages are sent to the chat. Instead, your bot simply receives the relevant query. Upon receiving the query, your bot can display some result in a notification at the top of the chat screen or in an alert.

    +
    +

    +
    + +

    Sample bot
    @music – This sample music bot uses inline callback buttons to flip pages and reload random results.

    +

    Read on to updating messages to find out how callback buttons can get even cooler.

    +

    URL buttons

    +

    Buttons of this type have a small arrow icon to help the user understand that tapping on a URL button will open an external link. Naturally, we'll show them a confirmation alert before opening the link in the browser.

    +
    +
    +
    + +

    Switch to Inline buttons

    +

    Pressing a switch to inline button prompts the user to select a chat, opens it and inserts the bot's username into the input field. You can also pass a query that will be inserted along with the username – this way your users will immediately get some inline results they can share.

    +
    +

    +
    + +

    Sample bot
    @sticker – This sticker search bot offers a ‘switch to inline’ button to teach users how to use it in inline mode.

    +

    Updating Messages

    +

    Since inline keyboards don‘t send additional messages to the chat, it made sense to give bots a way of manipulating their existing messages, so that they don’t have to send a new message each time they need to update something. This helps reduce clutter and build more fluid interfaces.

    +
    +
    + +
    +
    + +

    Sample bot
    @music – Watch how the music bot updates its messages with search results when you press the navigation buttons.

    +
    +

    Manual: Updating messages »

    +
    +

    Locations and Numbers

    +

    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.

    +

    We've added an easy way for bots to ask the user for their location and phone number using special buttons. Note that both phone number and location request buttons will only work in private chats.

    +
    +

    +
    + +

    When these buttons are pressed, Telegram clients will display a confirmation alert that tells the user what's about to happen.

    +
    +

    Manual: Number and location buttons »

    +
    +

    Inline bots can also request location data from their users. Use the /setinlinegeo command with @BotFather to enable this. Your bot will ask the user for permission to access their location whenever they send an inline request.

    +

    Sample bot
    @foursquare – This bot will ask for permission to access the user's location, then provide geo-targeted results.

    +

    Inline Bots 2.0

    +

    Speaking of inline bots, they are also getting a major upgrade today.

    +

    New types of content

    +

    Inline bots now support all types of content available in Telegram (19 in all), they are now capable of sending stickers, videos, music, locations, documents and more.

    +
    +

    +
    + +

    Sample bots
    @sticker – This sticker bot will accept one or more emoji and search for relevant stickers.
    @music – The music bot allows users to send mp3 tracks from a database of public domain classical music.

    +
    +

    Manual: Types of inline content »

    +
    +

    Switching between inline mode and private chat

    +

    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.

    +
    +

    +
    + +

    You can now 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 switch_inline_query button to send the user back to the original chat.

    +

    Sample bots
    @youtube – Shows a ‘Sign in to YouTube’ button, then suggests personalized results.

    +
    +

    Manual: Switch to PM

    +
    +

    Better inline UI

    +

    Since sending content via inline bots works differently from sending ordinary messages, we‘ve changed the interface a little. There’s hardly a more effective way of explaining that there‘s no need to hit ’Send':

    +
    +

    +
    + +

    Tapping on the cross icon once will clear the query, tapping twice will give the ‘Send’ button back to the user.

    +

    Group Admins

    +

    As a dessert, we‘re beginning to roll out tools that will allow you to create bot solutions for group admins. As the first step, we’ve added methods to remove members from groups and supergroups.

    +
    +

    Manual: Group management »

    +
    +

    And that's about it for now. Stay tuned for more updates and subscribe to our official @Botnews channel on Telegram.

    +
    +

    Read the full changelog for this update »

    +
    +
    + +
    + +
    +
    + +
    + + + + + + + + diff --git a/data/core.telegram.org/bots/games.html b/data/core.telegram.org/bots/games.html deleted file mode 100644 index aba4ca2be2..0000000000 --- a/data/core.telegram.org/bots/games.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - Gaming Platform - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    Gaming Platform

    - -
    - -
    - -
    - -

    Bots can offer their users HTML5 games to play solo or to compete against each other in groups and one-on-one chats. Games are a new type of content on Telegram that your bot can send to users.

    -
    -

    -
    - -
    -

    This introduction is meant for bot developers. Click here, in case you'd like something more user-friendly.
    Check out the @gamebot and @gamee bots for examples of what you can do using the new Gaming Platform.

    -
    -

    Creating a Game

    -

    To get started, send the /newgame command to @BotFather.You will be prompted for a description text and a photo. You can also upload an optional GIF animation that demostrates your game to the users to make messages with the game more attractive (check out Lumberjack or Corsairs for examples).

    -

    Launching the Game

    -

    Once the game is created, your bot can send it to chats as regular messages, or offer them via inline mode. The game message will always have an inline Play button.

    -

    When this button is pressed, your bot gets a callback query that indicates the requested game. You provide the correct URL for this particular user and the app automatically opens the game in the in-app browser.

    -

    Adding Buttons

    -

    If you send the game message without any buttons, it will automatically have a 'Play GameName' button. You can manually add multiple buttons to your game message. Please note that the first button in the first row must always be the one that launches the game. You can add more buttons: e.g., for a description of the rules, or a button that links to the game's official community.

    -

    Tracking High Scores

    -

    The message with your game will also display high scores for the current chat. When a new high score is set, a service message will be sent to the chat and the message with the current scoreboard will be updated. You can also request the necessary data for building in-game high score tables.

    -
    -
    - -

    - -

    - -

    Sharing Your Game to Telegram Chats

    -

    There are many way for users to spread your game virally if they like it. The interface will always have the standard system button for sharing the game in the top right corner:

    -
    - - -

    - -
    - - - -

    You can also create an additional Share button inside your HTML page. Pressing this button will send the game to a desired chat along with the user's best score in the game.

    -
    - - - - - -

    - - -

    To add the sharing button, include this script at the end of the <body> tag on your page:

    -
    <script src="https://telegram.org/js/games.js"></script>
    -

    Then use the method TelegramGameProxy.shareScore() to call the sharing option.

    -
    -

    Warning: Do not call this method without consent and direct action from the user.

    -
    -

    Example:

    -
    <button onclick="TelegramGameProxy.shareScore()">Share score</button>
    -

    This library will only work when launched from inside Telegram, so please don't use it on ordinary web pages.

    -

    Using URL Parameters

    -

    If your URL is using a fragment identifier, please note that Telegram Apps could add certain service parameters to the fragment id. The names for such parameters will start in tg (you can check the code that adds them here). Use the TelegramGameProxy.initParams object if you need to read your own parameters from the fragment id.

    -

    Creating a Great HTML5 Experience

    -

    Please make sure that your HTML5 page is responsive and works well on all Telegram apps and supported platforms. If you find it impossible to support certain conditions or platforms, don't leave your users hanging and at least provide a notification.

    -
    -

    See the Bot API Manual for the relevant methods and objects.

    -
    -
    - -
    - -
    -
    - -
    - - - - - - - - diff --git a/data/core.telegram.org/bots/samples.html b/data/core.telegram.org/bots/samples.html deleted file mode 100644 index fa0c518df4..0000000000 --- a/data/core.telegram.org/bots/samples.html +++ /dev/null @@ -1,247 +0,0 @@ - - - - - Bot Code Examples - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    Bot Code Examples

    - -
    -

    If you want to learn more about Telegram bots, start with our Introduction to Bots »
    Check out the FAQ, if you have questions.

    -
    -

    Many members of our community are building bots and libraries and publishing their source code. We collect these examples here. Ping us on BotSupport if you've built a bot and would like to share its code with others.

    -

    PHP

    - -

    Node.js

    - -

    Rust

    - -

    Python

    - -

    Ruby

    - -

    Swift

    - -

    Kotlin

    - -

    Java

    - -

    Go

    - -

    Other Languages

    - -
    - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/wallPaperNoFile.html b/data/core.telegram.org/constructor/account.contentSettings similarity index 86% rename from data/core.telegram.org/constructor/wallPaperNoFile.html rename to data/core.telegram.org/constructor/account.contentSettings index a4f77bb5ce..7bcc0e5edf 100644 --- a/data/core.telegram.org/constructor/wallPaperNoFile.html +++ b/data/core.telegram.org/constructor/account.contentSettings @@ -2,12 +2,12 @@ - wallPaperNoFile + account.contentSettings - - + + - + @@ -36,10 +36,10 @@
    - -

    wallPaperNoFile

    + +

    account.contentSettings

    -

    No file wallpaper

    +

    Sensitive content settings

    -
    wallPaperNoFile#8af40b25 flags:# default:flags.1?true dark:flags.4?true settings:flags.2?WallPaperSettings = WallPaper;

    +
    account.contentSettings#57e28221 flags:# sensitive_enabled:flags.0?true sensitive_can_change:flags.1?true = account.ContentSettings;

    Parameters

    @@ -69,24 +69,19 @@ - + + + + + + - - - - - - - - - - - +
    Flags, see TL conditional fields
    defaultsensitive_enabledflags.0?trueWhether viewing of sensitive (NSFW) content is enabled
    sensitive_can_change flags.1?trueWhether this is the default wallpaper
    darkflags.4?trueDark mode
    settingsflags.2?WallPaperSettingsWallpaper settingsWhether the current client can change the sensitive content settings to view NSFW content

    Type

    -

    WallPaper

    +

    account.ContentSettings

    diff --git a/data/core.telegram.org/constructor/account.authorizationForm b/data/core.telegram.org/constructor/account.passwordInputSettings similarity index 76% rename from data/core.telegram.org/constructor/account.authorizationForm rename to data/core.telegram.org/constructor/account.passwordInputSettings index 5e691638c4..1c243493ab 100644 --- a/data/core.telegram.org/constructor/account.authorizationForm +++ b/data/core.telegram.org/constructor/account.passwordInputSettings @@ -2,12 +2,12 @@ - account.authorizationForm + account.passwordInputSettings - - + + - + @@ -36,10 +36,10 @@
    - -

    account.authorizationForm

    + +

    account.passwordInputSettings

    -

    Telegram Passport authorization form

    +

    Settings for setting up a new password

    -
    account.authorizationForm#ad2e1cd8 flags:# required_types:Vector<SecureRequiredType> values:Vector<SecureValue> errors:Vector<SecureValueError> users:Vector<User> privacy_policy_url:flags.0?string = account.AuthorizationForm;

    +
    account.passwordInputSettings#c23727c9 flags:# new_algo:flags.0?PasswordKdfAlgo new_password_hash:flags.0?bytes hint:flags.0?string email:flags.1?string new_secure_settings:flags.2?SecureSecretSettings = account.PasswordInputSettings;

    Parameters

    @@ -69,35 +69,37 @@ - - - + + + - - - + + + - - - - - - - - - - - + - + + + + + + + + + + +
    Flags, see TL conditional fields
    required_typesVector<SecureRequiredType>Required Telegram Passport documentsnew_algoflags.0?PasswordKdfAlgoThe SRP algorithm to use
    valuesVector<SecureValue>Already submitted Telegram Passport documentsnew_password_hashflags.0?bytesThe computed password hash
    errorsVector<SecureValueError>Telegram Passport errors
    usersVector<User>Info about the bot to which the form will be submitted
    privacy_policy_urlhint flags.0?stringURL of the service's privacy policyText hint for the password
    emailflags.1?stringPassword recovery email
    new_secure_settingsflags.2?SecureSecretSettingsTelegram passport settings

    Type

    -

    account.AuthorizationForm

    +

    account.PasswordInputSettings

    Related pages

    +

    Two-factor authentication

    +

    How to login to a user's account if they have enabled 2FA, how to change password.

    Telegram Passport Manual

    diff --git a/data/core.telegram.org/constructor/account.sentChangePhoneCode b/data/core.telegram.org/constructor/account.sentChangePhoneCode deleted file mode 100644 index 5f981a22dc..0000000000 --- a/data/core.telegram.org/constructor/account.sentChangePhoneCode +++ /dev/null @@ -1,161 +0,0 @@ - - - - - account.sentChangePhoneCode - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    account.sentChangePhoneCode

    - - - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/auth.loginTokenMigrateTo b/data/core.telegram.org/constructor/account.tmpPassword similarity index 88% rename from data/core.telegram.org/constructor/auth.loginTokenMigrateTo rename to data/core.telegram.org/constructor/account.tmpPassword index 4582abc3ab..bb79d741c8 100644 --- a/data/core.telegram.org/constructor/auth.loginTokenMigrateTo +++ b/data/core.telegram.org/constructor/account.tmpPassword @@ -2,12 +2,12 @@ - auth.loginTokenMigrateTo + account.tmpPassword - - + + - + @@ -36,10 +36,10 @@
    - -

    auth.loginTokenMigrateTo

    + +

    account.tmpPassword

    -

    Repeat the query to the specified DC

    +

    Temporary payment password

    -
    auth.loginTokenMigrateTo#68e9916 dc_id:int token:bytes = auth.LoginToken;

    +
    account.tmpPassword#db64fd34 tmp_password:bytes valid_until:int = account.TmpPassword;

    Parameters

    @@ -64,19 +64,19 @@ - - - + + + - - - + + +
    dc_idintDC IDtmp_passwordbytesTemporary password
    tokenbytesToken to use for loginvalid_untilintValidity period

    Type

    -

    auth.LoginToken

    +

    account.TmpPassword

    diff --git a/data/core.telegram.org/constructor/account.wallPapers b/data/core.telegram.org/constructor/account.wallPapers new file mode 100644 index 0000000000..898dc30e3c --- /dev/null +++ b/data/core.telegram.org/constructor/account.wallPapers @@ -0,0 +1,155 @@ + + + + + account.wallPapers + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    account.wallPapers

    + +

    Installed wallpapers

    +

    +
    account.wallPapers#702b65a9 hash:int wallpapers:Vector<WallPaper> = account.WallPapers;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    hashintHash for pagination, for more info click here
    wallpapersVector<WallPaper>Wallpapers
    +

    Type

    +

    account.WallPapers

    +

    Related pages

    +

    Pagination in the API

    +

    How to fetch results from large lists of objects.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/auth.authorizationSignUpRequired b/data/core.telegram.org/constructor/auth.authorizationSignUpRequired new file mode 100644 index 0000000000..5dd5ec25a8 --- /dev/null +++ b/data/core.telegram.org/constructor/auth.authorizationSignUpRequired @@ -0,0 +1,155 @@ + + + + + auth.authorizationSignUpRequired + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    auth.authorizationSignUpRequired

    + +

    An account with this phone number doesn't exist on telegram: the user has to enter basic information and sign up

    +

    +
    auth.authorizationSignUpRequired#44747e9a flags:# terms_of_service:flags.0?help.TermsOfService = auth.Authorization;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    terms_of_serviceflags.0?help.TermsOfServiceTelegram's terms of service: the user must read and accept the terms of service before signing up to telegram
    +

    Type

    +

    auth.Authorization

    +

    Related pages

    +

    User Authorization

    +

    How to register a user's phone to start using the API.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/auth.codeTypeFlashCall b/data/core.telegram.org/constructor/auth.codeTypeFlashCall new file mode 100644 index 0000000000..9cbbaa2a71 --- /dev/null +++ b/data/core.telegram.org/constructor/auth.codeTypeFlashCall @@ -0,0 +1,132 @@ + + + + + auth.codeTypeFlashCall + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    auth.codeTypeFlashCall

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/userStatusLastMonth.html b/data/core.telegram.org/constructor/auth.codeTypeSms similarity index 89% rename from data/core.telegram.org/constructor/userStatusLastMonth.html rename to data/core.telegram.org/constructor/auth.codeTypeSms index 4a3ee5f5b6..807262aadb 100644 --- a/data/core.telegram.org/constructor/userStatusLastMonth.html +++ b/data/core.telegram.org/constructor/auth.codeTypeSms @@ -2,12 +2,12 @@ - userStatusLastMonth + auth.codeTypeSms - - + + - + @@ -36,10 +36,10 @@
    - -

    userStatusLastMonth

    + +

    auth.codeTypeSms

    -

    Online status: last seen last month

    +

    Type of verification code that will be sent next if you call the resendCode method: SMS code

    -
    userStatusLastMonth#77ebc742 = UserStatus;

    +
    auth.codeTypeSms#72a3158c = auth.CodeType;

    Parameters

    This constructor does not require any parameters.

    Type

    -

    UserStatus

    +

    auth.CodeType

    diff --git a/data/core.telegram.org/constructor/upload.cdnFile b/data/core.telegram.org/constructor/auth.exportedAuthorization similarity index 86% rename from data/core.telegram.org/constructor/upload.cdnFile rename to data/core.telegram.org/constructor/auth.exportedAuthorization index 38a06924a8..23a2293ef9 100644 --- a/data/core.telegram.org/constructor/upload.cdnFile +++ b/data/core.telegram.org/constructor/auth.exportedAuthorization @@ -2,12 +2,12 @@ - upload.cdnFile + auth.exportedAuthorization - - + + - + @@ -36,10 +36,10 @@
    - -

    upload.cdnFile

    + +

    auth.exportedAuthorization

    -

    Represent a chunk of a CDN file.

    +

    Data for copying of authorization between data centres.

    -
    upload.cdnFile#a99fca4f bytes:bytes = upload.CdnFile;

    +
    auth.exportedAuthorization#df969c2d id:int bytes:bytes = auth.ExportedAuthorization;

    Parameters

    @@ -64,16 +64,19 @@ + + + + + - +
    idintcurrent user identifier
    bytes bytesThe dataauthorizes key

    Type

    -

    upload.CdnFile

    -

    Related pages

    -

    Encrypted CDNs for Speed and Security

    +

    auth.ExportedAuthorization

    diff --git a/data/core.telegram.org/constructor/autoDownloadSettings.html b/data/core.telegram.org/constructor/autoDownloadSettings.html new file mode 100644 index 0000000000..9365406844 --- /dev/null +++ b/data/core.telegram.org/constructor/autoDownloadSettings.html @@ -0,0 +1,187 @@ + + + + + autoDownloadSettings + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    autoDownloadSettings

    + +

    Autodownload settings

    +

    +
    autoDownloadSettings#e04232f3 flags:# 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:int video_size_max:int file_size_max:int video_upload_maxbitrate:int = AutoDownloadSettings;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    disabledflags.0?trueDisable automatic media downloads?
    video_preload_largeflags.1?trueWhether to preload the first seconds of videos larger than the specified limit
    audio_preload_nextflags.2?trueWhether to preload the next audio track when you're listening to music
    phonecalls_less_dataflags.3?trueWhether to enable data saving mode in phone calls
    photo_size_maxintMaximum size of photos to preload
    video_size_maxintMaximum size of videos to preload
    file_size_maxintMaximum size of other files to preload
    video_upload_maxbitrateintMaximum suggested bitrate for uploading videos
    +

    Type

    +

    AutoDownloadSettings

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/updateContactsReset.html b/data/core.telegram.org/constructor/baseThemeClassic.html similarity index 91% rename from data/core.telegram.org/constructor/updateContactsReset.html rename to data/core.telegram.org/constructor/baseThemeClassic.html index f6e145b9c7..b16ada4c20 100644 --- a/data/core.telegram.org/constructor/updateContactsReset.html +++ b/data/core.telegram.org/constructor/baseThemeClassic.html @@ -2,12 +2,12 @@ - updateContactsReset + baseThemeClassic - - + + - + @@ -36,10 +36,10 @@
    - -

    updateContactsReset

    + +

    baseThemeClassic

    -

    All contacts were deleted

    +

    Classic theme

    -
    updateContactsReset#7084a7be = Update;

    +
    baseThemeClassic#c3a12462 = BaseTheme;

    Parameters

    This constructor does not require any parameters.

    Type

    -

    Update

    +

    BaseTheme

    diff --git a/data/core.telegram.org/constructor/baseThemeDay.html b/data/core.telegram.org/constructor/baseThemeNight.html similarity index 93% rename from data/core.telegram.org/constructor/baseThemeDay.html rename to data/core.telegram.org/constructor/baseThemeNight.html index 448b90268e..a36b8ef06e 100644 --- a/data/core.telegram.org/constructor/baseThemeDay.html +++ b/data/core.telegram.org/constructor/baseThemeNight.html @@ -2,12 +2,12 @@ - baseThemeDay + baseThemeNight - - + + - + @@ -36,10 +36,10 @@
    - -

    baseThemeDay

    + +

    baseThemeNight

    -

    Day theme

    +

    Night theme

    -
    baseThemeDay#fbd81688 = BaseTheme;

    +
    baseThemeNight#b7b31ea8 = BaseTheme;

    Parameters

    This constructor does not require any parameters.

    Type

    diff --git a/data/core.telegram.org/constructor/inputChannelEmpty.html b/data/core.telegram.org/constructor/boolTrue.html similarity index 91% rename from data/core.telegram.org/constructor/inputChannelEmpty.html rename to data/core.telegram.org/constructor/boolTrue.html index bfac096be5..5eca498dbc 100644 --- a/data/core.telegram.org/constructor/inputChannelEmpty.html +++ b/data/core.telegram.org/constructor/boolTrue.html @@ -2,12 +2,12 @@ - inputChannelEmpty + boolTrue - - + + - + @@ -36,10 +36,10 @@
    - -

    inputChannelEmpty

    + +

    boolTrue

    -

    Represents the absence of a channel

    +

    The constructor can be interpreted as a booleantrue value.

    -
    inputChannelEmpty#ee8c1e86 = InputChannel;

    +
    boolTrue#997275b5 = Bool;

    Parameters

    This constructor does not require any parameters.

    Type

    -

    InputChannel

    +

    Bool

    diff --git a/data/core.telegram.org/constructor/botInfo.html b/data/core.telegram.org/constructor/botInfo.html new file mode 100644 index 0000000000..97ca7abee0 --- /dev/null +++ b/data/core.telegram.org/constructor/botInfo.html @@ -0,0 +1,157 @@ + + + + + botInfo + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    botInfo

    + +

    Info about bots (available bot commands, etc)

    +

    +
    botInfo#98e81d3a user_id:int description:string commands:Vector<BotCommand> = BotInfo;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    user_idintID of the bot
    descriptionstringDescription of the bot
    commandsVector<BotCommand>Bot commands that can be used in the chat
    +

    Type

    +

    BotInfo

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/videoSize.html b/data/core.telegram.org/constructor/botInlineMessageMediaAuto.html similarity index 79% rename from data/core.telegram.org/constructor/videoSize.html rename to data/core.telegram.org/constructor/botInlineMessageMediaAuto.html index 12931646d0..79e0486389 100644 --- a/data/core.telegram.org/constructor/videoSize.html +++ b/data/core.telegram.org/constructor/botInlineMessageMediaAuto.html @@ -2,12 +2,12 @@ - videoSize + botInlineMessageMediaAuto - - + + - + @@ -36,10 +36,10 @@
    - -

    videoSize

    + +

    botInlineMessageMediaAuto

    -

    Animated profile picture in MPEG4 format

    +

    Send whatever media is attached to the botInlineMediaResult

    -
    videoSize#e831c556 flags:# type:string location:FileLocation w:int h:int size:int video_start_ts:flags.0?double = VideoSize;

    +
    botInlineMessageMediaAuto#764cf810 flags:# message:string entities:flags.1?Vector<MessageEntity> reply_markup:flags.2?ReplyMarkup = BotInlineMessage;

    Parameters

    @@ -69,42 +69,29 @@ - + - + - - - + + + - - - - - - - - - - - - - - - - - - + + +
    Flags, see TL conditional fields
    typemessage stringu for animated profile pictures, and v for trimmed and downscaled video previewsCaption
    locationFileLocationFile locationentitiesflags.1?Vector<MessageEntity>Message entities for styled text
    wintVideo width
    hintVideo height
    sizeintFile size
    video_start_tsflags.0?doubleTimestamp that should be shown as static preview to the user (seconds)reply_markupflags.2?ReplyMarkupInline keyboard

    Type

    -

    VideoSize

    +

    BotInlineMessage

    Related pages

    -

    Uploading and Downloading Files

    -

    How to transfer large data batches correctly.

    +

    Styled text with message entities

    +

    How to create styled text with message entities

    +

    botInlineMediaResult

    +

    Media result

    diff --git a/data/core.telegram.org/constructor/keyboardButtonRequestPoll.html b/data/core.telegram.org/constructor/botInlineMessageMediaContact.html similarity index 82% rename from data/core.telegram.org/constructor/keyboardButtonRequestPoll.html rename to data/core.telegram.org/constructor/botInlineMessageMediaContact.html index 429f723ee2..95e9948494 100644 --- a/data/core.telegram.org/constructor/keyboardButtonRequestPoll.html +++ b/data/core.telegram.org/constructor/botInlineMessageMediaContact.html @@ -2,12 +2,12 @@ - keyboardButtonRequestPoll + botInlineMessageMediaContact - - + + - + @@ -36,10 +36,10 @@
    - -

    keyboardButtonRequestPoll

    + +

    botInlineMessageMediaContact

    -

    A button that allows the user to create and send a poll when pressed; available only in private

    +

    Send a contact

    -
    keyboardButtonRequestPoll#bbc7515d flags:# quiz:flags.0?Bool text:string = KeyboardButton;

    +
    botInlineMessageMediaContact#18d1cdc2 flags:# phone_number:string first_name:string last_name:string vcard:string reply_markup:flags.2?ReplyMarkup = BotInlineMessage;

    Parameters

    @@ -69,19 +69,34 @@ - - - + + + - + - + + + + + + + + + + + + + + + +
    Flags, see TL conditional fields
    quizflags.0?BoolIf set, only quiz polls can be sentphone_numberstringPhone number
    textfirst_name stringButton textFirst name
    last_namestringLast name
    vcardstringVCard info
    reply_markupflags.2?ReplyMarkupInline keyboard

    Type

    -

    KeyboardButton

    +

    BotInlineMessage

    diff --git a/data/core.telegram.org/constructor/inputMediaPoll.html b/data/core.telegram.org/constructor/botInlineMessageText.html similarity index 85% rename from data/core.telegram.org/constructor/inputMediaPoll.html rename to data/core.telegram.org/constructor/botInlineMessageText.html index 6d6240baf7..44c585d8be 100644 --- a/data/core.telegram.org/constructor/inputMediaPoll.html +++ b/data/core.telegram.org/constructor/botInlineMessageText.html @@ -2,12 +2,12 @@ - inputMediaPoll + botInlineMessageText - - + + - + @@ -36,10 +36,10 @@
    - -

    inputMediaPoll

    + +

    botInlineMessageText

    -

    A poll

    +

    Send a simple text message

    -
    inputMediaPoll#f94e5f1 flags:# poll:Poll correct_answers:flags.0?Vector<bytes> solution:flags.1?string solution_entities:flags.1?Vector<MessageEntity> = InputMedia;

    +
    botInlineMessageText#8c7f65e2 flags:# no_webpage:flags.0?true message:string entities:flags.1?Vector<MessageEntity> reply_markup:flags.2?ReplyMarkup = BotInlineMessage;

    Parameters

    @@ -69,29 +69,29 @@ - - - + + + - - - + + + - - - - - - + + + + + +
    Flags, see TL conditional fields
    pollPollThe poll to sendno_webpageflags.0?trueDisable webpage preview
    correct_answersflags.0?Vector<bytes>Correct answer IDs (for quiz polls)messagestringThe message
    solutionflags.1?stringExplanation of quiz solution
    solution_entitiesentities flags.1?Vector<MessageEntity> Message entities for styled text
    reply_markupflags.2?ReplyMarkupInline keyboard

    Type

    -

    InputMedia

    +

    BotInlineMessage

    Related pages

    Styled text with message entities

    How to create styled text with message entities

    diff --git a/data/core.telegram.org/constructor/cdnConfig.html b/data/core.telegram.org/constructor/cdnPublicKey.html similarity index 87% rename from data/core.telegram.org/constructor/cdnConfig.html rename to data/core.telegram.org/constructor/cdnPublicKey.html index a370928748..f7bc68012b 100644 --- a/data/core.telegram.org/constructor/cdnConfig.html +++ b/data/core.telegram.org/constructor/cdnPublicKey.html @@ -2,12 +2,12 @@ - cdnConfig + cdnPublicKey - - + + - + @@ -36,10 +36,10 @@
    - -

    cdnConfig

    + +

    cdnPublicKey

    -

    Configuration for CDN file downloads.

    +

    Public key to use only during handshakes to CDN DCs.

    -
    cdnConfig#5725e40a public_keys:Vector<CdnPublicKey> = CdnConfig;

    +
    cdnPublicKey#c982eaba dc_id:int public_key:string = CdnPublicKey;

    Parameters

    @@ -64,14 +64,19 @@ - - - + + + + + + + +
    public_keysVector<CdnPublicKey>Vector of public keys to use only during handshakes to CDN DCs.dc_idintCDN DC ID
    public_keystringRSA public key

    Type

    -

    CdnConfig

    +

    CdnPublicKey

    Related pages

    Encrypted CDNs for Speed and Security

    diff --git a/data/core.telegram.org/constructor/channelAdminLogEventActionChangeAbout.html b/data/core.telegram.org/constructor/channelAdminLogEventActionChangeAbout.html new file mode 100644 index 0000000000..6829beeb74 --- /dev/null +++ b/data/core.telegram.org/constructor/channelAdminLogEventActionChangeAbout.html @@ -0,0 +1,152 @@ + + + + + channelAdminLogEventActionChangeAbout + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    channelAdminLogEventActionChangeAbout

    + +

    The description was changed

    +

    +
    channelAdminLogEventActionChangeAbout#55188a2e prev_value:string new_value:string = ChannelAdminLogEventAction;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    prev_valuestringPrevious description
    new_valuestringNew description
    +

    Type

    +

    ChannelAdminLogEventAction

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messageEntityEmail.html b/data/core.telegram.org/constructor/channelAdminLogEventActionChangeLinkedChat.html similarity index 87% rename from data/core.telegram.org/constructor/messageEntityEmail.html rename to data/core.telegram.org/constructor/channelAdminLogEventActionChangeLinkedChat.html index ed06330f40..df924edc89 100644 --- a/data/core.telegram.org/constructor/messageEntityEmail.html +++ b/data/core.telegram.org/constructor/channelAdminLogEventActionChangeLinkedChat.html @@ -2,12 +2,12 @@ - messageEntityEmail + channelAdminLogEventActionChangeLinkedChat - - + + - + @@ -36,10 +36,10 @@
    - -

    messageEntityEmail

    + +

    channelAdminLogEventActionChangeLinkedChat

    -

    Message entity representing an email@example.com.

    +

    The linked chat was changed

    -
    messageEntityEmail#64e475c2 offset:int length:int = MessageEntity;

    +
    channelAdminLogEventActionChangeLinkedChat#a26f881b prev_value:int new_value:int = ChannelAdminLogEventAction;

    Parameters

    @@ -64,19 +64,19 @@ - + - + - + - +
    offsetprev_value intOffset of message entity within message (in UTF-8 codepoints)Previous linked chat
    lengthnew_value intLength of message entity within message (in UTF-8 codepoints)New linked chat

    Type

    -

    MessageEntity

    +

    ChannelAdminLogEventAction

    diff --git a/data/core.telegram.org/constructor/channelAdminLogEventActionChangeStickerSet.html b/data/core.telegram.org/constructor/channelAdminLogEventActionChangeStickerSet.html new file mode 100644 index 0000000000..f194bf6a5a --- /dev/null +++ b/data/core.telegram.org/constructor/channelAdminLogEventActionChangeStickerSet.html @@ -0,0 +1,152 @@ + + + + + channelAdminLogEventActionChangeStickerSet + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    channelAdminLogEventActionChangeStickerSet

    + +

    The supergroup's stickerset was changed

    +

    +
    channelAdminLogEventActionChangeStickerSet#b1c3caa7 prev_stickerset:InputStickerSet new_stickerset:InputStickerSet = ChannelAdminLogEventAction;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    prev_stickersetInputStickerSetPrevious stickerset
    new_stickersetInputStickerSetNew stickerset
    +

    Type

    +

    ChannelAdminLogEventAction

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/channelAdminLogEventActionDefaultBannedRights.html b/data/core.telegram.org/constructor/channelAdminLogEventActionDefaultBannedRights.html new file mode 100644 index 0000000000..9924cad4ae --- /dev/null +++ b/data/core.telegram.org/constructor/channelAdminLogEventActionDefaultBannedRights.html @@ -0,0 +1,155 @@ + + + + + channelAdminLogEventActionDefaultBannedRights + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    channelAdminLogEventActionDefaultBannedRights

    + +

    The default banned rights were modified

    +

    +
    channelAdminLogEventActionDefaultBannedRights#2df5fc0a prev_banned_rights:ChatBannedRights new_banned_rights:ChatBannedRights = ChannelAdminLogEventAction;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    prev_banned_rightsChatBannedRightsPrevious global banned rights
    new_banned_rightsChatBannedRightsNew glboal banned rights.
    +

    Type

    +

    ChannelAdminLogEventAction

    +

    Related pages

    +

    Admin, banned, default rights

    +

    How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/channelAdminLogEventActionDeleteMessage.html b/data/core.telegram.org/constructor/channelAdminLogEventActionDeleteMessage.html new file mode 100644 index 0000000000..9df70f8568 --- /dev/null +++ b/data/core.telegram.org/constructor/channelAdminLogEventActionDeleteMessage.html @@ -0,0 +1,147 @@ + + + + + channelAdminLogEventActionDeleteMessage + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    channelAdminLogEventActionDeleteMessage

    + +

    A message was deleted

    +

    +
    channelAdminLogEventActionDeleteMessage#42e047bb message:Message = ChannelAdminLogEventAction;

    +

    Parameters

    + + + + + + + + + + + + + + + +
    NameTypeDescription
    messageMessageThe message that was deleted
    +

    Type

    +

    ChannelAdminLogEventAction

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/channelAdminLogEventActionEditMessage.html b/data/core.telegram.org/constructor/channelAdminLogEventActionEditMessage.html new file mode 100644 index 0000000000..afddb693f8 --- /dev/null +++ b/data/core.telegram.org/constructor/channelAdminLogEventActionEditMessage.html @@ -0,0 +1,152 @@ + + + + + channelAdminLogEventActionEditMessage + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    channelAdminLogEventActionEditMessage

    + +

    A message was edited

    +

    +
    channelAdminLogEventActionEditMessage#709b2405 prev_message:Message new_message:Message = ChannelAdminLogEventAction;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    prev_messageMessageOld message
    new_messageMessageNew message
    +

    Type

    +

    ChannelAdminLogEventAction

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/channelAdminLogEventActionParticipantInvite.html b/data/core.telegram.org/constructor/channelAdminLogEventActionParticipantInvite.html new file mode 100644 index 0000000000..a63b19e9ab --- /dev/null +++ b/data/core.telegram.org/constructor/channelAdminLogEventActionParticipantInvite.html @@ -0,0 +1,147 @@ + + + + + channelAdminLogEventActionParticipantInvite + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    channelAdminLogEventActionParticipantInvite

    + +

    A user was invited to the group

    +

    +
    channelAdminLogEventActionParticipantInvite#e31c34d8 participant:ChannelParticipant = ChannelAdminLogEventAction;

    +

    Parameters

    + + + + + + + + + + + + + + + +
    NameTypeDescription
    participantChannelParticipantThe user that was invited
    +

    Type

    +

    ChannelAdminLogEventAction

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/channelAdminLogEventActionParticipantLeave.html b/data/core.telegram.org/constructor/channelAdminLogEventActionParticipantLeave.html new file mode 100644 index 0000000000..f18080610f --- /dev/null +++ b/data/core.telegram.org/constructor/channelAdminLogEventActionParticipantLeave.html @@ -0,0 +1,132 @@ + + + + + channelAdminLogEventActionParticipantLeave + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    channelAdminLogEventActionParticipantLeave

    + +

    A user left the channel/supergroup (in the case of big groups, info of the user that has joined isn't shown)

    +

    +
    channelAdminLogEventActionParticipantLeave#f89777f2 = ChannelAdminLogEventAction;

    +

    Parameters

    +

    This constructor does not require any parameters.

    +

    Type

    +

    ChannelAdminLogEventAction

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/channelAdminLogEventActionToggleInvites.html b/data/core.telegram.org/constructor/channelAdminLogEventActionToggleInvites.html new file mode 100644 index 0000000000..7256ba2dfa --- /dev/null +++ b/data/core.telegram.org/constructor/channelAdminLogEventActionToggleInvites.html @@ -0,0 +1,147 @@ + + + + + channelAdminLogEventActionToggleInvites + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    channelAdminLogEventActionToggleInvites

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/channelAdminLogEventActionToggleSignatures.html b/data/core.telegram.org/constructor/channelAdminLogEventActionToggleSignatures.html new file mode 100644 index 0000000000..7b716aadb8 --- /dev/null +++ b/data/core.telegram.org/constructor/channelAdminLogEventActionToggleSignatures.html @@ -0,0 +1,147 @@ + + + + + channelAdminLogEventActionToggleSignatures + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    channelAdminLogEventActionToggleSignatures

    + +

    Channel signatures were enabled/disabled

    +

    +
    channelAdminLogEventActionToggleSignatures#26ae0971 new_value:Bool = ChannelAdminLogEventAction;

    +

    Parameters

    + + + + + + + + + + + + + + + +
    NameTypeDescription
    new_valueBoolNew value
    +

    Type

    +

    ChannelAdminLogEventAction

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/message.html b/data/core.telegram.org/constructor/channelFull.html similarity index 50% rename from data/core.telegram.org/constructor/message.html rename to data/core.telegram.org/constructor/channelFull.html index 9c8cb01ddb..cfa2b9d034 100644 --- a/data/core.telegram.org/constructor/message.html +++ b/data/core.telegram.org/constructor/channelFull.html @@ -2,12 +2,12 @@ - message + channelFull - - + + - + @@ -36,10 +36,10 @@
    - -

    message

    + +

    channelFull

    -

    A message

    +

    Full info about a channel/supergroup

    -
    message#58ae39c9 flags:# 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 id:int from_id:flags.8?Peer peer_id:Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to:flags.3?MessageReplyHeader date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector<MessageEntity> views:flags.10?int forwards:flags.10?int replies:flags.23?MessageReplies edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long restriction_reason:flags.22?Vector<RestrictionReason> = Message;

    +
    channelFull#f0e6672a flags:# 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:int about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:ExportedChatInvite bot_info:Vector<BotInfo> migrated_from_chat_id:flags.4?int migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int folder_id:flags.11?int linked_chat_id:flags.14?int location:flags.15?ChannelLocation slowmode_seconds:flags.17?int slowmode_next_send_date:flags.18?int stats_dc:flags.12?int pts:int = ChatFull;

    Parameters

    @@ -69,159 +69,196 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - - + - + - - - + + + - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Flags, see TL conditional fields
    outflags.1?trueIs this an outgoing messagecan_view_participantsflags.3?trueCan we vew the participant list?
    mentionedflags.4?trueWhether we were mentioned in this messagecan_set_usernameflags.6?trueCan we set the channel's username?
    media_unreadflags.5?trueWhether there are unread media attachments in this messagecan_set_stickersflags.7?trueCan we associate a stickerpack to the supergroup?
    silentflags.13?trueWhether this is a silent message (no notification triggered)hidden_prehistoryflags.10?trueIs the history before we joined hidden to us?
    postflags.14?trueWhether this is a channel postcan_set_locationflags.16?trueCan we set the geolocation of this group (for geogroups)
    from_scheduledflags.18?trueWhether this is a scheduled message
    legacyhas_scheduled flags.19?trueThis is a legacy message: it has to be refetched with the new layerWhether scheduled messages are available
    edit_hideflags.21?trueWhether the message should be shown as not modified to the user, even if an edit date is presentcan_view_statsflags.20?trueCan the user view channel/supergroup statistics
    pinnedflags.24?trueWhether this message is pinnedblockedflags.22?trueWhether any anonymous admin of this supergroup was blocked: if set, you won't receive messages from anonymous group admins in discussion replies via @replies
    id intID of the messageID of the channel
    from_idflags.8?PeerID of the sender of the message
    peer_idPeerPeer ID, the chat where this message was sent
    fwd_fromflags.2?MessageFwdHeaderInfo about forwarded messages
    via_bot_idflags.11?intID of the inline bot that generated the message
    reply_toflags.3?MessageReplyHeaderReply information
    dateintDate of the message
    messageabout stringThe messageInfo about the channel
    mediaflags.9?MessageMediaMedia attachmentparticipants_countflags.0?intNumber of participants of the channel
    reply_markupflags.6?ReplyMarkupReply markup (bot/inline keyboards)admins_countflags.1?intNumber of channel admins
    entitiesflags.7?Vector<MessageEntity>Message entities for styled textkicked_countflags.2?intNumber of users kicked from the channel
    viewsflags.10?intView count for channel postsbanned_countflags.2?intNumber of users banned from the channel
    forwardsflags.10?intForward counteronline_countflags.13?intNumber of users currently online
    repliesflags.23?MessageRepliesInfo about post comments (for channels) or message replies (for groups)read_inbox_max_idintPosition up to which all incoming messages are read.
    edit_dateflags.15?intLast edit date of this messageread_outbox_max_idintPosition up to which all outgoing messages are read.
    post_authorflags.16?stringName of the author of this message for channel posts (with signatures enabled)unread_countintCount of unread messages
    grouped_idflags.17?longMultiple media messages sent using messages.sendMultiMedia with the same grouped ID indicate an album or media groupchat_photoPhotoChannel picture
    restriction_reasonflags.22?Vector<RestrictionReason>Contains the reason why access to this message must be restricted.notify_settingsPeerNotifySettingsNotification settings
    exported_inviteExportedChatInviteInvite link
    bot_infoVector<BotInfo>Info about bots in the channel/supergrup
    migrated_from_chat_idflags.4?intThe chat ID from which this group was migrated
    migrated_from_max_idflags.4?intThe message ID in the original chat at which this group was migrated
    pinned_msg_idflags.5?intMessage ID of the last pinned message
    stickersetflags.8?StickerSetAssociated stickerset
    available_min_idflags.9?intIdentifier of a maximum unavailable message in a channel due to hidden history.
    folder_idflags.11?intPeer folder ID, for more info click here
    linked_chat_idflags.14?intID of the linked discussion chat for channels
    locationflags.15?ChannelLocationLocation of the geogroup
    slowmode_secondsflags.17?intIf specified, users in supergroups will only be able to send one message every slowmode_seconds seconds
    slowmode_next_send_dateflags.18?intIndicates when the user will be allowed to send another message in the supergroup (unixdate)
    stats_dcflags.12?intIf set, specifies the DC to use for fetching channel statistics
    ptsintLatest PTS for this channel

    Type

    -

    Message

    +

    ChatFull

    Related pages

    -

    Mentions

    -

    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.

    -

    Scheduled messages

    -

    Telegram allows scheduling messages

    +

    channels.setStickers

    +

    Associate a stickerset to the supergroup

    +

    Channel statistics

    +

    Telegram offers detailed channel statistics for channels and supergroups.

    +

    Discussion groups

    +

    Groups can be associated to a channel as a discussion group, to allow users to discuss about posts.

    +

    Admin, banned, default rights

    +

    How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups.

    +

    Channels

    +

    How to handle channels, supergroups, groups, and what's the difference between them.

    Pinned messages

    Telegram allows pinning multiple messages on top of a specific chat.

    -

    Styled text with message entities

    -

    How to create styled text with message entities

    -

    Threads

    -

    Telegram allows commenting on a channel post or on a generic supergroup message, thanks to message threads.

    -

    messages.sendMultiMedia

    -

    Send an album or grouped media

    -

    Uploading and Downloading Files

    -

    How to transfer large data batches correctly.

    +

    Folders

    +

    Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.

    +

    Working with Updates

    +

    How to subscribe to updates and handle them properly.

    diff --git a/data/core.telegram.org/constructor/channelParticipant.html b/data/core.telegram.org/constructor/channelParticipant.html new file mode 100644 index 0000000000..51fbbcac9b --- /dev/null +++ b/data/core.telegram.org/constructor/channelParticipant.html @@ -0,0 +1,152 @@ + + + + + channelParticipant + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    channelParticipant

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/channelParticipantAdmin.html b/data/core.telegram.org/constructor/channelParticipantAdmin.html new file mode 100644 index 0000000000..4f03d82ef3 --- /dev/null +++ b/data/core.telegram.org/constructor/channelParticipantAdmin.html @@ -0,0 +1,190 @@ + + + + + channelParticipantAdmin + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    channelParticipantAdmin

    + +

    Admin

    +

    +
    channelParticipantAdmin#ccbebbaf flags:# can_edit:flags.0?true self:flags.1?true user_id:int inviter_id:flags.1?int promoted_by:int date:int admin_rights:ChatAdminRights rank:flags.2?string = ChannelParticipant;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    can_editflags.0?trueCan this admin promote other admins with the same permissions?
    selfflags.1?trueIs this the current user
    user_idintAdmin user ID
    inviter_idflags.1?intUser that invited the admin to the channel/group
    promoted_byintUser that promoted the user to admin
    dateintWhen did the user join
    admin_rightsChatAdminRightsAdmin rights
    rankflags.2?stringThe role (rank) of the admin in the group: just an arbitrary string, admin by default
    +

    Type

    +

    ChannelParticipant

    +

    Related pages

    +

    Admin, banned, default rights

    +

    How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/updateChannelParticipant.html b/data/core.telegram.org/constructor/channelParticipantBanned.html similarity index 80% rename from data/core.telegram.org/constructor/updateChannelParticipant.html rename to data/core.telegram.org/constructor/channelParticipantBanned.html index 7b0a3bd8b2..5df7493602 100644 --- a/data/core.telegram.org/constructor/updateChannelParticipant.html +++ b/data/core.telegram.org/constructor/channelParticipantBanned.html @@ -2,12 +2,12 @@ - updateChannelParticipant + channelParticipantBanned - - + + - + @@ -36,10 +36,10 @@
    - -

    updateChannelParticipant

    + +

    channelParticipantBanned

    -

    A participant has left, joined, was banned or admined in a channel or supergroup.

    +

    Banned/kicked user

    -
    Constructor schema is available as of layer 124. Switch »

    +
    channelParticipantBanned#1c0facaf flags:# left:flags.0?true user_id:int kicked_by:int date:int banned_rights:ChatBannedRights = ChannelParticipant;

    Parameters

    @@ -69,44 +69,37 @@ - - - - - - - - + + + - + - - - - - - - - - - - + - + + + + + + + + + + +
    Flags, see TL conditional fields
    channel_idintChannel ID
    dateintDate of the eventleftflags.0?trueWhether the user has left the group
    user_id intUser in questionUser ID
    prev_participantflags.0?ChannelParticipantPrevious participant status
    new_participantflags.1?ChannelParticipantNew participant status
    qtskicked_by intPTSUser was kicked by the specified admin
    dateintWhen did the user join the group
    banned_rightsChatBannedRightsBanned rights

    Type

    -

    Update

    +

    ChannelParticipant

    Related pages

    -

    Working with Updates

    -

    How to subscribe to updates and handle them properly.

    -

    Channels

    -

    How to handle channels, supergroups, groups, and what's the difference between them.

    +

    Admin, banned, default rights

    +

    How to handle admin permissions, granular bans and global permissions in channels, groups and supergroups.

    diff --git a/data/core.telegram.org/constructor/nearestDc.html b/data/core.telegram.org/constructor/channelParticipantSelf.html similarity index 87% rename from data/core.telegram.org/constructor/nearestDc.html rename to data/core.telegram.org/constructor/channelParticipantSelf.html index fe4cc3c48e..58defa03e8 100644 --- a/data/core.telegram.org/constructor/nearestDc.html +++ b/data/core.telegram.org/constructor/channelParticipantSelf.html @@ -2,12 +2,12 @@ - nearestDc + channelParticipantSelf - - + + - + @@ -36,10 +36,10 @@
    - -

    nearestDc

    + +

    channelParticipantSelf

    -

    Nearest data centre, according to geo-ip.

    +

    Myself

    -
    nearestDc#8e1a1775 country:string this_dc:int nearest_dc:int = NearestDc;

    +
    channelParticipantSelf#a3289a6d user_id:int inviter_id:int date:int = ChannelParticipant;

    Parameters

    @@ -64,24 +64,24 @@ - - - + + + - + - + - + - +
    countrystringCountry code determined by geo-ipuser_idintUser ID
    this_dcinviter_id intNumber of current data centreUser that invited me to the channel/supergroup
    nearest_dcdate intNumber of nearest data centreWhen did I join the channel/supergroup

    Type

    -

    NearestDc

    +

    ChannelParticipant

    diff --git a/data/core.telegram.org/constructor/channelParticipantsMentions.html b/data/core.telegram.org/constructor/channelParticipantsMentions.html deleted file mode 100644 index 5c933055a5..0000000000 --- a/data/core.telegram.org/constructor/channelParticipantsMentions.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - channelParticipantsMentions - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    channelParticipantsMentions

    - -

    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.

    -

    -
    channelParticipantsMentions#e04b5ceb flags:# q:flags.0?string top_msg_id:flags.1?int = ChannelParticipantsFilter;

    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    flags#Flags, see TL conditional fields
    qflags.0?stringFilter by user name or username
    top_msg_idflags.1?intLook only for users that posted in this thread
    -

    Type

    -

    ChannelParticipantsFilter

    -

    Related pages

    -

    Threads

    -

    Telegram allows commenting on a channel post or on a generic supergroup message, thanks to message threads.

    - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/channelParticipantsSearch.html b/data/core.telegram.org/constructor/channelParticipantsSearch.html new file mode 100644 index 0000000000..cac36c2956 --- /dev/null +++ b/data/core.telegram.org/constructor/channelParticipantsSearch.html @@ -0,0 +1,147 @@ + + + + + channelParticipantsSearch + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    channelParticipantsSearch

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messages.inactiveChats b/data/core.telegram.org/constructor/channels.adminLogResults similarity index 86% rename from data/core.telegram.org/constructor/messages.inactiveChats rename to data/core.telegram.org/constructor/channels.adminLogResults index 86e9be4d0b..3bf7720834 100644 --- a/data/core.telegram.org/constructor/messages.inactiveChats +++ b/data/core.telegram.org/constructor/channels.adminLogResults @@ -2,12 +2,12 @@ - messages.inactiveChats + channels.adminLogResults - - + + - + @@ -36,10 +36,10 @@
    - -

    messages.inactiveChats

    + +

    channels.adminLogResults

    -

    Inactive chat list

    +

    Admin log events

    -
    messages.inactiveChats#a927fec5 dates:Vector<int> chats:Vector<Chat> users:Vector<User> = messages.InactiveChats;

    +
    channels.adminLogResults#ed8af74d events:Vector<ChannelAdminLogEvent> chats:Vector<Chat> users:Vector<User> = channels.AdminLogResults;

    Parameters

    @@ -64,24 +64,24 @@ - - - + + + - + - +
    datesVector<int>When was the chat last activeeventsVector<ChannelAdminLogEvent>Admin log events
    chats Vector<Chat>Chat listChats mentioned in events
    users Vector<User>Users mentioned in the chat listUsers mentioned in events

    Type

    -

    messages.InactiveChats

    +

    channels.AdminLogResults

    diff --git a/data/core.telegram.org/constructor/messages.highScores b/data/core.telegram.org/constructor/channels.channelParticipant similarity index 86% rename from data/core.telegram.org/constructor/messages.highScores rename to data/core.telegram.org/constructor/channels.channelParticipant index 1d72c57527..a94b9aca6d 100644 --- a/data/core.telegram.org/constructor/messages.highScores +++ b/data/core.telegram.org/constructor/channels.channelParticipant @@ -2,12 +2,12 @@ - messages.highScores + channels.channelParticipant - - + + - + @@ -36,10 +36,10 @@
    - -

    messages.highScores

    + +

    channels.channelParticipant

    -

    Highscores in a game

    +

    Represents a channel participant

    -
    messages.highScores#9a3bfd99 scores:Vector<HighScore> users:Vector<User> = messages.HighScores;

    +
    channels.channelParticipant#d0d9b163 participant:ChannelParticipant users:Vector<User> = channels.ChannelParticipant;

    Parameters

    @@ -64,19 +64,19 @@ - - - + + + - +
    scoresVector<HighScore>HighscoresparticipantChannelParticipantThe channel participant
    users Vector<User>Users, associated to the highscoresUsers

    Type

    -

    messages.HighScores

    +

    channels.ChannelParticipant

    diff --git a/data/core.telegram.org/constructor/chatForbidden.html b/data/core.telegram.org/constructor/chatForbidden.html new file mode 100644 index 0000000000..c8bb986822 --- /dev/null +++ b/data/core.telegram.org/constructor/chatForbidden.html @@ -0,0 +1,152 @@ + + + + + chatForbidden + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    chatForbidden

    + +

    A group to which the user has no access. E.g., because the user was kicked from the group.

    +

    +
    chatForbidden#7328bdb id:int title:string = Chat;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    idintUser identifier
    titlestringGroup name
    +

    Type

    +

    Chat

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/peerSettings.html b/data/core.telegram.org/constructor/chatInvite.html similarity index 77% rename from data/core.telegram.org/constructor/peerSettings.html rename to data/core.telegram.org/constructor/chatInvite.html index 57e991b84e..6eed68e1b2 100644 --- a/data/core.telegram.org/constructor/peerSettings.html +++ b/data/core.telegram.org/constructor/chatInvite.html @@ -2,12 +2,12 @@ - peerSettings + chatInvite - - + + - + @@ -36,10 +36,10 @@
    - -

    peerSettings

    + +

    chatInvite

    -

    Peer settings

    +

    Chat invite info

    -
    peerSettings#733f2961 flags:# 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?int = PeerSettings;

    +
    chatInvite#dfc2f58e flags:# channel:flags.0?true broadcast:flags.1?true public:flags.2?true megagroup:flags.3?true title:string photo:Photo participants_count:int participants:flags.4?Vector<User> = ChatInvite;

    Parameters

    @@ -69,52 +69,52 @@ - + - + - + - + - + - + - + - + - - - + + + - - - + + + - - - + + + - - - + + +
    Flags, see TL conditional fields
    report_spamchannel flags.0?trueWhether we can still report the user for spamWhether this is a channel/supergroup or a normal group
    add_contactbroadcast flags.1?trueWhether we can add the user as contactWhether this is a channel
    block_contactpublic flags.2?trueWhether we can block the userWhether this is a public channel/supergroup
    share_contactmegagroup flags.3?trueWhether we can share the user's contactWhether this is a supergroup
    need_contacts_exceptionflags.4?trueWhether a special exception for contacts is neededtitlestringChat/supergroup/channel title
    report_geoflags.5?trueWhether we can report a geogroup is irrelevant for this locationphotoPhotoChat/supergroup/channel photo
    autoarchivedflags.7?trueWhether this peer was automatically archived according to privacy settingsparticipants_countintParticipant count
    geo_distanceflags.6?intDistance in meters between us and this peerparticipantsflags.4?Vector<User>A few of the participants that are in the group

    Type

    -

    PeerSettings

    +

    ChatInvite

    Related pages

    -

    globalPrivacySettings

    -

    Global privacy settings

    +

    Channels

    +

    How to handle channels, supergroups, groups, and what's the difference between them.

    diff --git a/data/core.telegram.org/constructor/inputChatPhotoEmpty.html b/data/core.telegram.org/constructor/chatInviteEmpty.html similarity index 91% rename from data/core.telegram.org/constructor/inputChatPhotoEmpty.html rename to data/core.telegram.org/constructor/chatInviteEmpty.html index 0e41004e2d..a97594710f 100644 --- a/data/core.telegram.org/constructor/inputChatPhotoEmpty.html +++ b/data/core.telegram.org/constructor/chatInviteEmpty.html @@ -2,12 +2,12 @@ - inputChatPhotoEmpty + chatInviteEmpty - - + + - + @@ -36,10 +36,10 @@
    - -

    inputChatPhotoEmpty

    + +

    chatInviteEmpty

    -

    Empty constructor, remove group photo.

    +

    No info is associated to the chat invite

    -
    inputChatPhotoEmpty#1ca48f57 = InputChatPhoto;

    +
    chatInviteEmpty#69df3769 = ExportedChatInvite;

    Parameters

    This constructor does not require any parameters.

    Type

    -

    InputChatPhoto

    +

    ExportedChatInvite

    diff --git a/data/core.telegram.org/constructor/help.supportName b/data/core.telegram.org/constructor/chatInviteExported.html similarity index 90% rename from data/core.telegram.org/constructor/help.supportName rename to data/core.telegram.org/constructor/chatInviteExported.html index 8bfc1babd4..fbf2a5f75c 100644 --- a/data/core.telegram.org/constructor/help.supportName +++ b/data/core.telegram.org/constructor/chatInviteExported.html @@ -2,12 +2,12 @@ - help.supportName + chatInviteExported - - + + - + @@ -36,10 +36,10 @@
    - -

    help.supportName

    + +

    chatInviteExported

    -

    Localized name for telegram support

    +

    Exported chat invite

    -
    help.supportName#8c05f1c9 name:string = help.SupportName;

    +
    chatInviteExported#fc2e05bc link:string = ExportedChatInvite;

    Parameters

    @@ -64,14 +64,14 @@ - + - +
    namelink stringLocalized nameChat invitation link

    Type

    -

    help.SupportName

    +

    ExportedChatInvite

    diff --git a/data/core.telegram.org/constructor/chatParticipantAdmin.html b/data/core.telegram.org/constructor/chatParticipantAdmin.html new file mode 100644 index 0000000000..34ee67e7ad --- /dev/null +++ b/data/core.telegram.org/constructor/chatParticipantAdmin.html @@ -0,0 +1,157 @@ + + + + + chatParticipantAdmin + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    chatParticipantAdmin

    + +

    Chat admin

    +

    +
    chatParticipantAdmin#e2d6e436 user_id:int inviter_id:int date:int = ChatParticipant;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    user_idintID of a group member that is admin
    inviter_idintID of the user that added the member to the group
    dateintDate when the user was added
    +

    Type

    +

    ChatParticipant

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/chatPhotoEmpty.html b/data/core.telegram.org/constructor/chatPhotoEmpty.html new file mode 100644 index 0000000000..26e9ad7546 --- /dev/null +++ b/data/core.telegram.org/constructor/chatPhotoEmpty.html @@ -0,0 +1,132 @@ + + + + + chatPhotoEmpty + + + + + + + + + + + + + +
    + + + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/contact.html b/data/core.telegram.org/constructor/contact.html new file mode 100644 index 0000000000..98424d3721 --- /dev/null +++ b/data/core.telegram.org/constructor/contact.html @@ -0,0 +1,152 @@ + + + + + contact + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    contact

    + +

    A contact of the current user that is registered in the system.

    +

    +
    contact#f911c994 user_id:int mutual:Bool = Contact;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    user_idintUser identifier
    mutualBoolCurrent user is in the user's contact list
    +

    Type

    +

    Contact

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/updates.html b/data/core.telegram.org/constructor/contacts.blockedSlice similarity index 85% rename from data/core.telegram.org/constructor/updates.html rename to data/core.telegram.org/constructor/contacts.blockedSlice index 1be0825140..78c9e45e3f 100644 --- a/data/core.telegram.org/constructor/updates.html +++ b/data/core.telegram.org/constructor/contacts.blockedSlice @@ -2,12 +2,12 @@ - Updates + contacts.blockedSlice - - + + - + @@ -36,10 +36,10 @@
    - -

    Updates

    + +

    contacts.blockedSlice

    -

    Full constructor of updates

    +

    Incomplete list of blocked users.

    -
    updates#74ae4240 updates:Vector<Update> users:Vector<User> chats:Vector<Chat> date:int seq:int = Updates;

    +
    contacts.blockedSlice#e1664194 count:int blocked:Vector<PeerBlocked> chats:Vector<Chat> users:Vector<User> = contacts.Blocked;

    Parameters

    @@ -64,34 +64,29 @@ - - - + + + - - - + + + - + - - - - - - - - + + +
    updatesVector<Update>List of updatescountintTotal number of elements in the list
    usersVector<User>List of users mentioned in updatesblockedVector<PeerBlocked>List of blocked users
    chats Vector<Chat>List of chats mentioned in updatesBlocked chats
    dateintCurrent date
    seqintTotal number of sent updatesusersVector<User>List of users

    Type

    -

    Updates

    +

    contacts.Blocked

    diff --git a/data/core.telegram.org/constructor/messages.messages b/data/core.telegram.org/constructor/contacts.contacts similarity index 85% rename from data/core.telegram.org/constructor/messages.messages rename to data/core.telegram.org/constructor/contacts.contacts index 8c732b0062..d9e2ad9576 100644 --- a/data/core.telegram.org/constructor/messages.messages +++ b/data/core.telegram.org/constructor/contacts.contacts @@ -2,12 +2,12 @@ - messages.messages + contacts.contacts - - + + - + @@ -36,10 +36,10 @@
    - -

    messages.messages

    + +

    contacts.contacts

    -

    Full list of messages with auxilary data.

    +

    The current user's contact list and info on users.

    -
    messages.messages#8c718e87 messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Messages;

    +
    contacts.contacts#eae87e42 contacts:Vector<Contact> saved_count:int users:Vector<User> = contacts.Contacts;

    Parameters

    @@ -64,24 +64,24 @@ - - - + + + - - - + + + - +
    messagesVector<Message>List of messagescontactsVector<Contact>Contact list
    chatsVector<Chat>List of chats mentioned in dialogssaved_countintNumber of contacts that were saved successfully
    users Vector<User>List of users mentioned in messages and chatsUser list

    Type

    -

    messages.Messages

    +

    contacts.Contacts

    diff --git a/data/core.telegram.org/constructor/updateUserName.html b/data/core.telegram.org/constructor/contacts.importedContacts similarity index 78% rename from data/core.telegram.org/constructor/updateUserName.html rename to data/core.telegram.org/constructor/contacts.importedContacts index 9de000404d..767830fffd 100644 --- a/data/core.telegram.org/constructor/updateUserName.html +++ b/data/core.telegram.org/constructor/contacts.importedContacts @@ -2,12 +2,12 @@ - updateUserName + contacts.importedContacts - - + + - + @@ -36,10 +36,10 @@
    - -

    updateUserName

    + +

    contacts.importedContacts

    -

    Changes the user's first name, last name and username.

    +

    Info on succesfully imported contacts.

    -
    updateUserName#a7332b73 user_id:int first_name:string last_name:string username:string = Update;

    +
    contacts.importedContacts#77d01c3b imported:Vector<ImportedContact> popular_invites:Vector<PopularContact> retry_contacts:Vector<long> users:Vector<User> = contacts.ImportedContacts;

    Parameters

    @@ -64,32 +64,30 @@ - - - + + + - - - + + + - - - + + + - - - + + +
    user_idintUser identifierimportedVector<ImportedContact>List of succesfully imported contacts
    first_namestringNew first name. Corresponds to the new value of real_first_name field of the userFull constructor.popular_invitesVector<PopularContact>Popular contacts
    last_namestringNew last name. Corresponds to the new value of real_last_name field of the userFull constructor.retry_contactsVector<long>List of contact ids that could not be imported due to system limitation and will need to be imported at a later date.
    Parameter added in Layer 13
    usernamestringNew username.
    Parameter added in Layer 18.
    usersVector<User>List of users

    Type

    -

    Update

    +

    contacts.ImportedContacts

    Related pages

    -

    userFull

    -

    Extended user info

    Layers

    Below you will find information on scheme changes. For more details on the use of layers, see Invoking API methods.

    diff --git a/data/core.telegram.org/constructor/messageService.html b/data/core.telegram.org/constructor/dcOption.html similarity index 73% rename from data/core.telegram.org/constructor/messageService.html rename to data/core.telegram.org/constructor/dcOption.html index c03299cd5c..e0880ce148 100644 --- a/data/core.telegram.org/constructor/messageService.html +++ b/data/core.telegram.org/constructor/dcOption.html @@ -2,12 +2,12 @@ - messageService + dcOption - - + + - + @@ -36,10 +36,10 @@
    - -

    messageService

    + +

    dcOption

    -

    Indicates a service message

    +

    Data centre

    -
    messageService#286fa604 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true legacy:flags.19?true id:int from_id:flags.8?Peer peer_id:Peer reply_to:flags.3?MessageReplyHeader date:int action:MessageAction = Message;

    +
    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;

    Parameters

    @@ -69,69 +69,59 @@ - + + + + + + - + - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + - + - - - + + + - - - - - - - - - - - + - + - - - + + +
    Flags, see TL conditional fields
    outipv6flags.0?trueWhether the specified IP is an IPv6 address
    media_only flags.1?trueWhether the message is outgoingWhether this DC should only be used to download or upload files
    mentionedtcpo_onlyflags.2?trueWhether this DC only supports connection with transport obfuscation
    cdnflags.3?trueWhether this is a CDN DC.
    static flags.4?trueWhether we were mentioned in the message
    media_unreadflags.5?trueWhether the message contains unread media
    silentflags.13?trueWhether the message is silent
    postflags.14?trueWhether it's a channel post
    legacyflags.19?trueThis is a legacy message: it has to be refetched with the new layerIf set, this IP should be used when connecting through a proxy
    id intMessage IDDC ID
    from_idflags.8?PeerID of the sender of this messageip_addressstringIP address of DC
    peer_idPeerSender of service message
    reply_toflags.3?MessageReplyHeaderReply (thread) information
    dateport intMessage datePort
    actionMessageActionEvent connected with the service messagesecretflags.10?bytesIf the tcpo_only flag is set, specifies the secret to use when connecting using transport obfuscation

    Type

    -

    Message

    +

    DcOption

    +

    Related pages

    +

    Uploading and Downloading Files

    +

    How to transfer large data batches correctly.

    +

    MTProto transports

    +

    Encrypted CDNs for Speed and Security

    diff --git a/data/core.telegram.org/constructor/decryptedMessage.html b/data/core.telegram.org/constructor/decryptedMessage.html new file mode 100644 index 0000000000..aef16e9a26 --- /dev/null +++ b/data/core.telegram.org/constructor/decryptedMessage.html @@ -0,0 +1,217 @@ + + + + + decryptedMessage + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    decryptedMessage

    + +

    Contents of an encrypted message.

    +

    +
    ===8===
    +decryptedMessage#1f814f1f random_id:long random_bytes:bytes message:string media:DecryptedMessageMedia = DecryptedMessage;
    +
    +===17===
    +decryptedMessage#204d3878 random_id:long ttl:int message:string media:DecryptedMessageMedia = DecryptedMessage;
    +
    +===45===
    +decryptedMessage#36b091de flags:# random_id:long ttl:int message:string media:flags.9?DecryptedMessageMedia entities:flags.7?Vector<MessageEntity> via_bot_name:flags.11?string reply_to_random_id:flags.3?long = DecryptedMessage;
    +
    +===73===
    +decryptedMessage#91cc4674 flags:# no_webpage:flags.1?true silent:flags.5?true random_id:long ttl:int message:string media:flags.9?DecryptedMessageMedia entities:flags.7?Vector<MessageEntity> via_bot_name:flags.11?string reply_to_random_id:flags.3?long grouped_id:flags.17?long = DecryptedMessage;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields (added in layer 45)
    no_webpageflags.1?trueWhether the webpage preview is disabled
    silentflags.5?trueWhether this is a silent message (no notification triggered)
    random_idlongRandom message ID, assigned by the author of message.
    Must be equal to the ID passed to sending method.
    ttlintMessage lifetime. Has higher priority than decryptedMessageActionSetMessageTTL.
    Parameter added in Layer 17.
    messagestringMessage text
    mediaflags.9?DecryptedMessageMediaMedia content
    entitiesflags.7?Vector<MessageEntity>Message entities for styled text (parameter added in layer 45)
    via_bot_nameflags.11?stringSpecifies the ID of the inline bot that generated the message (parameter added in layer 45)
    reply_to_random_idflags.3?longRandom message ID of the message this message replies to (parameter added in layer 45)
    grouped_idflags.17?longRandom group ID, assigned by the author of message.
    Multiple encrypted messages with a photo attached and with the same group ID indicate an album or grouped media (parameter added in layer 45)
    +

    Type

    +

    DecryptedMessage

    +

    Related pages

    +

    decryptedMessageActionSetMessageTTL

    +

    Setting of a message lifetime after reading.

    +

    Upon receiving such message the client shall start deleting of all messages of an encrypted chat ttl_seconds seconds after the messages were read by user.

    +

    Layers

    +

    Below you will find information on scheme changes. For more details on the use of layers, see Invoking API methods.

    +

    Styled text with message entities

    +

    How to create styled text with message entities

    +

    Uploading and Downloading Files

    +

    How to transfer large data batches correctly.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/decryptedMessageActionRequestKey.html b/data/core.telegram.org/constructor/decryptedMessageActionRequestKey.html new file mode 100644 index 0000000000..7917d5d473 --- /dev/null +++ b/data/core.telegram.org/constructor/decryptedMessageActionRequestKey.html @@ -0,0 +1,155 @@ + + + + + decryptedMessageActionRequestKey + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    decryptedMessageActionRequestKey

    + +

    Request rekeying, see rekeying process

    +

    +
    ===20===
    +decryptedMessageActionRequestKey#f3c9611b exchange_id:long g_a:bytes = DecryptedMessageAction;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    exchange_idlongExchange ID
    g_abytesg_a, see rekeying process
    +

    Type

    +

    DecryptedMessageAction

    +

    Related pages

    +

    Perfect Forward Secrecy

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/decryptedMessageActionReadMessages.html b/data/core.telegram.org/constructor/decryptedMessageActionSetMessageTTL.html similarity index 86% rename from data/core.telegram.org/constructor/decryptedMessageActionReadMessages.html rename to data/core.telegram.org/constructor/decryptedMessageActionSetMessageTTL.html index 3f968d0078..cc4d6651e7 100644 --- a/data/core.telegram.org/constructor/decryptedMessageActionReadMessages.html +++ b/data/core.telegram.org/constructor/decryptedMessageActionSetMessageTTL.html @@ -2,12 +2,12 @@ - decryptedMessageActionReadMessages + decryptedMessageActionSetMessageTTL - - + + - + @@ -36,10 +36,11 @@
    - -

    decryptedMessageActionReadMessages

    + +

    decryptedMessageActionSetMessageTTL

    -

    Messages marked as read.

    +

    Setting of a message lifetime after reading.

    +

    Upon receiving such message the client shall start deleting of all messages of an encrypted chat ttl_seconds seconds after the messages were read by user.

    ===8===
    -decryptedMessageActionReadMessages#c4f40be random_ids:Vector<long> = DecryptedMessageAction;

    +decryptedMessageActionSetMessageTTL#a1733aec ttl_seconds:int = DecryptedMessageAction;

    Parameters

    @@ -65,9 +66,9 @@ - - - + + +
    random_idsVector<long>List of message IDsttl_secondsintLifetime in seconds
    diff --git a/data/core.telegram.org/constructor/decryptedMessageActionTyping.html b/data/core.telegram.org/constructor/decryptedMessageActionTyping.html deleted file mode 100644 index 1d23f2e882..0000000000 --- a/data/core.telegram.org/constructor/decryptedMessageActionTyping.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - decryptedMessageActionTyping - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    decryptedMessageActionTyping

    - -

    User is preparing a message: typing, recording, uploading, etc.

    -

    -
    ===17===
    -decryptedMessageActionTyping#ccb27641 action:SendMessageAction = DecryptedMessageAction;

    -

    Parameters

    - - - - - - - - - - - - - - - -
    NameTypeDescription
    actionSendMessageActionType of action
    -

    Type

    -

    DecryptedMessageAction

    - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/decryptedMessageLayer.html b/data/core.telegram.org/constructor/decryptedMessageLayer.html deleted file mode 100644 index 834201b2e3..0000000000 --- a/data/core.telegram.org/constructor/decryptedMessageLayer.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - decryptedMessageLayer - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    decryptedMessageLayer

    - -

    Sets the layer number for the contents of an encrypted message.

    -

    -
    ===17===
    -decryptedMessageLayer#1be31789 random_bytes:bytes layer:int in_seq_no:int out_seq_no:int message:DecryptedMessage = DecryptedMessageLayer;

    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    random_bytesbytesSet of random bytes to prevent content recognition in short encrypted messages.
    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.
    Parameter moved here from decryptedMessage in Layer 17.
    layerintLayer number. Mimimal value - 17 (the layer in which the constructor was added).
    in_seq_noint2x 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
    Parameter added in Layer 17.
    out_seq_noint2x the number of messages in the recipient's inbox (including deleted and service messages), incremented by 1 if current user was the chat creator
    Parameter added in Layer 17.
    messageDecryptedMessageThe content of message itself
    -

    Type

    -

    DecryptedMessageLayer

    -

    Related pages

    -

    decryptedMessage

    -

    Contents of an encrypted message.

    -

    Layers

    -

    Below you will find information on scheme changes. For more details on the use of layers, see Invoking API methods.

    - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/updates.state b/data/core.telegram.org/constructor/decryptedMessageMediaAudio.html similarity index 80% rename from data/core.telegram.org/constructor/updates.state rename to data/core.telegram.org/constructor/decryptedMessageMediaAudio.html index 74569e17e9..2231da96c7 100644 --- a/data/core.telegram.org/constructor/updates.state +++ b/data/core.telegram.org/constructor/decryptedMessageMediaAudio.html @@ -2,12 +2,12 @@ - updates.state + decryptedMessageMediaAudio - - + + - + @@ -36,10 +36,10 @@
    - -

    updates.state

    + +

    decryptedMessageMediaAudio

    -

    Updates state.

    +

    Audio file attached to a secret chat message.

    -
    updates.state#a56c2a3e pts:int qts:int date:int seq:int unread_count:int = updates.State;

    +
    ===8===
    +decryptedMessageMediaAudio#6080758f duration:int size:int key:bytes iv:bytes = DecryptedMessageMedia;
    +
    +===17===
    +decryptedMessageMediaAudio#57e0a9cb duration:int mime_type:string size:int key:bytes iv:bytes = DecryptedMessageMedia;

    Parameters

    @@ -64,37 +68,35 @@ - + - + - - - + + + - + - + - - - + + + - - - + + +
    ptsduration intNumber of events occured in a text boxAudio duration in seconds
    qtsintPosition in a sequence of updates in secret chats. For further detailes refer to article secret chats
    Parameter was added in eigth layer.
    mime_typestringMIME-type of the audio file
    Parameter added in Layer 13.
    datesize intDate of conditionFile size
    seqintNumber of sent updateskeybytesKey to decrypt the attached media file
    unread_countintNumber of unread messagesivbytesInitialization vector

    Type

    -

    updates.State

    +

    DecryptedMessageMedia

    Related pages

    -

    End-to-End Encryption, Secret Chats

    -

    New feature for end-to-end-encrypted messaging.

    Layers

    Below you will find information on scheme changes. For more details on the use of layers, see Invoking API methods.

    diff --git a/data/core.telegram.org/constructor/decryptedMessageMediaContact.html b/data/core.telegram.org/constructor/decryptedMessageMediaContact.html new file mode 100644 index 0000000000..8d6d7eae6a --- /dev/null +++ b/data/core.telegram.org/constructor/decryptedMessageMediaContact.html @@ -0,0 +1,163 @@ + + + + + decryptedMessageMediaContact + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    decryptedMessageMediaContact

    + +

    Contact attached to an encrypted message.

    +

    +
    ===8===
    +decryptedMessageMediaContact#588a0a97 phone_number:string first_name:string last_name:string user_id:int = DecryptedMessageMedia;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    phone_numberstringPhone number
    first_namestringContact's first name
    last_namestringContact's last name
    user_idintTelegram User ID of signed-up contact
    +

    Type

    +

    DecryptedMessageMedia

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/decryptedMessageMediaDocument.html b/data/core.telegram.org/constructor/decryptedMessageMediaDocument.html new file mode 100644 index 0000000000..7f35a6b824 --- /dev/null +++ b/data/core.telegram.org/constructor/decryptedMessageMediaDocument.html @@ -0,0 +1,191 @@ + + + + + decryptedMessageMediaDocument + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    decryptedMessageMediaDocument

    + +

    Document attached to a message in a secret chat.

    +

    +
    ===8===
    +decryptedMessageMediaDocument#b095434b thumb:bytes thumb_w:int thumb_h:int file_name:string mime_type:string size:int key:bytes iv:bytes = DecryptedMessageMedia;
    +
    +===45===
    +decryptedMessageMediaDocument#7afe8ae2 thumb:bytes thumb_w:int thumb_h:int mime_type:string size:int key:bytes iv:bytes attributes:Vector<DocumentAttribute> caption:string = DecryptedMessageMedia;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    thumbbytesThumbnail-file contents (JPEG-file, quality 55, set in a 90x90 square)
    thumb_wintThumbnail width
    thumb_hintThumbnail height
    mime_typestringFile MIME-type
    sizeintDocument size
    keybytesKey to decrypt the attached document file
    ivbytesInitialization
    attributesVector<DocumentAttribute>Document attributes for media types
    captionstringCaption
    +

    Type

    +

    DecryptedMessageMedia

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/secureFile.html b/data/core.telegram.org/constructor/decryptedMessageMediaExternalDocument.html similarity index 80% rename from data/core.telegram.org/constructor/secureFile.html rename to data/core.telegram.org/constructor/decryptedMessageMediaExternalDocument.html index e4fe25fde3..8a486544be 100644 --- a/data/core.telegram.org/constructor/secureFile.html +++ b/data/core.telegram.org/constructor/decryptedMessageMediaExternalDocument.html @@ -2,12 +2,12 @@ - secureFile + decryptedMessageMediaExternalDocument - - + + - + @@ -36,10 +36,10 @@
    - -

    secureFile

    + +

    decryptedMessageMediaExternalDocument

    -

    Secure passport file, for more info see the passport docs »

    +

    Non-e2e documented forwarded from non-secret chat

    -
    secureFile#e0277a62 id:long access_hash:long size:int dc_id:int date:int file_hash:bytes secret:bytes = SecureFile;

    +
    ===23===
    +decryptedMessageMediaExternalDocument#fa95b0dd id:long access_hash:long date:int mime_type:string size:int thumb:PhotoSize dc_id:int attributes:Vector<DocumentAttribute> = DecryptedMessageMedia;

    Parameters

    @@ -66,17 +67,32 @@ - + - + + + + + + + + + + + - + + + + + + @@ -84,27 +100,14 @@ - - - - - - - - - - - - - + + +
    id longIDDocument ID
    access_hash longAccess hashaccess hash
    dateintDate
    mime_typestringMime type
    size intFile sizeSize
    thumbPhotoSizeThumbnail
    dc_idDC ID
    dateintDate of upload
    file_hashbytesFile hash
    secretbytesSecretattributesVector<DocumentAttribute>Attributes for media types

    Type

    -

    SecureFile

    -

    Related pages

    -

    Telegram Passport Manual

    -

    Telegram Passport Encryption Details

    +

    DecryptedMessageMedia

    diff --git a/data/core.telegram.org/constructor/decryptedMessageMediaWebPage.html b/data/core.telegram.org/constructor/decryptedMessageMediaWebPage.html new file mode 100644 index 0000000000..e312bd108f --- /dev/null +++ b/data/core.telegram.org/constructor/decryptedMessageMediaWebPage.html @@ -0,0 +1,148 @@ + + + + + decryptedMessageMediaWebPage + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    decryptedMessageMediaWebPage

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/disabledFeature.html b/data/core.telegram.org/constructor/disabledFeature.html deleted file mode 100644 index 45f9a9498a..0000000000 --- a/data/core.telegram.org/constructor/disabledFeature.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - disabledFeature - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    disabledFeature

    - - - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/document.html b/data/core.telegram.org/constructor/document.html new file mode 100644 index 0000000000..fe468ceb8b --- /dev/null +++ b/data/core.telegram.org/constructor/document.html @@ -0,0 +1,200 @@ + + + + + document + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    document

    + +

    Document

    +

    +
    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;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    idlongDocument ID
    access_hashlongCheck sum, dependant on document ID
    file_referencebytesFile reference
    dateintCreation date
    mime_typestringMIME type
    sizeintSize
    thumbsflags.0?Vector<PhotoSize>Thumbnails
    video_thumbsflags.1?Vector<VideoSize>Video thumbnails
    dc_idintDC ID
    attributesVector<DocumentAttribute>Attributes
    +

    Type

    +

    Document

    +

    Related pages

    +

    File references

    +

    How to handle file references.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/documentAttributeAnimated.html b/data/core.telegram.org/constructor/documentAttributeAnimated.html new file mode 100644 index 0000000000..dfbfb04e42 --- /dev/null +++ b/data/core.telegram.org/constructor/documentAttributeAnimated.html @@ -0,0 +1,132 @@ + + + + + documentAttributeAnimated + + + + + + + + + + + + + +
    + +
    + +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/documentAttributeAudio.html b/data/core.telegram.org/constructor/documentAttributeVideo.html similarity index 84% rename from data/core.telegram.org/constructor/documentAttributeAudio.html rename to data/core.telegram.org/constructor/documentAttributeVideo.html index 891a106dea..06a0b7806e 100644 --- a/data/core.telegram.org/constructor/documentAttributeAudio.html +++ b/data/core.telegram.org/constructor/documentAttributeVideo.html @@ -2,12 +2,12 @@ - documentAttributeAudio + documentAttributeVideo - - + + - + @@ -36,10 +36,10 @@
    - -

    documentAttributeAudio

    + +

    documentAttributeVideo

    -

    Represents an audio file

    +

    Defines a video

    -
    documentAttributeAudio#9852f9c6 flags:# voice:flags.10?true duration:int title:flags.0?string performer:flags.1?string waveform:flags.2?bytes = DocumentAttribute;

    +
    documentAttributeVideo#ef02ce6 flags:# round_message:flags.0?true supports_streaming:flags.1?true duration:int w:int h:int = DocumentAttribute;

    Parameters

    @@ -69,9 +69,14 @@ - - - + + + + + + + + @@ -79,19 +84,14 @@ - - - + + + - - - - - - - - + + +
    Flags, see TL conditional fields
    voiceflags.10?trueWhether this is a voice messageround_messageflags.0?trueWhether this is a round video
    supports_streamingflags.1?trueWhether the video supports streaming
    durationDuration in seconds
    titleflags.0?stringName of songwintVideo width
    performerflags.1?stringPerformer
    waveformflags.2?bytesWaveformhintVideo height
    diff --git a/data/core.telegram.org/constructor/documentEmpty.html b/data/core.telegram.org/constructor/documentEmpty.html new file mode 100644 index 0000000000..b9b690343d --- /dev/null +++ b/data/core.telegram.org/constructor/documentEmpty.html @@ -0,0 +1,147 @@ + + + + + documentEmpty + + + + + + + + + + + + + +
    + + + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/webPageNotModified.html b/data/core.telegram.org/constructor/draftMessageEmpty.html similarity index 89% rename from data/core.telegram.org/constructor/webPageNotModified.html rename to data/core.telegram.org/constructor/draftMessageEmpty.html index e7a1c86498..f9aadc2853 100644 --- a/data/core.telegram.org/constructor/webPageNotModified.html +++ b/data/core.telegram.org/constructor/draftMessageEmpty.html @@ -2,12 +2,12 @@ - webPageNotModified + draftMessageEmpty - - + + - + @@ -36,10 +36,10 @@
    - -

    webPageNotModified

    + +

    draftMessageEmpty

    -

    The preview of the webpage hasn't changed

    +

    Empty draft

    -
    webPageNotModified#7311ca11 flags:# cached_page_views:flags.0?int = WebPage;

    +
    draftMessageEmpty#1b0c841a flags:# date:flags.0?int = DraftMessage;

    Parameters

    @@ -69,14 +69,14 @@ - + - +
    Flags, see TL conditional fields
    cached_page_viewsdate flags.0?intPage view countWhen was the draft last updated

    Type

    -

    WebPage

    +

    DraftMessage

    diff --git a/data/core.telegram.org/constructor/inputThemeSlug.html b/data/core.telegram.org/constructor/emojiLanguage.html similarity index 91% rename from data/core.telegram.org/constructor/inputThemeSlug.html rename to data/core.telegram.org/constructor/emojiLanguage.html index 51be2ac4fd..2e16892867 100644 --- a/data/core.telegram.org/constructor/inputThemeSlug.html +++ b/data/core.telegram.org/constructor/emojiLanguage.html @@ -2,12 +2,12 @@ - inputThemeSlug + emojiLanguage - - + + - + @@ -36,10 +36,10 @@
    - -

    inputThemeSlug

    + +

    emojiLanguage

    -

    Theme by theme ID

    +

    Emoji language

    -
    inputThemeSlug#f5890df1 slug:string = InputTheme;

    +
    emojiLanguage#b3fb5361 lang_code:string = EmojiLanguage;

    Parameters

    @@ -64,14 +64,14 @@ - + - +
    sluglang_code stringUnique theme IDLanguage code

    Type

    -

    InputTheme

    +

    EmojiLanguage

    diff --git a/data/core.telegram.org/constructor/encryptedChatWaiting.html b/data/core.telegram.org/constructor/encryptedChat.html similarity index 85% rename from data/core.telegram.org/constructor/encryptedChatWaiting.html rename to data/core.telegram.org/constructor/encryptedChat.html index ec8b1ed959..0a9b51649b 100644 --- a/data/core.telegram.org/constructor/encryptedChatWaiting.html +++ b/data/core.telegram.org/constructor/encryptedChat.html @@ -2,12 +2,12 @@ - encryptedChatWaiting + encryptedChat - - + + - + @@ -36,10 +36,10 @@
    - -

    encryptedChatWaiting

    + +

    encryptedChat

    -

    Chat waiting for approval of second participant.

    +

    Encrypted chat

    -
    encryptedChatWaiting#3bf703dc id:int access_hash:long date:int admin_id:int participant_id:int = EncryptedChat;

    +
    encryptedChat#fa56ce36 id:int access_hash:long date:int admin_id:int participant_id:int g_a_or_b:bytes key_fingerprint:long = EncryptedChat;

    Parameters

    @@ -71,12 +71,12 @@ - + - + @@ -86,7 +86,17 @@ - + + + + + + + + + + +
    access_hash longChecking sum depending on user IDCheck sum dependant on the user ID
    date intDate of chat creationDate chat was created
    admin_id
    participant_id intID of second chat participantID of the second chat participant
    g_a_or_bbytesB = g ^ b mod p, if the currently authorized user is the chat's creator,
    or A = g ^ a mod p otherwise
    See Wikipedia for more info
    key_fingerprintlong64-bit fingerprint of received key
    diff --git a/data/core.telegram.org/constructor/inputPeerChat.html b/data/core.telegram.org/constructor/encryptedChatDiscarded.html similarity index 90% rename from data/core.telegram.org/constructor/inputPeerChat.html rename to data/core.telegram.org/constructor/encryptedChatDiscarded.html index 558896fbf6..72bbcae260 100644 --- a/data/core.telegram.org/constructor/inputPeerChat.html +++ b/data/core.telegram.org/constructor/encryptedChatDiscarded.html @@ -2,12 +2,12 @@ - inputPeerChat + encryptedChatDiscarded - - + + - + @@ -36,10 +36,10 @@
    - -

    inputPeerChat

    + +

    encryptedChatDiscarded

    -

    Defines a chat for further interaction.

    +

    Discarded or deleted chat.

    -
    inputPeerChat#179be863 chat_id:int = InputPeer;

    +
    encryptedChatDiscarded#13d6dd27 id:int = EncryptedChat;

    Parameters

    @@ -64,14 +64,14 @@ - + - +
    chat_idid intChat idientifierChat ID

    Type

    -

    InputPeer

    +

    EncryptedChat

    diff --git a/data/core.telegram.org/constructor/chatOnlines.html b/data/core.telegram.org/constructor/encryptedChatEmpty.html similarity index 90% rename from data/core.telegram.org/constructor/chatOnlines.html rename to data/core.telegram.org/constructor/encryptedChatEmpty.html index 6f41ce1855..43c03a7b62 100644 --- a/data/core.telegram.org/constructor/chatOnlines.html +++ b/data/core.telegram.org/constructor/encryptedChatEmpty.html @@ -2,12 +2,12 @@ - chatOnlines + encryptedChatEmpty - - + + - + @@ -36,10 +36,10 @@
    - -

    chatOnlines

    + +

    encryptedChatEmpty

    -

    Number of online users in a chat

    +

    Empty constructor.

    -
    chatOnlines#f041e250 onlines:int = ChatOnlines;

    +
    encryptedChatEmpty#ab7ec0a0 id:int = EncryptedChat;

    Parameters

    @@ -64,14 +64,14 @@ - + - +
    onlinesid intNumber of online usersChat ID

    Type

    -

    ChatOnlines

    +

    EncryptedChat

    diff --git a/data/core.telegram.org/constructor/encryptedChatRequested.html b/data/core.telegram.org/constructor/encryptedChatRequested.html new file mode 100644 index 0000000000..e1580a0f91 --- /dev/null +++ b/data/core.telegram.org/constructor/encryptedChatRequested.html @@ -0,0 +1,185 @@ + + + + + encryptedChatRequested + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    encryptedChatRequested

    + +

    Request to create an encrypted chat.

    +

    +
    encryptedChatRequested#62718a82 flags:# folder_id:flags.0?int id:int access_hash:long date:int admin_id:int participant_id:int g_a:bytes = EncryptedChat;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    folder_idflags.0?intPeer folder ID, for more info click here
    idintChat ID
    access_hashlongCheck sum depending on user ID
    dateintChat creation date
    admin_idintChat creator ID
    participant_idintID of second chat participant
    g_abytesA = g ^ a mod p, see Wikipedia
    +

    Type

    +

    EncryptedChat

    +

    Related pages

    +

    Folders

    +

    Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/fileLocation.html b/data/core.telegram.org/constructor/encryptedFile.html similarity index 86% rename from data/core.telegram.org/constructor/fileLocation.html rename to data/core.telegram.org/constructor/encryptedFile.html index f9bf845025..cac1023d61 100644 --- a/data/core.telegram.org/constructor/fileLocation.html +++ b/data/core.telegram.org/constructor/encryptedFile.html @@ -2,32 +2,12 @@ - fileLocation + encryptedFile - - + + - + @@ -56,10 +36,10 @@ Server…">
    - -

    fileLocation

    + +

    encryptedFile

    -

    File location.

    +

    Encrypted file.

    -
    Constructor schema is available as of layer 86. Switch »

    +
    encryptedFile#4a70994c id:long access_hash:long size:int dc_id:int key_fingerprint:int = EncryptedFile;

    Parameters

    @@ -84,29 +64,34 @@ Server…"> - - - - - - + - - - - - - + - + + + + + + + + + + + + + + + +
    dc_idintNumber of the data center holding the file
    volume_idid longServer volume
    local_idint File ID
    secretaccess_hash longChecksum to access the fileChecking sum depending on user ID
    sizeintFile size in bytes
    dc_idintNumber of data centre
    key_fingerprintint32-bit fingerprint of key used for file encryption

    Type

    -

    FileLocation

    +

    EncryptedFile

    diff --git a/data/core.telegram.org/constructor/updateReadHistoryOutbox.html b/data/core.telegram.org/constructor/encryptedMessageService.html similarity index 82% rename from data/core.telegram.org/constructor/updateReadHistoryOutbox.html rename to data/core.telegram.org/constructor/encryptedMessageService.html index be1b2578b0..8b2d38076b 100644 --- a/data/core.telegram.org/constructor/updateReadHistoryOutbox.html +++ b/data/core.telegram.org/constructor/encryptedMessageService.html @@ -2,12 +2,12 @@ - updateReadHistoryOutbox + encryptedMessageService - - + + - + @@ -36,10 +36,10 @@
    - -

    updateReadHistoryOutbox

    + +

    encryptedMessageService

    -

    Outgoing messages were read

    +

    Encrypted service message

    -
    updateReadHistoryOutbox#2f2f21bf peer:Peer max_id:int pts:int pts_count:int = Update;

    +
    encryptedMessageService#23734b06 random_id:long chat_id:int date:int bytes:bytes = EncryptedMessage;

    Parameters

    @@ -64,32 +64,32 @@ - - - + + + - + - + - + - + - - - + + +
    peerPeerPeerrandom_idlongRandom message ID, assigned by the author of message
    max_idchat_id intMaximum ID of read outgoing messagesID of encrypted chat
    ptsdate intEvent count after generationDate of sending
    pts_countintNumber of events that were generatedbytesbytesTL-serialising of DecryptedMessage type, encrypted with the key creatied at stage of chat initialization

    Type

    -

    Update

    +

    EncryptedMessage

    Related pages

    -

    Working with Updates

    -

    How to subscribe to updates and handle them properly.

    +

    DecryptedMessage

    +

    Object describes the contents of an encrypted message.

    diff --git a/data/core.telegram.org/constructor/inputDialogPeerFolder.html b/data/core.telegram.org/constructor/folderPeer.html similarity index 91% rename from data/core.telegram.org/constructor/inputDialogPeerFolder.html rename to data/core.telegram.org/constructor/folderPeer.html index 1171e953b5..16e3e9dc8c 100644 --- a/data/core.telegram.org/constructor/inputDialogPeerFolder.html +++ b/data/core.telegram.org/constructor/folderPeer.html @@ -2,12 +2,12 @@ - inputDialogPeerFolder + folderPeer - - + + - + @@ -36,10 +36,10 @@
    - -

    inputDialogPeerFolder

    + +

    folderPeer

    -

    All peers in a peer folder

    +

    Peer in a folder

    -
    inputDialogPeerFolder#64600527 folder_id:int = InputDialogPeer;

    +
    folderPeer#e9baa668 peer:Peer folder_id:int = FolderPeer;

    Parameters

    @@ -64,6 +64,11 @@ + + + + + @@ -71,7 +76,7 @@
    peerPeerFolder peer info
    folder_id int Peer folder ID, for more info click here

    Type

    -

    InputDialogPeer

    +

    FolderPeer

    Related pages

    Folders

    Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.

    diff --git a/data/core.telegram.org/constructor/help.termsOfService b/data/core.telegram.org/constructor/help.deepLinkInfo similarity index 82% rename from data/core.telegram.org/constructor/help.termsOfService rename to data/core.telegram.org/constructor/help.deepLinkInfo index 5cea618eb5..0ec33aaa43 100644 --- a/data/core.telegram.org/constructor/help.termsOfService +++ b/data/core.telegram.org/constructor/help.deepLinkInfo @@ -2,12 +2,12 @@ - help.termsOfService + help.deepLinkInfo - - + + - + @@ -36,10 +36,10 @@
    - -

    help.termsOfService

    + +

    help.deepLinkInfo

    -

    Info about the latest telegram Terms Of Service

    +

    Deep linking info

    -
    help.termsOfService#780a0310 flags:# popup:flags.0?true id:DataJSON text:string entities:Vector<MessageEntity> min_age_confirm:flags.1?int = help.TermsOfService;

    +
    help.deepLinkInfo#6a4ee832 flags:# update_app:flags.0?true message:string entities:flags.1?Vector<MessageEntity> = help.DeepLinkInfo;

    Parameters

    @@ -69,34 +69,24 @@ - + - + - - - - - - + - + - + - - - - -
    Flags, see TL conditional fields
    popupupdate_app flags.0?trueWhether a prompt must be showed to the user, in order to accept the new terms.An update of the app is required to parse this link
    idDataJSONID of the new terms
    textmessage stringText of the new termsMessage to show to the user
    entitiesVector<MessageEntity>flags.1?Vector<MessageEntity> Message entities for styled text
    min_age_confirmflags.1?intMinimum age required to sign up to telegram, the user must confirm that they is older than the minimum age.

    Type

    -

    help.TermsOfService

    +

    help.DeepLinkInfo

    Related pages

    Styled text with message entities

    How to create styled text with message entities

    diff --git a/data/core.telegram.org/constructor/help.passportConfigNotModified b/data/core.telegram.org/constructor/help.passportConfigNotModified deleted file mode 100644 index 6aebd7523e..0000000000 --- a/data/core.telegram.org/constructor/help.passportConfigNotModified +++ /dev/null @@ -1,132 +0,0 @@ - - - - - help.passportConfigNotModified - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    help.passportConfigNotModified

    - - - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/accountDaysTTL.html b/data/core.telegram.org/constructor/help.promoDataEmpty similarity index 89% rename from data/core.telegram.org/constructor/accountDaysTTL.html rename to data/core.telegram.org/constructor/help.promoDataEmpty index 11f289125a..bdc2f99481 100644 --- a/data/core.telegram.org/constructor/accountDaysTTL.html +++ b/data/core.telegram.org/constructor/help.promoDataEmpty @@ -2,12 +2,12 @@ - accountDaysTTL + help.promoDataEmpty - - + + - + @@ -36,10 +36,10 @@
    - -

    accountDaysTTL

    + +

    help.promoDataEmpty

    -

    Time to live in days of the current account

    +

    No PSA/MTProxy info is available

    -
    accountDaysTTL#b8d0afdf days:int = AccountDaysTTL;

    +
    help.promoDataEmpty#98f6ac75 expires:int = help.PromoData;

    Parameters

    @@ -64,14 +64,14 @@ - + - +
    daysexpires intThis account will self-destruct in the specified number of daysRe-fetch PSA/MTProxy info after the specified number of seconds

    Type

    -

    AccountDaysTTL

    +

    help.PromoData

    diff --git a/data/core.telegram.org/constructor/help.termsOfServiceUpdateEmpty b/data/core.telegram.org/constructor/help.termsOfServiceUpdateEmpty deleted file mode 100644 index dfd91f34c2..0000000000 --- a/data/core.telegram.org/constructor/help.termsOfServiceUpdateEmpty +++ /dev/null @@ -1,150 +0,0 @@ - - - - - help.termsOfServiceUpdateEmpty - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    help.termsOfServiceUpdateEmpty

    - -

    No changes were made to telegram's terms of service

    -

    -
    help.termsOfServiceUpdateEmpty#e3309f7f expires:int = help.TermsOfServiceUpdate;

    -

    Parameters

    - - - - - - - - - - - - - - - -
    NameTypeDescription
    expiresintNew TOS updates will have to be queried using help.getTermsOfServiceUpdate in expires seconds
    -

    Type

    -

    help.TermsOfServiceUpdate

    -

    Related pages

    -

    help.getTermsOfServiceUpdate

    -

    Look for updates of telegram's terms of service

    - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/method/help.editUserInfo b/data/core.telegram.org/constructor/help.userInfo similarity index 84% rename from data/core.telegram.org/method/help.editUserInfo rename to data/core.telegram.org/constructor/help.userInfo index 6ced463b81..139b469803 100644 --- a/data/core.telegram.org/method/help.editUserInfo +++ b/data/core.telegram.org/constructor/help.userInfo @@ -2,10 +2,10 @@ - help.editUserInfo + help.userInfo - + @@ -26,9 +26,9 @@
  • Home
  • -
  • API
  • +
  • API
  • Protocol
  • -
  • Schema
  • +
  • Schema
  • @@ -36,8 +36,8 @@
    - -

    help.editUserInfo

    + +

    help.userInfo

    Internal use

    @@ -52,10 +52,7 @@
    -
    help.userInfoEmpty#f3ae2eed = help.UserInfo;
    -help.userInfo#1eb3758 message:string entities:Vector<MessageEntity> author:string date:int = help.UserInfo;
    ----functions---
    -help.editUserInfo#66b91b70 user_id:InputUser message:string entities:Vector<MessageEntity> = help.UserInfo;

    +
    help.userInfo#1eb3758 message:string entities:Vector<MessageEntity> author:string date:int = help.UserInfo;

    Parameters

    @@ -67,23 +64,28 @@ - - - - - - + + + + + + + + + + +
    user_idInputUserUser
    message stringMessageInfo
    entities Vector<MessageEntity> Message entities for styled text
    authorstringAuthor
    dateintDate
    -

    Result

    +

    Type

    help.UserInfo

    Related pages

    Styled text with message entities

    diff --git a/data/core.telegram.org/constructor/inputPeerUser.html b/data/core.telegram.org/constructor/importedContact.html similarity index 87% rename from data/core.telegram.org/constructor/inputPeerUser.html rename to data/core.telegram.org/constructor/importedContact.html index 07071ee6a0..fcf6fa35b1 100644 --- a/data/core.telegram.org/constructor/inputPeerUser.html +++ b/data/core.telegram.org/constructor/importedContact.html @@ -2,12 +2,12 @@ - inputPeerUser + importedContact - - + + - + @@ -36,10 +36,10 @@
    - -

    inputPeerUser

    + +

    importedContact

    -

    Defines a user for further interaction.

    +

    Successfully imported contact.

    -
    inputPeerUser#7b8e7de6 user_id:int access_hash:long = InputPeer;

    +
    importedContact#d0028438 user_id:int client_id:long = ImportedContact;

    Parameters

    @@ -69,17 +69,17 @@ - + - +
    User identifier
    access_hashclient_id longaccess_hash value from the user constructorThe contact's client identifier (passed to one of the InputContact constructors)

    Type

    -

    InputPeer

    +

    ImportedContact

    Related pages

    -

    user

    -

    Indicates info about a certain user

    +

    InputContact

    +

    Object defines a contact from the user's phonebook.

    diff --git a/data/core.telegram.org/constructor/inputBotInlineMessageMediaAuto.html b/data/core.telegram.org/constructor/inputBotInlineMessageMediaAuto.html new file mode 100644 index 0000000000..3e07227ed5 --- /dev/null +++ b/data/core.telegram.org/constructor/inputBotInlineMessageMediaAuto.html @@ -0,0 +1,165 @@ + + + + + inputBotInlineMessageMediaAuto + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputBotInlineMessageMediaAuto

    + +

    A media

    +

    +
    inputBotInlineMessageMediaAuto#3380c786 flags:# message:string entities:flags.1?Vector<MessageEntity> reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    messagestringCaption
    entitiesflags.1?Vector<MessageEntity>Message entities for styled text
    reply_markupflags.2?ReplyMarkupInline keyboard
    +

    Type

    +

    InputBotInlineMessage

    +

    Related pages

    +

    Styled text with message entities

    +

    How to create styled text with message entities

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputChatUploadedPhoto.html b/data/core.telegram.org/constructor/inputBotInlineMessageMediaGeo.html similarity index 77% rename from data/core.telegram.org/constructor/inputChatUploadedPhoto.html rename to data/core.telegram.org/constructor/inputBotInlineMessageMediaGeo.html index bf008426c4..ca05cefc23 100644 --- a/data/core.telegram.org/constructor/inputChatUploadedPhoto.html +++ b/data/core.telegram.org/constructor/inputBotInlineMessageMediaGeo.html @@ -2,12 +2,12 @@ - inputChatUploadedPhoto + inputBotInlineMessageMediaGeo - - + + - + @@ -36,10 +36,10 @@
    - -

    inputChatUploadedPhoto

    + +

    inputBotInlineMessageMediaGeo

    -

    New photo to be set as group profile photo.

    +

    Geolocation

    -
    inputChatUploadedPhoto#c642724e flags:# file:flags.0?InputFile video:flags.1?InputFile video_start_ts:flags.2?double = InputChatPhoto;

    +
    inputBotInlineMessageMediaGeo#96929a85 flags:# geo_point:InputGeoPoint heading:flags.0?int period:flags.1?int proximity_notification_radius:flags.3?int reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage;

    Parameters

    @@ -69,27 +69,37 @@ - - - + + + - - - + + + - - - + + + + + + + + + + + + +
    Flags, see TL conditional fields
    fileflags.0?InputFileFile saved in parts using the method upload.saveFilePartgeo_pointInputGeoPointGeolocation
    videoflags.1?InputFileSquare video for animated profile pictureheadingflags.0?intFor live locations, a direction in which the location moves, in degrees; 1-360
    video_start_tsflags.2?doubleTimestamp that should be shown as static preview to the user (seconds)periodflags.1?intValidity period
    proximity_notification_radiusflags.3?intFor live locations, a maximum distance to another chat member for proximity alerts, in meters (0-100000)
    reply_markupflags.2?ReplyMarkupReply markup for bot/inline keyboards

    Type

    -

    InputChatPhoto

    +

    InputBotInlineMessage

    Related pages

    -

    upload.saveFilePart

    -

    Saves a part of file for futher sending to one of the methods.

    +

    Live geolocation

    +

    Telegram allows sending the live geolocation of a user in a chat, optionally setting a proximity alert.

    diff --git a/data/core.telegram.org/constructor/postAddress.html b/data/core.telegram.org/constructor/inputBotInlineMessageMediaVenue.html similarity index 79% rename from data/core.telegram.org/constructor/postAddress.html rename to data/core.telegram.org/constructor/inputBotInlineMessageMediaVenue.html index ef865ba13d..bbc302623a 100644 --- a/data/core.telegram.org/constructor/postAddress.html +++ b/data/core.telegram.org/constructor/inputBotInlineMessageMediaVenue.html @@ -2,12 +2,12 @@ - postAddress + inputBotInlineMessageMediaVenue - - + + - + @@ -36,10 +36,10 @@
    - -

    postAddress

    + +

    inputBotInlineMessageMediaVenue

    -

    Shipping address

    +

    Venue

    -
    postAddress#1e8caaeb street_line1:string street_line2:string city:string state:string country_iso2:string post_code:string = PostAddress;

    +
    inputBotInlineMessageMediaVenue#417bbf11 flags:# geo_point:InputGeoPoint title:string address:string provider:string venue_id:string venue_type:string reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage;

    Parameters

    @@ -64,39 +64,49 @@ - - - + + + - - - + + + - + - + - + - + - + - + - + - + + + + + + + + + + +
    street_line1stringFirst line for the addressflags#Flags, see TL conditional fields
    street_line2stringSecond line for the addressgeo_pointInputGeoPointGeolocation
    citytitle stringCityVenue name
    stateaddress stringState, if applicable (empty otherwise)Address
    country_iso2provider stringISO 3166-1 alpha-2 country codeVenue provider: currently only "foursquare" needs to be supported
    post_codevenue_id stringAddress post codeVenue ID in the provider's database
    venue_typestringVenue type in the provider's database
    reply_markupflags.2?ReplyMarkupInline keyboard

    Type

    -

    PostAddress

    +

    InputBotInlineMessage

    diff --git a/data/core.telegram.org/constructor/botInlineResult.html b/data/core.telegram.org/constructor/inputBotInlineResultDocument.html similarity index 82% rename from data/core.telegram.org/constructor/botInlineResult.html rename to data/core.telegram.org/constructor/inputBotInlineResultDocument.html index c47f13cc64..99c3bba4c9 100644 --- a/data/core.telegram.org/constructor/botInlineResult.html +++ b/data/core.telegram.org/constructor/inputBotInlineResultDocument.html @@ -2,12 +2,12 @@ - botInlineResult + inputBotInlineResultDocument - - + + - + @@ -36,10 +36,10 @@
    - -

    botInlineResult

    + +

    inputBotInlineResultDocument

    -

    Generic result

    +

    Document (media of any type except for photos)

    -
    botInlineResult#11965f3a flags:# id:string type:string title:flags.1?string description:flags.2?string url:flags.3?string thumb:flags.4?WebDocument content:flags.5?WebDocument send_message:BotInlineMessage = BotInlineResult;

    +
    inputBotInlineResultDocument#fff8fdc4 flags:# id:string type:string title:flags.1?string description:flags.2?string document:InputDocument send_message:InputBotInlineMessage = InputBotInlineResult;

    Parameters

    @@ -89,29 +89,19 @@ - - - - - - - - - - - - - + + + - - + +
    Result description
    urlflags.3?stringURL of article or webpage
    thumbflags.4?WebDocumentThumbnail for the result
    contentflags.5?WebDocumentContent of the resultdocumentInputDocumentDocument to send
    send_messageBotInlineMessageMessage to sendInputBotInlineMessageMessage to send when the result is selected

    Type

    -

    BotInlineResult

    +

    InputBotInlineResult

    Related pages

    Telegram Bot API

    diff --git a/data/core.telegram.org/constructor/inputBotInlineResultGame.html b/data/core.telegram.org/constructor/inputBotInlineResultGame.html new file mode 100644 index 0000000000..d8f81c0794 --- /dev/null +++ b/data/core.telegram.org/constructor/inputBotInlineResultGame.html @@ -0,0 +1,157 @@ + + + + + inputBotInlineResultGame + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputBotInlineResultGame

    + +

    Game

    +

    +
    inputBotInlineResultGame#4fa417f2 id:string short_name:string send_message:InputBotInlineMessage = InputBotInlineResult;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    idstringResult ID
    short_namestringGame short name
    send_messageInputBotInlineMessageMessage to send when the result is selected
    +

    Type

    +

    InputBotInlineResult

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/photoPathSize.html b/data/core.telegram.org/constructor/inputBotInlineResultPhoto.html similarity index 82% rename from data/core.telegram.org/constructor/photoPathSize.html rename to data/core.telegram.org/constructor/inputBotInlineResultPhoto.html index 516cf9463d..027673aebe 100644 --- a/data/core.telegram.org/constructor/photoPathSize.html +++ b/data/core.telegram.org/constructor/inputBotInlineResultPhoto.html @@ -2,12 +2,12 @@ - photoPathSize + inputBotInlineResultPhoto - - + + - + @@ -36,10 +36,10 @@
    - -

    photoPathSize

    + +

    inputBotInlineResultPhoto

    -

    Messages with animated stickers can have a compressed svg (< 300 bytes) to show the outline of the sticker before fetching the actual lottie animation.

    +

    Photo

    -
    photoPathSize#d8214d41 type:string bytes:bytes = PhotoSize;

    +
    inputBotInlineResultPhoto#a8d864a7 id:string type:string photo:InputPhoto send_message:InputBotInlineMessage = InputBotInlineResult;

    Parameters

    @@ -64,22 +64,31 @@ - + - + - - - + + + + + + + + + + + + +
    typeid stringAlways jResult ID
    bytesbytesCompressed SVG path payload, see here for decompression instructionstypestringResult type (see bot API docs)
    photoInputPhotoPhoto to send
    send_messageInputBotInlineMessageMessage to send when the result is selected

    Type

    -

    PhotoSize

    +

    InputBotInlineResult

    Related pages

    -

    Uploading and Downloading Files

    -

    How to transfer large data batches correctly.

    +

    Telegram Bot API

    diff --git a/data/core.telegram.org/constructor/inputClientProxy.html b/data/core.telegram.org/constructor/inputClientProxy.html new file mode 100644 index 0000000000..a2dbe17739 --- /dev/null +++ b/data/core.telegram.org/constructor/inputClientProxy.html @@ -0,0 +1,154 @@ + + + + + inputClientProxy + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputClientProxy

    + +

    Info about an MTProxy used to connect.

    +

    +
    inputClientProxy#75588b3f address:string port:int = InputClientProxy;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    addressstringProxy address
    portintProxy port
    +

    Type

    +

    InputClientProxy

    +

    Related pages

    +

    MTProto transports

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/privacyValueAllowAll.html b/data/core.telegram.org/constructor/inputDocumentEmpty.html similarity index 91% rename from data/core.telegram.org/constructor/privacyValueAllowAll.html rename to data/core.telegram.org/constructor/inputDocumentEmpty.html index 2519224637..dec99d82eb 100644 --- a/data/core.telegram.org/constructor/privacyValueAllowAll.html +++ b/data/core.telegram.org/constructor/inputDocumentEmpty.html @@ -2,12 +2,12 @@ - privacyValueAllowAll + inputDocumentEmpty - - + + - + @@ -36,10 +36,10 @@
    - -

    privacyValueAllowAll

    + +

    inputDocumentEmpty

    -

    Allow all users

    +

    Empty constructor.

    -
    privacyValueAllowAll#65427b82 = PrivacyRule;

    +
    inputDocumentEmpty#72f0eaae = InputDocument;

    Parameters

    This constructor does not require any parameters.

    Type

    -

    PrivacyRule

    +

    InputDocument

    diff --git a/data/core.telegram.org/constructor/inputEncryptedChat.html b/data/core.telegram.org/constructor/inputEncryptedChat.html new file mode 100644 index 0000000000..a34e8990f4 --- /dev/null +++ b/data/core.telegram.org/constructor/inputEncryptedChat.html @@ -0,0 +1,159 @@ + + + + + inputEncryptedChat + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputEncryptedChat

    + +

    Creates an encrypted chat.

    +

    +
    inputEncryptedChat#f141b5e1 chat_id:int access_hash:long = InputEncryptedChat;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    chat_idintChat ID
    access_hashlongChecking sum from constructor encryptedChat, encryptedChatWaiting or encryptedChatRequested
    +

    Type

    +

    InputEncryptedChat

    +

    Related pages

    +

    encryptedChat

    +

    Encrypted chat

    +

    encryptedChatWaiting

    +

    Chat waiting for approval of second participant.

    +

    encryptedChatRequested

    +

    Request to create an encrypted chat.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputEncryptedFileUploaded.html b/data/core.telegram.org/constructor/inputEncryptedFileUploaded.html new file mode 100644 index 0000000000..40deccc4db --- /dev/null +++ b/data/core.telegram.org/constructor/inputEncryptedFileUploaded.html @@ -0,0 +1,162 @@ + + + + + inputEncryptedFileUploaded + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputEncryptedFileUploaded

    + +

    Sets new encrypted file saved by parts using upload.saveFilePart method.

    +

    +
    inputEncryptedFileUploaded#64bd0306 id:long parts:int md5_checksum:string key_fingerprint:int = InputEncryptedFile;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    idlongRandom file ID created by clien
    partsintNumber of saved parts
    md5_checksumstringIn case md5-HASH of the (already encrypted) file was transmitted, file content will be checked prior to use
    key_fingerprintint32-bit fingerprint of the key used to encrypt a file
    +

    Type

    +

    InputEncryptedFile

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputFileBig.html b/data/core.telegram.org/constructor/inputFileBig.html new file mode 100644 index 0000000000..67cd90696b --- /dev/null +++ b/data/core.telegram.org/constructor/inputFileBig.html @@ -0,0 +1,160 @@ + + + + + inputFileBig + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputFileBig

    + +

    Assigns a big file (over 10Mb in size), saved in part using the method upload.saveBigFilePart.

    +

    +
    inputFileBig#fa4f0bb5 id:long parts:int name:string = InputFile;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    idlongRandom file id, created by the client
    partsintNumber of parts saved
    namestringFull file name
    +

    Type

    +

    InputFile

    +

    Related pages

    +

    upload.saveBigFilePart

    +

    Saves a part of a large file (over 10Mb in size) to be later passed to one of the methods.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputFileLocation.html b/data/core.telegram.org/constructor/inputFileLocation.html new file mode 100644 index 0000000000..b629d88554 --- /dev/null +++ b/data/core.telegram.org/constructor/inputFileLocation.html @@ -0,0 +1,165 @@ + + + + + inputFileLocation + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputFileLocation

    + +

    DEPRECATED location of a photo

    +

    +
    inputFileLocation#dfdaabe1 volume_id:long local_id:int secret:long file_reference:bytes = InputFileLocation;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    volume_idlongServer volume
    local_idintFile identifier
    secretlongCheck sum to access the file
    file_referencebytesFile reference
    +

    Type

    +

    InputFileLocation

    +

    Related pages

    +

    File references

    +

    How to handle file references.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputChannel.html b/data/core.telegram.org/constructor/inputGameID.html similarity index 87% rename from data/core.telegram.org/constructor/inputChannel.html rename to data/core.telegram.org/constructor/inputGameID.html index fc4ca89d96..d4c58c043c 100644 --- a/data/core.telegram.org/constructor/inputChannel.html +++ b/data/core.telegram.org/constructor/inputGameID.html @@ -2,12 +2,12 @@ - inputChannel + inputGameID - - + + - + @@ -36,10 +36,10 @@
    - -

    inputChannel

    + +

    inputGameID

    -

    Represents a channel

    +

    Indicates an already sent game

    -
    inputChannel#afeb712e channel_id:int access_hash:long = InputChannel;

    +
    inputGameID#32c3e77 id:long access_hash:long = InputGame;

    Parameters

    @@ -64,22 +64,22 @@ - - - + + + - +
    channel_idintChannel IDidlonggame ID from Game constructor
    access_hash longAccess hash taken from the channel constructoraccess hash from Game constructor

    Type

    -

    InputChannel

    +

    InputGame

    Related pages

    -

    channel

    -

    Channel/supergroup info

    +

    Game

    +

    Indicates an already sent game

    diff --git a/data/core.telegram.org/constructor/inputGameShortName.html b/data/core.telegram.org/constructor/inputGameShortName.html new file mode 100644 index 0000000000..189efb94ae --- /dev/null +++ b/data/core.telegram.org/constructor/inputGameShortName.html @@ -0,0 +1,152 @@ + + + + + inputGameShortName + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputGameShortName

    + +

    Game by short name

    +

    +
    inputGameShortName#c331e80a bot_id:InputUser short_name:string = InputGame;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    bot_idInputUserThe bot that provides the game
    short_namestringThe game's short name
    +

    Type

    +

    InputGame

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputStickerSetItem.html b/data/core.telegram.org/constructor/inputGeoPoint.html similarity index 85% rename from data/core.telegram.org/constructor/inputStickerSetItem.html rename to data/core.telegram.org/constructor/inputGeoPoint.html index 16e3d031c8..e3daec7d01 100644 --- a/data/core.telegram.org/constructor/inputStickerSetItem.html +++ b/data/core.telegram.org/constructor/inputGeoPoint.html @@ -2,12 +2,12 @@ - inputStickerSetItem + inputGeoPoint - - + + - + @@ -36,10 +36,10 @@
    - -

    inputStickerSetItem

    + +

    inputGeoPoint

    -

    Sticker in a stickerset

    +

    Defines a GeoPoint by its coordinates.

    -
    inputStickerSetItem#ffa0a496 flags:# document:InputDocument emoji:string mask_coords:flags.0?MaskCoords = InputStickerSetItem;

    +
    inputGeoPoint#48222faf flags:# lat:double long:double accuracy_radius:flags.0?int = InputGeoPoint;

    Parameters

    @@ -69,24 +69,24 @@ - - - + + + - - - + + + - - - + + +
    Flags, see TL conditional fields
    documentInputDocumentThe stickerlatdoubleLatitide
    emojistringAssociated emojilongdoubleLongtitude
    mask_coordsflags.0?MaskCoordsCoordinates for mask stickeraccuracy_radiusflags.0?intThe estimated horizontal accuracy of the location, in meters; as defined by the sender.

    Type

    -

    InputStickerSetItem

    +

    InputGeoPoint

    diff --git a/data/core.telegram.org/constructor/updateServiceNotification.html b/data/core.telegram.org/constructor/inputKeyboardButtonUrlAuth.html similarity index 70% rename from data/core.telegram.org/constructor/updateServiceNotification.html rename to data/core.telegram.org/constructor/inputKeyboardButtonUrlAuth.html index d36a5d76b6..573e612684 100644 --- a/data/core.telegram.org/constructor/updateServiceNotification.html +++ b/data/core.telegram.org/constructor/inputKeyboardButtonUrlAuth.html @@ -2,12 +2,12 @@ - updateServiceNotification + inputKeyboardButtonUrlAuth - - - - + + + + @@ -36,11 +36,10 @@
    - -

    updateServiceNotification

    + +

    inputKeyboardButtonUrlAuth

    -

    A service message for the user.

    -

    The app must show the message to the user upon receiving this update. In case the popup 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 777000 (Telegram Notifications).

    +

    Button to request a user to authorize via URL using Seamless Telegram Login.

    -
    updateServiceNotification#ebe46819 flags:# popup:flags.0?true inbox_date:flags.1?int type:string message:string media:MessageMedia entities:Vector<MessageEntity> = Update;

    +
    inputKeyboardButtonUrlAuth#d02e7fd4 flags:# request_write_access:flags.0?true text:string fwd_text:flags.1?string url:string bot:InputUser = KeyboardButton;

    Parameters

    @@ -70,44 +69,38 @@ - + - + - - - - - - + - + - + + + + + + - + - - - - - - - - + + +
    Flags, see TL conditional fields
    popuprequest_write_access flags.0?true(boolTrue) if the message must be displayed in a popup.Set this flag to request the permission for your bot to send messages to the user.
    inbox_dateflags.1?intWhen was the notification received
    The message must also be stored locally as part of the message history with the user id 777000 (Telegram Notifications).
    typetext stringString, identical in format and contents to the type field in API errors. Describes type of service message. It is acceptable to ignore repeated messages of the same type within a short period of time (15 minutes).Button text
    messagefwd_textflags.1?stringNew text of the button in forwarded messages.
    url stringMessage textAn 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 Receiving authorization data.
    NOTE: You must always check the hash of the received data to verify the authentication and the integrity of the data as described in Checking authorization.
    mediaMessageMediaMedia content (optional)
    entitiesVector<MessageEntity>Message entities for styled textbotInputUserUsername of a bot, which will be used for user authorization. See Setting up a bot for more details. 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 Linking your domain to the bot for more details.

    Type

    -

    Update

    +

    KeyboardButton

    Related pages

    -

    Error handling

    -

    How to handle API return errors correctly.

    -

    Styled text with message entities

    -

    How to create styled text with message entities

    +

    Telegram Login Widget

    +

    messages.acceptUrlAuth

    +

    Use this to accept a Seamless Telegram Login authorization request, for more info click here »

    diff --git a/data/core.telegram.org/constructor/inputMediaGeoLive.html b/data/core.telegram.org/constructor/inputMediaGeoLive.html new file mode 100644 index 0000000000..e849836184 --- /dev/null +++ b/data/core.telegram.org/constructor/inputMediaGeoLive.html @@ -0,0 +1,175 @@ + + + + + inputMediaGeoLive + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputMediaGeoLive

    + +

    Live geolocation

    +

    +
    inputMediaGeoLive#971fa843 flags:# stopped:flags.0?true geo_point:InputGeoPoint heading:flags.2?int period:flags.1?int proximity_notification_radius:flags.3?int = InputMedia;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    stoppedflags.0?trueWhether sending of the geolocation was stopped
    geo_pointInputGeoPointCurrent geolocation
    headingflags.2?intFor live locations, a direction in which the location moves, in degrees; 1-360.
    periodflags.1?intValidity period of the current location
    proximity_notification_radiusflags.3?intFor live locations, a maximum distance to another chat member for proximity alerts, in meters (0-100000)
    +

    Type

    +

    InputMedia

    +

    Related pages

    +

    Live geolocation

    +

    Telegram allows sending the live geolocation of a user in a chat, optionally setting a proximity alert.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputMediaGame.html b/data/core.telegram.org/constructor/inputMediaGeoPoint.html similarity index 91% rename from data/core.telegram.org/constructor/inputMediaGame.html rename to data/core.telegram.org/constructor/inputMediaGeoPoint.html index 255e2159f6..7be17f2c2c 100644 --- a/data/core.telegram.org/constructor/inputMediaGame.html +++ b/data/core.telegram.org/constructor/inputMediaGeoPoint.html @@ -2,12 +2,12 @@ - inputMediaGame + inputMediaGeoPoint - - + + - + @@ -36,10 +36,10 @@
    - -

    inputMediaGame

    + +

    inputMediaGeoPoint

    -

    A game

    +

    Map.

    -
    inputMediaGame#d33f43f3 id:InputGame = InputMedia;

    +
    inputMediaGeoPoint#f9c44144 geo_point:InputGeoPoint = InputMedia;

    Parameters

    @@ -64,9 +64,9 @@ - - - + + +
    idInputGameThe game to forwardgeo_pointInputGeoPointGeoPoint
    diff --git a/data/core.telegram.org/constructor/keyboardButtonCallback.html b/data/core.telegram.org/constructor/inputMediaInvoice.html similarity index 73% rename from data/core.telegram.org/constructor/keyboardButtonCallback.html rename to data/core.telegram.org/constructor/inputMediaInvoice.html index aa7bd59c32..fe818423e1 100644 --- a/data/core.telegram.org/constructor/keyboardButtonCallback.html +++ b/data/core.telegram.org/constructor/inputMediaInvoice.html @@ -2,12 +2,12 @@ - keyboardButtonCallback + inputMediaInvoice - - + + - + @@ -36,10 +36,10 @@
    - -

    keyboardButtonCallback

    + +

    inputMediaInvoice

    -

    Callback button

    +

    Generated invoice of a bot payment

    -
    keyboardButtonCallback#35bbdb6b flags:# requires_password:flags.0?true text:string data:bytes = KeyboardButton;

    +
    inputMediaInvoice#f4e096c3 flags:# title:string description:string photo:flags.0?InputWebDocument invoice:Invoice payload:bytes provider:string provider_data:DataJSON start_param:string = InputMedia;

    Parameters

    @@ -69,29 +69,51 @@ - - - - - - + - + - + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + +
    Flags, see TL conditional fields
    requires_passwordflags.0?trueWhether the user should verify his identity by entering his 2FA SRP parameters to the messages.getBotCallbackAnswer method. NOTE: telegram and the bot WILL NOT have access to the plaintext password, thanks to SRP. This button is mainly used by the official @botfather bot, for verifying the user's identity before transferring ownership of a bot to another user.
    texttitle stringButton textProduct name, 1-32 characters
    datadescriptionstringProduct description, 1-255 characters
    photoflags.0?InputWebDocumentURL 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.
    invoiceInvoiceThe actual invoice
    payload bytesCallback dataBot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes.
    providerstringPayments provider token, obtained via Botfather
    provider_dataDataJSONJSON-encoded 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.
    start_paramstringStart parameter

    Type

    -

    KeyboardButton

    +

    InputMedia

    Related pages

    -

    Two-factor authentication

    -

    How to login to a user's account if they have enabled 2FA, how to change password.

    -

    messages.getBotCallbackAnswer

    -

    Press an inline callback button and get a callback answer from the bot

    +

    Bot Payments API

    diff --git a/data/core.telegram.org/constructor/updatePinnedDialogs.html b/data/core.telegram.org/constructor/inputMediaUploadedPhoto.html similarity index 83% rename from data/core.telegram.org/constructor/updatePinnedDialogs.html rename to data/core.telegram.org/constructor/inputMediaUploadedPhoto.html index 2ac7b6d762..b206754e1d 100644 --- a/data/core.telegram.org/constructor/updatePinnedDialogs.html +++ b/data/core.telegram.org/constructor/inputMediaUploadedPhoto.html @@ -2,12 +2,12 @@ - updatePinnedDialogs + inputMediaUploadedPhoto - - + + - + @@ -36,10 +36,10 @@
    - -

    updatePinnedDialogs

    + +

    inputMediaUploadedPhoto

    -

    Pinned dialogs were updated

    +

    Photo

    -
    updatePinnedDialogs#fa0f3ca2 flags:# folder_id:flags.1?int order:flags.0?Vector<DialogPeer> = Update;

    +
    inputMediaUploadedPhoto#1e287d04 flags:# file:InputFile stickers:flags.0?Vector<InputDocument> ttl_seconds:flags.1?int = InputMedia;

    Parameters

    @@ -69,22 +69,27 @@ - - - + + + - - - + + + + + + + +
    Flags, see TL conditional fields
    folder_idflags.1?intPeer folder ID, for more info click herefileInputFileThe uploaded file
    orderflags.0?Vector<DialogPeer>New order of pinned dialogsstickersflags.0?Vector<InputDocument>Attached mask stickers
    ttl_secondsflags.1?intTime to live in seconds of self-destructing photo

    Type

    -

    Update

    +

    InputMedia

    Related pages

    -

    Folders

    -

    Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.

    +

    Uploading and Downloading Files

    +

    How to transfer large data batches correctly.

    diff --git a/data/core.telegram.org/constructor/inputMessageCallbackQuery.html b/data/core.telegram.org/constructor/inputMessageCallbackQuery.html new file mode 100644 index 0000000000..fc2edaba24 --- /dev/null +++ b/data/core.telegram.org/constructor/inputMessageCallbackQuery.html @@ -0,0 +1,152 @@ + + + + + inputMessageCallbackQuery + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputMessageCallbackQuery

    + +

    Used by bots for fetching information about the message that originated a callback query

    +

    +
    inputMessageCallbackQuery#acfa1a7e id:int query_id:long = InputMessage;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    idintMessage ID
    query_idlongCallback query ID
    +

    Type

    +

    InputMessage

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputMessageReplyTo.html b/data/core.telegram.org/constructor/inputMessageID.html similarity index 91% rename from data/core.telegram.org/constructor/inputMessageReplyTo.html rename to data/core.telegram.org/constructor/inputMessageID.html index dad53bc175..22913e6fa8 100644 --- a/data/core.telegram.org/constructor/inputMessageReplyTo.html +++ b/data/core.telegram.org/constructor/inputMessageID.html @@ -2,12 +2,12 @@ - inputMessageReplyTo + inputMessageID - - + + - + @@ -36,10 +36,10 @@
    - -

    inputMessageReplyTo

    + +

    inputMessageID

    -

    Message to which the specified message replies to

    +

    Message by ID

    -
    inputMessageReplyTo#bad88395 id:int = InputMessage;

    +
    inputMessageID#a676a322 id:int = InputMessage;

    Parameters

    @@ -66,7 +66,7 @@ - +
    id intID of the message that replies to the message we needMessage ID
    diff --git a/data/core.telegram.org/constructor/inputMessagesFilterContacts.html b/data/core.telegram.org/constructor/inputMessagesFilterContacts.html new file mode 100644 index 0000000000..c57c223963 --- /dev/null +++ b/data/core.telegram.org/constructor/inputMessagesFilterContacts.html @@ -0,0 +1,132 @@ + + + + + inputMessagesFilterContacts + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputMessagesFilterContacts

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputMessagesFilterEmpty.html b/data/core.telegram.org/constructor/inputMessagesFilterEmpty.html new file mode 100644 index 0000000000..d1a506c9fe --- /dev/null +++ b/data/core.telegram.org/constructor/inputMessagesFilterEmpty.html @@ -0,0 +1,132 @@ + + + + + inputMessagesFilterEmpty + + + + + + + + + + + + + +
    + + + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/help.noAppUpdate b/data/core.telegram.org/constructor/inputMessagesFilterGif.html similarity index 90% rename from data/core.telegram.org/constructor/help.noAppUpdate rename to data/core.telegram.org/constructor/inputMessagesFilterGif.html index 8a4fd1fc2e..bc12e26303 100644 --- a/data/core.telegram.org/constructor/help.noAppUpdate +++ b/data/core.telegram.org/constructor/inputMessagesFilterGif.html @@ -2,12 +2,12 @@ - help.noAppUpdate + inputMessagesFilterGif - - + + - + @@ -36,10 +36,10 @@
    - -

    help.noAppUpdate

    + +

    inputMessagesFilterGif

    -

    No updates are available for the application.

    +

    Return only messages containing gifs

    -
    help.noAppUpdate#c45a6536 = help.AppUpdate;

    +
    inputMessagesFilterGif#ffc86587 = MessagesFilter;

    Parameters

    This constructor does not require any parameters.

    Type

    -

    help.AppUpdate

    +

    MessagesFilter

    diff --git a/data/core.telegram.org/constructor/inputMessagesFilterMusic.html b/data/core.telegram.org/constructor/inputMessagesFilterMusic.html new file mode 100644 index 0000000000..7678d37b96 --- /dev/null +++ b/data/core.telegram.org/constructor/inputMessagesFilterMusic.html @@ -0,0 +1,132 @@ + + + + + inputMessagesFilterMusic + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputMessagesFilterMusic

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/updatesTooLong.html b/data/core.telegram.org/constructor/inputMessagesFilterMyMentions.html similarity index 86% rename from data/core.telegram.org/constructor/updatesTooLong.html rename to data/core.telegram.org/constructor/inputMessagesFilterMyMentions.html index 66da3e8a78..147838e562 100644 --- a/data/core.telegram.org/constructor/updatesTooLong.html +++ b/data/core.telegram.org/constructor/inputMessagesFilterMyMentions.html @@ -2,12 +2,12 @@ - updatesTooLong + inputMessagesFilterMyMentions - - + + - + @@ -36,10 +36,10 @@
    - -

    updatesTooLong

    + +

    inputMessagesFilterMyMentions

    -

    Too many updates, it is necessary to execute updates.getDifference.

    +

    Return only messages where the current user was mentioned.

    -
    updatesTooLong#e317af7e = Updates;

    +
    inputMessagesFilterMyMentions#c1f8e69a = MessagesFilter;

    Parameters

    This constructor does not require any parameters.

    Type

    -

    Updates

    +

    MessagesFilter

    Related pages

    -

    updates.getDifference

    -

    Get new updates.

    +

    Mentions

    +

    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.

    diff --git a/data/core.telegram.org/constructor/inputMessagesFilterPhoneCalls.html b/data/core.telegram.org/constructor/inputMessagesFilterPhoneCalls.html new file mode 100644 index 0000000000..6f5eece17a --- /dev/null +++ b/data/core.telegram.org/constructor/inputMessagesFilterPhoneCalls.html @@ -0,0 +1,152 @@ + + + + + inputMessagesFilterPhoneCalls + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputMessagesFilterPhoneCalls

    + +

    Return only phone calls

    +

    +
    inputMessagesFilterPhoneCalls#80c99768 flags:# missed:flags.0?true = MessagesFilter;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    missedflags.0?trueReturn only missed phone calls
    +

    Type

    +

    MessagesFilter

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/channelParticipantsBots.html b/data/core.telegram.org/constructor/inputMessagesFilterPhotos.html similarity index 90% rename from data/core.telegram.org/constructor/channelParticipantsBots.html rename to data/core.telegram.org/constructor/inputMessagesFilterPhotos.html index 2bb6268a29..748934af2f 100644 --- a/data/core.telegram.org/constructor/channelParticipantsBots.html +++ b/data/core.telegram.org/constructor/inputMessagesFilterPhotos.html @@ -2,12 +2,12 @@ - channelParticipantsBots + inputMessagesFilterPhotos - - + + - + @@ -36,10 +36,10 @@
    - -

    channelParticipantsBots

    + +

    inputMessagesFilterPhotos

    -

    Fetch only bot participants

    +

    Filter for messages containing photos.

    -
    channelParticipantsBots#b0d1865b = ChannelParticipantsFilter;

    +
    inputMessagesFilterPhotos#9609a51c = MessagesFilter;

    Parameters

    This constructor does not require any parameters.

    Type

    -

    ChannelParticipantsFilter

    +

    MessagesFilter

    diff --git a/data/core.telegram.org/constructor/channelParticipantsRecent.html b/data/core.telegram.org/constructor/inputMessagesFilterRoundVoice.html similarity index 90% rename from data/core.telegram.org/constructor/channelParticipantsRecent.html rename to data/core.telegram.org/constructor/inputMessagesFilterRoundVoice.html index a00ba54d16..d778aff556 100644 --- a/data/core.telegram.org/constructor/channelParticipantsRecent.html +++ b/data/core.telegram.org/constructor/inputMessagesFilterRoundVoice.html @@ -2,12 +2,12 @@ - channelParticipantsRecent + inputMessagesFilterRoundVoice - - + + - + @@ -36,10 +36,10 @@
    - -

    channelParticipantsRecent

    + +

    inputMessagesFilterRoundVoice

    -

    Fetch only recent participants

    +

    Return only round videos and voice notes

    -
    channelParticipantsRecent#de3f3c79 = ChannelParticipantsFilter;

    +
    inputMessagesFilterRoundVoice#7a7c17a4 = MessagesFilter;

    Parameters

    This constructor does not require any parameters.

    Type

    -

    ChannelParticipantsFilter

    +

    MessagesFilter

    diff --git a/data/core.telegram.org/constructor/inputMessagesFilterUrl.html b/data/core.telegram.org/constructor/inputMessagesFilterUrl.html new file mode 100644 index 0000000000..be3c935f14 --- /dev/null +++ b/data/core.telegram.org/constructor/inputMessagesFilterUrl.html @@ -0,0 +1,132 @@ + + + + + inputMessagesFilterUrl + + + + + + + + + + + + + +
    + +
    + +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputMediaDocumentExternal.html b/data/core.telegram.org/constructor/inputPaymentCredentials.html similarity index 86% rename from data/core.telegram.org/constructor/inputMediaDocumentExternal.html rename to data/core.telegram.org/constructor/inputPaymentCredentials.html index 8cb0f3f012..cef314919d 100644 --- a/data/core.telegram.org/constructor/inputMediaDocumentExternal.html +++ b/data/core.telegram.org/constructor/inputPaymentCredentials.html @@ -2,12 +2,12 @@ - inputMediaDocumentExternal + inputPaymentCredentials - - + + - + @@ -36,10 +36,10 @@
    - -

    inputMediaDocumentExternal

    + +

    inputPaymentCredentials

    -

    Document that will be downloaded by the telegram servers

    +

    Payment credentials

    -
    inputMediaDocumentExternal#fb52dc99 flags:# url:string ttl_seconds:flags.0?int = InputMedia;

    +
    inputPaymentCredentials#3417d728 flags:# save:flags.0?true data:DataJSON = InputPaymentCredentials;

    Parameters

    @@ -69,19 +69,19 @@ - - - + + + - - - + + +
    Flags, see TL conditional fields
    urlstringURL of the documentsaveflags.0?trueSave payment credential for future use
    ttl_secondsflags.0?intSelf-destruct time to live of documentdataDataJSONPayment credentials

    Type

    -

    InputMedia

    +

    InputPaymentCredentials

    diff --git a/data/core.telegram.org/constructor/inputPaymentCredentialsAndroidPay.html b/data/core.telegram.org/constructor/inputPaymentCredentialsAndroidPay.html new file mode 100644 index 0000000000..40fd3588ca --- /dev/null +++ b/data/core.telegram.org/constructor/inputPaymentCredentialsAndroidPay.html @@ -0,0 +1,152 @@ + + + + + inputPaymentCredentialsAndroidPay + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputPaymentCredentialsAndroidPay

    + +

    Android pay payment credentials

    +

    +
    inputPaymentCredentialsAndroidPay#ca05d50e payment_token:DataJSON google_transaction_id:string = InputPaymentCredentials;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    payment_tokenDataJSONAndroid pay payment token
    google_transaction_idstringGoogle transaction ID
    +

    Type

    +

    InputPaymentCredentials

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/stats.messageStats b/data/core.telegram.org/constructor/inputPaymentCredentialsApplePay.html similarity index 88% rename from data/core.telegram.org/constructor/stats.messageStats rename to data/core.telegram.org/constructor/inputPaymentCredentialsApplePay.html index d3e4ad5c5e..ec4f299d4c 100644 --- a/data/core.telegram.org/constructor/stats.messageStats +++ b/data/core.telegram.org/constructor/inputPaymentCredentialsApplePay.html @@ -2,12 +2,12 @@ - stats.messageStats + inputPaymentCredentialsApplePay - - + + - + @@ -36,10 +36,10 @@
    - -

    stats.messageStats

    + +

    inputPaymentCredentialsApplePay

    -

    Message statistics

    +

    Apple pay payment credentials

    -
    stats.messageStats#8999f295 views_graph:StatsGraph = stats.MessageStats;

    +
    inputPaymentCredentialsApplePay#aa1c39f payment_data:DataJSON = InputPaymentCredentials;

    Parameters

    @@ -64,14 +64,14 @@ - - - + + +
    views_graphStatsGraphMessage view graphpayment_dataDataJSONPayment data

    Type

    -

    stats.MessageStats

    +

    InputPaymentCredentials

    diff --git a/data/core.telegram.org/constructor/secureValueError.html b/data/core.telegram.org/constructor/inputPaymentCredentialsSaved.html similarity index 87% rename from data/core.telegram.org/constructor/secureValueError.html rename to data/core.telegram.org/constructor/inputPaymentCredentialsSaved.html index 06b2d4e891..bc6e70b76f 100644 --- a/data/core.telegram.org/constructor/secureValueError.html +++ b/data/core.telegram.org/constructor/inputPaymentCredentialsSaved.html @@ -2,12 +2,12 @@ - secureValueError + inputPaymentCredentialsSaved - - + + - + @@ -36,10 +36,10 @@
    - -

    secureValueError

    + +

    inputPaymentCredentialsSaved

    -

    Secure value error

    +

    Saved payment credentials

    -
    secureValueError#869d758f type:SecureValueType hash:bytes text:string = SecureValueError;

    +
    inputPaymentCredentialsSaved#c10eb2cf id:string tmp_password:bytes = InputPaymentCredentials;

    Parameters

    @@ -64,24 +64,19 @@ - - - - - - - - - - - + - + + + + + +
    typeSecureValueTypeType of element which has the issue
    hashbytesHash
    textid stringError messageCredential ID
    tmp_passwordbytesTemporary password

    Type

    -

    SecureValueError

    +

    InputPaymentCredentials

    diff --git a/data/core.telegram.org/constructor/inputPeerEmpty.html b/data/core.telegram.org/constructor/inputPeerEmpty.html new file mode 100644 index 0000000000..e9552ec1b5 --- /dev/null +++ b/data/core.telegram.org/constructor/inputPeerEmpty.html @@ -0,0 +1,132 @@ + + + + + inputPeerEmpty + + + + + + + + + + + + + +
    + + + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputTheme.html b/data/core.telegram.org/constructor/inputPhoneCall.html similarity index 91% rename from data/core.telegram.org/constructor/inputTheme.html rename to data/core.telegram.org/constructor/inputPhoneCall.html index 7189a67de4..d4471702ca 100644 --- a/data/core.telegram.org/constructor/inputTheme.html +++ b/data/core.telegram.org/constructor/inputPhoneCall.html @@ -2,12 +2,12 @@ - inputTheme + inputPhoneCall - - + + - + @@ -36,10 +36,10 @@
    - -

    inputTheme

    + +

    inputPhoneCall

    -

    Theme

    +

    Phone call

    -
    inputTheme#3c5693e9 id:long access_hash:long = InputTheme;

    +
    inputPhoneCall#1e36fded id:long access_hash:long = InputPhoneCall;

    Parameters

    @@ -66,7 +66,7 @@ - + @@ -76,7 +76,7 @@
    id longIDCall ID
    access_hash

    Type

    -

    InputTheme

    +

    InputPhoneCall

    diff --git a/data/core.telegram.org/constructor/inputPhoneContact.html b/data/core.telegram.org/constructor/inputPhoneContact.html new file mode 100644 index 0000000000..80325df0c6 --- /dev/null +++ b/data/core.telegram.org/constructor/inputPhoneContact.html @@ -0,0 +1,166 @@ + + + + + inputPhoneContact + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputPhoneContact

    + +

    Phone contact. The client_id is just an arbitrary contact ID: it should be set, for example, to an incremental number when using contacts.importContacts, in order to retry importing only the contacts that weren't imported successfully.

    +

    +
    inputPhoneContact#f392b7f4 client_id:long phone:string first_name:string last_name:string = InputContact;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    client_idlongUser identifier on the client
    phonestringPhone number
    first_namestringContact's first name
    last_namestringContact's last name
    +

    Type

    +

    InputContact

    +

    Related pages

    +

    contacts.importContacts

    +

    Imports contacts: saves a full list on the server, adds already registered contacts to the contact list, returns added contacts and their info.

    +

    Use contacts.addContact to add Telegram contacts without actually using their phone number.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputPhoto.html b/data/core.telegram.org/constructor/inputPhoto.html new file mode 100644 index 0000000000..4c1b458a92 --- /dev/null +++ b/data/core.telegram.org/constructor/inputPhoto.html @@ -0,0 +1,162 @@ + + + + + inputPhoto + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputPhoto

    + +

    Defines a photo for further interaction.

    +

    +
    inputPhoto#3bb3b94a id:long access_hash:long file_reference:bytes = InputPhoto;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    idlongPhoto identifier
    access_hashlongaccess_hash value from the photo constructor
    file_referencebytesFile reference
    +

    Type

    +

    InputPhoto

    +

    Related pages

    +

    photo

    +

    Photo

    +

    File references

    +

    How to handle file references.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputPhotoEmpty.html b/data/core.telegram.org/constructor/inputPhotoEmpty.html new file mode 100644 index 0000000000..5c0f3af2ed --- /dev/null +++ b/data/core.telegram.org/constructor/inputPhotoEmpty.html @@ -0,0 +1,132 @@ + + + + + inputPhotoEmpty + + + + + + + + + + + + + +
    + + + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputPhotoFileLocation.html b/data/core.telegram.org/constructor/inputPhotoFileLocation.html new file mode 100644 index 0000000000..e4dde1e831 --- /dev/null +++ b/data/core.telegram.org/constructor/inputPhotoFileLocation.html @@ -0,0 +1,171 @@ + + + + + inputPhotoFileLocation + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputPhotoFileLocation

    + +

    Use this object to download a photo with upload.getFile method

    +

    +
    inputPhotoFileLocation#40181ffe id:long access_hash:long file_reference:bytes thumb_size:string = InputFileLocation;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    idlongPhoto ID, obtained from the photo object
    access_hashlongPhoto's access hash, obtained from the photo object
    file_referencebytesFile reference
    thumb_sizestringThe PhotoSize to download: must be set to the type field of the desired PhotoSize object of the photo
    +

    Type

    +

    InputFileLocation

    +

    Related pages

    +

    photo

    +

    Photo

    +

    File references

    +

    How to handle file references.

    +

    PhotoSize

    +

    Location of a certain size of a picture

    +

    upload.getFile

    +

    Returns content of a whole file or its part.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/privacyKeyPhoneNumber.html b/data/core.telegram.org/constructor/inputPrivacyKeyPhoneP2P.html similarity index 91% rename from data/core.telegram.org/constructor/privacyKeyPhoneNumber.html rename to data/core.telegram.org/constructor/inputPrivacyKeyPhoneP2P.html index 45df27cc77..3e64fc7bcc 100644 --- a/data/core.telegram.org/constructor/privacyKeyPhoneNumber.html +++ b/data/core.telegram.org/constructor/inputPrivacyKeyPhoneP2P.html @@ -2,12 +2,12 @@ - privacyKeyPhoneNumber + inputPrivacyKeyPhoneP2P - - + + - + @@ -36,10 +36,10 @@
    - -

    privacyKeyPhoneNumber

    + +

    inputPrivacyKeyPhoneP2P

    -

    Whether the user allows us to see his phone number

    +

    Whether the user allows P2P communication during VoIP calls

    -
    privacyKeyPhoneNumber#d19ae46d = PrivacyKey;

    +
    inputPrivacyKeyPhoneP2P#db9e70d2 = InputPrivacyKey;

    Parameters

    This constructor does not require any parameters.

    Type

    -

    PrivacyKey

    +

    InputPrivacyKey

    diff --git a/data/core.telegram.org/constructor/inputPrivacyKeyProfilePhoto.html b/data/core.telegram.org/constructor/inputPrivacyKeyProfilePhoto.html new file mode 100644 index 0000000000..128c90fb8c --- /dev/null +++ b/data/core.telegram.org/constructor/inputPrivacyKeyProfilePhoto.html @@ -0,0 +1,132 @@ + + + + + inputPrivacyKeyProfilePhoto + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputPrivacyKeyProfilePhoto

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/privacyValueDisallowContacts.html b/data/core.telegram.org/constructor/inputPrivacyValueDisallowContacts.html similarity index 92% rename from data/core.telegram.org/constructor/privacyValueDisallowContacts.html rename to data/core.telegram.org/constructor/inputPrivacyValueDisallowContacts.html index 4413899dff..8d70e2fbcc 100644 --- a/data/core.telegram.org/constructor/privacyValueDisallowContacts.html +++ b/data/core.telegram.org/constructor/inputPrivacyValueDisallowContacts.html @@ -2,10 +2,10 @@ - privacyValueDisallowContacts + inputPrivacyValueDisallowContacts - + @@ -36,8 +36,8 @@
    - -

    privacyValueDisallowContacts

    + +

    inputPrivacyValueDisallowContacts

    Disallow only contacts

    @@ -52,11 +52,11 @@
    -
    privacyValueDisallowContacts#f888fa1a = PrivacyRule;

    +
    inputPrivacyValueDisallowContacts#ba52007 = InputPrivacyRule;

    Parameters

    This constructor does not require any parameters.

    Type

    -

    PrivacyRule

    +

    InputPrivacyRule

    diff --git a/data/core.telegram.org/constructor/inputPrivacyValueDisallowUsers.html b/data/core.telegram.org/constructor/inputPrivacyValueDisallowUsers.html new file mode 100644 index 0000000000..7c8f54a4de --- /dev/null +++ b/data/core.telegram.org/constructor/inputPrivacyValueDisallowUsers.html @@ -0,0 +1,147 @@ + + + + + inputPrivacyValueDisallowUsers + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputPrivacyValueDisallowUsers

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputReportReasonCopyright.html b/data/core.telegram.org/constructor/inputReportReasonCopyright.html new file mode 100644 index 0000000000..7bb58109c8 --- /dev/null +++ b/data/core.telegram.org/constructor/inputReportReasonCopyright.html @@ -0,0 +1,132 @@ + + + + + inputReportReasonCopyright + + + + + + + + + + + + + +
    + +
    + +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputReportReasonOther.html b/data/core.telegram.org/constructor/inputReportReasonOther.html new file mode 100644 index 0000000000..f0537461bc --- /dev/null +++ b/data/core.telegram.org/constructor/inputReportReasonOther.html @@ -0,0 +1,147 @@ + + + + + inputReportReasonOther + + + + + + + + + + + + + +
    + +
    +
    + + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputReportReasonPornography.html b/data/core.telegram.org/constructor/inputReportReasonPornography.html new file mode 100644 index 0000000000..8e2e990c74 --- /dev/null +++ b/data/core.telegram.org/constructor/inputReportReasonPornography.html @@ -0,0 +1,132 @@ + + + + + inputReportReasonPornography + + + + + + + + + + + + + +
    + +
    + +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputMediaEmpty.html b/data/core.telegram.org/constructor/inputReportReasonViolence.html similarity index 91% rename from data/core.telegram.org/constructor/inputMediaEmpty.html rename to data/core.telegram.org/constructor/inputReportReasonViolence.html index db9ed3ea93..d579f7bcfa 100644 --- a/data/core.telegram.org/constructor/inputMediaEmpty.html +++ b/data/core.telegram.org/constructor/inputReportReasonViolence.html @@ -2,12 +2,12 @@ - inputMediaEmpty + inputReportReasonViolence - - + + - + @@ -36,10 +36,10 @@
    - -

    inputMediaEmpty

    + +

    inputReportReasonViolence

    -

    Empty media content of a message.

    +

    Report for violence

    -
    inputMediaEmpty#9664f57f = InputMedia;

    +
    inputReportReasonViolence#1e22c78d = ReportReason;

    Parameters

    This constructor does not require any parameters.

    Type

    -

    InputMedia

    +

    ReportReason

    diff --git a/data/core.telegram.org/constructor/messageReplies.html b/data/core.telegram.org/constructor/inputSecureValue.html similarity index 68% rename from data/core.telegram.org/constructor/messageReplies.html rename to data/core.telegram.org/constructor/inputSecureValue.html index b7b161ffa1..6c7e284ad1 100644 --- a/data/core.telegram.org/constructor/messageReplies.html +++ b/data/core.telegram.org/constructor/inputSecureValue.html @@ -2,12 +2,12 @@ - messageReplies + inputSecureValue - - + + - + @@ -36,10 +36,10 @@
    - -

    messageReplies

    + +

    inputSecureValue

    -

    Info about the comment section of a channel post, or a simple message thread

    +

    Secure value, for more info see the passport docs »

    -
    messageReplies#4128faac flags:# comments:flags.0?true replies:int replies_pts:int recent_repliers:flags.1?Vector<Peer> channel_id:flags.0?int max_id:flags.2?int read_max_id:flags.3?int = MessageReplies;

    +
    inputSecureValue#db21d0a7 flags:# type:SecureValueType data:flags.0?SecureData front_side:flags.1?InputSecureFile reverse_side:flags.2?InputSecureFile selfie:flags.3?InputSecureFile translation:flags.6?Vector<InputSecureFile> files:flags.4?Vector<InputSecureFile> plain_data:flags.5?SecurePlainData = InputSecureValue;

    Parameters

    @@ -69,51 +69,52 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + + + + + +
    Flags, see TL conditional fields
    commentsflags.0?trueWhether this constructor contains information about the comment section of a channel post, or a simple message threadtypeSecureValueTypeSecure passport value type
    repliesintContains the total number of replies in this thread or comment section.dataflags.0?SecureDataEncrypted Telegram Passport element data
    replies_ptsintPTS of the message that started this thread.front_sideflags.1?InputSecureFileEncrypted passport file with the front side of the document
    recent_repliersflags.1?Vector<Peer>For channel post comments, contains information about the last few comment posters for a specific thread, to show a small list of commenter profile pictures in client previews.reverse_sideflags.2?InputSecureFileEncrypted passport file with the reverse side of the document
    channel_idflags.0?intFor channel post comments, contains the ID of the associated discussion supergroupselfieflags.3?InputSecureFileEncrypted passport file with a selfie of the user holding the document
    max_idflags.2?intID of the latest message in this thread or comment section.translationflags.6?Vector<InputSecureFile>Array of encrypted passport files with translated versions of the provided documents
    read_max_idflags.3?intContains the ID of the latest read message in this thread or comment section.filesflags.4?Vector<InputSecureFile>Array of encrypted passport files with photos the of the documents
    plain_dataflags.5?SecurePlainDataPlaintext verified passport data

    Type

    -

    MessageReplies

    +

    InputSecureValue

    Related pages

    -

    Threads

    -

    Telegram allows commenting on a channel post or on a generic supergroup message, thanks to message threads.

    -

    Working with Updates

    -

    How to subscribe to updates and handle them properly.

    -

    Discussion groups

    -

    Groups can be associated to a channel as a discussion group, to allow users to discuss about posts.

    +

    Telegram Passport Manual

    +

    Telegram Passport Encryption Details

    diff --git a/data/core.telegram.org/constructor/inputSingleMedia.html b/data/core.telegram.org/constructor/inputSingleMedia.html new file mode 100644 index 0000000000..6c03c8c5f2 --- /dev/null +++ b/data/core.telegram.org/constructor/inputSingleMedia.html @@ -0,0 +1,174 @@ + + + + + inputSingleMedia + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputSingleMedia

    + +

    A single media in an album or grouped media sent with messages.sendMultiMedia.

    +

    +
    inputSingleMedia#1cc6e91f flags:# media:InputMedia random_id:long message:string entities:flags.0?Vector<MessageEntity> = InputSingleMedia;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    mediaInputMediaThe media
    random_idlongUnique client media ID required to prevent message resending
    messagestringA caption for the media
    entitiesflags.0?Vector<MessageEntity>Message entities for styled text
    +

    Type

    +

    InputSingleMedia

    +

    Related pages

    +

    Styled text with message entities

    +

    How to create styled text with message entities

    +

    Uploading and Downloading Files

    +

    How to transfer large data batches correctly.

    +

    messages.sendMultiMedia

    +

    Send an album or grouped media

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputStickerSetAnimatedEmoji.html b/data/core.telegram.org/constructor/inputStickerSetAnimatedEmoji.html new file mode 100644 index 0000000000..c30ad1fa81 --- /dev/null +++ b/data/core.telegram.org/constructor/inputStickerSetAnimatedEmoji.html @@ -0,0 +1,132 @@ + + + + + inputStickerSetAnimatedEmoji + + + + + + + + + + + + + +
    + +
    +
    + + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputStickerSetShortName.html b/data/core.telegram.org/constructor/inputStickerSetShortName.html new file mode 100644 index 0000000000..33f12db5d7 --- /dev/null +++ b/data/core.telegram.org/constructor/inputStickerSetShortName.html @@ -0,0 +1,147 @@ + + + + + inputStickerSetShortName + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputStickerSetShortName

    + +

    Stickerset by short name, from tg://addstickers?set=short_name

    +

    +
    inputStickerSetShortName#861cc8a0 short_name:string = InputStickerSet;

    +

    Parameters

    + + + + + + + + + + + + + + + +
    NameTypeDescription
    short_namestringFrom tg://addstickers?set=short_name
    +

    Type

    +

    InputStickerSet

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputStickeredMediaPhoto.html b/data/core.telegram.org/constructor/inputStickeredMediaPhoto.html new file mode 100644 index 0000000000..1d8ad48280 --- /dev/null +++ b/data/core.telegram.org/constructor/inputStickeredMediaPhoto.html @@ -0,0 +1,147 @@ + + + + + inputStickeredMediaPhoto + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputStickeredMediaPhoto

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/peerNotifySettings.html b/data/core.telegram.org/constructor/inputThemeSettings.html similarity index 79% rename from data/core.telegram.org/constructor/peerNotifySettings.html rename to data/core.telegram.org/constructor/inputThemeSettings.html index 52b2fcb8c0..c4c7c723c5 100644 --- a/data/core.telegram.org/constructor/peerNotifySettings.html +++ b/data/core.telegram.org/constructor/inputThemeSettings.html @@ -2,12 +2,12 @@ - peerNotifySettings + inputThemeSettings - - + + - + @@ -36,10 +36,10 @@
    - -

    peerNotifySettings

    + +

    inputThemeSettings

    -

    Notification settings.

    +

    Theme settings

    -
    peerNotifySettings#af509d20 flags:# show_previews:flags.0?Bool silent:flags.1?Bool mute_until:flags.2?int sound:flags.3?string = PeerNotifySettings;

    +
    inputThemeSettings#bd507cd1 flags:# base_theme:BaseTheme accent_color:int message_top_color:flags.0?int message_bottom_color:flags.0?int wallpaper:flags.1?InputWallPaper wallpaper_settings:flags.1?WallPaperSettings = InputThemeSettings;

    Parameters

    @@ -69,44 +69,39 @@ - - - + + + - - - + + + - - - + + + - - - + + + + + + + + + + + + +
    Flags, see TL conditional fields
    show_previewsflags.0?BoolDisplay text in notificationsbase_themeBaseThemeDefault theme on which this theme is based
    silentflags.1?BoolMute peer?accent_colorintAccent color, RGB24 format
    mute_untilflags.2?intMute all notifications until this datemessage_top_colorflags.0?intMessage gradient color (top), RGB24 format
    soundflags.3?stringAudio file name for notificationsmessage_bottom_colorflags.0?intMessage gradient color (bottom), RGB24 format
    wallpaperflags.1?InputWallPaperWallpaper
    wallpaper_settingsflags.1?WallPaperSettingsWallpaper settings

    Type

    -

    PeerNotifySettings

    -

    Event flags (events_mask)

    - - - - - - - - - - - - - -
    0x00000001Profile photo update notification
    +

    InputThemeSettings

    diff --git a/data/core.telegram.org/constructor/inputChannelFromMessage.html b/data/core.telegram.org/constructor/inputUserFromMessage.html similarity index 88% rename from data/core.telegram.org/constructor/inputChannelFromMessage.html rename to data/core.telegram.org/constructor/inputUserFromMessage.html index 12a755d56f..e2720267d3 100644 --- a/data/core.telegram.org/constructor/inputChannelFromMessage.html +++ b/data/core.telegram.org/constructor/inputUserFromMessage.html @@ -2,12 +2,12 @@ - inputChannelFromMessage + inputUserFromMessage - - + + - + @@ -36,10 +36,10 @@
    - -

    inputChannelFromMessage

    + +

    inputUserFromMessage

    -

    Defines a min channel that was seen in a certain message of a certain chat.

    +

    Defines a min user that was seen in a certain message of a certain chat.

    -
    inputChannelFromMessage#2a286531 peer:InputPeer msg_id:int channel_id:int = InputChannel;

    +
    inputUserFromMessage#2d117597 peer:InputPeer msg_id:int user_id:int = InputUser;

    Parameters

    @@ -66,22 +66,22 @@ - + - + - + - +
    peer InputPeerThe chat where the channel was seenThe chat where the user was seen
    msg_id intThe message ID in the chat where the channel was seenThe message ID
    channel_iduser_id intThe channel IDThe identifier of the user that was seen

    Type

    -

    InputChannel

    +

    InputUser

    Related pages

    Min constructors

    In some situations user and channel constructors have reduced set of fields present (although id is always there) and min flag set.

    diff --git a/data/core.telegram.org/constructor/inputWallPaperSlug.html b/data/core.telegram.org/constructor/inputWallPaperSlug.html new file mode 100644 index 0000000000..8662176d16 --- /dev/null +++ b/data/core.telegram.org/constructor/inputWallPaperSlug.html @@ -0,0 +1,147 @@ + + + + + inputWallPaperSlug + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    inputWallPaperSlug

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messageMediaInvoice.html b/data/core.telegram.org/constructor/invoice.html similarity index 74% rename from data/core.telegram.org/constructor/messageMediaInvoice.html rename to data/core.telegram.org/constructor/invoice.html index e3c712941e..4262fbf464 100644 --- a/data/core.telegram.org/constructor/messageMediaInvoice.html +++ b/data/core.telegram.org/constructor/invoice.html @@ -2,10 +2,10 @@ - messageMediaInvoice + invoice - + @@ -36,8 +36,8 @@
    - -

    messageMediaInvoice

    + +

    invoice

    Invoice

    @@ -52,7 +52,7 @@
    -
    messageMediaInvoice#84551347 flags:# shipping_address_requested:flags.1?true test:flags.3?true title:string description:string photo:flags.0?WebDocument receipt_msg_id:flags.2?int currency:string total_amount:long start_param:string = MessageMedia;

    +
    invoice#c30aa358 flags:# 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:string prices:Vector<LabeledPrice> = Invoice;

    Parameters

    @@ -69,34 +69,44 @@ - - - - - + + + + + + + + + + + + + + + - + - - - + + + - - - + + + - - - + + + - - - + + + @@ -104,24 +114,15 @@ - - - - - - - - + + +
    Flags, see TL conditional fields
    shipping_address_requestedflags.1?trueWhether the shipping address was requested
    testflags.0?trueTest invoice
    name_requestedflags.1?trueSet this flag if you require the user's full name to complete the order
    phone_requestedflags.2?trueSet this flag if you require the user's phone number to complete the order
    email_requested flags.3?trueWhether this is an example invoiceSet this flag if you require the user's email address to complete the order
    titlestringProduct name, 1-32 charactersshipping_address_requestedflags.4?trueSet this flag if you require the user's shipping address to complete the order
    descriptionstringProduct description, 1-255 charactersflexibleflags.5?trueSet this flag if the final price depends on the shipping method
    photoflags.0?WebDocumentURL 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.phone_to_providerflags.6?trueSet this flag if user's phone number should be sent to provider
    receipt_msg_idflags.2?intMessage ID of receipt: if set, clients should change the text of the first keyboardButtonBuy button always attached to the message to a localized version of the word Receiptemail_to_providerflags.7?trueSet this flag if user's email address should be sent to provider
    currencyThree-letter ISO 4217 currency code
    total_amountlongTotal price in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
    start_paramstringUnique bot deep-linking parameter that can be used to generate this invoicepricesVector<LabeledPrice>Price breakdown, a list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.)

    Type

    -

    MessageMedia

    +

    Invoice

    Related pages

    -

    keyboardButtonBuy

    -

    Button to buy a product

    -

    message

    -

    A message

    Bot Payments API

    diff --git a/data/core.telegram.org/constructor/pageListItemBlocks.html b/data/core.telegram.org/constructor/jsonObject.html similarity index 90% rename from data/core.telegram.org/constructor/pageListItemBlocks.html rename to data/core.telegram.org/constructor/jsonObject.html index a427a33806..a24bc1656e 100644 --- a/data/core.telegram.org/constructor/pageListItemBlocks.html +++ b/data/core.telegram.org/constructor/jsonObject.html @@ -2,12 +2,12 @@ - pageListItemBlocks + jsonObject - - + + - + @@ -36,10 +36,10 @@
    - -

    pageListItemBlocks

    + +

    jsonObject

    -

    List item

    +

    JSON object value

    -
    pageListItemBlocks#25e073fc blocks:Vector<PageBlock> = PageListItem;

    +
    jsonObject#99c1d49d value:Vector<JSONObjectValue> = JSONValue;

    Parameters

    @@ -64,14 +64,14 @@ - - - + + +
    blocksVector<PageBlock>BlocksvalueVector<JSONObjectValue>Values

    Type

    -

    PageListItem

    +

    JSONValue

    diff --git a/data/core.telegram.org/constructor/dataJSON.html b/data/core.telegram.org/constructor/jsonString.html similarity index 91% rename from data/core.telegram.org/constructor/dataJSON.html rename to data/core.telegram.org/constructor/jsonString.html index d7d2d31bb8..e8e55cf737 100644 --- a/data/core.telegram.org/constructor/dataJSON.html +++ b/data/core.telegram.org/constructor/jsonString.html @@ -2,12 +2,12 @@ - dataJSON + jsonString - - + + - + @@ -36,10 +36,10 @@
    - -

    dataJSON

    + +

    jsonString

    -

    Represents a json-encoded object

    +

    JSON string

    -
    dataJSON#7d748d04 data:string = DataJSON;

    +
    jsonString#b71e767a value:string = JSONValue;

    Parameters

    @@ -64,14 +64,14 @@ - + - +
    datavalue stringJSON-encoded objectValue

    Type

    -

    DataJSON

    +

    JSONValue

    diff --git a/data/core.telegram.org/constructor/keyboardButtonBuy.html b/data/core.telegram.org/constructor/keyboardButtonBuy.html new file mode 100644 index 0000000000..b36258b582 --- /dev/null +++ b/data/core.telegram.org/constructor/keyboardButtonBuy.html @@ -0,0 +1,147 @@ + + + + + keyboardButtonBuy + + + + + + + + + + + + + +
    + +
    +
    + + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/keyboardButtonGame.html b/data/core.telegram.org/constructor/keyboardButtonGame.html new file mode 100644 index 0000000000..0d0011f303 --- /dev/null +++ b/data/core.telegram.org/constructor/keyboardButtonGame.html @@ -0,0 +1,147 @@ + + + + + keyboardButtonGame + + + + + + + + + + + + + +
    + +
    +
    + + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/keyboardButtonRequestGeoLocation.html b/data/core.telegram.org/constructor/keyboardButtonRequestPhone.html similarity index 92% rename from data/core.telegram.org/constructor/keyboardButtonRequestGeoLocation.html rename to data/core.telegram.org/constructor/keyboardButtonRequestPhone.html index c63ada53fc..3faf91a9de 100644 --- a/data/core.telegram.org/constructor/keyboardButtonRequestGeoLocation.html +++ b/data/core.telegram.org/constructor/keyboardButtonRequestPhone.html @@ -2,12 +2,12 @@ - keyboardButtonRequestGeoLocation + keyboardButtonRequestPhone - - + + - + @@ -36,10 +36,10 @@
    - -

    keyboardButtonRequestGeoLocation

    + +

    keyboardButtonRequestPhone

    -

    Button to request a user's geolocation

    +

    Button to request a user's phone number

    -
    keyboardButtonRequestGeoLocation#fc796b3f text:string = KeyboardButton;

    +
    keyboardButtonRequestPhone#b16a6c29 text:string = KeyboardButton;

    Parameters

    diff --git a/data/core.telegram.org/constructor/help.country b/data/core.telegram.org/constructor/keyboardButtonSwitchInline.html similarity index 81% rename from data/core.telegram.org/constructor/help.country rename to data/core.telegram.org/constructor/keyboardButtonSwitchInline.html index 34e35e6976..16eb76dad1 100644 --- a/data/core.telegram.org/constructor/help.country +++ b/data/core.telegram.org/constructor/keyboardButtonSwitchInline.html @@ -2,12 +2,12 @@ - help.country + keyboardButtonSwitchInline - - + + - + @@ -36,10 +36,10 @@
    - -

    help.country

    + +

    keyboardButtonSwitchInline

    -

    Name, ISO code, localized name and phone codes/patterns of a specific country

    +

    Button to force a user to switch to inline mode 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.

    -
    help.country#c3878e23 flags:# hidden:flags.0?true iso2:string default_name:string name:flags.1?string country_codes:Vector<help.CountryCode> = help.Country;

    +
    keyboardButtonSwitchInline#568a748 flags:# same_peer:flags.0?true text:string query:string = KeyboardButton;

    Parameters

    @@ -69,34 +69,24 @@ - + - + - + - + - + - - - - - - - - - - - +
    Flags, see TL conditional fields
    hiddensame_peer flags.0?trueWhether this country should not be shown in the listIf set, pressing the button will insert the bot‘s username and the specified inline query in the current chat's input field.
    iso2text stringISO code of countryButton label
    default_namequery stringName of the country in the country's language
    nameflags.1?stringName of the country in the user's language, if different from the original name
    country_codesVector<help.CountryCode>Phone codes/patternsThe inline query to use

    Type

    -

    help.Country

    +

    KeyboardButton

    diff --git a/data/core.telegram.org/constructor/auth.sentAppCode b/data/core.telegram.org/constructor/langPackDifference.html similarity index 84% rename from data/core.telegram.org/constructor/auth.sentAppCode rename to data/core.telegram.org/constructor/langPackDifference.html index 631be2127d..7ee49e5ba0 100644 --- a/data/core.telegram.org/constructor/auth.sentAppCode +++ b/data/core.telegram.org/constructor/langPackDifference.html @@ -2,12 +2,12 @@ - auth.sentAppCode + langPackDifference - - + + - + @@ -36,11 +36,10 @@
    - -

    auth.sentAppCode

    + +

    langPackDifference

    -

    Contains info on a confirmation code message sent via Telegram.

    -

    You can force resending the message via SMS by invoking the method auth.sendSms.

    +

    Changes to the app's localization pack

    -
    Constructor schema is available as of layer 50. Switch »

    +
    langPackDifference#f385c1f6 lang_code:string from_version:int version:int strings:Vector<LangPackString> = LangPackDifference;

    Parameters

    @@ -65,29 +64,29 @@ - - - - - - + - + - + - + - - - + + + + + + + +
    phone_registeredBoolThe given number corresponds to a registered Telegram user
    phone_code_hashlang_code stringMessage identifierLanguage code
    send_call_timeoutfrom_version intDelay in seconds before calling auth.sendCallPrevious version number
    is_passwordBoolThe sent code is a text passwordversionintNew version number
    stringsVector<LangPackString>Localized strings

    Type

    -

    auth.SentCode

    +

    LangPackDifference

    diff --git a/data/core.telegram.org/constructor/langPackStringDeleted.html b/data/core.telegram.org/constructor/langPackStringDeleted.html new file mode 100644 index 0000000000..1a6cc2cffb --- /dev/null +++ b/data/core.telegram.org/constructor/langPackStringDeleted.html @@ -0,0 +1,147 @@ + + + + + langPackStringDeleted + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    langPackStringDeleted

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messageActionBotAllowed.html b/data/core.telegram.org/constructor/messageActionBotAllowed.html new file mode 100644 index 0000000000..794d93cbeb --- /dev/null +++ b/data/core.telegram.org/constructor/messageActionBotAllowed.html @@ -0,0 +1,149 @@ + + + + + messageActionBotAllowed + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    messageActionBotAllowed

    + +

    The domain name of the website on which the user has logged in. More about Telegram Login »

    +

    +
    messageActionBotAllowed#abe9affe domain:string = MessageAction;

    +

    Parameters

    + + + + + + + + + + + + + + + +
    NameTypeDescription
    domainstringThe domain name of the website on which the user has logged in.
    +

    Type

    +

    MessageAction

    +

    Related pages

    +

    Telegram Login Widget

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/updateChannelAvailableMessages.html b/data/core.telegram.org/constructor/messageActionChannelMigrateFrom.html similarity index 87% rename from data/core.telegram.org/constructor/updateChannelAvailableMessages.html rename to data/core.telegram.org/constructor/messageActionChannelMigrateFrom.html index 7980ade874..cc2eaf3592 100644 --- a/data/core.telegram.org/constructor/updateChannelAvailableMessages.html +++ b/data/core.telegram.org/constructor/messageActionChannelMigrateFrom.html @@ -2,12 +2,12 @@ - updateChannelAvailableMessages + messageActionChannelMigrateFrom - - + + - + @@ -36,10 +36,10 @@
    - -

    updateChannelAvailableMessages

    + +

    messageActionChannelMigrateFrom

    -

    The history of a channel/supergroup was hidden.

    +

    Indicates the channel was migrated from the specified chat

    -
    updateChannelAvailableMessages#70db6837 channel_id:int available_min_id:int = Update;

    +
    messageActionChannelMigrateFrom#b055eaee title:string chat_id:int = MessageAction;

    Parameters

    @@ -64,19 +64,19 @@ - - - + + + - + - +
    channel_idintChannel/supergroup IDtitlestringThe old chat tite
    available_min_idchat_id intIdentifier of a maximum unavailable message in a channel due to hidden history.The old chat ID

    Type

    -

    Update

    +

    MessageAction

    Related pages

    Channels

    How to handle channels, supergroups, groups, and what's the difference between them.

    diff --git a/data/core.telegram.org/constructor/photos.photo b/data/core.telegram.org/constructor/messageActionChatAddUser.html similarity index 88% rename from data/core.telegram.org/constructor/photos.photo rename to data/core.telegram.org/constructor/messageActionChatAddUser.html index 1c58ff2f7b..ec868e957e 100644 --- a/data/core.telegram.org/constructor/photos.photo +++ b/data/core.telegram.org/constructor/messageActionChatAddUser.html @@ -2,12 +2,12 @@ - photos.photo + messageActionChatAddUser - - + + - + @@ -36,10 +36,10 @@
    - -

    photos.photo

    + +

    messageActionChatAddUser

    -

    Photo with auxiliary data.

    +

    New member in the group

    -
    photos.photo#20212ca8 photo:Photo users:Vector<User> = photos.Photo;

    +
    messageActionChatAddUser#488a7337 users:Vector<int> = MessageAction;

    Parameters

    @@ -64,19 +64,14 @@ - - - - - - - + +
    photoPhotoPhoto
    usersVector<User>UsersVector<int>Users that were invited to the chat

    Type

    -

    photos.Photo

    +

    MessageAction

    diff --git a/data/core.telegram.org/constructor/messageActionChatEditTitle.html b/data/core.telegram.org/constructor/messageActionChatEditTitle.html new file mode 100644 index 0000000000..e53767f5a6 --- /dev/null +++ b/data/core.telegram.org/constructor/messageActionChatEditTitle.html @@ -0,0 +1,147 @@ + + + + + messageActionChatEditTitle + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    messageActionChatEditTitle

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messageActionChatJoinedByLink.html b/data/core.telegram.org/constructor/messageActionChatJoinedByLink.html new file mode 100644 index 0000000000..bfd245d3e5 --- /dev/null +++ b/data/core.telegram.org/constructor/messageActionChatJoinedByLink.html @@ -0,0 +1,147 @@ + + + + + messageActionChatJoinedByLink + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    messageActionChatJoinedByLink

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messageActionCustomAction.html b/data/core.telegram.org/constructor/messageActionCustomAction.html new file mode 100644 index 0000000000..8de910f277 --- /dev/null +++ b/data/core.telegram.org/constructor/messageActionCustomAction.html @@ -0,0 +1,147 @@ + + + + + messageActionCustomAction + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    messageActionCustomAction

    + +

    Custom action (most likely not supported by the current layer, an upgrade might be needed)

    +

    +
    messageActionCustomAction#fae69f56 message:string = MessageAction;

    +

    Parameters

    + + + + + + + + + + + + + + + +
    NameTypeDescription
    messagestringAction message
    +

    Type

    +

    MessageAction

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messageActionEmpty.html b/data/core.telegram.org/constructor/messageActionEmpty.html new file mode 100644 index 0000000000..aeb7d971a8 --- /dev/null +++ b/data/core.telegram.org/constructor/messageActionEmpty.html @@ -0,0 +1,132 @@ + + + + + messageActionEmpty + + + + + + + + + + + + + +
    + + + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messageActionGameScore.html b/data/core.telegram.org/constructor/messageActionGameScore.html new file mode 100644 index 0000000000..ce12250501 --- /dev/null +++ b/data/core.telegram.org/constructor/messageActionGameScore.html @@ -0,0 +1,152 @@ + + + + + messageActionGameScore + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    messageActionGameScore

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messageActionHistoryClear.html b/data/core.telegram.org/constructor/messageActionHistoryClear.html new file mode 100644 index 0000000000..1cb9ef60e0 --- /dev/null +++ b/data/core.telegram.org/constructor/messageActionHistoryClear.html @@ -0,0 +1,132 @@ + + + + + messageActionHistoryClear + + + + + + + + + + + + + +
    + + + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messageActionPaymentSentMe.html b/data/core.telegram.org/constructor/messageActionPaymentSentMe.html new file mode 100644 index 0000000000..51576239dc --- /dev/null +++ b/data/core.telegram.org/constructor/messageActionPaymentSentMe.html @@ -0,0 +1,179 @@ + + + + + messageActionPaymentSentMe + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    messageActionPaymentSentMe

    + +

    A user just sent a payment to me (a bot)

    +

    +
    messageActionPaymentSentMe#8f31b327 flags:# currency:string total_amount:long payload:bytes info:flags.0?PaymentRequestedInfo shipping_option_id:flags.1?string charge:PaymentCharge = MessageAction;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    currencystringThree-letter ISO 4217 currency code
    total_amountlongPrice of the product in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
    payloadbytesBot specified invoice payload
    infoflags.0?PaymentRequestedInfoOrder info provided by the user
    shipping_option_idflags.1?stringIdentifier of the shipping option chosen by the user
    chargePaymentChargeProvider payment identifier
    +

    Type

    +

    MessageAction

    +

    Related pages

    +

    Bot Payments API

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messageActionPinMessage.html b/data/core.telegram.org/constructor/messageActionPinMessage.html new file mode 100644 index 0000000000..3025f23424 --- /dev/null +++ b/data/core.telegram.org/constructor/messageActionPinMessage.html @@ -0,0 +1,132 @@ + + + + + messageActionPinMessage + + + + + + + + + + + + + +
    + + + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messageActionScreenshotTaken.html b/data/core.telegram.org/constructor/messageActionScreenshotTaken.html new file mode 100644 index 0000000000..8ae3fc3607 --- /dev/null +++ b/data/core.telegram.org/constructor/messageActionScreenshotTaken.html @@ -0,0 +1,132 @@ + + + + + messageActionScreenshotTaken + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    messageActionScreenshotTaken

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messageActionGeoProximityReached.html b/data/core.telegram.org/constructor/messageActionSecureValuesSentMe.html similarity index 81% rename from data/core.telegram.org/constructor/messageActionGeoProximityReached.html rename to data/core.telegram.org/constructor/messageActionSecureValuesSentMe.html index b29e7704fb..62b7ac8b02 100644 --- a/data/core.telegram.org/constructor/messageActionGeoProximityReached.html +++ b/data/core.telegram.org/constructor/messageActionSecureValuesSentMe.html @@ -2,12 +2,12 @@ - messageActionGeoProximityReached + messageActionSecureValuesSentMe - - + + - + @@ -36,10 +36,10 @@
    - -

    messageActionGeoProximityReached

    + +

    messageActionSecureValuesSentMe

    -

    A user of the chat is now in proximity of another user

    +

    Secure telegram passport values were received

    -
    messageActionGeoProximityReached#98e0d697 from_id:Peer to_id:Peer distance:int = MessageAction;

    +
    messageActionSecureValuesSentMe#1b287353 values:Vector<SecureValue> credentials:SecureCredentialsEncrypted = MessageAction;

    Parameters

    @@ -64,27 +64,21 @@ - - - + + + - - - - - - - - + + +
    from_idPeerThe user or chat that is now in proximity of to_idvaluesVector<SecureValue>Vector with information about documents and other Telegram Passport elements that were shared with the bot
    to_idPeerThe user or chat that subscribed to live geolocation proximity alerts
    distanceintDistance, in meters (0-100000)credentialsSecureCredentialsEncryptedEncrypted credentials required to decrypt the data

    Type

    MessageAction

    Related pages

    -

    Live geolocation

    -

    Telegram allows sending the live geolocation of a user in a chat, optionally setting a proximity alert.

    +

    Telegram Passport Manual

    diff --git a/data/core.telegram.org/constructor/photoEmpty.html b/data/core.telegram.org/constructor/messageEmpty.html similarity index 92% rename from data/core.telegram.org/constructor/photoEmpty.html rename to data/core.telegram.org/constructor/messageEmpty.html index 18ff534822..1ceb9dfc46 100644 --- a/data/core.telegram.org/constructor/photoEmpty.html +++ b/data/core.telegram.org/constructor/messageEmpty.html @@ -2,12 +2,12 @@ - photoEmpty + messageEmpty - - + + - + @@ -36,10 +36,10 @@
    - -

    photoEmpty

    + +

    messageEmpty

    -

    Empty constructor, non-existent photo

    +

    Empty constructor, non-existent message.

    -
    photoEmpty#2331b22d id:long = Photo;

    +
    messageEmpty#83e5de54 id:int = Message;

    Parameters

    @@ -65,13 +65,13 @@ - - + +
    idlongPhoto identifierintMessage identifier

    Type

    -

    Photo

    +

    Message

    diff --git a/data/core.telegram.org/constructor/messageEntityBankCard.html b/data/core.telegram.org/constructor/messageEntityBankCard.html new file mode 100644 index 0000000000..2d8937b4e3 --- /dev/null +++ b/data/core.telegram.org/constructor/messageEntityBankCard.html @@ -0,0 +1,152 @@ + + + + + messageEntityBankCard + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    messageEntityBankCard

    + +

    Indicates a credit card number

    +

    +
    messageEntityBankCard#761e6af4 offset:int length:int = MessageEntity;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    offsetintOffset of message entity within message (in UTF-8 codepoints)
    lengthintLength of message entity within message (in UTF-8 codepoints)
    +

    Type

    +

    MessageEntity

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messageEntityPhone.html b/data/core.telegram.org/constructor/messageEntityBold.html similarity index 93% rename from data/core.telegram.org/constructor/messageEntityPhone.html rename to data/core.telegram.org/constructor/messageEntityBold.html index 043b738752..865abed448 100644 --- a/data/core.telegram.org/constructor/messageEntityPhone.html +++ b/data/core.telegram.org/constructor/messageEntityBold.html @@ -2,12 +2,12 @@ - messageEntityPhone + messageEntityBold - - + + - + @@ -36,10 +36,10 @@
    - -

    messageEntityPhone

    + +

    messageEntityBold

    -

    Message entity representing a phone number.

    +

    Message entity representing bold text.

    -
    messageEntityPhone#9b69e34b offset:int length:int = MessageEntity;

    +
    messageEntityBold#bd610bc9 offset:int length:int = MessageEntity;

    Parameters

    diff --git a/data/core.telegram.org/constructor/messageEntityCashtag.html b/data/core.telegram.org/constructor/messageEntityBotCommand.html similarity index 93% rename from data/core.telegram.org/constructor/messageEntityCashtag.html rename to data/core.telegram.org/constructor/messageEntityBotCommand.html index 333aee1185..49459d3703 100644 --- a/data/core.telegram.org/constructor/messageEntityCashtag.html +++ b/data/core.telegram.org/constructor/messageEntityBotCommand.html @@ -2,12 +2,12 @@ - messageEntityCashtag + messageEntityBotCommand - - + + - + @@ -36,10 +36,10 @@
    - -

    messageEntityCashtag

    + +

    messageEntityBotCommand

    -

    Message entity representing a $cashtag.

    +

    Message entity representing a bot /command

    -
    messageEntityCashtag#4c4e743f offset:int length:int = MessageEntity;

    +
    messageEntityBotCommand#6cef8ac7 offset:int length:int = MessageEntity;

    Parameters

    diff --git a/data/core.telegram.org/constructor/messageEntityMentionName.html b/data/core.telegram.org/constructor/messageEntityMentionName.html new file mode 100644 index 0000000000..1bd0750a72 --- /dev/null +++ b/data/core.telegram.org/constructor/messageEntityMentionName.html @@ -0,0 +1,162 @@ + + + + + messageEntityMentionName + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    messageEntityMentionName

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    offsetintOffset of message entity within message (in UTF-8 codepoints)
    lengthintLength of message entity within message (in UTF-8 codepoints)
    user_idintIdentifier of the user that was mentioned
    +

    Type

    +

    MessageEntity

    +

    Related pages

    +

    Mentions

    +

    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.

    +

    inputMessageEntityMentionName

    +

    Message entity that can be used to create a user user mention: received mentions use the messageEntityMentionName constructor, instead.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messageEntityItalic.html b/data/core.telegram.org/constructor/messageEntityStrike.html similarity index 94% rename from data/core.telegram.org/constructor/messageEntityItalic.html rename to data/core.telegram.org/constructor/messageEntityStrike.html index 20abf931eb..4b56146f08 100644 --- a/data/core.telegram.org/constructor/messageEntityItalic.html +++ b/data/core.telegram.org/constructor/messageEntityStrike.html @@ -2,12 +2,12 @@ - messageEntityItalic + messageEntityStrike - - + + - + @@ -36,10 +36,10 @@
    - -

    messageEntityItalic

    + +

    messageEntityStrike

    -

    Message entity representing italic text.

    +

    Message entity representing strikethrough text.

    -
    messageEntityItalic#826f8b60 offset:int length:int = MessageEntity;

    +
    messageEntityStrike#bf0693d4 offset:int length:int = MessageEntity;

    Parameters

    diff --git a/data/core.telegram.org/constructor/messageEntityTextUrl.html b/data/core.telegram.org/constructor/messageEntityTextUrl.html new file mode 100644 index 0000000000..8ba3440605 --- /dev/null +++ b/data/core.telegram.org/constructor/messageEntityTextUrl.html @@ -0,0 +1,160 @@ + + + + + messageEntityTextUrl + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    messageEntityTextUrl

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    offsetintOffset of message entity within message (in UTF-8 codepoints)
    lengthintLength of message entity within message (in UTF-8 codepoints)
    urlstringThe actual URL
    +

    Type

    +

    MessageEntity

    +

    Related pages

    +

    messageEntityUrl

    +

    Message entity representing an in-text url: https://google.com; for text urls, use messageEntityTextUrl.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messageEntityUnderline.html b/data/core.telegram.org/constructor/messageEntityUnderline.html deleted file mode 100644 index f186408270..0000000000 --- a/data/core.telegram.org/constructor/messageEntityUnderline.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - messageEntityUnderline - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    messageEntityUnderline

    - -

    Message entity representing underlined text.

    -

    -
    messageEntityUnderline#9c4e7e8b offset:int length:int = MessageEntity;

    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    offsetintOffset of message entity within message (in UTF-8 codepoints)
    lengthintLength of message entity within message (in UTF-8 codepoints)
    -

    Type

    -

    MessageEntity

    - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/messageEntityHashtag.html b/data/core.telegram.org/constructor/messageEntityUnknown.html similarity index 93% rename from data/core.telegram.org/constructor/messageEntityHashtag.html rename to data/core.telegram.org/constructor/messageEntityUnknown.html index 7d453988df..1c3da0abeb 100644 --- a/data/core.telegram.org/constructor/messageEntityHashtag.html +++ b/data/core.telegram.org/constructor/messageEntityUnknown.html @@ -2,12 +2,12 @@ - messageEntityHashtag + messageEntityUnknown - - + + - + @@ -36,10 +36,10 @@
    - -

    messageEntityHashtag

    + +

    messageEntityUnknown

    -

    #hashtag message entity

    +

    Unknown message entity

    -
    messageEntityHashtag#6f635b0d offset:int length:int = MessageEntity;

    +
    messageEntityUnknown#bb92ba95 offset:int length:int = MessageEntity;

    Parameters

    diff --git a/data/core.telegram.org/constructor/messageInteractionCounters.html b/data/core.telegram.org/constructor/messageInteractionCounters.html new file mode 100644 index 0000000000..66547e274e --- /dev/null +++ b/data/core.telegram.org/constructor/messageInteractionCounters.html @@ -0,0 +1,157 @@ + + + + + messageInteractionCounters + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    msg_idintMessage ID
    viewsintViews
    forwardsintNumber of times this message was forwarded
    +

    Type

    +

    MessageInteractionCounters

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputStickerSetDice.html b/data/core.telegram.org/constructor/messageMediaDice.html similarity index 90% rename from data/core.telegram.org/constructor/inputStickerSetDice.html rename to data/core.telegram.org/constructor/messageMediaDice.html index 06fc8994fe..6796b774c9 100644 --- a/data/core.telegram.org/constructor/inputStickerSetDice.html +++ b/data/core.telegram.org/constructor/messageMediaDice.html @@ -2,12 +2,12 @@ - inputStickerSetDice + messageMediaDice - - + + - + @@ -36,10 +36,10 @@
    - -

    inputStickerSetDice

    + +

    messageMediaDice

    -

    Used for fetching animated dice stickers

    +

    Dice-based animated sticker

    -
    inputStickerSetDice#e67f520e emoticon:string = InputStickerSet;

    +
    messageMediaDice#3f7ee58b value:int emoticon:string = MessageMedia;

    Parameters

    @@ -64,6 +64,11 @@ + + + + + @@ -71,7 +76,7 @@
    valueintDice value
    emoticon string The emoji, for now 🏀, 🎲 and 🎯 are supported

    Type

    -

    InputStickerSet

    +

    MessageMedia

    Related pages

    Dice

    Telegram supports sending animated dice emojis.

    diff --git a/data/core.telegram.org/constructor/messageMediaGeoLive.html b/data/core.telegram.org/constructor/messageMediaGeoLive.html new file mode 100644 index 0000000000..55bfb60b92 --- /dev/null +++ b/data/core.telegram.org/constructor/messageMediaGeoLive.html @@ -0,0 +1,170 @@ + + + + + messageMediaGeoLive + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    messageMediaGeoLive

    + +

    Indicates a live geolocation

    +

    +
    messageMediaGeoLive#b940c666 flags:# geo:GeoPoint heading:flags.0?int period:int proximity_notification_radius:flags.1?int = MessageMedia;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    geoGeoPointGeolocation
    headingflags.0?intFor live locations, a direction in which the location moves, in degrees; 1-360
    periodintValidity period of provided geolocation
    proximity_notification_radiusflags.1?intFor live locations, a maximum distance to another chat member for proximity alerts, in meters (0-100000).
    +

    Type

    +

    MessageMedia

    +

    Related pages

    +

    Live geolocation

    +

    Telegram allows sending the live geolocation of a user in a chat, optionally setting a proximity alert.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messageMediaPoll.html b/data/core.telegram.org/constructor/messageMediaPoll.html new file mode 100644 index 0000000000..ea5666ab6c --- /dev/null +++ b/data/core.telegram.org/constructor/messageMediaPoll.html @@ -0,0 +1,152 @@ + + + + + messageMediaPoll + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    messageMediaPoll

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputMediaVenue.html b/data/core.telegram.org/constructor/messageMediaVenue.html similarity index 87% rename from data/core.telegram.org/constructor/inputMediaVenue.html rename to data/core.telegram.org/constructor/messageMediaVenue.html index a47520c245..7386fac385 100644 --- a/data/core.telegram.org/constructor/inputMediaVenue.html +++ b/data/core.telegram.org/constructor/messageMediaVenue.html @@ -2,12 +2,12 @@ - inputMediaVenue + messageMediaVenue - - + + - + @@ -36,10 +36,10 @@
    - -

    inputMediaVenue

    + +

    messageMediaVenue

    -

    Can be used to send a venue geolocation.

    +

    Venue

    -
    inputMediaVenue#c13d1c11 geo_point:InputGeoPoint title:string address:string provider:string venue_id:string venue_type:string = InputMedia;

    +
    messageMediaVenue#2ec0533f geo:GeoPoint title:string address:string provider:string venue_id:string venue_type:string = MessageMedia;

    Parameters

    @@ -64,9 +64,9 @@ - - - + + + @@ -76,7 +76,7 @@ - + @@ -96,7 +96,7 @@
    geo_pointInputGeoPointGeolocationgeoGeoPointGeolocation of venue
    title
    address stringPhysical address of the venueAddress
    provider

    Type

    -

    InputMedia

    +

    MessageMedia

    diff --git a/data/core.telegram.org/constructor/pollAnswerVoters.html b/data/core.telegram.org/constructor/messageReplyHeader.html similarity index 81% rename from data/core.telegram.org/constructor/pollAnswerVoters.html rename to data/core.telegram.org/constructor/messageReplyHeader.html index 403fe8f686..d539711b68 100644 --- a/data/core.telegram.org/constructor/pollAnswerVoters.html +++ b/data/core.telegram.org/constructor/messageReplyHeader.html @@ -2,12 +2,12 @@ - pollAnswerVoters + messageReplyHeader - - + + - + @@ -36,10 +36,10 @@
    - -

    pollAnswerVoters

    + +

    messageReplyHeader

    -

    A poll answer, and how users voted on it

    +

    Message replies and thread information

    -
    pollAnswerVoters#3b6ddad2 flags:# chosen:flags.0?true correct:flags.1?true option:bytes voters:int = PollAnswerVoters;

    +
    messageReplyHeader#a6d57763 flags:# reply_to_msg_id:int reply_to_peer_id:flags.0?Peer reply_to_top_id:flags.1?int = MessageReplyHeader;

    Parameters

    @@ -69,32 +69,27 @@ - - - - - - - - - - - - - - - - + - + + + + + + + + + + +
    Flags, see TL conditional fields
    chosenflags.0?trueWhether we have chosen this answer
    correctflags.1?trueFor quizes, whether the option we have chosen is correct
    optionbytesThe param that has to be passed to messages.sendVote.
    votersreply_to_msg_id intHow many users voted for this optionID of message to which this message is replying
    reply_to_peer_idflags.0?PeerFor replies sent in channel discussion threads of which the current user is not a member, the discussion group ID
    reply_to_top_idflags.1?intID of the message that started this message thread

    Type

    -

    PollAnswerVoters

    +

    MessageReplyHeader

    Related pages

    -

    messages.sendVote

    -

    Vote in a poll

    +

    Threads

    +

    Telegram allows commenting on a channel post or on a generic supergroup message, thanks to message threads.

    diff --git a/data/core.telegram.org/constructor/messages.affectedHistory b/data/core.telegram.org/constructor/messages.affectedHistory deleted file mode 100644 index feb4b8e889..0000000000 --- a/data/core.telegram.org/constructor/messages.affectedHistory +++ /dev/null @@ -1,157 +0,0 @@ - - - - - messages.affectedHistory - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    messages.affectedHistory

    - -

    Affected part of communication history with the user or in a chat.

    -

    -
    messages.affectedHistory#b45c69d1 pts:int pts_count:int offset:int = messages.AffectedHistory;

    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    ptsintNumber of events occured in a text box
    pts_countintNumber of affected events
    offsetintIf 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
    -

    Type

    -

    messages.AffectedHistory

    - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/messages.chatsSlice b/data/core.telegram.org/constructor/messages.chatsSlice new file mode 100644 index 0000000000..e02e2c0166 --- /dev/null +++ b/data/core.telegram.org/constructor/messages.chatsSlice @@ -0,0 +1,155 @@ + + + + + messages.chatsSlice + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    messages.chatsSlice

    + +

    Partial list of chats, more would have to be fetched with pagination

    +

    +
    messages.chatsSlice#9cd81144 count:int chats:Vector<Chat> = messages.Chats;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    countintTotal number of results that were found server-side (not all are included in chats)
    chatsVector<Chat>Chats
    +

    Type

    +

    messages.Chats

    +

    Related pages

    +

    Pagination in the API

    +

    How to fetch results from large lists of objects.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messages.statedMessagesLinks b/data/core.telegram.org/constructor/messages.dialogs similarity index 85% rename from data/core.telegram.org/constructor/messages.statedMessagesLinks rename to data/core.telegram.org/constructor/messages.dialogs index 355f29d8d4..8d03ea693c 100644 --- a/data/core.telegram.org/constructor/messages.statedMessagesLinks +++ b/data/core.telegram.org/constructor/messages.dialogs @@ -2,12 +2,12 @@ - messages.statedMessagesLinks + messages.dialogs - - + + - + @@ -36,10 +36,10 @@
    - -

    messages.statedMessagesLinks

    + +

    messages.dialogs

    -

    Message with auxiliary data, state data and the list of changed links.

    +

    Full list of chats with messages and auxiliary data.

    -
    Constructor schema is available as of layer 24. Switch »

    +
    messages.dialogs#15ba6c40 dialogs:Vector<Dialog> messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Dialogs;

    Parameters

    @@ -64,39 +64,29 @@ + + + + + - + - + - - - - - - - - - - - - - - - - +
    dialogsVector<Dialog>List of chats
    messages Vector<Message>List of messagesList of last messages from each chat
    chats Vector<Chat>List of cats mentioned in messagesList of groups mentioned in the chats
    users Vector<User>List of users mentioned in messages and cahts
    linksVector<contacts.Link>List of changed links
    ptsintNumber of event occurred in a text box
    seqintNumber of sent updatesList of users mentioned in messages and groups

    Type

    -

    messages.StatedMessages

    +

    messages.Dialogs

    diff --git a/data/core.telegram.org/constructor/auth.sentCodeTypeSms b/data/core.telegram.org/constructor/messages.dialogsNotModified similarity index 89% rename from data/core.telegram.org/constructor/auth.sentCodeTypeSms rename to data/core.telegram.org/constructor/messages.dialogsNotModified index 8123d72cbb..a92be2f9b8 100644 --- a/data/core.telegram.org/constructor/auth.sentCodeTypeSms +++ b/data/core.telegram.org/constructor/messages.dialogsNotModified @@ -2,12 +2,12 @@ - auth.sentCodeTypeSms + messages.dialogsNotModified - - + + - + @@ -36,10 +36,10 @@
    - -

    auth.sentCodeTypeSms

    + +

    messages.dialogsNotModified

    -

    The code was sent via SMS

    +

    Dialogs haven't changed

    -
    auth.sentCodeTypeSms#c000bba2 length:int = auth.SentCodeType;

    +
    messages.dialogsNotModified#f0e3e596 count:int = messages.Dialogs;

    Parameters

    @@ -64,14 +64,14 @@ - + - +
    lengthcount intLength of the code in bytesNumber of dialogs found server-side by the query

    Type

    -

    auth.SentCodeType

    +

    messages.Dialogs

    diff --git a/data/core.telegram.org/constructor/messages.dialogsSlice b/data/core.telegram.org/constructor/messages.dialogsSlice new file mode 100644 index 0000000000..735a489a9d --- /dev/null +++ b/data/core.telegram.org/constructor/messages.dialogsSlice @@ -0,0 +1,167 @@ + + + + + messages.dialogsSlice + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    messages.dialogsSlice

    + +

    Incomplete list of dialogs with messages and auxiliary data.

    +

    +
    messages.dialogsSlice#71e094f3 count:int dialogs:Vector<Dialog> messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Dialogs;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    countintTotal number of dialogs
    dialogsVector<Dialog>List of dialogs
    messagesVector<Message>List of last messages from dialogs
    chatsVector<Chat>List of chats mentioned in dialogs
    usersVector<User>List of users mentioned in messages and chats
    +

    Type

    +

    messages.Dialogs

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/updateReadChannelDiscussionInbox.html b/data/core.telegram.org/constructor/messages.discussionMessage similarity index 77% rename from data/core.telegram.org/constructor/updateReadChannelDiscussionInbox.html rename to data/core.telegram.org/constructor/messages.discussionMessage index 89bed32f07..2b8b285857 100644 --- a/data/core.telegram.org/constructor/updateReadChannelDiscussionInbox.html +++ b/data/core.telegram.org/constructor/messages.discussionMessage @@ -2,12 +2,12 @@ - updateReadChannelDiscussionInbox + messages.discussionMessage - - + + - + @@ -36,10 +36,10 @@
    - -

    updateReadChannelDiscussionInbox

    + +

    messages.discussionMessage

    -

    Incoming comments in a discussion thread were marked as read

    +

    Information about a message thread

    -
    updateReadChannelDiscussionInbox#1cc7de54 flags:# channel_id:int top_msg_id:int read_max_id:int broadcast_id:flags.0?int broadcast_post:flags.0?int = Update;

    +
    messages.discussionMessage#f5dd8f9d flags:# messages:Vector<Message> max_id:flags.0?int read_inbox_max_id:flags.1?int read_outbox_max_id:flags.2?int chats:Vector<Chat> users:Vector<User> = messages.DiscussionMessage;

    Parameters

    @@ -69,37 +69,40 @@ - - - + + + - - - - - - - - - - - + - + - - - + + + + + + + + + + + + + + + + + +
    Flags, see TL conditional fields
    channel_idintDiscussion group IDmessagesVector<Message>Discussion messages
    top_msg_idintID of the group message that started the thread (message in linked discussion group)
    read_max_idintMessage ID of latest read incoming message for this thread
    broadcast_idmax_id flags.0?intIf set, contains the ID of the channel that contains the post that started the comment thread in the discussion group (channel_id)Message ID of latest reply in this thread
    broadcast_postflags.0?intIf set, contains the ID of the channel post that started the the comment threadread_inbox_max_idflags.1?intMessage ID of latest read incoming message in this thread
    read_outbox_max_idflags.2?intMessage ID of latest read outgoing message in this thread
    chatsVector<Chat>Chats mentioned in constructor
    usersVector<User>Users mentioned in constructor

    Type

    -

    Update

    +

    messages.DiscussionMessage

    Related pages

    -

    Channels

    -

    How to handle channels, supergroups, groups, and what's the difference between them.

    Threads

    Telegram allows commenting on a channel post or on a generic supergroup message, thanks to message threads.

    diff --git a/data/core.telegram.org/constructor/messages.featuredStickersNotModified b/data/core.telegram.org/constructor/messages.featuredStickersNotModified new file mode 100644 index 0000000000..0d431e3c4d --- /dev/null +++ b/data/core.telegram.org/constructor/messages.featuredStickersNotModified @@ -0,0 +1,147 @@ + + + + + messages.featuredStickersNotModified + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    messages.featuredStickersNotModified

    + +

    Featured stickers haven't changed

    +

    +
    messages.featuredStickersNotModified#c6dc0c66 count:int = messages.FeaturedStickers;

    +

    Parameters

    + + + + + + + + + + + + + + + +
    NameTypeDescription
    countintTotal number of featured stickers
    +

    Type

    +

    messages.FeaturedStickers

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messages.favedStickersNotModified b/data/core.telegram.org/constructor/messages.foundStickerSetsNotModified similarity index 90% rename from data/core.telegram.org/constructor/messages.favedStickersNotModified rename to data/core.telegram.org/constructor/messages.foundStickerSetsNotModified index 3be4785417..29d8f82771 100644 --- a/data/core.telegram.org/constructor/messages.favedStickersNotModified +++ b/data/core.telegram.org/constructor/messages.foundStickerSetsNotModified @@ -2,12 +2,12 @@ - messages.favedStickersNotModified + messages.foundStickerSetsNotModified - - + + - + @@ -36,10 +36,10 @@
    - -

    messages.favedStickersNotModified

    + +

    messages.foundStickerSetsNotModified

    -

    No new favorited stickers were found

    +

    No further results were found

    -
    messages.favedStickersNotModified#9e8fa6d3 = messages.FavedStickers;

    +
    messages.foundStickerSetsNotModified#d54b65d = messages.FoundStickerSets;

    Parameters

    This constructor does not require any parameters.

    Type

    -

    messages.FavedStickers

    +

    messages.FoundStickerSets

    diff --git a/data/core.telegram.org/constructor/sendMessageUploadAudioAction.html b/data/core.telegram.org/constructor/messages.messagesNotModified similarity index 88% rename from data/core.telegram.org/constructor/sendMessageUploadAudioAction.html rename to data/core.telegram.org/constructor/messages.messagesNotModified index 935694469c..54bd265920 100644 --- a/data/core.telegram.org/constructor/sendMessageUploadAudioAction.html +++ b/data/core.telegram.org/constructor/messages.messagesNotModified @@ -2,12 +2,12 @@ - sendMessageUploadAudioAction + messages.messagesNotModified - - + + - + @@ -36,10 +36,10 @@
    - -

    sendMessageUploadAudioAction

    + +

    messages.messagesNotModified

    -

    User is uploading a voice message.

    +

    No new messages matching the query were found

    -
    sendMessageUploadAudioAction#f351d7ab progress:int = SendMessageAction;

    +
    messages.messagesNotModified#74535f21 count:int = messages.Messages;

    Parameters

    @@ -64,14 +64,14 @@ - + - +
    progresscount intProgress percentageNumber of results found server-side by the given query

    Type

    -

    SendMessageAction

    +

    messages.Messages

    diff --git a/data/core.telegram.org/constructor/messages.messagesSlice b/data/core.telegram.org/constructor/messages.messagesSlice deleted file mode 100644 index f1c3b9969a..0000000000 --- a/data/core.telegram.org/constructor/messages.messagesSlice +++ /dev/null @@ -1,185 +0,0 @@ - - - - - messages.messagesSlice - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    messages.messagesSlice

    - -

    Incomplete list of messages and auxiliary data.

    -

    -
    messages.messagesSlice#3a54685e flags:# inexact:flags.1?true count:int next_rate:flags.0?int offset_id_offset:flags.2?int messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Messages;

    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    flags#Flags, see TL conditional fields
    inexactflags.1?trueIf set, indicates that the results may be inexact
    countintTotal number of messages in the list
    next_rateflags.0?intRate to use in the offset_rate parameter in the next call to messages.searchGlobal
    offset_id_offsetflags.2?intIndicates the absolute position of messages[0] within the total result set with count count.
    This is useful, for example, if the result was fetched using offset_id, and we need to display a progress/total counter (like photo 134 of 200, for all media in a chat, we could simply use photo ${offset_id_offset} of ${count}.
    messagesVector<Message>List of messages
    chatsVector<Chat>List of chats mentioned in messages
    usersVector<User>List of users mentioned in messages and chats
    -

    Type

    -

    messages.Messages

    -

    Related pages

    -

    messages.searchGlobal

    -

    Search for messages and peers globally

    - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/messages.featuredStickers b/data/core.telegram.org/constructor/messages.recentStickers similarity index 84% rename from data/core.telegram.org/constructor/messages.featuredStickers rename to data/core.telegram.org/constructor/messages.recentStickers index 5f8536e59c..56afa717dc 100644 --- a/data/core.telegram.org/constructor/messages.featuredStickers +++ b/data/core.telegram.org/constructor/messages.recentStickers @@ -2,12 +2,12 @@ - messages.featuredStickers + messages.recentStickers - - + + - + @@ -36,10 +36,10 @@
    - -

    messages.featuredStickers

    + +

    messages.recentStickers

    -

    Featured stickersets

    +

    Recently used stickers

    -
    messages.featuredStickers#b6abc341 hash:int count:int sets:Vector<StickerSetCovered> unread:Vector<long> = messages.FeaturedStickers;

    +
    messages.recentStickers#22f3afb3 hash:int packs:Vector<StickerPack> stickers:Vector<Document> dates:Vector<int> = messages.RecentStickers;

    Parameters

    @@ -69,24 +69,24 @@ - - - + + + - - - + + + - - - + + +
    Hash for pagination, for more info click here
    countintTotal number of featured stickerspacksVector<StickerPack>Emojis associated to stickers
    setsVector<StickerSetCovered>Featured stickersetsstickersVector<Document>Recent stickers
    unreadVector<long>IDs of new featured stickersetsdatesVector<int>When was each sticker last used

    Type

    -

    messages.FeaturedStickers

    +

    messages.RecentStickers

    Related pages

    Pagination in the API

    How to fetch results from large lists of objects.

    diff --git a/data/core.telegram.org/constructor/messages.stickers b/data/core.telegram.org/constructor/messages.savedGifs similarity index 91% rename from data/core.telegram.org/constructor/messages.stickers rename to data/core.telegram.org/constructor/messages.savedGifs index 873f8c0ecd..da90baa97c 100644 --- a/data/core.telegram.org/constructor/messages.stickers +++ b/data/core.telegram.org/constructor/messages.savedGifs @@ -2,12 +2,12 @@ - messages.stickers + messages.savedGifs - - + + - + @@ -36,10 +36,10 @@
    - -

    messages.stickers

    + +

    messages.savedGifs

    -

    Found stickers

    +

    Saved gifs

    -
    messages.stickers#e4599bbd hash:int stickers:Vector<Document> = messages.Stickers;

    +
    messages.savedGifs#2e0709a5 hash:int gifs:Vector<Document> = messages.SavedGifs;

    Parameters

    @@ -69,14 +69,14 @@ - + - +
    Hash for pagination, for more info click here
    stickersgifs Vector<Document>StickersList of saved gifs

    Type

    -

    messages.Stickers

    +

    messages.SavedGifs

    Related pages

    Pagination in the API

    How to fetch results from large lists of objects.

    diff --git a/data/core.telegram.org/constructor/messages.stickersNotModified b/data/core.telegram.org/constructor/messages.savedGifsNotModified similarity index 90% rename from data/core.telegram.org/constructor/messages.stickersNotModified rename to data/core.telegram.org/constructor/messages.savedGifsNotModified index e615263628..e4b836368c 100644 --- a/data/core.telegram.org/constructor/messages.stickersNotModified +++ b/data/core.telegram.org/constructor/messages.savedGifsNotModified @@ -2,12 +2,12 @@ - messages.stickersNotModified + messages.savedGifsNotModified - - + + - + @@ -36,10 +36,10 @@
    - -

    messages.stickersNotModified

    + +

    messages.savedGifsNotModified

    -

    No new stickers were found for the given query

    +

    No new saved gifs were found

    -
    messages.stickersNotModified#f1749a22 = messages.Stickers;

    +
    messages.savedGifsNotModified#e8025ca2 = messages.SavedGifs;

    Parameters

    This constructor does not require any parameters.

    Type

    -

    messages.Stickers

    +

    messages.SavedGifs

    diff --git a/data/core.telegram.org/constructor/messages.stickerSetInstallResultArchive b/data/core.telegram.org/constructor/messages.stickerSetInstallResultArchive new file mode 100644 index 0000000000..5586c3d087 --- /dev/null +++ b/data/core.telegram.org/constructor/messages.stickerSetInstallResultArchive @@ -0,0 +1,147 @@ + + + + + messages.stickerSetInstallResultArchive + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    messages.stickerSetInstallResultArchive

    + +

    The stickerset was installed, but since there are too many stickersets some were archived

    +

    +
    messages.stickerSetInstallResultArchive#35e410a8 sets:Vector<StickerSetCovered> = messages.StickerSetInstallResult;

    +

    Parameters

    + + + + + + + + + + + + + + + +
    NameTypeDescription
    setsVector<StickerSetCovered>Archived stickersets
    +

    Type

    +

    messages.StickerSetInstallResult

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/notifyChats.html b/data/core.telegram.org/constructor/notifyBroadcasts.html similarity index 92% rename from data/core.telegram.org/constructor/notifyChats.html rename to data/core.telegram.org/constructor/notifyBroadcasts.html index cbed4e3be6..96427b9891 100644 --- a/data/core.telegram.org/constructor/notifyChats.html +++ b/data/core.telegram.org/constructor/notifyBroadcasts.html @@ -2,12 +2,12 @@ - notifyChats + notifyBroadcasts - - + + - + @@ -36,10 +36,10 @@
    - -

    notifyChats

    + +

    notifyBroadcasts

    -

    Notifications generated by all groups.

    +

    Channel notification settings

    -
    notifyChats#c007cec3 = NotifyPeer;

    +
    notifyBroadcasts#d612e8ef = NotifyPeer;

    Parameters

    This constructor does not require any parameters.

    Type

    diff --git a/data/core.telegram.org/constructor/notifyPeer.html b/data/core.telegram.org/constructor/notifyPeer.html new file mode 100644 index 0000000000..c82ca4a92d --- /dev/null +++ b/data/core.telegram.org/constructor/notifyPeer.html @@ -0,0 +1,147 @@ + + + + + notifyPeer + + + + + + + + + + + + + +
    + +
    + +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/null.html b/data/core.telegram.org/constructor/null.html new file mode 100644 index 0000000000..78547af02e --- /dev/null +++ b/data/core.telegram.org/constructor/null.html @@ -0,0 +1,132 @@ + + + + + null + + + + + + + + + + + + + +
    + + + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/pageBlockAnchor.html b/data/core.telegram.org/constructor/pageBlockAnchor.html new file mode 100644 index 0000000000..714b734bf1 --- /dev/null +++ b/data/core.telegram.org/constructor/pageBlockAnchor.html @@ -0,0 +1,147 @@ + + + + + pageBlockAnchor + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    pageBlockAnchor

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/pageBlockEmbedPost.html b/data/core.telegram.org/constructor/pageBlockEmbedPost.html new file mode 100644 index 0000000000..131ac1a738 --- /dev/null +++ b/data/core.telegram.org/constructor/pageBlockEmbedPost.html @@ -0,0 +1,177 @@ + + + + + pageBlockEmbedPost + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    pageBlockEmbedPost

    + +

    An embedded post

    +

    +
    pageBlockEmbedPost#f259a80b url:string webpage_id:long author_photo_id:long author:string date:int blocks:Vector<PageBlock> caption:PageCaption = PageBlock;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    urlstringWeb page URL
    webpage_idlongID of generated webpage preview
    author_photo_idlongID of the author's photo
    authorstringAuthor name
    dateintCreation date
    blocksVector<PageBlock>Post contents
    captionPageCaptionCaption
    +

    Type

    +

    PageBlock

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/pageBlockMap.html b/data/core.telegram.org/constructor/pageBlockMap.html new file mode 100644 index 0000000000..e648254227 --- /dev/null +++ b/data/core.telegram.org/constructor/pageBlockMap.html @@ -0,0 +1,167 @@ + + + + + pageBlockMap + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    pageBlockMap

    + +

    A map

    +

    +
    pageBlockMap#a44f3ef6 geo:GeoPoint zoom:int w:int h:int caption:PageCaption = PageBlock;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    geoGeoPointLocation of the map center
    zoomintMap zoom level; 13-20
    wintMap width in pixels before applying scale; 16-102
    hintMap height in pixels before applying scale; 16-1024
    captionPageCaptionCaption
    +

    Type

    +

    PageBlock

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/channelParticipantCreator.html b/data/core.telegram.org/constructor/pageBlockPhoto.html similarity index 84% rename from data/core.telegram.org/constructor/channelParticipantCreator.html rename to data/core.telegram.org/constructor/pageBlockPhoto.html index c7c3ec2014..aca6ff96be 100644 --- a/data/core.telegram.org/constructor/channelParticipantCreator.html +++ b/data/core.telegram.org/constructor/pageBlockPhoto.html @@ -2,12 +2,12 @@ - channelParticipantCreator + pageBlockPhoto - - + + - + @@ -36,10 +36,10 @@
    - -

    channelParticipantCreator

    + +

    pageBlockPhoto

    -

    Channel/supergroup creator

    +

    A photo

    -
    channelParticipantCreator#447dca4b flags:# user_id:int admin_rights:ChatAdminRights rank:flags.0?string = ChannelParticipant;

    +
    pageBlockPhoto#1759c560 flags:# photo_id:long caption:PageCaption url:flags.0?string webpage_id:flags.0?long = PageBlock;

    Parameters

    @@ -69,24 +69,29 @@ - - - + + + - - - + + + - + - + + + + + +
    Flags, see TL conditional fields
    user_idintUser IDphoto_idlongPhoto ID
    admin_rightsChatAdminRightsCreator admin rightscaptionPageCaptionCaption
    rankurl flags.0?stringThe role (rank) of the group creator in the group: just an arbitrary string, admin by defaultHTTP URL of page the photo leads to when clicked
    webpage_idflags.0?longID of preview of the page the photo leads to when clicked

    Type

    -

    ChannelParticipant

    +

    PageBlock

    diff --git a/data/core.telegram.org/constructor/pageBlockParagraph.html b/data/core.telegram.org/constructor/pageBlockSubheader.html similarity index 92% rename from data/core.telegram.org/constructor/pageBlockParagraph.html rename to data/core.telegram.org/constructor/pageBlockSubheader.html index aa07fda5dd..9af181c860 100644 --- a/data/core.telegram.org/constructor/pageBlockParagraph.html +++ b/data/core.telegram.org/constructor/pageBlockSubheader.html @@ -2,12 +2,12 @@ - pageBlockParagraph + pageBlockSubheader - - + + - + @@ -36,10 +36,10 @@
    - -

    pageBlockParagraph

    + +

    pageBlockSubheader

    -

    A paragraph

    +

    Subheader

    -
    pageBlockParagraph#467a0766 text:RichText = PageBlock;

    +
    pageBlockSubheader#f12bb6e1 text:RichText = PageBlock;

    Parameters

    @@ -66,7 +66,7 @@ - +
    text RichTextTextSubheader
    diff --git a/data/core.telegram.org/constructor/secureRequiredType.html b/data/core.telegram.org/constructor/pageBlockVideo.html similarity index 85% rename from data/core.telegram.org/constructor/secureRequiredType.html rename to data/core.telegram.org/constructor/pageBlockVideo.html index 80bdb04db2..c9952bc4cf 100644 --- a/data/core.telegram.org/constructor/secureRequiredType.html +++ b/data/core.telegram.org/constructor/pageBlockVideo.html @@ -2,12 +2,12 @@ - secureRequiredType + pageBlockVideo - - + + - + @@ -36,10 +36,10 @@
    - -

    secureRequiredType

    + +

    pageBlockVideo

    -

    Required type

    +

    Video

    -
    secureRequiredType#829d99da flags:# native_names:flags.0?true selfie_required:flags.1?true translation_required:flags.2?true type:SecureValueType = SecureRequiredType;

    +
    pageBlockVideo#7c8fe7b6 flags:# autoplay:flags.0?true loop:flags.1?true video_id:long caption:PageCaption = PageBlock;

    Parameters

    @@ -69,29 +69,29 @@ - + - + - + - + - - - + + + - - - + + +
    Flags, see TL conditional fields
    native_namesautoplay flags.0?trueNative namesWhether the video is set to autoplay
    selfie_requiredloop flags.1?trueIs a selfie requiredWhether the video is set to loop
    translation_requiredflags.2?trueIs a translation requiredvideo_idlongVideo ID
    typeSecureValueTypeSecure value typecaptionPageCaptionCaption

    Type

    -

    SecureRequiredType

    +

    PageBlock

    diff --git a/data/core.telegram.org/constructor/pageListOrderedItemText.html b/data/core.telegram.org/constructor/pageListOrderedItemText.html new file mode 100644 index 0000000000..46c8157088 --- /dev/null +++ b/data/core.telegram.org/constructor/pageListOrderedItemText.html @@ -0,0 +1,152 @@ + + + + + pageListOrderedItemText + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    pageListOrderedItemText

    + +

    Ordered list of text items

    +

    +
    pageListOrderedItemText#5e068047 num:string text:RichText = PageListOrderedItem;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    numstringNumber of element within ordered list
    textRichTextText
    +

    Type

    +

    PageListOrderedItem

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/messages.botCallbackAnswer b/data/core.telegram.org/constructor/pageRelatedArticle.html similarity index 80% rename from data/core.telegram.org/constructor/messages.botCallbackAnswer rename to data/core.telegram.org/constructor/pageRelatedArticle.html index dc1a901223..3adc100ab7 100644 --- a/data/core.telegram.org/constructor/messages.botCallbackAnswer +++ b/data/core.telegram.org/constructor/pageRelatedArticle.html @@ -2,12 +2,12 @@ - messages.botCallbackAnswer + pageRelatedArticle - - + + - + @@ -36,10 +36,10 @@
    - -

    messages.botCallbackAnswer

    + +

    pageRelatedArticle

    -

    Callback answer sent by the bot in response to a button press

    +

    Related article

    -
    messages.botCallbackAnswer#36585ea4 flags:# alert:flags.1?true has_url:flags.3?true native_ui:flags.4?true message:flags.0?string url:flags.2?string cache_time:int = messages.BotCallbackAnswer;

    +
    pageRelatedArticle#b390dc08 flags:# url:string webpage_id:long title:flags.0?string description:flags.1?string photo_id:flags.2?long author:flags.3?string published_date:flags.4?int = PageRelatedArticle;

    Parameters

    @@ -69,39 +69,44 @@ - - - - - - - - - - - - - - - - - - - - - - + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Flags, see TL conditional fields
    alertflags.1?trueWhether an alert should be shown to the user instead of a toast notification
    has_urlflags.3?trueWhether an URL is present
    native_uiflags.4?trueWhether to show games in WebView or in native UI.
    messageflags.0?stringAlert to show
    urlflags.2?stringURL to openstringURL of article
    cache_timeintFor how long should this answer be cachedwebpage_idlongWebpage ID of generated IV preview
    titleflags.0?stringTitle
    descriptionflags.1?stringDescription
    photo_idflags.2?longID of preview photo
    authorflags.3?stringAuthor name
    published_dateflags.4?intDate of pubblication

    Type

    -

    messages.BotCallbackAnswer

    +

    PageRelatedArticle

    diff --git a/data/core.telegram.org/constructor/pageBlockList.html b/data/core.telegram.org/constructor/pageTableRow.html similarity index 89% rename from data/core.telegram.org/constructor/pageBlockList.html rename to data/core.telegram.org/constructor/pageTableRow.html index c0b108b3f6..0b37f95a6c 100644 --- a/data/core.telegram.org/constructor/pageBlockList.html +++ b/data/core.telegram.org/constructor/pageTableRow.html @@ -2,12 +2,12 @@ - pageBlockList + pageTableRow - - + + - + @@ -36,10 +36,10 @@
    - -

    pageBlockList

    + +

    pageTableRow

    -

    Unordered list of IV blocks

    +

    Table row

    -
    pageBlockList#e4e88011 items:Vector<PageListItem> = PageBlock;

    +
    pageTableRow#e0c0c5e5 cells:Vector<PageTableCell> = PageTableRow;

    Parameters

    @@ -64,14 +64,14 @@ - - - + + +
    itemsVector<PageListItem>List of blocks in an IV pagecellsVector<PageTableCell>Table cells

    Type

    -

    PageBlock

    +

    PageTableRow

    diff --git a/data/core.telegram.org/constructor/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow.html b/data/core.telegram.org/constructor/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow.html deleted file mode 100644 index 452a9767b1..0000000000 --- a/data/core.telegram.org/constructor/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow

    - -

    This key derivation algorithm defines that SRP 2FA login must be used

    -

    -
    passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow#3a912d4a salt1:bytes salt2:bytes g:int p:bytes = PasswordKdfAlgo;

    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    salt1bytesOne of two salts used by the derivation function (see SRP 2FA login)
    salt2bytesOne of two salts used by the derivation function (see SRP 2FA login)
    gintBase (see SRP 2FA login)
    pbytes2048-bit modulus (see SRP 2FA login)
    -

    Type

    -

    PasswordKdfAlgo

    -

    Related pages

    -

    Two-factor authentication

    -

    How to login to a user's account if they have enabled 2FA, how to change password.

    - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/botCommand.html b/data/core.telegram.org/constructor/paymentCharge.html similarity index 89% rename from data/core.telegram.org/constructor/botCommand.html rename to data/core.telegram.org/constructor/paymentCharge.html index 685b932fcf..f58d011623 100644 --- a/data/core.telegram.org/constructor/botCommand.html +++ b/data/core.telegram.org/constructor/paymentCharge.html @@ -2,12 +2,12 @@ - botCommand + paymentCharge - - + + - + @@ -36,10 +36,10 @@
    - -

    botCommand

    + +

    paymentCharge

    -

    Describes a bot command that can be used in a chat

    +

    Payment identifier

    -
    botCommand#c27ac8c7 command:string description:string = BotCommand;

    +
    paymentCharge#ea02c27e id:string provider_charge_id:string = PaymentCharge;

    Parameters

    @@ -64,19 +64,19 @@ - + - + - + - +
    commandid string/command nameTelegram payment identifier
    descriptionprovider_charge_id stringDescription of the commandProvider payment identifier

    Type

    -

    BotCommand

    +

    PaymentCharge

    diff --git a/data/core.telegram.org/constructor/shippingOption.html b/data/core.telegram.org/constructor/paymentSavedCredentialsCard.html similarity index 88% rename from data/core.telegram.org/constructor/shippingOption.html rename to data/core.telegram.org/constructor/paymentSavedCredentialsCard.html index 1a410cd4db..e849ce7336 100644 --- a/data/core.telegram.org/constructor/shippingOption.html +++ b/data/core.telegram.org/constructor/paymentSavedCredentialsCard.html @@ -2,12 +2,12 @@ - shippingOption + paymentSavedCredentialsCard - - + + - + @@ -36,10 +36,10 @@
    - -

    shippingOption

    + +

    paymentSavedCredentialsCard

    -

    Shipping option

    +

    Saved credit card

    -
    shippingOption#b6213cdf id:string title:string prices:Vector<LabeledPrice> = ShippingOption;

    +
    paymentSavedCredentialsCard#cdc27a1f id:string title:string = PaymentSavedCredentials;

    Parameters

    @@ -66,22 +66,17 @@ - + - - - - -
    id stringOption IDCard ID
    title string Title
    pricesVector<LabeledPrice>List of price portions

    Type

    -

    ShippingOption

    +

    PaymentSavedCredentials

    diff --git a/data/core.telegram.org/constructor/langPackLanguage.html b/data/core.telegram.org/constructor/payments.paymentForm similarity index 61% rename from data/core.telegram.org/constructor/langPackLanguage.html rename to data/core.telegram.org/constructor/payments.paymentForm index d7b419e2d5..2979c048ba 100644 --- a/data/core.telegram.org/constructor/langPackLanguage.html +++ b/data/core.telegram.org/constructor/payments.paymentForm @@ -2,12 +2,12 @@ - langPackLanguage + payments.paymentForm - - + + - + @@ -36,10 +36,10 @@
    - -

    langPackLanguage

    + +

    payments.paymentForm

    -

    Identifies a localization pack

    +

    Payment form

    -
    langPackLanguage#eeca5ce3 flags:# official:flags.0?true rtl:flags.2?true beta:flags.3?true name:string native_name:string lang_code:string base_lang_code:flags.1?string plural_code:string strings_count:int translated_count:int translations_url:string = LangPackLanguage;

    -

    Parameters

    +
    payments.paymentForm#3f56aea3 flags:# can_save_credentials:flags.2?true password_missing:flags.3?true bot_id:int invoice:Invoice provider_id:int url:string native_provider:flags.4?string native_params:flags.4?DataJSON saved_info:flags.0?PaymentRequestedInfo saved_credentials:flags.1?PaymentSavedCredentials users:Vector<User> = payments.PaymentForm;

    +

    Parameters

    - + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + +
    NameTypeType Description
    flags## Flags, see TL conditional fields
    officialflags.0?trueWhether the language pack is officialcan_save_credentialsflags.2?trueWhether the user can choose to save credentials.
    rtlflags.2?trueIs this a localization pack for an RTL languagepassword_missingflags.3?trueIndicates that the user can save payment credentials, but only after setting up a 2FA password (currently the account doesn't have a 2FA password)
    betaflags.3?trueIs this a beta localization pack?bot_idintBot ID
    namestringLanguage nameinvoiceInvoiceInvoice
    native_namestringLanguage name in the language itselfprovider_idintPayment provider ID.
    lang_codestringLanguage code (pack identifier)urlstringPayment form URL
    base_lang_codeflags.1?stringIdentifier of a base language pack; may be empty. If a string is missed in the language pack, then it should be fetched from base language pack. Unsupported in custom language packsnative_providerflags.4?stringPayment provider name.
    One of the following:
    - stripe
    plural_codestringA language code to be used to apply plural forms. See https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html for more infonative_paramsflags.4?DataJSONContains information about the payment provider, if available, to support it natively without the need for opening the URL.
    A JSON object that can contain the following fields:

    - apple_pay_merchant_id: Apple Pay merchant ID
    - google_pay_public_key: Google Pay public key
    - need_country: True, if the user country must be provided,
    - need_zip: True, if the user ZIP/postal code must be provided,
    - need_cardholder_name: True, if the cardholder name must be provided +
    strings_countintTotal number of non-deleted strings from the language packsaved_infoflags.0?PaymentRequestedInfoSaved server-side order information
    translated_countintTotal number of translated strings from the language packsaved_credentialsflags.1?PaymentSavedCredentialsContains information about saved card credentials
    translations_urlstringLink to language translation interface; empty for custom local language packsusersVector<User>Users
    -

    Type

    -

    LangPackLanguage

    +

    Type

    +

    payments.PaymentForm

    +

    Related pages

    +

    Two-factor authentication

    +

    How to login to a user's account if they have enabled 2FA, how to change password.

    +
    diff --git a/data/core.telegram.org/constructor/payments.paymentVerificationNeeded b/data/core.telegram.org/constructor/payments.paymentVerificationNeeded new file mode 100644 index 0000000000..44e9e33978 --- /dev/null +++ b/data/core.telegram.org/constructor/payments.paymentVerificationNeeded @@ -0,0 +1,147 @@ + + + + + payments.paymentVerificationNeeded + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    payments.paymentVerificationNeeded

    + +

    Payment was not successful, additional verification is needed

    +

    +
    payments.paymentVerificationNeeded#d8411139 url:string = payments.PaymentResult;

    +

    Parameters

    + + + + + + + + + + + + + + + +
    NameTypeDescription
    urlstringURL for additional payment credentials verification
    +

    Type

    +

    payments.PaymentResult

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/updateTheme.html b/data/core.telegram.org/constructor/peerChannel.html similarity index 90% rename from data/core.telegram.org/constructor/updateTheme.html rename to data/core.telegram.org/constructor/peerChannel.html index f677cc66aa..f2adf42043 100644 --- a/data/core.telegram.org/constructor/updateTheme.html +++ b/data/core.telegram.org/constructor/peerChannel.html @@ -2,12 +2,12 @@ - updateTheme + peerChannel - - + + - + @@ -36,10 +36,10 @@
    - -

    updateTheme

    + +

    peerChannel

    -

    A cloud theme was updated

    +

    Channel/supergroup

    -
    updateTheme#8216fba3 theme:Theme = Update;

    +
    peerChannel#bddde532 channel_id:int = Peer;

    Parameters

    @@ -64,14 +64,14 @@ - - - + + +
    themeThemeThemechannel_idintChannel ID

    Type

    -

    Update

    +

    Peer

    diff --git a/data/core.telegram.org/constructor/messageMediaVideo.html b/data/core.telegram.org/constructor/peerUser.html similarity index 91% rename from data/core.telegram.org/constructor/messageMediaVideo.html rename to data/core.telegram.org/constructor/peerUser.html index 29438e0667..318e2b3a30 100644 --- a/data/core.telegram.org/constructor/messageMediaVideo.html +++ b/data/core.telegram.org/constructor/peerUser.html @@ -2,12 +2,12 @@ - messageMediaVideo + peerUser - - + + - + @@ -36,10 +36,10 @@
    - -

    messageMediaVideo

    + +

    peerUser

    -

    Attached video.

    +

    Chat partner

    -
    Constructor schema is available as of layer 28. Switch »

    +
    peerUser#9db1bc6d user_id:int = Peer;

    Parameters

    @@ -64,14 +64,14 @@ - - - + + +
    videoVideoVideouser_idintUser identifier

    Type

    -

    MessageMedia

    +

    Peer

    diff --git a/data/core.telegram.org/constructor/phoneCallDiscardReasonDisconnect.html b/data/core.telegram.org/constructor/phoneCallDiscardReasonDisconnect.html new file mode 100644 index 0000000000..12aecd88f7 --- /dev/null +++ b/data/core.telegram.org/constructor/phoneCallDiscardReasonDisconnect.html @@ -0,0 +1,132 @@ + + + + + phoneCallDiscardReasonDisconnect + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    phoneCallDiscardReasonDisconnect

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/phoneCallDiscardReasonMissed.html b/data/core.telegram.org/constructor/phoneCallDiscardReasonMissed.html new file mode 100644 index 0000000000..46e60f23e5 --- /dev/null +++ b/data/core.telegram.org/constructor/phoneCallDiscardReasonMissed.html @@ -0,0 +1,132 @@ + + + + + phoneCallDiscardReasonMissed + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    phoneCallDiscardReasonMissed

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/phoneCallProtocol.html b/data/core.telegram.org/constructor/phoneCallProtocol.html new file mode 100644 index 0000000000..264d6d9a17 --- /dev/null +++ b/data/core.telegram.org/constructor/phoneCallProtocol.html @@ -0,0 +1,179 @@ + + + + + phoneCallProtocol + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    phoneCallProtocol

    + +

    Protocol info for libtgvoip

    +

    +
    phoneCallProtocol#fc878fc8 flags:# udp_p2p:flags.0?true udp_reflector:flags.1?true min_layer:int max_layer:int library_versions:Vector<string> = PhoneCallProtocol;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    udp_p2pflags.0?trueWhether to allow P2P connection to the other participant
    udp_reflectorflags.1?trueWhether to allow connection to the other participants through the reflector servers
    min_layerintMinimum layer for remote libtgvoip
    max_layerintMaximum layer for remote libtgvoip
    library_versionsVector<string>When using phone.requestCall and phone.acceptCall, specify all library versions supported by the client.
    The server will merge and choose the best library version supported by both peers, returning only the best value in the result of the callee's phone.acceptCall and in the phoneCallAccepted update received by the caller.
    +

    Type

    +

    PhoneCallProtocol

    +

    Related pages

    +

    phone.requestCall

    +

    Start a telegram phone call

    +

    phone.acceptCall

    +

    Accept incoming call

    +

    phoneCallAccepted

    +

    An accepted phone call

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/phoneCallAccepted.html b/data/core.telegram.org/constructor/phoneCallRequested.html similarity index 87% rename from data/core.telegram.org/constructor/phoneCallAccepted.html rename to data/core.telegram.org/constructor/phoneCallRequested.html index f2e4ccef2e..9fe04d4505 100644 --- a/data/core.telegram.org/constructor/phoneCallAccepted.html +++ b/data/core.telegram.org/constructor/phoneCallRequested.html @@ -2,12 +2,12 @@ - phoneCallAccepted + phoneCallRequested - - + + - + @@ -36,10 +36,10 @@
    - -

    phoneCallAccepted

    + +

    phoneCallRequested

    -

    An accepted phone call

    +

    Requested phone call

    -
    phoneCallAccepted#997c454a flags:# video:flags.6?true id:long access_hash:long date:int admin_id:int participant_id:int g_b:bytes protocol:PhoneCallProtocol = PhoneCall;

    +
    phoneCallRequested#87eabb53 flags:# video:flags.6?true id:long access_hash:long date:int admin_id:int participant_id:int g_a_hash:bytes protocol:PhoneCallProtocol = PhoneCall;

    Parameters

    @@ -76,37 +76,37 @@ - + - + - + - + - + - + - + - +
    id longID of accepted phone callPhone call ID
    access_hash longAccess hash of phone callAccess hash
    date intWhen was the call acceptedWhen was the phone call created
    admin_id intID of the call creatorID of the creator of the phone call
    participant_id intID of the other user in the callID of the other participant of the phone call
    g_bg_a_hash bytesB parameter for secure E2E phone call key exchangeParameter for key exchange
    protocol PhoneCallProtocolProtocol to use for phone callCall protocol info to be passed to libtgvoip
    diff --git a/data/core.telegram.org/constructor/phoneCallWaiting.html b/data/core.telegram.org/constructor/phoneCallWaiting.html new file mode 100644 index 0000000000..914d1259dd --- /dev/null +++ b/data/core.telegram.org/constructor/phoneCallWaiting.html @@ -0,0 +1,187 @@ + + + + + phoneCallWaiting + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    phoneCallWaiting

    + +

    Incoming phone call

    +

    +
    phoneCallWaiting#1b8f4ad1 flags:# video:flags.6?true id:long access_hash:long date:int admin_id:int participant_id:int protocol:PhoneCallProtocol receive_date:flags.0?int = PhoneCall;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    videoflags.6?trueIs this a video call
    idlongCall ID
    access_hashlongAccess hash
    dateintDate
    admin_idintAdmin ID
    participant_idintParticipant ID
    protocolPhoneCallProtocolPhone call protocol info
    receive_dateflags.0?intWhen was the phone call received
    +

    Type

    +

    PhoneCall

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/phoneConnection.html b/data/core.telegram.org/constructor/phoneConnection.html new file mode 100644 index 0000000000..abdc79a533 --- /dev/null +++ b/data/core.telegram.org/constructor/phoneConnection.html @@ -0,0 +1,167 @@ + + + + + phoneConnection + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    phoneConnection

    + +

    Identifies an endpoint that can be used to connect to the other user in a phone call

    +

    +
    phoneConnection#9d4c17c0 id:long ip:string ipv6:string port:int peer_tag:bytes = PhoneConnection;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    idlongEndpoint ID
    ipstringIP address of endpoint
    ipv6stringIPv6 address of endpoint
    portintPort ID
    peer_tagbytesOur peer tag
    +

    Type

    +

    PhoneConnection

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/userProfilePhoto.html b/data/core.telegram.org/constructor/photo.html similarity index 77% rename from data/core.telegram.org/constructor/userProfilePhoto.html rename to data/core.telegram.org/constructor/photo.html index e3b72bd986..975cd46ee7 100644 --- a/data/core.telegram.org/constructor/userProfilePhoto.html +++ b/data/core.telegram.org/constructor/photo.html @@ -2,12 +2,12 @@ - userProfilePhoto + photo - - + + - + @@ -36,10 +36,10 @@
    - -

    userProfilePhoto

    + +

    photo

    -

    User profile photo.

    +

    Photo

    -
    userProfilePhoto#69d3ab26 flags:# has_video:flags.0?true photo_id:long photo_small:FileLocation photo_big:FileLocation dc_id:int = UserProfilePhoto;

    +
    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;

    Parameters

    @@ -69,39 +69,54 @@ - + - + - + - + - - - + + + - - - + + + + + + + + + + + + + + + + + + - +
    Flags, see TL conditional fields
    has_videohas_stickers flags.0?trueWhether an animated profile picture is available for this userWhether the photo has mask stickers attached to it
    photo_idid longIdentifier of the respective photo
    Parameter added in Layer 2
    ID
    photo_smallFileLocationLocation of the file, corresponding to the small profile photo thumbnailaccess_hashlongAccess hash
    photo_bigFileLocationLocation of the file, corresponding to the big profile photo thumbnailfile_referencebytesfile reference
    dateintDate of upload
    sizesVector<PhotoSize>Available sizes for download
    video_sizesflags.1?Vector<VideoSize>For animated profiles, the MPEG4 videos
    dc_id intDC ID where the photo is storedDC ID to use for download

    Type

    -

    UserProfilePhoto

    +

    Photo

    Related pages

    +

    File references

    +

    How to handle file references.

    Uploading and Downloading Files

    -

    How to transfer large data batches correctly.

    -

    Layers

    -

    Below you will find information on scheme changes. For more details on the use of layers, see Invoking API methods.

    +

    How to transfer large data batches correctly.

    diff --git a/data/core.telegram.org/constructor/photoSize.html b/data/core.telegram.org/constructor/photoSize.html deleted file mode 100644 index f0a581c810..0000000000 --- a/data/core.telegram.org/constructor/photoSize.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - photoSize - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    photoSize

    - -

    Image description.

    -

    -
    photoSize#77bfb61b type:string location:FileLocation w:int h:int size:int = PhotoSize;

    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    typestringThumbnail type
    locationFileLocationFile location
    wintImage width
    hintImage height
    sizeintFile size
    -

    Type

    -

    PhotoSize

    -

    Thumbnail type and its sizes

    -

    See here.

    -

    Related pages

    -

    Uploading and Downloading Files

    -

    How to transfer large data batches correctly.

    - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/photos.photosSlice b/data/core.telegram.org/constructor/photos.photosSlice new file mode 100644 index 0000000000..cab6b753b1 --- /dev/null +++ b/data/core.telegram.org/constructor/photos.photosSlice @@ -0,0 +1,157 @@ + + + + + photos.photosSlice + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    photos.photosSlice

    + +

    Incomplete list of photos with auxiliary data.

    +

    +
    photos.photosSlice#15051f54 count:int photos:Vector<Photo> users:Vector<User> = photos.Photos;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    countintTotal number of photos
    photosVector<Photo>List of photos
    usersVector<User>List of mentioned users
    +

    Type

    +

    photos.Photos

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/poll.html b/data/core.telegram.org/constructor/poll.html new file mode 100644 index 0000000000..1ab2df6b22 --- /dev/null +++ b/data/core.telegram.org/constructor/poll.html @@ -0,0 +1,195 @@ + + + + + poll + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    poll

    + +

    Poll

    +

    +
    poll#86e18161 id:long flags:# closed:flags.0?true public_voters:flags.1?true multiple_choice:flags.2?true quiz:flags.3?true question:string answers:Vector<PollAnswer> close_period:flags.4?int close_date:flags.5?int = Poll;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    idlongID of the poll
    flags#Flags, see TL conditional fields
    closedflags.0?trueWhether the poll is closed and doesn't accept any more answers
    public_votersflags.1?trueWhether cast votes are publicly visible to all users (non-anonymous poll)
    multiple_choiceflags.2?trueWhether multiple options can be chosen as answer
    quizflags.3?trueWhether this is a quiz (with wrong and correct answers, results shown in the return type)
    questionstringThe question of the poll
    answersVector<PollAnswer>The possible answers, vote using messages.sendVote.
    close_periodflags.4?intAmount of time in seconds the poll will be active after creation, 5-600. Can't be used together with close_date.
    close_dateflags.5?intPoint 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.
    +

    Type

    +

    Poll

    +

    Related pages

    +

    messages.sendVote

    +

    Vote in a poll

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/updateDraftMessage.html b/data/core.telegram.org/constructor/pollAnswer.html similarity index 85% rename from data/core.telegram.org/constructor/updateDraftMessage.html rename to data/core.telegram.org/constructor/pollAnswer.html index 417a66e1be..4ecd48ca73 100644 --- a/data/core.telegram.org/constructor/updateDraftMessage.html +++ b/data/core.telegram.org/constructor/pollAnswer.html @@ -2,12 +2,12 @@ - updateDraftMessage + pollAnswer - - + + - + @@ -36,10 +36,10 @@
    - -

    updateDraftMessage

    + +

    pollAnswer

    -

    Notifies a change of a message draft.

    +

    A possible answer of a poll

    -
    updateDraftMessage#ee2bb969 peer:Peer draft:DraftMessage = Update;

    +
    pollAnswer#6ca9c2e9 text:string option:bytes = PollAnswer;

    Parameters

    @@ -64,22 +64,22 @@ - - - + + + - - - + + +
    peerPeerThe peer to which the draft is associatedtextstringTextual representation of the answer
    draftDraftMessageThe draftoptionbytesThe param that has to be passed to messages.sendVote.

    Type

    -

    Update

    +

    PollAnswer

    Related pages

    -

    Message drafts

    -

    How to handle message drafts

    +

    messages.sendVote

    +

    Vote in a poll

    diff --git a/data/core.telegram.org/constructor/decryptedMessageActionAbortKey.html b/data/core.telegram.org/constructor/popularContact.html similarity index 88% rename from data/core.telegram.org/constructor/decryptedMessageActionAbortKey.html rename to data/core.telegram.org/constructor/popularContact.html index 1ff212bf50..2b11ac1af4 100644 --- a/data/core.telegram.org/constructor/decryptedMessageActionAbortKey.html +++ b/data/core.telegram.org/constructor/popularContact.html @@ -2,12 +2,12 @@ - decryptedMessageActionAbortKey + popularContact - - + + - + @@ -36,10 +36,10 @@
    - -

    decryptedMessageActionAbortKey

    + +

    popularContact

    -

    Abort rekeying

    +

    Popular contact

    -
    ===20===
    -decryptedMessageActionAbortKey#dd05ec6b exchange_id:long = DecryptedMessageAction;

    +
    popularContact#5ce14175 client_id:long importers:int = PopularContact;

    Parameters

    @@ -65,14 +64,19 @@ - + - + + + + + +
    exchange_idclient_id longExchange IDContact identifier
    importersintHow many people imported this contact

    Type

    -

    DecryptedMessageAction

    +

    PopularContact

    diff --git a/data/core.telegram.org/constructor/privacyKeyPhoneP2P.html b/data/core.telegram.org/constructor/privacyKeyForwards.html similarity index 90% rename from data/core.telegram.org/constructor/privacyKeyPhoneP2P.html rename to data/core.telegram.org/constructor/privacyKeyForwards.html index 2c5c7c671c..be8641d55f 100644 --- a/data/core.telegram.org/constructor/privacyKeyPhoneP2P.html +++ b/data/core.telegram.org/constructor/privacyKeyForwards.html @@ -2,12 +2,12 @@ - privacyKeyPhoneP2P + privacyKeyForwards - - + + - + @@ -36,10 +36,10 @@
    - -

    privacyKeyPhoneP2P

    + +

    privacyKeyForwards

    -

    Whether P2P connections in phone calls are allowed

    +

    Whether messages forwarded from the user will be anonymously forwarded

    -
    privacyKeyPhoneP2P#39491cc8 = PrivacyKey;

    +
    privacyKeyForwards#69ec56a3 = PrivacyKey;

    Parameters

    This constructor does not require any parameters.

    Type

    diff --git a/data/core.telegram.org/constructor/privacyKeyChatInvite.html b/data/core.telegram.org/constructor/privacyKeyProfilePhoto.html similarity index 91% rename from data/core.telegram.org/constructor/privacyKeyChatInvite.html rename to data/core.telegram.org/constructor/privacyKeyProfilePhoto.html index c727e9bb63..55b3ad5e75 100644 --- a/data/core.telegram.org/constructor/privacyKeyChatInvite.html +++ b/data/core.telegram.org/constructor/privacyKeyProfilePhoto.html @@ -2,12 +2,12 @@ - privacyKeyChatInvite + privacyKeyProfilePhoto - - + + - + @@ -36,10 +36,10 @@
    - -

    privacyKeyChatInvite

    + +

    privacyKeyProfilePhoto

    -

    Whether the user can be invited to chats

    +

    Whether the profile picture of the user is visible

    -
    privacyKeyChatInvite#500e6dfa = PrivacyKey;

    +
    privacyKeyProfilePhoto#96151fed = PrivacyKey;

    Parameters

    This constructor does not require any parameters.

    Type

    diff --git a/data/core.telegram.org/constructor/privacyValueAllowChatParticipants.html b/data/core.telegram.org/constructor/privacyValueAllowChatParticipants.html new file mode 100644 index 0000000000..4445ec5a04 --- /dev/null +++ b/data/core.telegram.org/constructor/privacyValueAllowChatParticipants.html @@ -0,0 +1,147 @@ + + + + + privacyValueAllowChatParticipants + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    privacyValueAllowChatParticipants

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/keyboardButtonRow.html b/data/core.telegram.org/constructor/privacyValueDisallowUsers.html similarity index 89% rename from data/core.telegram.org/constructor/keyboardButtonRow.html rename to data/core.telegram.org/constructor/privacyValueDisallowUsers.html index d5c5104af0..99d3910cac 100644 --- a/data/core.telegram.org/constructor/keyboardButtonRow.html +++ b/data/core.telegram.org/constructor/privacyValueDisallowUsers.html @@ -2,12 +2,12 @@ - keyboardButtonRow + privacyValueDisallowUsers - - + + - + @@ -36,10 +36,10 @@
    - -

    keyboardButtonRow

    + +

    privacyValueDisallowUsers

    -

    Inline keyboard row

    +

    Disallow only certain users

    -
    keyboardButtonRow#77608b83 buttons:Vector<KeyboardButton> = KeyboardButtonRow;

    +
    privacyValueDisallowUsers#c7f49b7 users:Vector<int> = PrivacyRule;

    Parameters

    @@ -64,14 +64,14 @@ - - - + + +
    buttonsVector<KeyboardButton>Bot or inline keyboard buttonsusersVector<int>Disallowed users

    Type

    -

    KeyboardButtonRow

    +

    PrivacyRule

    diff --git a/data/core.telegram.org/constructor/recentMeUrlUnknown.html b/data/core.telegram.org/constructor/recentMeUrlChat.html similarity index 91% rename from data/core.telegram.org/constructor/recentMeUrlUnknown.html rename to data/core.telegram.org/constructor/recentMeUrlChat.html index 858df884b4..e49954a84c 100644 --- a/data/core.telegram.org/constructor/recentMeUrlUnknown.html +++ b/data/core.telegram.org/constructor/recentMeUrlChat.html @@ -2,12 +2,12 @@ - recentMeUrlUnknown + recentMeUrlChat - - + + - + @@ -36,10 +36,10 @@
    - -

    recentMeUrlUnknown

    + +

    recentMeUrlChat

    -

    Unknown t.me url

    +

    Recent t.me link to a chat

    -
    recentMeUrlUnknown#46e1d13d url:string = RecentMeUrl;

    +
    recentMeUrlChat#a01b22f9 url:string chat_id:int = RecentMeUrl;

    Parameters

    @@ -66,7 +66,12 @@ - + + + + + +
    url stringURLt.me URL
    chat_idintChat ID
    diff --git a/data/core.telegram.org/constructor/recentMeUrlChatInvite.html b/data/core.telegram.org/constructor/recentMeUrlChatInvite.html new file mode 100644 index 0000000000..5be8115fb8 --- /dev/null +++ b/data/core.telegram.org/constructor/recentMeUrlChatInvite.html @@ -0,0 +1,152 @@ + + + + + recentMeUrlChatInvite + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    recentMeUrlChatInvite

    + +

    Recent t.me invite link to a chat

    +

    +
    recentMeUrlChatInvite#eb49081d url:string chat_invite:ChatInvite = RecentMeUrl;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    urlstringt.me URL
    chat_inviteChatInviteChat invitation
    +

    Type

    +

    RecentMeUrl

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/recentMeUrlStickerSet.html b/data/core.telegram.org/constructor/recentMeUrlStickerSet.html new file mode 100644 index 0000000000..c99cc11f0c --- /dev/null +++ b/data/core.telegram.org/constructor/recentMeUrlStickerSet.html @@ -0,0 +1,152 @@ + + + + + recentMeUrlStickerSet + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    recentMeUrlStickerSet

    + +

    Recent t.me stickerset installation URL

    +

    +
    recentMeUrlStickerSet#bc0a57dc url:string set:StickerSetCovered = RecentMeUrl;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    urlstringt.me URL
    setStickerSetCoveredStickerset
    +

    Type

    +

    RecentMeUrl

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/replyKeyboardForceReply.html b/data/core.telegram.org/constructor/replyKeyboardMarkup.html similarity index 84% rename from data/core.telegram.org/constructor/replyKeyboardForceReply.html rename to data/core.telegram.org/constructor/replyKeyboardMarkup.html index e56a81b0d7..0a54061141 100644 --- a/data/core.telegram.org/constructor/replyKeyboardForceReply.html +++ b/data/core.telegram.org/constructor/replyKeyboardMarkup.html @@ -2,12 +2,12 @@ - replyKeyboardForceReply + replyKeyboardMarkup - - + + - + @@ -36,10 +36,10 @@
    - -

    replyKeyboardForceReply

    + +

    replyKeyboardMarkup

    -

    Force the user to send a reply

    +

    Bot keyboard

    -
    replyKeyboardForceReply#f4108aa0 flags:# single_use:flags.1?true selective:flags.2?true = ReplyMarkup;

    +
    replyKeyboardMarkup#3502758c flags:# resize:flags.0?true single_use:flags.1?true selective:flags.2?true rows:Vector<KeyboardButtonRow> = ReplyMarkup;

    Parameters

    @@ -69,6 +69,11 @@ + + + + + @@ -76,7 +81,12 @@ - + + + + + +
    Flags, see TL conditional fields
    resizeflags.0?trueRequests clients to resize the keyboard vertically for optimal fit (e.g., make the keyboard smaller if there are just two rows of buttons). If not set, the custom keyboard is always of the same height as the app's standard keyboard.
    single_use flags.1?true 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.
    selective flags.2?trueUse this parameter if you want to show the keyboard to 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.
    Example: 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.
    Use this parameter if you want to show the keyboard to 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.

    Example: 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.
    rowsVector<KeyboardButtonRow>Button row
    diff --git a/data/core.telegram.org/constructor/savedPhoneContact.html b/data/core.telegram.org/constructor/savedPhoneContact.html new file mode 100644 index 0000000000..24432b64aa --- /dev/null +++ b/data/core.telegram.org/constructor/savedPhoneContact.html @@ -0,0 +1,162 @@ + + + + + savedPhoneContact + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    savedPhoneContact

    + +

    Saved contact

    +

    +
    savedPhoneContact#1142bd56 phone:string first_name:string last_name:string date:int = SavedContact;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    phonestringPhone number
    first_namestringFirst name
    last_namestringLast name
    dateintDate added
    +

    Type

    +

    SavedContact

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/upload.fileCdnRedirect b/data/core.telegram.org/constructor/secureCredentialsEncrypted.html similarity index 79% rename from data/core.telegram.org/constructor/upload.fileCdnRedirect rename to data/core.telegram.org/constructor/secureCredentialsEncrypted.html index 1ac3c8853c..9b264835d3 100644 --- a/data/core.telegram.org/constructor/upload.fileCdnRedirect +++ b/data/core.telegram.org/constructor/secureCredentialsEncrypted.html @@ -2,12 +2,12 @@ - upload.fileCdnRedirect + secureCredentialsEncrypted - - + + - + @@ -36,10 +36,10 @@
    - -

    upload.fileCdnRedirect

    + +

    secureCredentialsEncrypted

    -

    The file must be downloaded from a CDN DC.

    +

    Encrypted credentials required to decrypt telegram passport data.

    -
    upload.fileCdnRedirect#f18cda44 dc_id:int file_token:bytes encryption_key:bytes encryption_iv:bytes file_hashes:Vector<FileHash> = upload.File;

    +
    secureCredentialsEncrypted#33f0ea47 data:bytes hash:bytes secret:bytes = SecureCredentialsEncrypted;

    Parameters

    @@ -64,36 +64,26 @@ - - - - - - + - + - + - + - + - - - - - - +
    dc_idintCDN DC ID
    file_tokendata bytesFile token (see CDN files)Encrypted JSON-serialized data with unique user's payload, data hashes and secrets required for EncryptedPassportElement decryption and authentication, as described in decrypting data »
    encryption_keyhash bytesEncryption key (see CDN files)Data hash for data authentication as described in decrypting data »
    encryption_ivsecret bytesEncryption IV (see CDN files)
    file_hashesVector<FileHash>File hashes (see CDN files)Secret, encrypted with the bot's public RSA key, required for data decryption as described in decrypting data »

    Type

    -

    upload.File

    +

    SecureCredentialsEncrypted

    Related pages

    -

    Encrypted CDNs for Speed and Security

    +

    Telegram Passport Manual

    diff --git a/data/core.telegram.org/constructor/inputSecureFileUploaded.html b/data/core.telegram.org/constructor/secureData.html similarity index 83% rename from data/core.telegram.org/constructor/inputSecureFileUploaded.html rename to data/core.telegram.org/constructor/secureData.html index 923e8e2a8f..b6348caf11 100644 --- a/data/core.telegram.org/constructor/inputSecureFileUploaded.html +++ b/data/core.telegram.org/constructor/secureData.html @@ -2,12 +2,12 @@ - inputSecureFileUploaded + secureData - - + + - + @@ -36,10 +36,10 @@
    - -

    inputSecureFileUploaded

    + +

    secureData

    -

    Uploaded secure file, for more info see the passport docs »

    +

    Secure passport data, for more info see the passport docs »

    -
    inputSecureFileUploaded#3334b0f0 id:long parts:int md5_checksum:string file_hash:bytes secret:bytes = InputSecureFile;

    +
    secureData#8aeabec3 data:bytes data_hash:bytes secret:bytes = SecureData;

    Parameters

    @@ -64,24 +64,14 @@ - - - - - - - - - - - - - - - - + - + + + + + + @@ -91,8 +81,9 @@
    idlongSecure file ID
    partsintSecure file part count
    md5_checksumstringMD5 hash of encrypted uploaded file, to be checked server-side
    file_hashdata bytesFile hashData
    data_hashbytesData hash
    secret

    Type

    -

    InputSecureFile

    +

    SecureData

    Related pages

    +

    Telegram Passport Manual

    Telegram Passport Encryption Details

    diff --git a/data/core.telegram.org/constructor/inputStickerSetEmpty.html b/data/core.telegram.org/constructor/secureFileEmpty.html similarity index 93% rename from data/core.telegram.org/constructor/inputStickerSetEmpty.html rename to data/core.telegram.org/constructor/secureFileEmpty.html index 0ad0a16932..f4bd72ea3f 100644 --- a/data/core.telegram.org/constructor/inputStickerSetEmpty.html +++ b/data/core.telegram.org/constructor/secureFileEmpty.html @@ -2,10 +2,10 @@ - inputStickerSetEmpty + secureFileEmpty - + @@ -36,8 +36,8 @@
    - -

    inputStickerSetEmpty

    + +

    secureFileEmpty

    Empty constructor

    @@ -52,11 +52,11 @@
    -
    inputStickerSetEmpty#ffb62b95 = InputStickerSet;

    +
    secureFileEmpty#64199744 = SecureFile;

    Parameters

    This constructor does not require any parameters.

    Type

    -

    InputStickerSet

    +

    SecureFile

    diff --git a/data/core.telegram.org/constructor/securePasswordKdfAlgoSHA512.html b/data/core.telegram.org/constructor/securePasswordKdfAlgoSHA512.html new file mode 100644 index 0000000000..1f006522f3 --- /dev/null +++ b/data/core.telegram.org/constructor/securePasswordKdfAlgoSHA512.html @@ -0,0 +1,147 @@ + + + + + securePasswordKdfAlgoSHA512 + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    securePasswordKdfAlgoSHA512

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/inputSecureFile.html b/data/core.telegram.org/constructor/securePlainPhone.html similarity index 86% rename from data/core.telegram.org/constructor/inputSecureFile.html rename to data/core.telegram.org/constructor/securePlainPhone.html index a174824eb9..e050daa6fd 100644 --- a/data/core.telegram.org/constructor/inputSecureFile.html +++ b/data/core.telegram.org/constructor/securePlainPhone.html @@ -2,12 +2,12 @@ - inputSecureFile + securePlainPhone - - + + - + @@ -36,10 +36,10 @@
    - -

    inputSecureFile

    + +

    securePlainPhone

    -

    Preuploaded passport file, for more info see the passport docs »

    +

    Phone number to use in telegram passport: it must be verified, first ».

    -
    inputSecureFile#5367e5be id:long access_hash:long = InputSecureFile;

    +
    securePlainPhone#7d6099dd phone:string = SecurePlainData;

    Parameters

    @@ -64,19 +64,14 @@ - - - - - - - - + + +
    idlongSecure file ID
    access_hashlongSecure file access hashphonestringPhone number

    Type

    -

    InputSecureFile

    +

    SecurePlainData

    Related pages

    Telegram Passport Manual

    Telegram Passport Encryption Details

    diff --git a/data/core.telegram.org/constructor/secureValue.html b/data/core.telegram.org/constructor/secureValue.html new file mode 100644 index 0000000000..6f4d4eaf4d --- /dev/null +++ b/data/core.telegram.org/constructor/secureValue.html @@ -0,0 +1,194 @@ + + + + + secureValue + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    secureValue

    + +

    Secure value

    +

    +
    secureValue#187fa0ca flags:# type:SecureValueType data:flags.0?SecureData front_side:flags.1?SecureFile reverse_side:flags.2?SecureFile selfie:flags.3?SecureFile translation:flags.6?Vector<SecureFile> files:flags.4?Vector<SecureFile> plain_data:flags.5?SecurePlainData hash:bytes = SecureValue;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    typeSecureValueTypeSecure passport value type
    dataflags.0?SecureDataEncrypted Telegram Passport element data
    front_sideflags.1?SecureFileEncrypted passport file with the front side of the document
    reverse_sideflags.2?SecureFileEncrypted passport file with the reverse side of the document
    selfieflags.3?SecureFileEncrypted passport file with a selfie of the user holding the document
    translationflags.6?Vector<SecureFile>Array of encrypted passport files with translated versions of the provided documents
    filesflags.4?Vector<SecureFile>Array of encrypted passport files with photos the of the documents
    plain_dataflags.5?SecurePlainDataPlaintext verified passport data
    hashbytesData hash
    +

    Type

    +

    SecureValue

    +

    Related pages

    +

    Telegram Passport Manual

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/secureValueErrorFile.html b/data/core.telegram.org/constructor/secureValueErrorTranslationFiles.html similarity index 73% rename from data/core.telegram.org/constructor/secureValueErrorFile.html rename to data/core.telegram.org/constructor/secureValueErrorTranslationFiles.html index 84a251349c..1c817d5ebd 100644 --- a/data/core.telegram.org/constructor/secureValueErrorFile.html +++ b/data/core.telegram.org/constructor/secureValueErrorTranslationFiles.html @@ -2,12 +2,12 @@ - secureValueErrorFile + secureValueErrorTranslationFiles - - + + - + @@ -36,10 +36,10 @@
    - -

    secureValueErrorFile

    + +

    secureValueErrorTranslationFiles

    -

    Represents an issue with a document scan. The error is considered resolved when the file with the document scan changes.

    +

    Represents an issue with the translated version of a document. The error is considered resolved when a file with the document translation changes.

    -
    secureValueErrorFile#7a700873 type:SecureValueType file_hash:bytes text:string = SecureValueError;

    +
    secureValueErrorTranslationFiles#34636dd8 type:SecureValueType file_hash:Vector<bytes> text:string = SecureValueError;

    Parameters

    @@ -66,12 +66,12 @@ - + - - + + @@ -83,6 +83,16 @@

    Type

    SecureValueError

    Related pages

    +

    secureValueTypePersonalDetails

    +

    Personal details

    +

    secureValueTypePassport

    +

    Passport

    +

    secureValueTypeDriverLicense

    +

    Driver's license

    +

    secureValueTypeIdentityCard

    +

    Identity card

    +

    secureValueTypeInternalPassport

    +

    Internal passport

    secureValueTypeUtilityBill

    Utility bill

    secureValueTypeBankStatement

    diff --git a/data/core.telegram.org/constructor/secureValueTypeDriverLicense.html b/data/core.telegram.org/constructor/secureValueTypeBankStatement.html similarity index 92% rename from data/core.telegram.org/constructor/secureValueTypeDriverLicense.html rename to data/core.telegram.org/constructor/secureValueTypeBankStatement.html index 4bacb3a060..69f1e69fe4 100644 --- a/data/core.telegram.org/constructor/secureValueTypeDriverLicense.html +++ b/data/core.telegram.org/constructor/secureValueTypeBankStatement.html @@ -2,12 +2,12 @@ - secureValueTypeDriverLicense + secureValueTypeBankStatement - - + + - + @@ -36,10 +36,10 @@
    - -

    secureValueTypeDriverLicense

    + +

    secureValueTypeBankStatement

    -

    Driver's license

    +

    Bank statement

    -
    secureValueTypeDriverLicense#6e425c4 = SecureValueType;

    +
    secureValueTypeBankStatement#89137c0d = SecureValueType;

    Parameters

    This constructor does not require any parameters.

    Type

    diff --git a/data/core.telegram.org/constructor/secureValueTypePassportRegistration.html b/data/core.telegram.org/constructor/secureValueTypeInternalPassport.html similarity index 91% rename from data/core.telegram.org/constructor/secureValueTypePassportRegistration.html rename to data/core.telegram.org/constructor/secureValueTypeInternalPassport.html index ce79aafd3b..60b6e0706e 100644 --- a/data/core.telegram.org/constructor/secureValueTypePassportRegistration.html +++ b/data/core.telegram.org/constructor/secureValueTypeInternalPassport.html @@ -2,12 +2,12 @@ - secureValueTypePassportRegistration + secureValueTypeInternalPassport - - + + - + @@ -36,10 +36,10 @@
    - -

    secureValueTypePassportRegistration

    + +

    secureValueTypeInternalPassport

    -

    Internal registration passport

    +

    Internal passport

    -
    secureValueTypePassportRegistration#99e3806a = SecureValueType;

    +
    secureValueTypeInternalPassport#99a48f23 = SecureValueType;

    Parameters

    This constructor does not require any parameters.

    Type

    diff --git a/data/core.telegram.org/constructor/secureValueTypePassport.html b/data/core.telegram.org/constructor/secureValueTypePhone.html similarity index 93% rename from data/core.telegram.org/constructor/secureValueTypePassport.html rename to data/core.telegram.org/constructor/secureValueTypePhone.html index 5b81ca1af1..8592b4e0d9 100644 --- a/data/core.telegram.org/constructor/secureValueTypePassport.html +++ b/data/core.telegram.org/constructor/secureValueTypePhone.html @@ -2,12 +2,12 @@ - secureValueTypePassport + secureValueTypePhone - - + + - + @@ -36,10 +36,10 @@
    - -

    secureValueTypePassport

    + +

    secureValueTypePhone

    -

    Passport

    +

    Phone

    -
    secureValueTypePassport#3dac6a00 = SecureValueType;

    +
    secureValueTypePhone#b320aadb = SecureValueType;

    Parameters

    This constructor does not require any parameters.

    Type

    diff --git a/data/core.telegram.org/constructor/secureValueTypePersonalDetails.html b/data/core.telegram.org/constructor/secureValueTypeRentalAgreement.html similarity index 92% rename from data/core.telegram.org/constructor/secureValueTypePersonalDetails.html rename to data/core.telegram.org/constructor/secureValueTypeRentalAgreement.html index 5992af1e29..e3bf002518 100644 --- a/data/core.telegram.org/constructor/secureValueTypePersonalDetails.html +++ b/data/core.telegram.org/constructor/secureValueTypeRentalAgreement.html @@ -2,12 +2,12 @@ - secureValueTypePersonalDetails + secureValueTypeRentalAgreement - - + + - + @@ -36,10 +36,10 @@
    - -

    secureValueTypePersonalDetails

    + +

    secureValueTypeRentalAgreement

    -

    Personal details

    +

    Rental agreement

    -
    secureValueTypePersonalDetails#9d2a81e3 = SecureValueType;

    +
    secureValueTypeRentalAgreement#8b883488 = SecureValueType;

    Parameters

    This constructor does not require any parameters.

    Type

    diff --git a/data/core.telegram.org/constructor/secureValueTypeIdentityCard.html b/data/core.telegram.org/constructor/secureValueTypeUtilityBill.html similarity index 92% rename from data/core.telegram.org/constructor/secureValueTypeIdentityCard.html rename to data/core.telegram.org/constructor/secureValueTypeUtilityBill.html index 551e975046..b67f552164 100644 --- a/data/core.telegram.org/constructor/secureValueTypeIdentityCard.html +++ b/data/core.telegram.org/constructor/secureValueTypeUtilityBill.html @@ -2,12 +2,12 @@ - secureValueTypeIdentityCard + secureValueTypeUtilityBill - - + + - + @@ -36,10 +36,10 @@
    - -

    secureValueTypeIdentityCard

    + +

    secureValueTypeUtilityBill

    -

    Identity card

    +

    Utility bill

    -
    secureValueTypeIdentityCard#a0d0744b = SecureValueType;

    +
    secureValueTypeUtilityBill#fc36954e = SecureValueType;

    Parameters

    This constructor does not require any parameters.

    Type

    diff --git a/data/core.telegram.org/constructor/sendMessageCancelAction.html b/data/core.telegram.org/constructor/sendMessageCancelAction.html deleted file mode 100644 index a894626046..0000000000 --- a/data/core.telegram.org/constructor/sendMessageCancelAction.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - sendMessageCancelAction - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    sendMessageCancelAction

    - - - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/sendMessageChooseContactAction.html b/data/core.telegram.org/constructor/sendMessageChooseContactAction.html deleted file mode 100644 index 99d4547b01..0000000000 --- a/data/core.telegram.org/constructor/sendMessageChooseContactAction.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - sendMessageChooseContactAction - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    sendMessageChooseContactAction

    - - - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/sendMessageTypingAction.html b/data/core.telegram.org/constructor/sendMessageGamePlayAction.html similarity index 92% rename from data/core.telegram.org/constructor/sendMessageTypingAction.html rename to data/core.telegram.org/constructor/sendMessageGamePlayAction.html index e9c652edcf..fe4d61e011 100644 --- a/data/core.telegram.org/constructor/sendMessageTypingAction.html +++ b/data/core.telegram.org/constructor/sendMessageGamePlayAction.html @@ -2,12 +2,12 @@ - sendMessageTypingAction + sendMessageGamePlayAction - - + + - + @@ -36,10 +36,10 @@
    - -

    sendMessageTypingAction

    + +

    sendMessageGamePlayAction

    -

    User is typing.

    +

    User is playing a game

    -
    sendMessageTypingAction#16bf744e = SendMessageAction;

    +
    sendMessageGamePlayAction#dd6a8f48 = SendMessageAction;

    Parameters

    This constructor does not require any parameters.

    Type

    diff --git a/data/core.telegram.org/constructor/sendMessageRecordRoundAction.html b/data/core.telegram.org/constructor/sendMessageRecordRoundAction.html deleted file mode 100644 index cc113b171e..0000000000 --- a/data/core.telegram.org/constructor/sendMessageRecordRoundAction.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - sendMessageRecordRoundAction - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    sendMessageRecordRoundAction

    - - - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/stats.megagroupStats b/data/core.telegram.org/constructor/stats.megagroupStats deleted file mode 100644 index edfb000450..0000000000 --- a/data/core.telegram.org/constructor/stats.megagroupStats +++ /dev/null @@ -1,230 +0,0 @@ - - - - - stats.megagroupStats - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    stats.megagroupStats

    - -

    Supergroup statistics

    -

    -
    stats.megagroupStats#ef7ff916 period:StatsDateRangeDays members:StatsAbsValueAndPrev messages:StatsAbsValueAndPrev viewers:StatsAbsValueAndPrev posters:StatsAbsValueAndPrev growth_graph:StatsGraph members_graph:StatsGraph new_members_by_source_graph:StatsGraph languages_graph:StatsGraph messages_graph:StatsGraph actions_graph:StatsGraph top_hours_graph:StatsGraph weekdays_graph:StatsGraph top_posters:Vector<StatsGroupTopPoster> top_admins:Vector<StatsGroupTopAdmin> top_inviters:Vector<StatsGroupTopInviter> users:Vector<User> = stats.MegagroupStats;

    -

    Parameters

    -
    type SecureValueTypeOne of secureValueTypeUtilityBill, secureValueTypeBankStatement, secureValueTypeRentalAgreement, secureValueTypePassportRegistration, secureValueTypeTemporaryRegistrationOne of secureValueTypePersonalDetails, secureValueTypePassport, secureValueTypeDriverLicense, secureValueTypeIdentityCard, secureValueTypeInternalPassport, secureValueTypeUtilityBill, secureValueTypeBankStatement, secureValueTypeRentalAgreement, secureValueTypePassportRegistration, secureValueTypeTemporaryRegistration
    file_hashbytesFile hashVector<bytes>Hash
    text
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    periodStatsDateRangeDaysPeriod in consideration
    membersStatsAbsValueAndPrevMember count change for period in consideration
    messagesStatsAbsValueAndPrevMessage number change for period in consideration
    viewersStatsAbsValueAndPrevNumber of users that viewed messages, for range in consideration
    postersStatsAbsValueAndPrevNumber of users that posted messages, for range in consideration
    growth_graphStatsGraphSupergroup growth graph (absolute subscriber count)
    members_graphStatsGraphMembers growth (relative subscriber count)
    new_members_by_source_graphStatsGraphNew members by source graph
    languages_graphStatsGraphSubscriber language graph (piechart)
    messages_graphStatsGraphMessage activity graph (stacked bar graph, message type)
    actions_graphStatsGraphGroup activity graph (deleted, modified messages, blocked users)
    top_hours_graphStatsGraphActivity per hour graph (absolute)
    weekdays_graphStatsGraphActivity per day of week graph (absolute)
    top_postersVector<StatsGroupTopPoster>Info about most active group members
    top_adminsVector<StatsGroupTopAdmin>Info about most active group admins
    top_invitersVector<StatsGroupTopInviter>Info about most active group inviters
    usersVector<User>Info about users mentioned in statistics
    -

    Type

    -

    stats.MegagroupStats

    -

    Related pages

    -

    Channel statistics

    -

    Telegram offers detailed channel statistics for channels and supergroups.

    - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/statsGroupTopInviter.html b/data/core.telegram.org/constructor/statsDateRangeDays.html similarity index 88% rename from data/core.telegram.org/constructor/statsGroupTopInviter.html rename to data/core.telegram.org/constructor/statsDateRangeDays.html index d6205370e2..ba8179edad 100644 --- a/data/core.telegram.org/constructor/statsGroupTopInviter.html +++ b/data/core.telegram.org/constructor/statsDateRangeDays.html @@ -2,12 +2,12 @@ - statsGroupTopInviter + statsDateRangeDays - - + + - + @@ -36,10 +36,10 @@
    - -

    statsGroupTopInviter

    + +

    statsDateRangeDays

    -

    Information about an active supergroup inviter

    +

    Channel statistics date range

    -
    statsGroupTopInviter#31962a4c user_id:int invitations:int = StatsGroupTopInviter;

    +
    statsDateRangeDays#b637edaf min_date:int max_date:int = StatsDateRangeDays;

    Parameters

    @@ -64,19 +64,19 @@ - + - + - + - +
    user_idmin_date intUser IDInitial date
    invitationsmax_date intNumber of invitations for statistics period in considerationFinal date

    Type

    -

    StatsGroupTopInviter

    +

    StatsDateRangeDays

    Related pages

    Channel statistics

    Telegram offers detailed channel statistics for channels and supergroups.

    diff --git a/data/core.telegram.org/constructor/statsPercentValue.html b/data/core.telegram.org/constructor/statsGraphError.html similarity index 86% rename from data/core.telegram.org/constructor/statsPercentValue.html rename to data/core.telegram.org/constructor/statsGraphError.html index c28edcfca4..7933b666b8 100644 --- a/data/core.telegram.org/constructor/statsPercentValue.html +++ b/data/core.telegram.org/constructor/statsGraphError.html @@ -2,12 +2,12 @@ - statsPercentValue + statsGraphError - - + + - + @@ -36,11 +36,10 @@
    - -

    statsPercentValue

    + +

    statsGraphError

    -

    Channel statistics percentage.
    -Compute the percentage simply by doing part * total / 100

    +

    An error occurred while generating the statistics graph

    -
    statsPercentValue#cbce2fe0 part:double total:double = StatsPercentValue;

    +
    statsGraphError#bedc9822 error:string = StatsGraph;

    Parameters

    @@ -65,19 +64,14 @@ Compute the percentage simply by doing part * total / 100

    - - - - - - - - + + +
    partdoublePartial value
    totaldoubleTotal valueerrorstringThe error

    Type

    -

    StatsPercentValue

    +

    StatsGraph

    Related pages

    Channel statistics

    Telegram offers detailed channel statistics for channels and supergroups.

    diff --git a/data/core.telegram.org/constructor/statsGroupTopAdmin.html b/data/core.telegram.org/constructor/statsGroupTopAdmin.html deleted file mode 100644 index ec8bbd4a29..0000000000 --- a/data/core.telegram.org/constructor/statsGroupTopAdmin.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - statsGroupTopAdmin - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    statsGroupTopAdmin

    - -

    Information about an active admin in a supergroup

    -

    -
    statsGroupTopAdmin#6014f412 user_id:int deleted:int kicked:int banned:int = StatsGroupTopAdmin;

    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    user_idintUser ID
    deletedintNumber of deleted messages for statistics period in consideration
    kickedintNumber of kicked users for statistics period in consideration
    bannedintNumber of banned users for statistics period in consideration
    -

    Type

    -

    StatsGroupTopAdmin

    -

    Related pages

    -

    Channel statistics

    -

    Telegram offers detailed channel statistics for channels and supergroups.

    - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/pageBlockCover.html b/data/core.telegram.org/constructor/stickerSetCovered.html similarity index 87% rename from data/core.telegram.org/constructor/pageBlockCover.html rename to data/core.telegram.org/constructor/stickerSetCovered.html index a27f57d3e1..4a4aec53aa 100644 --- a/data/core.telegram.org/constructor/pageBlockCover.html +++ b/data/core.telegram.org/constructor/stickerSetCovered.html @@ -2,12 +2,12 @@ - pageBlockCover + stickerSetCovered - - + + - + @@ -36,10 +36,10 @@
    - -

    pageBlockCover

    + +

    stickerSetCovered

    -

    A page cover

    +

    Stickerset, with a specific sticker as preview

    -
    pageBlockCover#39f23300 cover:PageBlock = PageBlock;

    +
    stickerSetCovered#6410a5d2 set:StickerSet cover:Document = StickerSetCovered;

    Parameters

    @@ -64,14 +64,19 @@ + + + + + - - + +
    setStickerSetStickerset
    coverPageBlockCoverDocumentPreview

    Type

    -

    PageBlock

    +

    StickerSetCovered

    diff --git a/data/core.telegram.org/constructor/storage.fileJpeg b/data/core.telegram.org/constructor/storage.fileJpeg new file mode 100644 index 0000000000..04291dbf0a --- /dev/null +++ b/data/core.telegram.org/constructor/storage.fileJpeg @@ -0,0 +1,132 @@ + + + + + storage.fileJpeg + + + + + + + + + + + + + +
    + + + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/storage.fileMp4 b/data/core.telegram.org/constructor/storage.fileMp4 new file mode 100644 index 0000000000..e961a35ec9 --- /dev/null +++ b/data/core.telegram.org/constructor/storage.fileMp4 @@ -0,0 +1,132 @@ + + + + + storage.fileMp4 + + + + + + + + + + + + + +
    + + + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/privacyValueDisallowAll.html b/data/core.telegram.org/constructor/storage.filePartial similarity index 91% rename from data/core.telegram.org/constructor/privacyValueDisallowAll.html rename to data/core.telegram.org/constructor/storage.filePartial index 34c612d7a8..b84c92b9c8 100644 --- a/data/core.telegram.org/constructor/privacyValueDisallowAll.html +++ b/data/core.telegram.org/constructor/storage.filePartial @@ -2,12 +2,12 @@ - privacyValueDisallowAll + storage.filePartial - - + + - + @@ -36,10 +36,10 @@
    - -

    privacyValueDisallowAll

    + +

    storage.filePartial

    -

    Disallow all users

    +

    Part of a bigger file.

    -
    privacyValueDisallowAll#8b73e763 = PrivacyRule;

    +
    storage.filePartial#40bc6f52 = storage.FileType;

    Parameters

    This constructor does not require any parameters.

    Type

    -

    PrivacyRule

    +

    storage.FileType

    diff --git a/data/core.telegram.org/constructor/storage.filePdf b/data/core.telegram.org/constructor/storage.filePdf new file mode 100644 index 0000000000..8eaa480571 --- /dev/null +++ b/data/core.telegram.org/constructor/storage.filePdf @@ -0,0 +1,132 @@ + + + + + storage.filePdf + + + + + + + + + + + + + +
    + + + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/storage.fileUnknown b/data/core.telegram.org/constructor/storage.fileUnknown new file mode 100644 index 0000000000..d5f13c82a4 --- /dev/null +++ b/data/core.telegram.org/constructor/storage.fileUnknown @@ -0,0 +1,132 @@ + + + + + storage.fileUnknown + + + + + + + + + + + + + +
    + + + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/storage.fileWebp b/data/core.telegram.org/constructor/storage.fileWebp new file mode 100644 index 0000000000..3f82f6bf46 --- /dev/null +++ b/data/core.telegram.org/constructor/storage.fileWebp @@ -0,0 +1,132 @@ + + + + + storage.fileWebp + + + + + + + + + + + + + +
    + + + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/pageCaption.html b/data/core.telegram.org/constructor/textEmail.html similarity index 90% rename from data/core.telegram.org/constructor/pageCaption.html rename to data/core.telegram.org/constructor/textEmail.html index 9542f829c4..540f9b17db 100644 --- a/data/core.telegram.org/constructor/pageCaption.html +++ b/data/core.telegram.org/constructor/textEmail.html @@ -2,12 +2,12 @@ - pageCaption + textEmail - - + + - + @@ -36,10 +36,10 @@
    - -

    pageCaption

    + +

    textEmail

    -

    Page caption

    +

    Rich text email link

    -
    pageCaption#6f747657 text:RichText credit:RichText = PageCaption;

    +
    textEmail#de5a0dd6 text:RichText email:string = RichText;

    Parameters

    @@ -66,17 +66,17 @@ - + - - - + + +
    text RichTextCaptionLink text
    creditRichTextCreditsemailstringEmail address

    Type

    -

    PageCaption

    +

    RichText

    diff --git a/data/core.telegram.org/constructor/textEmpty.html b/data/core.telegram.org/constructor/textEmpty.html new file mode 100644 index 0000000000..7267395f2e --- /dev/null +++ b/data/core.telegram.org/constructor/textEmpty.html @@ -0,0 +1,132 @@ + + + + + textEmpty + + + + + + + + + + + + + +
    + + + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/textFixed.html b/data/core.telegram.org/constructor/textFixed.html new file mode 100644 index 0000000000..28ccd9ee1b --- /dev/null +++ b/data/core.telegram.org/constructor/textFixed.html @@ -0,0 +1,147 @@ + + + + + textFixed + + + + + + + + + + + + + +
    + + + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/documentAttributeImageSize.html b/data/core.telegram.org/constructor/textImage.html similarity index 88% rename from data/core.telegram.org/constructor/documentAttributeImageSize.html rename to data/core.telegram.org/constructor/textImage.html index b24384e936..f9c882a39d 100644 --- a/data/core.telegram.org/constructor/documentAttributeImageSize.html +++ b/data/core.telegram.org/constructor/textImage.html @@ -2,12 +2,12 @@ - documentAttributeImageSize + textImage - - + + - + @@ -36,10 +36,10 @@
    - -

    documentAttributeImageSize

    + +

    textImage

    -

    Defines the width and height of an image uploaded as document

    +

    Inline image

    -
    documentAttributeImageSize#6c37c15c w:int h:int = DocumentAttribute;

    +
    textImage#81ccf4f document_id:long w:int h:int = RichText;

    Parameters

    @@ -64,19 +64,24 @@ + + + + + - + - +
    document_idlongDocument ID
    w intWidth of imageWidth
    h intHeight of imageHeight

    Type

    -

    DocumentAttribute

    +

    RichText

    diff --git a/data/core.telegram.org/constructor/pageBlockKicker.html b/data/core.telegram.org/constructor/textItalic.html similarity index 92% rename from data/core.telegram.org/constructor/pageBlockKicker.html rename to data/core.telegram.org/constructor/textItalic.html index 2f92d65deb..8051d54b4f 100644 --- a/data/core.telegram.org/constructor/pageBlockKicker.html +++ b/data/core.telegram.org/constructor/textItalic.html @@ -2,12 +2,12 @@ - pageBlockKicker + textItalic - - + + - + @@ -36,10 +36,10 @@
    - -

    pageBlockKicker

    + +

    textItalic

    -

    Kicker

    +

    Italic text

    -
    pageBlockKicker#1e148390 text:RichText = PageBlock;

    +
    textItalic#d912a59c text:RichText = RichText;

    Parameters

    @@ -66,12 +66,12 @@ - +
    text RichTextContentsText

    Type

    -

    PageBlock

    +

    RichText

    diff --git a/data/core.telegram.org/constructor/pageBlockPreformatted.html b/data/core.telegram.org/constructor/textPhone.html similarity index 89% rename from data/core.telegram.org/constructor/pageBlockPreformatted.html rename to data/core.telegram.org/constructor/textPhone.html index ab49cd38fe..b96db3a232 100644 --- a/data/core.telegram.org/constructor/pageBlockPreformatted.html +++ b/data/core.telegram.org/constructor/textPhone.html @@ -2,12 +2,12 @@ - pageBlockPreformatted + textPhone - - + + - + @@ -36,10 +36,10 @@
    - -

    pageBlockPreformatted

    + +

    textPhone

    -

    Preformatted (<pre> text)

    +

    Rich text linked to a phone number

    -
    pageBlockPreformatted#c070d93e text:RichText language:string = PageBlock;

    +
    textPhone#1ccb966a text:RichText phone:string = RichText;

    Parameters

    @@ -69,14 +69,14 @@ - + - +
    Text
    languagephone stringProgramming language of preformatted textPhone number

    Type

    -

    PageBlock

    +

    RichText

    diff --git a/data/core.telegram.org/constructor/textStrike.html b/data/core.telegram.org/constructor/textStrike.html new file mode 100644 index 0000000000..a383d359d4 --- /dev/null +++ b/data/core.telegram.org/constructor/textStrike.html @@ -0,0 +1,147 @@ + + + + + textStrike + + + + + + + + + + + + + +
    + + + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/textSubscript.html b/data/core.telegram.org/constructor/textSubscript.html new file mode 100644 index 0000000000..6f56aa43c9 --- /dev/null +++ b/data/core.telegram.org/constructor/textSubscript.html @@ -0,0 +1,147 @@ + + + + + textSubscript + + + + + + + + + + + + + +
    + + + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/privacyKeyPhoneCall.html b/data/core.telegram.org/constructor/topPeerCategoryBotsInline.html similarity index 91% rename from data/core.telegram.org/constructor/privacyKeyPhoneCall.html rename to data/core.telegram.org/constructor/topPeerCategoryBotsInline.html index 9400641de5..0893720813 100644 --- a/data/core.telegram.org/constructor/privacyKeyPhoneCall.html +++ b/data/core.telegram.org/constructor/topPeerCategoryBotsInline.html @@ -2,12 +2,12 @@ - privacyKeyPhoneCall + topPeerCategoryBotsInline - - + + - + @@ -36,10 +36,10 @@
    - -

    privacyKeyPhoneCall

    + +

    topPeerCategoryBotsInline

    -

    Whether the user accepts phone calls

    +

    Most used inline bots

    -
    privacyKeyPhoneCall#3d662b7b = PrivacyKey;

    +
    topPeerCategoryBotsInline#148677e2 = TopPeerCategory;

    Parameters

    This constructor does not require any parameters.

    Type

    -

    PrivacyKey

    +

    TopPeerCategory

    diff --git a/data/core.telegram.org/constructor/pageBlockDivider.html b/data/core.telegram.org/constructor/topPeerCategoryBotsPM.html similarity index 91% rename from data/core.telegram.org/constructor/pageBlockDivider.html rename to data/core.telegram.org/constructor/topPeerCategoryBotsPM.html index 4e65a05f5d..86cfabcdce 100644 --- a/data/core.telegram.org/constructor/pageBlockDivider.html +++ b/data/core.telegram.org/constructor/topPeerCategoryBotsPM.html @@ -2,12 +2,12 @@ - pageBlockDivider + topPeerCategoryBotsPM - - + + - + @@ -36,10 +36,10 @@
    - -

    pageBlockDivider

    + +

    topPeerCategoryBotsPM

    -

    An empty block separating a page

    +

    Most used bots

    -
    pageBlockDivider#db20b188 = PageBlock;

    +
    topPeerCategoryBotsPM#ab661b5b = TopPeerCategory;

    Parameters

    This constructor does not require any parameters.

    Type

    -

    PageBlock

    +

    TopPeerCategory

    diff --git a/data/core.telegram.org/constructor/topPeerCategoryPeers.html b/data/core.telegram.org/constructor/topPeerCategoryPeers.html new file mode 100644 index 0000000000..f745725ed4 --- /dev/null +++ b/data/core.telegram.org/constructor/topPeerCategoryPeers.html @@ -0,0 +1,157 @@ + + + + + topPeerCategoryPeers + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    topPeerCategoryPeers

    + +

    Top peer category

    +

    +
    topPeerCategoryPeers#fb834291 category:TopPeerCategory count:int peers:Vector<TopPeer> = TopPeerCategoryPeers;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    categoryTopPeerCategoryTop peer category of peers
    countintCount of peers
    peersVector<TopPeer>Peers
    +

    Type

    +

    TopPeerCategoryPeers

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/topPeerCategoryPhoneCalls.html b/data/core.telegram.org/constructor/topPeerCategoryPhoneCalls.html new file mode 100644 index 0000000000..02940b1063 --- /dev/null +++ b/data/core.telegram.org/constructor/topPeerCategoryPhoneCalls.html @@ -0,0 +1,132 @@ + + + + + topPeerCategoryPhoneCalls + + + + + + + + + + + + + +
    + +
    + +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/updateBotCallbackQuery.html b/data/core.telegram.org/constructor/updateBotCallbackQuery.html new file mode 100644 index 0000000000..6e130b6659 --- /dev/null +++ b/data/core.telegram.org/constructor/updateBotCallbackQuery.html @@ -0,0 +1,182 @@ + + + + + updateBotCallbackQuery + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    updateBotCallbackQuery

    + +

    A callback button was pressed, and the button data was sent to the bot that created the button

    +

    +
    updateBotCallbackQuery#e73547e1 flags:# query_id:long user_id:int peer:Peer msg_id:int chat_instance:long data:flags.0?bytes game_short_name:flags.1?string = Update;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    query_idlongQuery ID
    user_idintID of the user that pressed the button
    peerPeerChat where the inline keyboard was sent
    msg_idintMessage ID
    chat_instancelongGlobal identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games.
    dataflags.0?bytesCallback data
    game_short_nameflags.1?stringShort name of a Game to be returned, serves as the unique identifier for the game
    +

    Type

    +

    Update

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/updateBotInlineSend.html b/data/core.telegram.org/constructor/updateBotInlineSend.html new file mode 100644 index 0000000000..1b4e031266 --- /dev/null +++ b/data/core.telegram.org/constructor/updateBotInlineSend.html @@ -0,0 +1,172 @@ + + + + + updateBotInlineSend + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    updateBotInlineSend

    + +

    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.

    +

    +
    updateBotInlineSend#e48f964 flags:# user_id:int query:string geo:flags.0?GeoPoint id:string msg_id:flags.1?InputBotInlineMessageID = Update;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    user_idintThe user that chose the result
    querystringThe query that was used to obtain the result
    geoflags.0?GeoPointOptional. Sender location, only for bots that require user location
    idstringThe unique identifier for the result that was chosen
    msg_idflags.1?InputBotInlineMessageIDIdentifier 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.
    +

    Type

    +

    Update

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/updateBotPrecheckoutQuery.html b/data/core.telegram.org/constructor/updateBotPrecheckoutQuery.html new file mode 100644 index 0000000000..65e7cc8f88 --- /dev/null +++ b/data/core.telegram.org/constructor/updateBotPrecheckoutQuery.html @@ -0,0 +1,184 @@ + + + + + updateBotPrecheckoutQuery + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    updateBotPrecheckoutQuery

    + +

    This object contains information about an incoming pre-checkout query.

    +

    +
    updateBotPrecheckoutQuery#5d2f3aa9 flags:# query_id:long user_id:int payload:bytes info:flags.0?PaymentRequestedInfo shipping_option_id:flags.1?string currency:string total_amount:long = Update;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    query_idlongUnique query identifier
    user_idintUser who sent the query
    payloadbytesBot specified invoice payload
    infoflags.0?PaymentRequestedInfoOrder info provided by the user
    shipping_option_idflags.1?stringIdentifier of the shipping option chosen by the user
    currencystringThree-letter ISO 4217 currency code
    total_amountlongTotal amount in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
    +

    Type

    +

    Update

    +

    Related pages

    +

    Bot Payments API

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/updateLangPack.html b/data/core.telegram.org/constructor/updateBotWebhookJSON.html similarity index 90% rename from data/core.telegram.org/constructor/updateLangPack.html rename to data/core.telegram.org/constructor/updateBotWebhookJSON.html index ca276e2597..1cd2ae6f25 100644 --- a/data/core.telegram.org/constructor/updateLangPack.html +++ b/data/core.telegram.org/constructor/updateBotWebhookJSON.html @@ -2,12 +2,12 @@ - updateLangPack + updateBotWebhookJSON - - + + - + @@ -36,10 +36,10 @@
    - -

    updateLangPack

    + +

    updateBotWebhookJSON

    -

    Language pack updated

    +

    A new incoming event; for bots only

    -
    updateLangPack#56022f4d difference:LangPackDifference = Update;

    +
    updateBotWebhookJSON#8317c0c3 data:DataJSON = Update;

    Parameters

    @@ -64,9 +64,9 @@ - - - + + +
    differenceLangPackDifferenceChanged stringsdataDataJSONThe event
    diff --git a/data/core.telegram.org/constructor/updateBotWebhookJSONQuery.html b/data/core.telegram.org/constructor/updateBotWebhookJSONQuery.html new file mode 100644 index 0000000000..a8cfc8eb4c --- /dev/null +++ b/data/core.telegram.org/constructor/updateBotWebhookJSONQuery.html @@ -0,0 +1,157 @@ + + + + + updateBotWebhookJSONQuery + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    updateBotWebhookJSONQuery

    + +

    A new incoming query; for bots only

    +

    +
    updateBotWebhookJSONQuery#9b9240a6 query_id:long data:DataJSON timeout:int = Update;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    query_idlongQuery identifier
    dataDataJSONQuery data
    timeoutintQuery timeout
    +

    Type

    +

    Update

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/updateChannelMessageForwards.html b/data/core.telegram.org/constructor/updateChannelMessageForwards.html new file mode 100644 index 0000000000..55f38e333a --- /dev/null +++ b/data/core.telegram.org/constructor/updateChannelMessageForwards.html @@ -0,0 +1,157 @@ + + + + + updateChannelMessageForwards + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    updateChannelMessageForwards

    + +

    The forward counter of a message in a channel has changed

    +

    +
    updateChannelMessageForwards#6e8a84df channel_id:int id:int forwards:int = Update;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    channel_idintChannel ID
    idintID of the message
    forwardsintNew forward counter
    +

    Type

    +

    Update

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/updateChatParticipants.html b/data/core.telegram.org/constructor/updateDcOptions.html similarity index 88% rename from data/core.telegram.org/constructor/updateChatParticipants.html rename to data/core.telegram.org/constructor/updateDcOptions.html index 77d6eedd99..d294406053 100644 --- a/data/core.telegram.org/constructor/updateChatParticipants.html +++ b/data/core.telegram.org/constructor/updateDcOptions.html @@ -2,12 +2,12 @@ - updateChatParticipants + updateDcOptions - - + + - + @@ -36,10 +36,10 @@
    - -

    updateChatParticipants

    + +

    updateDcOptions

    -

    Composition of chat participants changed.

    +

    Changes in the data center configuration options.

    -
    updateChatParticipants#7761198 participants:ChatParticipants = Update;

    +
    updateDcOptions#8e5e9873 dc_options:Vector<DcOption> = Update;

    Parameters

    @@ -64,9 +64,9 @@ - - - + + +
    participantsChatParticipantsUpdated chat participantsdc_optionsVector<DcOption>New connection options
    diff --git a/data/core.telegram.org/constructor/updateReadMessagesContents.html b/data/core.telegram.org/constructor/updateDeleteMessages.html similarity index 88% rename from data/core.telegram.org/constructor/updateReadMessagesContents.html rename to data/core.telegram.org/constructor/updateDeleteMessages.html index 4a9e8929ad..36246f8e99 100644 --- a/data/core.telegram.org/constructor/updateReadMessagesContents.html +++ b/data/core.telegram.org/constructor/updateDeleteMessages.html @@ -2,12 +2,12 @@ - updateReadMessagesContents + updateDeleteMessages - - + + - + @@ -36,10 +36,10 @@
    - -

    updateReadMessagesContents

    + +

    updateDeleteMessages

    -

    Contents of messages in the common message box were read

    +

    Messages were deleted.

    -
    updateReadMessagesContents#68c13933 messages:Vector<int> pts:int pts_count:int = Update;

    +
    updateDeleteMessages#a20db0e5 messages:Vector<int> pts:int pts_count:int = Update;

    Parameters

    @@ -66,17 +66,17 @@ - + - + - +
    messages Vector<int>IDs of read messagesList of identifiers of deleted messages
    pts intEvent count after generationNew quality of actions in a message box
    pts_count intNumber of events that were generatedNumber of generated events
    diff --git a/data/core.telegram.org/constructor/updateDialogFilter.html b/data/core.telegram.org/constructor/updateDialogFilterOrder.html similarity index 86% rename from data/core.telegram.org/constructor/updateDialogFilter.html rename to data/core.telegram.org/constructor/updateDialogFilterOrder.html index 3c2e9bcfb6..32521a95af 100644 --- a/data/core.telegram.org/constructor/updateDialogFilter.html +++ b/data/core.telegram.org/constructor/updateDialogFilterOrder.html @@ -2,12 +2,12 @@ - updateDialogFilter + updateDialogFilterOrder - - + + - + @@ -36,10 +36,10 @@
    - -

    updateDialogFilter

    + +

    updateDialogFilterOrder

    -

    A new folder was added

    +

    New folder order

    -
    updateDialogFilter#26ffde7d flags:# id:int filter:flags.0?DialogFilter = Update;

    +
    updateDialogFilterOrder#a5d72105 order:Vector<int> = Update;

    Parameters

    @@ -64,19 +64,9 @@ - - - - - - - - - - - - - + + +
    flags#Flags, see TL conditional fields
    idintFolder ID
    filterflags.0?DialogFilterFolder infoorderVector<int>Ordered folder IDs
    diff --git a/data/core.telegram.org/constructor/updateStickerSetsOrder.html b/data/core.telegram.org/constructor/updateDialogUnreadMark.html similarity index 88% rename from data/core.telegram.org/constructor/updateStickerSetsOrder.html rename to data/core.telegram.org/constructor/updateDialogUnreadMark.html index 4ddc059f0f..1cc9ff3629 100644 --- a/data/core.telegram.org/constructor/updateStickerSetsOrder.html +++ b/data/core.telegram.org/constructor/updateDialogUnreadMark.html @@ -2,12 +2,12 @@ - updateStickerSetsOrder + updateDialogUnreadMark - - + + - + @@ -36,10 +36,10 @@
    - -

    updateStickerSetsOrder

    + +

    updateDialogUnreadMark

    -

    The order of stickersets was changed

    +

    The manual unread mark of a chat was changed

    -
    updateStickerSetsOrder#bb2d201 flags:# masks:flags.0?true order:Vector<long> = Update;

    +
    updateDialogUnreadMark#e16459c3 flags:# unread:flags.0?true peer:DialogPeer = Update;

    Parameters

    @@ -69,14 +69,14 @@ - + - + - - - + + +
    Flags, see TL conditional fields
    masksunread flags.0?trueWhether the updated stickers are mask stickersWas the chat marked or unmarked as read
    orderVector<long>New sticker order by sticker IDpeerDialogPeerThe dialog
    diff --git a/data/core.telegram.org/constructor/messages.affectedMessages b/data/core.telegram.org/constructor/updateEditMessage.html similarity index 89% rename from data/core.telegram.org/constructor/messages.affectedMessages rename to data/core.telegram.org/constructor/updateEditMessage.html index 6b37d48ced..39e4021718 100644 --- a/data/core.telegram.org/constructor/messages.affectedMessages +++ b/data/core.telegram.org/constructor/updateEditMessage.html @@ -2,12 +2,12 @@ - messages.affectedMessages + updateEditMessage - - + + - + @@ -36,10 +36,10 @@
    - -

    messages.affectedMessages

    + +

    updateEditMessage

    -

    Events affected by operation

    +

    A message was edited

    -
    messages.affectedMessages#84d19185 pts:int pts_count:int = messages.AffectedMessages;

    +
    updateEditMessage#e40370a3 message:Message pts:int pts_count:int = Update;

    Parameters

    @@ -64,19 +64,24 @@ + + + + + - + - +
    messageMessageThe new edited message
    pts intEvent count after generationPTS
    pts_count intNumber of events that were generatedPTS count

    Type

    -

    messages.AffectedMessages

    +

    Update

    Related pages

    Working with Updates

    How to subscribe to updates and handle them properly.

    diff --git a/data/core.telegram.org/constructor/updateChatParticipantDelete.html b/data/core.telegram.org/constructor/updateEncryptedMessagesRead.html similarity index 88% rename from data/core.telegram.org/constructor/updateChatParticipantDelete.html rename to data/core.telegram.org/constructor/updateEncryptedMessagesRead.html index fabe33a983..4668a5faa9 100644 --- a/data/core.telegram.org/constructor/updateChatParticipantDelete.html +++ b/data/core.telegram.org/constructor/updateEncryptedMessagesRead.html @@ -2,12 +2,12 @@ - updateChatParticipantDelete + updateEncryptedMessagesRead - - + + - + @@ -36,10 +36,10 @@
    - -

    updateChatParticipantDelete

    + +

    updateEncryptedMessagesRead

    -

    A member has left the group.

    +

    Communication history in an encrypted chat was marked as read.

    -
    updateChatParticipantDelete#6e5f8c22 chat_id:int user_id:int version:int = Update;

    +
    updateEncryptedMessagesRead#38fe25b7 chat_id:int max_date:int date:int = Update;

    Parameters

    @@ -66,17 +66,17 @@ - + - + - + - + - +
    chat_id intGroup IDChat ID
    user_idmax_date intID of the userMaximum value of data for read messages
    versiondate intUsed in basic groups to reorder updates and make sure that all of them was received.Time when messages were read
    diff --git a/data/core.telegram.org/constructor/updateGeoLiveViewed.html b/data/core.telegram.org/constructor/updateEncryption.html similarity index 88% rename from data/core.telegram.org/constructor/updateGeoLiveViewed.html rename to data/core.telegram.org/constructor/updateEncryption.html index 88bd32b821..7578f9e34e 100644 --- a/data/core.telegram.org/constructor/updateGeoLiveViewed.html +++ b/data/core.telegram.org/constructor/updateEncryption.html @@ -2,12 +2,12 @@ - updateGeoLiveViewed + updateEncryption - - + + - + @@ -36,10 +36,10 @@
    - -

    updateGeoLiveViewed

    + +

    updateEncryption

    -

    Live geoposition message was viewed

    +

    Change of state in an encrypted chat.

    -
    updateGeoLiveViewed#871fb939 peer:Peer msg_id:int = Update;

    +
    updateEncryption#b4a2e88d chat:EncryptedChat date:int = Update;

    Parameters

    @@ -64,14 +64,14 @@ - - - + + + - + - +
    peerPeerThe user that viewed the live geopositionchatEncryptedChatEncrypted chat
    msg_iddate intMessage ID of geoposition messageDate of change
    diff --git a/data/core.telegram.org/constructor/updateFavedStickers.html b/data/core.telegram.org/constructor/updateFavedStickers.html new file mode 100644 index 0000000000..cd6ddc4e83 --- /dev/null +++ b/data/core.telegram.org/constructor/updateFavedStickers.html @@ -0,0 +1,135 @@ + + + + + updateFavedStickers + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    updateFavedStickers

    + +

    The list of favorited stickers was changed, the client should call messages.getFavedStickers to refetch the new list

    +

    +
    updateFavedStickers#e511996d = Update;

    +

    Parameters

    +

    This constructor does not require any parameters.

    +

    Type

    +

    Update

    +

    Related pages

    +

    messages.getFavedStickers

    +

    Get faved stickers

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/updateLangPackTooLong.html b/data/core.telegram.org/constructor/updateLangPackTooLong.html new file mode 100644 index 0000000000..eb405caf47 --- /dev/null +++ b/data/core.telegram.org/constructor/updateLangPackTooLong.html @@ -0,0 +1,150 @@ + + + + + updateLangPackTooLong + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    updateLangPackTooLong

    + +

    A language pack has changed, the client should manually fetch the changed strings using langpack.getDifference

    +

    +
    updateLangPackTooLong#46560264 lang_code:string = Update;

    +

    Parameters

    + + + + + + + + + + + + + + + +
    NameTypeDescription
    lang_codestringLanguage code
    +

    Type

    +

    Update

    +

    Related pages

    +

    langpack.getDifference

    +

    Get new strings in languagepack

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/updateDeleteChannelMessages.html b/data/core.telegram.org/constructor/updateNewChannelMessage.html similarity index 86% rename from data/core.telegram.org/constructor/updateDeleteChannelMessages.html rename to data/core.telegram.org/constructor/updateNewChannelMessage.html index 9959ef2b5d..f5b83f8a4a 100644 --- a/data/core.telegram.org/constructor/updateDeleteChannelMessages.html +++ b/data/core.telegram.org/constructor/updateNewChannelMessage.html @@ -2,12 +2,12 @@ - updateDeleteChannelMessages + updateNewChannelMessage - - + + - + @@ -36,10 +36,10 @@
    - -

    updateDeleteChannelMessages

    + +

    updateNewChannelMessage

    -

    Some messages in a supergroup/channel were deleted

    +

    A new message was sent in a channel/supergroup

    -
    updateDeleteChannelMessages#c37521c9 channel_id:int messages:Vector<int> pts:int pts_count:int = Update;

    +
    updateNewChannelMessage#62ba04d9 message:Message pts:int pts_count:int = Update;

    Parameters

    @@ -64,14 +64,9 @@ - - - - - - - - + + + diff --git a/data/core.telegram.org/constructor/updateNewEncryptedMessage.html b/data/core.telegram.org/constructor/updateNewEncryptedMessage.html new file mode 100644 index 0000000000..24e8f49755 --- /dev/null +++ b/data/core.telegram.org/constructor/updateNewEncryptedMessage.html @@ -0,0 +1,152 @@ + + + + + updateNewEncryptedMessage + + + + + + + + + + + + + +
    + +
    channel_idintChannel ID
    messagesVector<int>IDs of messages that were deletedmessageMessageNew message
    pts
    + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    messageEncryptedMessageMessage
    qtsintNew qts value
    +

    Type

    +

    Update

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/updateNewStickerSet.html b/data/core.telegram.org/constructor/updateNewStickerSet.html deleted file mode 100644 index 93db78b719..0000000000 --- a/data/core.telegram.org/constructor/updateNewStickerSet.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - updateNewStickerSet - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    updateNewStickerSet

    - - - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/updateNotifySettings.html b/data/core.telegram.org/constructor/updateNotifySettings.html deleted file mode 100644 index de60ff1319..0000000000 --- a/data/core.telegram.org/constructor/updateNotifySettings.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - updateNotifySettings - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    updateNotifySettings

    - -

    Changes in notification settings.

    -

    -
    updateNotifySettings#bec268ef peer:NotifyPeer notify_settings:PeerNotifySettings = Update;

    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    peerNotifyPeerNofication source
    notify_settingsPeerNotifySettingsNew notification settings
    -

    Type

    -

    Update

    - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/updatePeerBlocked.html b/data/core.telegram.org/constructor/updatePeerLocated.html similarity index 89% rename from data/core.telegram.org/constructor/updatePeerBlocked.html rename to data/core.telegram.org/constructor/updatePeerLocated.html index 51f9aa65cb..854cf6bbcf 100644 --- a/data/core.telegram.org/constructor/updatePeerBlocked.html +++ b/data/core.telegram.org/constructor/updatePeerLocated.html @@ -2,12 +2,12 @@ - updatePeerBlocked + updatePeerLocated - - + + - + @@ -36,10 +36,10 @@
    - -

    updatePeerBlocked

    + +

    updatePeerLocated

    -

    A peer was blocked

    +

    List of peers near you was updated

    -
    updatePeerBlocked#246a4b22 peer_id:Peer blocked:Bool = Update;

    +
    updatePeerLocated#b4afcfb0 peers:Vector<PeerLocated> = Update;

    Parameters

    @@ -64,14 +64,9 @@ - - - - - - - - + + +
    peer_idPeerThe blocked peer
    blockedBoolWhether the peer was blocked or unblockedpeersVector<PeerLocated>Geolocated peer list update
    diff --git a/data/core.telegram.org/constructor/updateReadHistoryInbox.html b/data/core.telegram.org/constructor/updateReadChannelInbox.html similarity index 86% rename from data/core.telegram.org/constructor/updateReadHistoryInbox.html rename to data/core.telegram.org/constructor/updateReadChannelInbox.html index 662e49d6d0..7055ffb333 100644 --- a/data/core.telegram.org/constructor/updateReadHistoryInbox.html +++ b/data/core.telegram.org/constructor/updateReadChannelInbox.html @@ -2,12 +2,12 @@ - updateReadHistoryInbox + updateReadChannelInbox - - + + - + @@ -36,10 +36,10 @@
    - -

    updateReadHistoryInbox

    + +

    updateReadChannelInbox

    -

    Incoming messages were read

    +

    Incoming messages in a channel/supergroup were read

    -
    updateReadHistoryInbox#9c974fdf flags:# folder_id:flags.0?int peer:Peer max_id:int still_unread_count:int pts:int pts_count:int = Update;

    +
    updateReadChannelInbox#330b5424 flags:# folder_id:flags.0?int channel_id:int max_id:int still_unread_count:int pts:int = Update;

    Parameters

    @@ -74,30 +74,25 @@ - - - + + + - + - + - - - - -
    Peer folder ID, for more info click here
    peerPeerPeerchannel_idintChannel/supergroup ID
    max_id intMaximum ID of messages readPosition up to which all incoming messages are read.
    still_unread_count intNumber of messages that are still unreadCount of messages weren't read yet
    pts int Event count after generation
    pts_countintNumber of events that were generated

    Type

    @@ -106,7 +101,9 @@

    Folders

    Telegram allows placing chats into folders, based on their type, mute status, or other custom criteria, thanks to folder blacklists and whitelists.

    Working with Updates

    -

    How to subscribe to updates and handle them properly.

    +

    How to subscribe to updates and handle them properly.

    +

    Channels

    +

    How to handle channels, supergroups, groups, and what's the difference between them.

    diff --git a/data/core.telegram.org/constructor/updateStickerSets.html b/data/core.telegram.org/constructor/updateSavedGifs.html similarity index 89% rename from data/core.telegram.org/constructor/updateStickerSets.html rename to data/core.telegram.org/constructor/updateSavedGifs.html index 9127b1715c..3983a3680c 100644 --- a/data/core.telegram.org/constructor/updateStickerSets.html +++ b/data/core.telegram.org/constructor/updateSavedGifs.html @@ -2,12 +2,12 @@ - updateStickerSets + updateSavedGifs - - + + - + @@ -36,10 +36,10 @@
    - -

    updateStickerSets

    + +

    updateSavedGifs

    -

    Installed stickersets have changed, the client should refetch them using messages.getAllStickers

    +

    The saved gif list has changed, the client should refetch it using messages.getSavedGifs

    -
    updateStickerSets#43ae3dec = Update;

    +
    updateSavedGifs#9375341e = Update;

    Parameters

    This constructor does not require any parameters.

    Type

    diff --git a/data/core.telegram.org/constructor/updateShortSentMessage.html b/data/core.telegram.org/constructor/updateShortSentMessage.html new file mode 100644 index 0000000000..47341bb123 --- /dev/null +++ b/data/core.telegram.org/constructor/updateShortSentMessage.html @@ -0,0 +1,187 @@ + + + + + updateShortSentMessage + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    updateShortSentMessage

    + +

    Shortened constructor containing info on one outgoing message to a contact (the destination chat has to be extracted from the method call that returned this object).

    +

    +
    updateShortSentMessage#11f1331c flags:# out:flags.1?true id:int pts:int pts_count:int date:int media:flags.9?MessageMedia entities:flags.7?Vector<MessageEntity> = Updates;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    outflags.1?trueWhether the message is outgoing
    idintID of the sent message
    ptsintPTS
    pts_countintPTS count
    dateintdate
    mediaflags.9?MessageMediaAttached media
    entitiesflags.7?Vector<MessageEntity>Entities for styled text
    +

    Type

    +

    Updates

    +

    Related pages

    +

    Working with Updates

    +

    How to subscribe to updates and handle them properly.

    +

    Styled text with message entities

    +

    How to create styled text with message entities

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/updateUserBlocked.html b/data/core.telegram.org/constructor/updateUserBlocked.html deleted file mode 100644 index 613249be7d..0000000000 --- a/data/core.telegram.org/constructor/updateUserBlocked.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - updateUserBlocked - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    updateUserBlocked

    - -

    User was added to the blacklist (method contacts.block) or removed from the blacklist (method contacts.unblock).

    -

    -
    Constructor schema is available as of layer 119. Switch »

    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    user_idintUser id
    blockedBool(boolTrue) if the the user is blocked
    -

    Type

    -

    Update

    -

    Related pages

    -

    boolTrue

    -

    The constructor can be interpreted as a booleantrue value.

    -

    contacts.block

    -

    Adds the user to the blacklist.

    -

    contacts.unblock

    -

    Deletes the user from the blacklist.

    - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/chatParticipantCreator.html b/data/core.telegram.org/constructor/updateUserStatus.html similarity index 89% rename from data/core.telegram.org/constructor/chatParticipantCreator.html rename to data/core.telegram.org/constructor/updateUserStatus.html index 4a17e99103..820d1d06fa 100644 --- a/data/core.telegram.org/constructor/chatParticipantCreator.html +++ b/data/core.telegram.org/constructor/updateUserStatus.html @@ -2,12 +2,12 @@ - chatParticipantCreator + updateUserStatus - - + + - + @@ -36,10 +36,10 @@
    - -

    chatParticipantCreator

    + +

    updateUserStatus

    -

    Represents the creator of the group

    +

    Contact status update.

    -
    chatParticipantCreator#da13538a user_id:int = ChatParticipant;

    +
    updateUserStatus#1bfbd823 user_id:int status:UserStatus = Update;

    Parameters

    @@ -66,12 +66,17 @@ - + + + + + +
    user_id intID of the user that created the groupUser identifier
    statusUserStatusNew status

    Type

    -

    ChatParticipant

    +

    Update

    diff --git a/data/core.telegram.org/constructor/peerBlocked.html b/data/core.telegram.org/constructor/updates.differenceEmpty similarity index 89% rename from data/core.telegram.org/constructor/peerBlocked.html rename to data/core.telegram.org/constructor/updates.differenceEmpty index 3bc1959efd..8e9ebdc63e 100644 --- a/data/core.telegram.org/constructor/peerBlocked.html +++ b/data/core.telegram.org/constructor/updates.differenceEmpty @@ -2,12 +2,12 @@ - peerBlocked + updates.differenceEmpty - - + + - + @@ -36,10 +36,10 @@
    - -

    peerBlocked

    + +

    updates.differenceEmpty

    -

    Information about a blocked peer

    +

    No events.

    -
    peerBlocked#e8fd8014 peer_id:Peer date:int = PeerBlocked;

    +
    updates.differenceEmpty#5d75a138 date:int seq:int = updates.Difference;

    Parameters

    @@ -64,19 +64,19 @@ - - - - - - + + + + + +
    peer_idPeerPeer ID
    date intWhen was the peer blockedCurrent date
    seqintNumber of sent updates

    Type

    -

    PeerBlocked

    +

    updates.Difference

    diff --git a/data/core.telegram.org/constructor/updates.differenceSlice b/data/core.telegram.org/constructor/updates.differenceSlice new file mode 100644 index 0000000000..860cc86a6a --- /dev/null +++ b/data/core.telegram.org/constructor/updates.differenceSlice @@ -0,0 +1,175 @@ + + + + + updates.differenceSlice + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    updates.differenceSlice

    + +

    Incomplete list of occurred events.

    +

    +
    updates.differenceSlice#a8fb1981 new_messages:Vector<Message> new_encrypted_messages:Vector<EncryptedMessage> other_updates:Vector<Update> chats:Vector<Chat> users:Vector<User> intermediate_state:updates.State = updates.Difference;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    new_messagesVector<Message>List of new messgaes
    new_encrypted_messagesVector<EncryptedMessage>New messages from the encrypted event sequence
    other_updatesVector<Update>List of updates
    chatsVector<Chat>List of chats mentioned in events
    usersVector<User>List of users mentioned in events
    intermediate_stateupdates.StateIntermediary state
    +

    Type

    +

    updates.Difference

    +

    Related pages

    +

    Working with Updates

    +

    How to subscribe to updates and handle them properly.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/urlAuthResultAccepted.html b/data/core.telegram.org/constructor/urlAuthResultDefault.html similarity index 91% rename from data/core.telegram.org/constructor/urlAuthResultAccepted.html rename to data/core.telegram.org/constructor/urlAuthResultDefault.html index 3c088929e0..84e580963d 100644 --- a/data/core.telegram.org/constructor/urlAuthResultAccepted.html +++ b/data/core.telegram.org/constructor/urlAuthResultDefault.html @@ -2,11 +2,11 @@ - urlAuthResultAccepted + urlAuthResultDefault - - + + @@ -36,8 +36,8 @@
    - -

    urlAuthResultAccepted

    + +

    urlAuthResultDefault

    Details about an accepted authorization request, for more info click here »

    @@ -52,24 +52,9 @@
    -
    urlAuthResultAccepted#8f8c0e4e url:string = UrlAuthResult;

    +
    urlAuthResultDefault#a9d6db1f = UrlAuthResult;

    Parameters

    - - - - - - - - - - - - - - - -
    NameTypeDescription
    urlstringThe URL name of the website on which the user has logged in.
    +

    This constructor does not require any parameters.

    Type

    UrlAuthResult

    Related pages

    diff --git a/data/core.telegram.org/constructor/urlAuthResultRequest.html b/data/core.telegram.org/constructor/urlAuthResultRequest.html new file mode 100644 index 0000000000..fc9eb7bda5 --- /dev/null +++ b/data/core.telegram.org/constructor/urlAuthResultRequest.html @@ -0,0 +1,165 @@ + + + + + urlAuthResultRequest + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    urlAuthResultRequest

    + +

    Details about the authorization request, for more info click here »

    +

    +
    urlAuthResultRequest#92d33a0e flags:# request_write_access:flags.0?true bot:User domain:string = UrlAuthResult;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    request_write_accessflags.0?trueWhether the bot would like to send messages to the user
    botUserUsername 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 Linking your domain to the bot for more details.
    domainstringThe domain name of the website on which the user will log in.
    +

    Type

    +

    UrlAuthResult

    +

    Related pages

    +

    Seamless Telegram Login

    +

    Handle Seamless Telegram Login URL authorization requests.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/userProfilePhotoEmpty.html b/data/core.telegram.org/constructor/userProfilePhotoEmpty.html new file mode 100644 index 0000000000..884b419182 --- /dev/null +++ b/data/core.telegram.org/constructor/userProfilePhotoEmpty.html @@ -0,0 +1,132 @@ + + + + + userProfilePhotoEmpty + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    userProfilePhotoEmpty

    + + + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/userStatusOffline.html b/data/core.telegram.org/constructor/userStatusOffline.html deleted file mode 100644 index 008dc4c0fa..0000000000 --- a/data/core.telegram.org/constructor/userStatusOffline.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - userStatusOffline - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    userStatusOffline

    - - - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/constructor/wallPaper.html b/data/core.telegram.org/constructor/wallPaper.html new file mode 100644 index 0000000000..5565f05212 --- /dev/null +++ b/data/core.telegram.org/constructor/wallPaper.html @@ -0,0 +1,192 @@ + + + + + wallPaper + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    wallPaper

    + +

    Wallpaper settings.

    +

    +
    wallPaper#a437c3ed id:long flags:# creator:flags.0?true default:flags.1?true pattern:flags.3?true dark:flags.4?true access_hash:long slug:string document:Document settings:flags.2?WallPaperSettings = WallPaper;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    idlongIdentifier
    flags#Flags, see TL conditional fields
    creatorflags.0?trueCreator of the wallpaper
    defaultflags.1?trueWhether this is the default wallpaper
    patternflags.3?truePattern
    darkflags.4?trueDark mode
    access_hashlongAccess hash
    slugstringUnique wallpaper ID
    documentDocumentThe actual wallpaper
    settingsflags.2?WallPaperSettingsWallpaper settings
    +

    Type

    +

    WallPaper

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/webDocument.html b/data/core.telegram.org/constructor/webDocument.html new file mode 100644 index 0000000000..e9d6e39446 --- /dev/null +++ b/data/core.telegram.org/constructor/webDocument.html @@ -0,0 +1,167 @@ + + + + + webDocument + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    webDocument

    + +

    Remote document

    +

    +
    webDocument#1c570ed1 url:string access_hash:long size:int mime_type:string attributes:Vector<DocumentAttribute> = WebDocument;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    urlstringDocument URL
    access_hashlongAccess hash
    sizeintFile size
    mime_typestringMIME type
    attributesVector<DocumentAttribute>Attributes for media types
    +

    Type

    +

    WebDocument

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/constructor/webPage.html b/data/core.telegram.org/constructor/webPage.html new file mode 100644 index 0000000000..7501af065f --- /dev/null +++ b/data/core.telegram.org/constructor/webPage.html @@ -0,0 +1,240 @@ + + + + + webPage + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    webPage

    + +

    Webpage preview

    +

    +
    webPage#e89c45b2 flags:# id:long url:string display_url:string hash:int type:flags.0?string site_name:flags.1?string title:flags.2?string description:flags.3?string photo:flags.4?Photo embed_url:flags.5?string embed_type:flags.5?string embed_width:flags.6?int embed_height:flags.6?int duration:flags.7?int author:flags.8?string document:flags.9?Document cached_page:flags.10?Page attributes:flags.12?Vector<WebPageAttribute> = WebPage;

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    flags#Flags, see TL conditional fields
    idlongPreview ID
    urlstringURL of previewed webpage
    display_urlstringWebpage URL to be displayed to the user
    hashintHash for pagination, for more info click here
    typeflags.0?stringType of the web page. Can be: article, photo, audio, video, document, profile, app, or something else
    site_nameflags.1?stringShort name of the site (e.g., Google Docs, App Store)
    titleflags.2?stringTitle of the content
    descriptionflags.3?stringContent description
    photoflags.4?PhotoImage representing the content
    embed_urlflags.5?stringURL to show in the embedded preview
    embed_typeflags.5?stringMIME type of the embedded preview, (e.g., text/html or video/mp4)
    embed_widthflags.6?intWidth of the embedded preview
    embed_heightflags.6?intHeight of the embedded preview
    durationflags.7?intDuration of the content, in seconds
    authorflags.8?stringAuthor of the content
    documentflags.9?DocumentPreview of the content as a media file
    cached_pageflags.10?PagePage contents in instant view format
    attributesflags.12?Vector<WebPageAttribute>Webpage attributes
    +

    Type

    +

    WebPage

    +

    Related pages

    +

    Pagination in the API

    +

    How to fetch results from large lists of objects.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/css/bootstrap-extra.css b/data/core.telegram.org/css/bootstrap-extra.css deleted file mode 100644 index 8a35b6069b..0000000000 --- a/data/core.telegram.org/css/bootstrap-extra.css +++ /dev/null @@ -1,3274 +0,0 @@ -/* 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 deleted file mode 100644 index 6b408d1ae4..0000000000 --- a/data/core.telegram.org/css/telegram-extra.css +++ /dev/null @@ -1,246 +0,0 @@ -.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/js/jquery-ui.min.js b/data/core.telegram.org/js/jquery-ui.min.js deleted file mode 100644 index a47c061a05..0000000000 --- a/data/core.telegram.org/js/jquery-ui.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! 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("").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("").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:"
    ",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("
    ").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.lefti[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=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("
    ").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("
    "),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.maxWidtht.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("
    "),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("").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=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("",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(" ",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.leftthis.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="",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("
    ").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("

    ")[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("

    ").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 deleted file mode 100644 index 026006ade7..0000000000 --- a/data/core.telegram.org/js/telegram-passport2.js +++ /dev/null @@ -1,413 +0,0 @@ -(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 install Telegram 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 = '' - + '' - + '
    ' - + ''; - 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/account.checkUsername b/data/core.telegram.org/method/account.confirmPasswordEmail similarity index 84% rename from data/core.telegram.org/method/account.checkUsername rename to data/core.telegram.org/method/account.confirmPasswordEmail index d02c969ec7..d39c58211c 100644 --- a/data/core.telegram.org/method/account.checkUsername +++ b/data/core.telegram.org/method/account.confirmPasswordEmail @@ -2,12 +2,12 @@ - account.checkUsername + account.confirmPasswordEmail - - + + - + @@ -36,10 +36,10 @@
    - -

    account.checkUsername

    + +

    account.confirmPasswordEmail

    -

    Validates a username and checks availability.

    +

    Verify an email to use as 2FA recovery method.

    + +

    Related pages

    +

    Two-factor authentication

    +

    How to login to a user's account if they have enabled 2FA, how to change password.

    diff --git a/data/core.telegram.org/method/account.finishTakeoutSession b/data/core.telegram.org/method/account.finishTakeoutSession deleted file mode 100644 index dd95b40035..0000000000 --- a/data/core.telegram.org/method/account.finishTakeoutSession +++ /dev/null @@ -1,172 +0,0 @@ - - - - - account.finishTakeoutSession - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    account.finishTakeoutSession

    - -

    Finish account takeout session

    -

    -
    boolFalse#bc799737 = Bool;
    -boolTrue#997275b5 = Bool;
    ----functions---
    -account.finishTakeoutSession#1d2652ee flags:# success:flags.0?true = Bool;

    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    flags#Flags, see TL conditional fields
    successflags.0?trueData exported successfully
    -

    Result

    -

    Bool

    -

    Possible errors

    - - - - - - - - - - - - - - - -
    CodeTypeDescription
    403TAKEOUT_REQUIREDA takeout session has to be initialized, first
    - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/method/account.getAutoDownloadSettings b/data/core.telegram.org/method/account.getAutoDownloadSettings deleted file mode 100644 index b226603117..0000000000 --- a/data/core.telegram.org/method/account.getAutoDownloadSettings +++ /dev/null @@ -1,134 +0,0 @@ - - - - - account.getAutoDownloadSettings - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    account.getAutoDownloadSettings

    - -

    Get media autodownload settings

    -

    -
    account.autoDownloadSettings#63cacf26 low:AutoDownloadSettings medium:AutoDownloadSettings high:AutoDownloadSettings = account.AutoDownloadSettings;
    ----functions---
    -account.getAutoDownloadSettings#56da0b3f = account.AutoDownloadSettings;

    -

    Parameters

    -

    This constructor does not require any parameters.

    -

    Result

    -

    account.AutoDownloadSettings

    - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/method/account.getPassword b/data/core.telegram.org/method/account.getPassword deleted file mode 100644 index a5314b84e3..0000000000 --- a/data/core.telegram.org/method/account.getPassword +++ /dev/null @@ -1,134 +0,0 @@ - - - - - account.getPassword - - - - - - - - - - - - - -
    - -
    -
    -
    - -

    account.getPassword

    - -

    Obtain configuration for two-factor authorization with password

    -

    -
    account.password#ad2641f8 flags:# has_recovery:flags.0?true has_secure_values:flags.1?true has_password:flags.2?true current_algo:flags.2?PasswordKdfAlgo srp_B:flags.2?bytes srp_id:flags.2?long hint:flags.3?string email_unconfirmed_pattern:flags.4?string new_algo:PasswordKdfAlgo new_secure_algo:SecurePasswordKdfAlgo secure_random:bytes = account.Password;
    ----functions---
    -account.getPassword#548a30f5 = account.Password;

    -

    Parameters

    -

    This constructor does not require any parameters.

    -

    Result

    -

    account.Password

    - -
    - -
    -
    - -
    - - - - - - diff --git a/data/core.telegram.org/method/account.createTheme b/data/core.telegram.org/method/account.getTheme similarity index 83% rename from data/core.telegram.org/method/account.createTheme rename to data/core.telegram.org/method/account.getTheme index 35e2364c6d..89f9c6651d 100644 --- a/data/core.telegram.org/method/account.createTheme +++ b/data/core.telegram.org/method/account.getTheme @@ -2,12 +2,12 @@ - account.createTheme + account.getTheme - - + + - + @@ -36,10 +36,10 @@
    - -

    account.createTheme

    + +

    account.getTheme

    -

    Create a theme

    +

    Get theme information

    theme#28f1114 flags:# creator:flags.0?true default:flags.1?true id:long access_hash:long slug:string title:string document:flags.2?Document settings:flags.3?ThemeSettings installs_count:int = Theme;
     ---functions---
    -account.createTheme#8432c21f flags:# slug:string title:string document:flags.2?InputDocument settings:flags.3?InputThemeSettings = Theme;

    +account.getTheme#8d9d742b format:string theme:InputTheme document_id:long = Theme;

    Parameters

    @@ -66,34 +66,46 @@ - - - - - - + - + - - - + + + - - - - - - - - + + +
    flags#Flags, see TL conditional fields
    slugformat stringUnique theme IDTheme format, a string that identifies the theming engines supported by the client
    titlestringTheme namethemeInputThemeTheme
    documentflags.2?InputDocumentTheme file
    settingsflags.3?InputThemeSettingsTheme settingsdocument_idlongDocument ID

    Result

    -

    Theme

    +

    Theme

    +

    Possible errors

    + + + + + + + + + + + + + + + + + + + + +
    CodeTypeDescription
    400THEME_FORMAT_INVALIDInvalid theme format provided
    400THEME_INVALIDInvalid theme provided
    diff --git a/data/core.telegram.org/method/account.getWallPapers b/data/core.telegram.org/method/account.getWallPapers new file mode 100644 index 0000000000..e2cb6ae1bd --- /dev/null +++ b/data/core.telegram.org/method/account.getWallPapers @@ -0,0 +1,153 @@ + + + + + account.getWallPapers + + + + + + + + + + + + + +
    + +
    +
    +
    + +

    account.getWallPapers

    + +

    Returns a list of available wallpapers.

    +

    +
    account.wallPapersNotModified#1c199183 = account.WallPapers;
    +account.wallPapers#702b65a9 hash:int wallpapers:Vector<WallPaper> = account.WallPapers;
    +---functions---
    +account.getWallPapers#aabb1763 hash:int = account.WallPapers;

    +

    Parameters

    + + + + + + + + + + + + + + + +
    NameTypeDescription
    hashintHash for pagination, for more info click here
    +

    Result

    +

    Vector<WallPaper>

    +

    Related pages

    +

    Pagination in the API

    +

    How to fetch results from large lists of objects.

    + +
    + +
    +
    + +
    + + + + + + diff --git a/data/core.telegram.org/method/messages.saveDraft b/data/core.telegram.org/method/account.initTakeoutSession similarity index 74% rename from data/core.telegram.org/method/messages.saveDraft rename to data/core.telegram.org/method/account.initTakeoutSession index 3a6cc7f78d..714e784ed0 100644 --- a/data/core.telegram.org/method/messages.saveDraft +++ b/data/core.telegram.org/method/account.initTakeoutSession @@ -2,12 +2,12 @@ - messages.saveDraft + account.initTakeoutSession - - + + - + @@ -36,10 +36,10 @@
    - -

    messages.saveDraft

    + +

    account.initTakeoutSession

    -

    Save a message draft associated to a chat.

    +

    Intialize account takeout session

    -
    boolFalse#bc799737 = Bool;
    -boolTrue#997275b5 = Bool;
    +
    account.takeout#4dba4501 id:long = account.Takeout;
     ---functions---
    -messages.saveDraft#bc39e14b flags:# no_webpage:flags.1?true reply_to_msg_id:flags.0?int peer:InputPeer message:string entities:flags.3?Vector<MessageEntity> = Bool;

    +account.initTakeoutSession#f05b4804 flags:# 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?int = account.Takeout;

    Parameters

    @@ -72,34 +71,44 @@ - + + + + + + - + - - - + + + - - - + + + - - - + + + - - - + + + + + + + +
    Flags, see TL conditional fields
    no_webpagecontactsflags.0?trueWhether to export contacts
    message_users flags.1?trueDisable generation of the webpage previewWhether to export messages in private chats
    reply_to_msg_idflags.0?intMessage ID the message should reply tomessage_chatsflags.2?trueWhether to export messages in legacy groups
    peerInputPeerDestination of the message that should be sentmessage_megagroupsflags.3?trueWhether to export messages in supergroups
    messagestringThe draftmessage_channelsflags.4?trueWhether to export messages in channels
    entitiesflags.3?Vector<MessageEntity>Message entities for styled textfilesflags.5?trueWhether to export files
    file_max_sizeflags.5?intMaximum size of files to export

    Result

    -

    Bool

    +

    account.Takeout

    Possible errors

    @@ -111,17 +120,15 @@ - - - + + +
    400PEER_ID_INVALIDThe provided peer id is invalid420TAKEOUT_INIT_DELAY_XWait X seconds before initing takeout

    Related pages

    -

    Styled text with message entities

    -

    How to create styled text with message entities

    -

    Message drafts

    -

    How to handle message drafts

    +

    Channels

    +

    How to handle channels, supergroups, groups, and what's the difference between them.

    diff --git a/data/core.telegram.org/method/messages.clearAllDrafts b/data/core.telegram.org/method/account.resendPasswordEmail similarity index 87% rename from data/core.telegram.org/method/messages.clearAllDrafts rename to data/core.telegram.org/method/account.resendPasswordEmail index 7bc5bd5312..1c5c6fdea2 100644 --- a/data/core.telegram.org/method/messages.clearAllDrafts +++ b/data/core.telegram.org/method/account.resendPasswordEmail @@ -2,12 +2,12 @@ - messages.clearAllDrafts + account.resendPasswordEmail - - + + - + @@ -36,10 +36,10 @@
    - -

    messages.clearAllDrafts

    + +

    account.resendPasswordEmail

    -

    Clear all drafts.

    +

    Resend the code to verify an email to use as 2FA recovery method.

    +

    Two-factor authentication

    +

    How to login to a user's account if they have enabled 2FA, how to change password.

    diff --git a/data/core.telegram.org/method/account.resetNotifySettings b/data/core.telegram.org/method/account.resetWallPapers similarity index 91% rename from data/core.telegram.org/method/account.resetNotifySettings rename to data/core.telegram.org/method/account.resetWallPapers index d73be3f0e0..7e0ab8e915 100644 --- a/data/core.telegram.org/method/account.resetNotifySettings +++ b/data/core.telegram.org/method/account.resetWallPapers @@ -2,12 +2,12 @@ - account.resetNotifySettings + account.resetWallPapers - - + + - + @@ -36,10 +36,10 @@
    - -

    account.resetNotifySettings

    + +

    account.resetWallPapers

    -

    Resets all notification settings from users and groups.

    +

    Delete installed wallpapers