From 5b407775307c4b1487b370eab9028d1bed83636d Mon Sep 17 00:00:00 2001 From: Daniil Gentili Date: Wed, 1 May 2024 14:53:46 +0200 Subject: [PATCH] Bump --- .gitignore | 2 + .woodpecker.yml | 31 + docs/.well-known/amphtml/apikey.pub | 9 + .../constructors/account.authorizationForm.md | 34 + .../constructors/account.authorizations.md | 31 + .../account.autoDownloadSettings.md | 32 + .../constructors/account.autoSaveSettings.md | 35 + .../constructors/account.businessChatLinks.md | 30 + .../constructors/account.connectedBots.md | 29 + .../constructors/account.contentSettings.md | 31 + .../constructors/account.emailVerified.md | 30 + .../account.emailVerifiedLogin.md | 31 + .../constructors/account.emojiStatuses.md | 31 + .../account.emojiStatusesNotModified.md | 25 + .../API_docs/constructors/account.password.md | 42 + .../account.passwordInputSettings.md | 34 + .../constructors/account.passwordSettings.md | 31 + .../constructors/account.privacyRules.md | 32 + .../account.resetPasswordFailedWait.md | 30 + .../constructors/account.resetPasswordOk.md | 25 + .../account.resetPasswordRequestedWait.md | 30 + .../account.resolvedBusinessChatLinks.md | 93 + .../constructors/account.savedRingtone.md | 25 + .../account.savedRingtoneConverted.md | 30 + .../constructors/account.savedRingtones.md | 31 + .../account.savedRingtonesNotModified.md | 25 + .../constructors/account.sentEmailCode.md | 31 + docs/API_docs/constructors/account.takeout.md | 30 + docs/API_docs/constructors/account.themes.md | 31 + .../constructors/account.themesNotModified.md | 25 + .../constructors/account.tmpPassword.md | 31 + .../constructors/account.wallPapers.md | 31 + .../account.wallPapersNotModified.md | 25 + .../constructors/account.webAuthorizations.md | 31 + docs/API_docs/constructors/accountDaysTTL.md | 29 + .../constructors/appWebViewResultUrl.md | 29 + docs/API_docs/constructors/attachMenuBot.md | 40 + .../constructors/attachMenuBotIcon.md | 31 + .../constructors/attachMenuBotIconColor.md | 30 + docs/API_docs/constructors/attachMenuBots.md | 31 + .../constructors/attachMenuBotsBot.md | 30 + .../constructors/attachMenuBotsNotModified.md | 24 + .../constructors/attachMenuPeerTypeBotPM.md | 24 + .../attachMenuPeerTypeBroadcast.md | 24 + .../constructors/attachMenuPeerTypeChat.md | 24 + .../constructors/attachMenuPeerTypePM.md | 24 + .../attachMenuPeerTypeSameBotPM.md | 24 + .../constructors/auth.authorization.md | 34 + .../auth.authorizationSignUpRequired.md | 30 + .../constructors/auth.codeTypeCall.md | 25 + .../constructors/auth.codeTypeFlashCall.md | 25 + .../constructors/auth.codeTypeFragmentSms.md | 25 + .../constructors/auth.codeTypeMissedCall.md | 25 + .../API_docs/constructors/auth.codeTypeSms.md | 25 + .../auth.exportedAuthorization.md | 31 + docs/API_docs/constructors/auth.loggedOut.md | 30 + docs/API_docs/constructors/auth.loginToken.md | 31 + .../constructors/auth.loginTokenMigrateTo.md | 31 + .../constructors/auth.loginTokenSuccess.md | 30 + .../constructors/auth.passwordRecovery.md | 30 + docs/API_docs/constructors/auth.sentCode.md | 33 + .../constructors/auth.sentCodeSuccess.md | 30 + .../constructors/auth.sentCodeTypeApp.md | 30 + .../constructors/auth.sentCodeTypeCall.md | 30 + .../auth.sentCodeTypeEmailCode.md | 35 + .../auth.sentCodeTypeFirebaseSms.md | 33 + .../auth.sentCodeTypeFlashCall.md | 30 + .../auth.sentCodeTypeFragmentSms.md | 31 + .../auth.sentCodeTypeMissedCall.md | 31 + .../auth.sentCodeTypeSetUpEmailRequired.md | 31 + .../constructors/auth.sentCodeTypeSms.md | 30 + .../auth.sentCodeTypeSmsPhrase.md | 28 + .../constructors/auth.sentCodeTypeSmsWord.md | 28 + docs/API_docs/constructors/authorization.md | 46 + .../constructors/autoDownloadSettings.md | 39 + .../constructors/autoSaveException.md | 30 + .../API_docs/constructors/autoSaveSettings.md | 31 + .../constructors/availableReaction.md | 39 + docs/API_docs/constructors/bankCardOpenUrl.md | 30 + docs/API_docs/constructors/baseThemeArctic.md | 24 + .../API_docs/constructors/baseThemeClassic.md | 24 + docs/API_docs/constructors/baseThemeDay.md | 24 + docs/API_docs/constructors/baseThemeNight.md | 24 + docs/API_docs/constructors/baseThemeTinted.md | 24 + docs/API_docs/constructors/birthday.md | 29 + docs/API_docs/constructors/boolFalse.md | 10 + docs/API_docs/constructors/boolTrue.md | 10 + docs/API_docs/constructors/boost.md | 38 + docs/API_docs/constructors/botApp.md | 36 + .../constructors/botAppNotModified.md | 24 + .../constructors/botBusinessConnection.md | 32 + docs/API_docs/constructors/botCommand.md | 30 + .../constructors/botCommandScopeChatAdmins.md | 24 + .../constructors/botCommandScopeChats.md | 24 + .../constructors/botCommandScopeDefault.md | 24 + .../constructors/botCommandScopePeer.md | 29 + .../constructors/botCommandScopePeerAdmins.md | 29 + .../constructors/botCommandScopePeerUser.md | 30 + .../constructors/botCommandScopeUsers.md | 24 + docs/API_docs/constructors/botInfo.md | 34 + .../constructors/botInlineMediaResult.md | 35 + .../constructors/botInlineMessageMediaAuto.md | 93 + .../botInlineMessageMediaContact.md | 39 + .../constructors/botInlineMessageMediaGeo.md | 39 + .../botInlineMessageMediaInvoice.md | 42 + .../botInlineMessageMediaVenue.md | 41 + .../botInlineMessageMediaWebPage.md | 98 + .../constructors/botInlineMessageText.md | 94 + docs/API_docs/constructors/botInlineResult.md | 36 + docs/API_docs/constructors/botMenuButton.md | 30 + .../constructors/botMenuButtonCommands.md | 24 + .../constructors/botMenuButtonDefault.md | 24 + docs/API_docs/constructors/bots.botInfo.md | 32 + .../constructors/broadcastRevenueBalances.md | 29 + .../broadcastRevenueTransactionProceeds.md | 29 + .../broadcastRevenueTransactionRefund.md | 29 + .../broadcastRevenueTransactionWithdrawal.md | 33 + .../constructors/businessAwayMessage.md | 30 + .../businessAwayMessageScheduleAlways.md | 22 + .../businessAwayMessageScheduleCustom.md | 28 + ...nessAwayMessageScheduleOutsideWorkHours.md | 22 + .../constructors/businessBotRecipients.md | 33 + .../API_docs/constructors/businessChatLink.md | 92 + .../constructors/businessGreetingMessage.md | 29 + docs/API_docs/constructors/businessIntro.md | 29 + .../API_docs/constructors/businessLocation.md | 28 + .../constructors/businessRecipients.md | 32 + .../constructors/businessWeeklyOpen.md | 28 + .../constructors/businessWorkHours.md | 29 + docs/API_docs/constructors/cdnConfig.md | 29 + docs/API_docs/constructors/cdnPublicKey.md | 30 + docs/API_docs/constructors/channel.md | 68 + .../constructors/channelAdminLogEvent.md | 32 + .../channelAdminLogEventActionChangeAbout.md | 30 + ...nLogEventActionChangeAvailableReactions.md | 30 + ...nelAdminLogEventActionChangeEmojiStatus.md | 30 + ...dminLogEventActionChangeEmojiStickerSet.md | 28 + ...nnelAdminLogEventActionChangeHistoryTTL.md | 30 + ...nnelAdminLogEventActionChangeLinkedChat.md | 30 + ...hannelAdminLogEventActionChangeLocation.md | 30 + ...annelAdminLogEventActionChangePeerColor.md | 30 + .../channelAdminLogEventActionChangePhoto.md | 30 + ...minLogEventActionChangeProfilePeerColor.md | 30 + ...nnelAdminLogEventActionChangeStickerSet.md | 30 + .../channelAdminLogEventActionChangeTitle.md | 30 + ...hannelAdminLogEventActionChangeUsername.md | 30 + ...annelAdminLogEventActionChangeUsernames.md | 30 + ...annelAdminLogEventActionChangeWallpaper.md | 30 + .../channelAdminLogEventActionCreateTopic.md | 29 + ...lAdminLogEventActionDefaultBannedRights.md | 30 + ...channelAdminLogEventActionDeleteMessage.md | 29 + .../channelAdminLogEventActionDeleteTopic.md | 29 + ...nnelAdminLogEventActionDiscardGroupCall.md | 29 + .../channelAdminLogEventActionEditMessage.md | 30 + .../channelAdminLogEventActionEditTopic.md | 30 + ...AdminLogEventActionExportedInviteDelete.md | 29 + ...elAdminLogEventActionExportedInviteEdit.md | 30 + ...AdminLogEventActionExportedInviteRevoke.md | 29 + ...nelAdminLogEventActionParticipantInvite.md | 29 + ...annelAdminLogEventActionParticipantJoin.md | 24 + ...inLogEventActionParticipantJoinByInvite.md | 30 + ...nLogEventActionParticipantJoinByRequest.md | 30 + ...nnelAdminLogEventActionParticipantLeave.md | 24 + ...annelAdminLogEventActionParticipantMute.md | 29 + ...minLogEventActionParticipantToggleAdmin.md | 30 + ...AdminLogEventActionParticipantToggleBan.md | 30 + ...nelAdminLogEventActionParticipantUnmute.md | 29 + ...nelAdminLogEventActionParticipantVolume.md | 29 + .../channelAdminLogEventActionPinTopic.md | 30 + .../channelAdminLogEventActionSendMessage.md | 29 + ...hannelAdminLogEventActionStartGroupCall.md | 29 + .../channelAdminLogEventActionStopPoll.md | 29 + ...hannelAdminLogEventActionToggleAntiSpam.md | 29 + .../channelAdminLogEventActionToggleForum.md | 29 + ...minLogEventActionToggleGroupCallSetting.md | 29 + ...channelAdminLogEventActionToggleInvites.md | 29 + ...nnelAdminLogEventActionToggleNoForwards.md | 29 + ...minLogEventActionTogglePreHistoryHidden.md | 29 + ...nnelAdminLogEventActionToggleSignatures.md | 29 + ...hannelAdminLogEventActionToggleSlowMode.md | 30 + .../channelAdminLogEventActionUpdatePinned.md | 29 + .../channelAdminLogEventsFilter.md | 46 + .../API_docs/constructors/channelForbidden.md | 34 + docs/API_docs/constructors/channelFull.md | 85 + docs/API_docs/constructors/channelLocation.md | 30 + .../constructors/channelLocationEmpty.md | 24 + .../constructors/channelMessagesFilter.md | 30 + .../channelMessagesFilterEmpty.md | 24 + .../constructors/channelParticipant.md | 30 + .../constructors/channelParticipantAdmin.md | 36 + .../constructors/channelParticipantBanned.md | 33 + .../constructors/channelParticipantCreator.md | 31 + .../constructors/channelParticipantLeft.md | 29 + .../constructors/channelParticipantSelf.md | 32 + .../constructors/channelParticipantsAdmins.md | 24 + .../constructors/channelParticipantsBanned.md | 29 + .../constructors/channelParticipantsBots.md | 24 + .../channelParticipantsContacts.md | 29 + .../constructors/channelParticipantsKicked.md | 29 + .../channelParticipantsMentions.md | 31 + .../constructors/channelParticipantsRecent.md | 24 + .../constructors/channelParticipantsSearch.md | 29 + .../constructors/channels.adminLogResults.md | 32 + .../channels.channelParticipant.md | 32 + .../channels.channelParticipants.md | 33 + ...channels.channelParticipantsNotModified.md | 25 + .../constructors/channels.sendAsPeers.md | 32 + ...s.sponsoredMessageReportResultAdsHidden.md | 23 + ...ponsoredMessageReportResultChooseOption.md | 29 + ...ls.sponsoredMessageReportResultReported.md | 23 + docs/API_docs/constructors/chat.md | 43 + docs/API_docs/constructors/chatAdminRights.md | 43 + .../constructors/chatAdminWithInvites.md | 31 + .../API_docs/constructors/chatBannedRights.md | 49 + docs/API_docs/constructors/chatEmpty.md | 29 + docs/API_docs/constructors/chatForbidden.md | 30 + docs/API_docs/constructors/chatFull.md | 48 + docs/API_docs/constructors/chatInvite.md | 42 + .../constructors/chatInviteAlready.md | 29 + .../constructors/chatInviteExported.md | 40 + .../constructors/chatInviteImporter.md | 34 + docs/API_docs/constructors/chatInvitePeek.md | 30 + .../chatInvitePublicJoinRequests.md | 24 + docs/API_docs/constructors/chatOnlines.md | 29 + docs/API_docs/constructors/chatParticipant.md | 31 + .../constructors/chatParticipantAdmin.md | 31 + .../constructors/chatParticipantCreator.md | 29 + .../API_docs/constructors/chatParticipants.md | 31 + .../constructors/chatParticipantsForbidden.md | 30 + docs/API_docs/constructors/chatPhoto.md | 32 + docs/API_docs/constructors/chatPhotoEmpty.md | 24 + .../API_docs/constructors/chatReactionsAll.md | 29 + .../constructors/chatReactionsNone.md | 24 + .../constructors/chatReactionsSome.md | 29 + .../constructors/chatlists.chatlistInvite.md | 34 + .../chatlists.chatlistInviteAlready.md | 34 + .../constructors/chatlists.chatlistUpdates.md | 32 + .../chatlists.exportedChatlistInvite.md | 31 + .../constructors/chatlists.exportedInvites.md | 32 + docs/API_docs/constructors/codeSettings.md | 39 + docs/API_docs/constructors/config.md | 75 + docs/API_docs/constructors/connectedBot.md | 29 + docs/API_docs/constructors/contact.md | 30 + docs/API_docs/constructors/contactBirthday.md | 28 + docs/API_docs/constructors/contactStatus.md | 30 + .../API_docs/constructors/contacts.blocked.md | 32 + .../constructors/contacts.blockedSlice.md | 33 + .../constructors/contacts.contactBirthdays.md | 29 + .../constructors/contacts.contacts.md | 32 + .../contacts.contactsNotModified.md | 25 + docs/API_docs/constructors/contacts.found.md | 33 + .../constructors/contacts.importedContacts.md | 33 + .../constructors/contacts.resolvedPeer.md | 32 + .../constructors/contacts.topPeers.md | 32 + .../constructors/contacts.topPeersDisabled.md | 25 + .../contacts.topPeersNotModified.md | 25 + docs/API_docs/constructors/dataJSON.md | 29 + docs/API_docs/constructors/dcOption.md | 38 + .../decryptedMessageActionAbortKey_20.md | 29 + .../decryptedMessageActionAcceptKey_20.md | 31 + .../decryptedMessageActionCommitKey_20.md | 30 + .../decryptedMessageActionDeleteMessages_8.md | 29 + .../decryptedMessageActionFlushHistory_8.md | 24 + .../decryptedMessageActionNoop_20.md | 24 + .../decryptedMessageActionNotifyLayer_17.md | 29 + .../decryptedMessageActionReadMessages_8.md | 29 + .../decryptedMessageActionRequestKey_20.md | 30 + .../decryptedMessageActionResend_17.md | 30 + ...ryptedMessageActionScreenshotMessages_8.md | 29 + .../decryptedMessageActionSetMessageTTL_8.md | 31 + .../decryptedMessageActionTyping_17.md | 29 + .../constructors/decryptedMessageLayer_17.md | 32 + .../decryptedMessageMediaAudio_17.md | 31 + .../decryptedMessageMediaAudio_8.md | 30 + .../decryptedMessageMediaContact_8.md | 32 + .../decryptedMessageMediaDocument_143.md | 35 + .../decryptedMessageMediaDocument_45.md | 35 + .../decryptedMessageMediaDocument_8.md | 34 + .../decryptedMessageMediaEmpty_8.md | 24 + ...ecryptedMessageMediaExternalDocument_23.md | 36 + .../decryptedMessageMediaGeoPoint_8.md | 30 + .../decryptedMessageMediaPhoto_45.md | 35 + .../decryptedMessageMediaPhoto_8.md | 34 + .../decryptedMessageMediaVenue_45.md | 34 + .../decryptedMessageMediaVideo_17.md | 36 + .../decryptedMessageMediaVideo_45.md | 37 + .../decryptedMessageMediaVideo_8.md | 35 + .../decryptedMessageMediaWebPage_45.md | 29 + .../decryptedMessageService_17.md | 29 + .../constructors/decryptedMessageService_8.md | 29 + .../constructors/decryptedMessage_17.md | 31 + .../constructors/decryptedMessage_45.md | 95 + .../constructors/decryptedMessage_73.md | 98 + .../constructors/decryptedMessage_8.md | 30 + .../constructors/defaultHistoryTTL.md | 29 + docs/API_docs/constructors/dialog.md | 43 + docs/API_docs/constructors/dialogFilter.md | 43 + .../constructors/dialogFilterChatlist.md | 35 + .../constructors/dialogFilterDefault.md | 24 + .../constructors/dialogFilterSuggested.md | 30 + docs/API_docs/constructors/dialogFolder.md | 36 + docs/API_docs/constructors/dialogPeer.md | 29 + .../API_docs/constructors/dialogPeerFolder.md | 29 + docs/API_docs/constructors/document.md | 38 + .../constructors/documentAttributeAnimated.md | 24 + .../constructors/documentAttributeAudio.md | 33 + .../constructors/documentAttributeAudio_23.md | 29 + .../constructors/documentAttributeAudio_45.md | 31 + .../documentAttributeCustomEmoji.md | 32 + .../constructors/documentAttributeFilename.md | 29 + .../documentAttributeHasStickers.md | 24 + .../documentAttributeImageSize.md | 30 + .../constructors/documentAttributeSticker.md | 32 + .../documentAttributeSticker_23.md | 24 + .../documentAttributeSticker_45.md | 30 + .../constructors/documentAttributeVideo.md | 35 + .../constructors/documentAttributeVideo_23.md | 31 + .../constructors/documentAttributeVideo_66.md | 32 + docs/API_docs/constructors/documentEmpty.md | 29 + docs/API_docs/constructors/draftMessage.md | 96 + .../constructors/draftMessageEmpty.md | 29 + .../constructors/emailVerificationApple.md | 29 + .../constructors/emailVerificationCode.md | 29 + .../constructors/emailVerificationGoogle.md | 29 + .../emailVerifyPurposeLoginChange.md | 24 + .../emailVerifyPurposeLoginSetup.md | 30 + .../emailVerifyPurposePassport.md | 24 + docs/API_docs/constructors/emojiGroup.md | 31 + .../constructors/emojiGroupGreeting.md | 29 + .../constructors/emojiGroupPremium.md | 28 + docs/API_docs/constructors/emojiKeyword.md | 30 + .../constructors/emojiKeywordDeleted.md | 30 + .../constructors/emojiKeywordsDifference.md | 32 + docs/API_docs/constructors/emojiLanguage.md | 29 + docs/API_docs/constructors/emojiList.md | 30 + .../constructors/emojiListNotModified.md | 24 + docs/API_docs/constructors/emojiStatus.md | 29 + .../API_docs/constructors/emojiStatusEmpty.md | 24 + .../API_docs/constructors/emojiStatusUntil.md | 30 + docs/API_docs/constructors/emojiURL.md | 29 + docs/API_docs/constructors/encryptedChat.md | 35 + .../constructors/encryptedChatDiscarded.md | 30 + .../constructors/encryptedChatEmpty.md | 29 + .../constructors/encryptedChatRequested.md | 35 + .../constructors/encryptedChatWaiting.md | 33 + docs/API_docs/constructors/encryptedFile.md | 33 + .../constructors/encryptedFileEmpty.md | 24 + .../API_docs/constructors/encryptedMessage.md | 32 + .../constructors/encryptedMessageService.md | 31 + docs/API_docs/constructors/error.md | 30 + .../constructors/exportedChatlistInvite.md | 31 + .../constructors/exportedContactToken.md | 30 + .../constructors/exportedMessageLink.md | 30 + .../constructors/exportedStoryLink.md | 29 + docs/API_docs/constructors/fileHash.md | 31 + .../fileLocationUnavailable_23.md | 29 + docs/API_docs/constructors/fileLocation_23.md | 30 + docs/API_docs/constructors/folder.md | 34 + docs/API_docs/constructors/folderPeer.md | 30 + docs/API_docs/constructors/forumTopic.md | 47 + .../constructors/forumTopicDeleted.md | 29 + .../constructors/fragment.collectibleInfo.md | 33 + docs/API_docs/constructors/game.md | 35 + docs/API_docs/constructors/geoPoint.md | 32 + docs/API_docs/constructors/geoPointEmpty.md | 24 + .../constructors/globalPrivacySettings.md | 33 + docs/API_docs/constructors/groupCall.md | 46 + .../constructors/groupCallDiscarded.md | 31 + .../constructors/groupCallParticipant.md | 47 + .../constructors/groupCallParticipantVideo.md | 32 + .../groupCallParticipantVideoSourceGroup.md | 30 + .../constructors/groupCallStreamChannel.md | 31 + docs/API_docs/constructors/help.appConfig.md | 31 + .../constructors/help.appConfigNotModified.md | 25 + docs/API_docs/constructors/help.appUpdate.md | 98 + .../constructors/help.countriesList.md | 31 + .../help.countriesListNotModified.md | 25 + docs/API_docs/constructors/help.country.md | 34 + .../API_docs/constructors/help.countryCode.md | 32 + .../constructors/help.deepLinkInfo.md | 93 + .../constructors/help.deepLinkInfoEmpty.md | 25 + docs/API_docs/constructors/help.inviteText.md | 30 + .../API_docs/constructors/help.noAppUpdate.md | 25 + .../constructors/help.passportConfig.md | 31 + .../help.passportConfigNotModified.md | 25 + .../constructors/help.peerColorOption.md | 35 + .../constructors/help.peerColorProfileSet.md | 32 + .../constructors/help.peerColorSet.md | 30 + docs/API_docs/constructors/help.peerColors.md | 31 + .../help.peerColorsNotModified.md | 25 + .../constructors/help.premiumPromo.md | 39 + docs/API_docs/constructors/help.promoData.md | 36 + .../constructors/help.promoDataEmpty.md | 30 + .../constructors/help.recentMeUrls.md | 32 + docs/API_docs/constructors/help.support.md | 31 + .../API_docs/constructors/help.supportName.md | 30 + .../constructors/help.termsOfService.md | 95 + .../constructors/help.termsOfServiceUpdate.md | 31 + .../help.termsOfServiceUpdateEmpty.md | 30 + .../constructors/help.timezonesList.md | 29 + .../help.timezonesListNotModified.md | 23 + docs/API_docs/constructors/help.userInfo.md | 94 + .../constructors/help.userInfoEmpty.md | 25 + docs/API_docs/constructors/highScore.md | 31 + docs/API_docs/constructors/importedContact.md | 30 + docs/API_docs/constructors/index.md | 3976 +++++++++++++++++ .../constructors/inlineBotSwitchPM.md | 30 + .../API_docs/constructors/inlineBotWebView.md | 30 + .../constructors/inlineQueryPeerTypeBotPM.md | 24 + .../inlineQueryPeerTypeBroadcast.md | 24 + .../constructors/inlineQueryPeerTypeChat.md | 24 + .../inlineQueryPeerTypeMegagroup.md | 24 + .../constructors/inlineQueryPeerTypePM.md | 24 + .../inlineQueryPeerTypeSameBotPM.md | 24 + docs/API_docs/constructors/inputAppEvent.md | 32 + docs/API_docs/constructors/inputBotAppID.md | 30 + .../constructors/inputBotAppShortName.md | 30 + .../constructors/inputBotInlineMessageGame.md | 35 + .../constructors/inputBotInlineMessageID.md | 31 + .../constructors/inputBotInlineMessageID64.md | 32 + .../inputBotInlineMessageMediaAuto.md | 93 + .../inputBotInlineMessageMediaContact.md | 39 + .../inputBotInlineMessageMediaGeo.md | 39 + .../inputBotInlineMessageMediaInvoice.md | 42 + .../inputBotInlineMessageMediaVenue.md | 41 + .../inputBotInlineMessageMediaWebPage.md | 97 + .../constructors/inputBotInlineMessageText.md | 94 + .../constructors/inputBotInlineResult.md | 36 + .../inputBotInlineResultDocument.md | 34 + .../constructors/inputBotInlineResultGame.md | 31 + .../constructors/inputBotInlineResultPhoto.md | 32 + .../constructors/inputBusinessAwayMessage.md | 30 + .../inputBusinessBotRecipients.md | 33 + .../constructors/inputBusinessChatLink.md | 90 + .../inputBusinessGreetingMessage.md | 29 + .../constructors/inputBusinessIntro.md | 29 + .../constructors/inputBusinessRecipients.md | 32 + docs/API_docs/constructors/inputChannel.md | 30 + .../constructors/inputChannelEmpty.md | 24 + .../constructors/inputChannelFromMessage.md | 31 + docs/API_docs/constructors/inputChatPhoto.md | 29 + .../constructors/inputChatPhotoEmpty.md | 24 + .../constructors/inputChatUploadedPhoto.md | 34 + .../constructors/inputChatlistDialogFilter.md | 29 + .../constructors/inputCheckPasswordEmpty.md | 24 + .../constructors/inputCheckPasswordSRP.md | 31 + .../API_docs/constructors/inputClientProxy.md | 30 + .../constructors/inputCollectiblePhone.md | 27 + .../constructors/inputCollectibleUsername.md | 27 + docs/API_docs/constructors/inputDialogPeer.md | 29 + .../constructors/inputDialogPeerFolder.md | 29 + docs/API_docs/constructors/inputDocument.md | 31 + .../constructors/inputDocumentEmpty.md | 24 + .../constructors/inputDocumentFileLocation.md | 32 + .../constructors/inputEncryptedChat.md | 30 + .../constructors/inputEncryptedFile.md | 30 + .../inputEncryptedFileBigUploaded.md | 31 + .../constructors/inputEncryptedFileEmpty.md | 24 + .../inputEncryptedFileLocation.md | 30 + .../inputEncryptedFileUploaded.md | 32 + docs/API_docs/constructors/inputFile.md | 32 + docs/API_docs/constructors/inputFileBig.md | 31 + .../constructors/inputFileLocation.md | 32 + docs/API_docs/constructors/inputFolderPeer.md | 30 + docs/API_docs/constructors/inputGameID.md | 30 + .../constructors/inputGameShortName.md | 30 + docs/API_docs/constructors/inputGeoPoint.md | 31 + .../constructors/inputGeoPointEmpty.md | 24 + docs/API_docs/constructors/inputGroupCall.md | 30 + .../constructors/inputGroupCallStream.md | 33 + .../constructors/inputInvoiceMessage.md | 30 + .../inputInvoicePremiumGiftCode.md | 30 + .../API_docs/constructors/inputInvoiceSlug.md | 29 + .../inputKeyboardButtonRequestPeer.md | 33 + .../inputKeyboardButtonUrlAuth.md | 33 + .../inputKeyboardButtonUserProfile.md | 30 + .../constructors/inputMediaAreaChannelPost.md | 31 + .../constructors/inputMediaAreaVenue.md | 31 + .../constructors/inputMediaContact.md | 32 + docs/API_docs/constructors/inputMediaDice.md | 29 + .../constructors/inputMediaDocument.md | 32 + .../inputMediaDocumentExternal.md | 31 + docs/API_docs/constructors/inputMediaEmpty.md | 24 + docs/API_docs/constructors/inputMediaGame.md | 29 + .../constructors/inputMediaGeoLive.md | 33 + .../constructors/inputMediaGeoPoint.md | 29 + .../constructors/inputMediaInvoice.md | 37 + docs/API_docs/constructors/inputMediaPhoto.md | 31 + .../constructors/inputMediaPhotoExternal.md | 31 + docs/API_docs/constructors/inputMediaPoll.md | 32 + docs/API_docs/constructors/inputMediaStory.md | 30 + .../inputMediaUploadedDocument.md | 37 + .../constructors/inputMediaUploadedPhoto.md | 32 + docs/API_docs/constructors/inputMediaVenue.md | 34 + .../constructors/inputMediaWebPage.md | 32 + .../constructors/inputMessageCallbackQuery.md | 30 + .../inputMessageEntityMentionName.md | 31 + docs/API_docs/constructors/inputMessageID.md | 29 + .../constructors/inputMessagePinned.md | 24 + .../constructors/inputMessageReplyTo.md | 29 + .../inputMessagesFilterChatPhotos.md | 24 + .../inputMessagesFilterContacts.md | 24 + .../inputMessagesFilterDocument.md | 24 + .../constructors/inputMessagesFilterEmpty.md | 24 + .../constructors/inputMessagesFilterGeo.md | 24 + .../constructors/inputMessagesFilterGif.md | 24 + .../constructors/inputMessagesFilterMusic.md | 24 + .../inputMessagesFilterMyMentions.md | 24 + .../inputMessagesFilterPhoneCalls.md | 29 + .../inputMessagesFilterPhotoVideo.md | 24 + .../constructors/inputMessagesFilterPhotos.md | 24 + .../constructors/inputMessagesFilterPinned.md | 24 + .../inputMessagesFilterRoundVideo.md | 24 + .../inputMessagesFilterRoundVoice.md | 24 + .../constructors/inputMessagesFilterUrl.md | 24 + .../constructors/inputMessagesFilterVideo.md | 24 + .../constructors/inputMessagesFilterVoice.md | 24 + .../constructors/inputNotifyBroadcasts.md | 24 + .../API_docs/constructors/inputNotifyChats.md | 24 + .../constructors/inputNotifyForumTopic.md | 30 + docs/API_docs/constructors/inputNotifyPeer.md | 29 + .../API_docs/constructors/inputNotifyUsers.md | 24 + .../constructors/inputPaymentCredentials.md | 30 + .../inputPaymentCredentialsApplePay.md | 29 + .../inputPaymentCredentialsGooglePay.md | 29 + .../inputPaymentCredentialsSaved.md | 30 + .../API_docs/constructors/inputPeerChannel.md | 30 + .../inputPeerChannelFromMessage.md | 31 + docs/API_docs/constructors/inputPeerChat.md | 29 + docs/API_docs/constructors/inputPeerEmpty.md | 24 + .../constructors/inputPeerNotifySettings.md | 35 + .../inputPeerPhotoFileLocation.md | 31 + docs/API_docs/constructors/inputPeerSelf.md | 24 + docs/API_docs/constructors/inputPeerUser.md | 30 + .../constructors/inputPeerUserFromMessage.md | 31 + docs/API_docs/constructors/inputPhoneCall.md | 30 + .../constructors/inputPhoneContact.md | 32 + docs/API_docs/constructors/inputPhoto.md | 31 + docs/API_docs/constructors/inputPhotoEmpty.md | 24 + .../constructors/inputPhotoFileLocation.md | 32 + .../inputPhotoLegacyFileLocation.md | 34 + .../constructors/inputPrivacyKeyAbout.md | 24 + .../inputPrivacyKeyAddedByPhone.md | 24 + .../constructors/inputPrivacyKeyBirthday.md | 22 + .../constructors/inputPrivacyKeyChatInvite.md | 24 + .../constructors/inputPrivacyKeyForwards.md | 24 + .../constructors/inputPrivacyKeyPhoneCall.md | 24 + .../inputPrivacyKeyPhoneNumber.md | 24 + .../constructors/inputPrivacyKeyPhoneP2P.md | 24 + .../inputPrivacyKeyProfilePhoto.md | 24 + .../inputPrivacyKeyStatusTimestamp.md | 24 + .../inputPrivacyKeyVoiceMessages.md | 24 + .../constructors/inputPrivacyValueAllowAll.md | 24 + .../inputPrivacyValueAllowChatParticipants.md | 29 + .../inputPrivacyValueAllowCloseFriends.md | 24 + .../inputPrivacyValueAllowContacts.md | 24 + .../inputPrivacyValueAllowPremium.md | 22 + .../inputPrivacyValueAllowUsers.md | 29 + .../inputPrivacyValueDisallowAll.md | 24 + ...putPrivacyValueDisallowChatParticipants.md | 29 + .../inputPrivacyValueDisallowContacts.md | 24 + .../inputPrivacyValueDisallowUsers.md | 29 + .../constructors/inputQuickReplyShortcut.md | 27 + .../constructors/inputQuickReplyShortcutId.md | 27 + .../constructors/inputReplyToMessage.md | 34 + .../constructors/inputReplyToStory.md | 30 + .../inputReportReasonChildAbuse.md | 24 + .../inputReportReasonCopyright.md | 24 + .../constructors/inputReportReasonFake.md | 24 + .../inputReportReasonGeoIrrelevant.md | 24 + .../inputReportReasonIllegalDrugs.md | 24 + .../constructors/inputReportReasonOther.md | 24 + .../inputReportReasonPersonalDetails.md | 24 + .../inputReportReasonPornography.md | 24 + .../constructors/inputReportReasonSpam.md | 24 + .../constructors/inputReportReasonViolence.md | 24 + docs/API_docs/constructors/inputSecureFile.md | 30 + .../constructors/inputSecureFileLocation.md | 30 + .../constructors/inputSecureFileUploaded.md | 33 + .../API_docs/constructors/inputSecureValue.md | 36 + .../API_docs/constructors/inputSingleMedia.md | 92 + .../inputStickerSetAnimatedEmoji.md | 24 + .../inputStickerSetAnimatedEmojiAnimations.md | 24 + .../constructors/inputStickerSetDice.md | 29 + ...utStickerSetEmojiChannelDefaultStatuses.md | 24 + .../inputStickerSetEmojiDefaultStatuses.md | 24 + .../inputStickerSetEmojiDefaultTopicIcons.md | 24 + .../inputStickerSetEmojiGenericAnimations.md | 24 + .../constructors/inputStickerSetEmpty.md | 24 + .../constructors/inputStickerSetID.md | 30 + .../constructors/inputStickerSetItem.md | 32 + .../inputStickerSetPremiumGifts.md | 24 + .../constructors/inputStickerSetShortName.md | 29 + .../constructors/inputStickerSetThumb.md | 30 + .../inputStickeredMediaDocument.md | 29 + .../constructors/inputStickeredMediaPhoto.md | 29 + .../inputStorePaymentGiftPremium.md | 31 + .../inputStorePaymentPremiumGiftCode.md | 32 + .../inputStorePaymentPremiumGiveaway.md | 37 + .../inputStorePaymentPremiumSubscription.md | 30 + .../constructors/inputTakeoutFileLocation.md | 24 + docs/API_docs/constructors/inputTheme.md | 30 + .../constructors/inputThemeSettings.md | 35 + docs/API_docs/constructors/inputThemeSlug.md | 29 + docs/API_docs/constructors/inputUser.md | 30 + docs/API_docs/constructors/inputUserEmpty.md | 24 + .../constructors/inputUserFromMessage.md | 31 + docs/API_docs/constructors/inputUserSelf.md | 24 + docs/API_docs/constructors/inputWallPaper.md | 30 + .../constructors/inputWallPaperNoFile.md | 29 + .../constructors/inputWallPaperSlug.md | 29 + .../API_docs/constructors/inputWebDocument.md | 32 + .../inputWebFileAudioAlbumThumbLocation.md | 32 + .../inputWebFileGeoPointLocation.md | 34 + .../constructors/inputWebFileLocation.md | 30 + docs/API_docs/constructors/invoice.md | 42 + docs/API_docs/constructors/jsonArray.md | 29 + docs/API_docs/constructors/jsonBool.md | 29 + docs/API_docs/constructors/jsonNull.md | 24 + docs/API_docs/constructors/jsonNumber.md | 29 + docs/API_docs/constructors/jsonObject.md | 29 + docs/API_docs/constructors/jsonObjectValue.md | 30 + docs/API_docs/constructors/jsonString.md | 29 + docs/API_docs/constructors/keyboardButton.md | 29 + .../constructors/keyboardButtonBuy.md | 29 + .../constructors/keyboardButtonCallback.md | 31 + .../constructors/keyboardButtonGame.md | 29 + .../keyboardButtonRequestGeoLocation.md | 29 + .../constructors/keyboardButtonRequestPeer.md | 32 + .../keyboardButtonRequestPhone.md | 29 + .../constructors/keyboardButtonRequestPoll.md | 30 + .../constructors/keyboardButtonRow.md | 29 + .../keyboardButtonSimpleWebView.md | 32 + .../keyboardButtonSwitchInline.md | 32 + .../constructors/keyboardButtonUrl.md | 30 + .../constructors/keyboardButtonUrlAuth.md | 32 + .../constructors/keyboardButtonUserProfile.md | 30 + .../constructors/keyboardButtonWebView.md | 32 + docs/API_docs/constructors/labeledPrice.md | 30 + .../constructors/langPackDifference.md | 32 + .../API_docs/constructors/langPackLanguage.md | 39 + docs/API_docs/constructors/langPackString.md | 30 + .../constructors/langPackStringDeleted.md | 29 + .../constructors/langPackStringPluralized.md | 35 + docs/API_docs/constructors/maskCoords.md | 39 + .../constructors/mediaAreaChannelPost.md | 31 + .../constructors/mediaAreaCoordinates.md | 33 + .../constructors/mediaAreaGeoPoint.md | 30 + .../mediaAreaSuggestedReaction.md | 32 + docs/API_docs/constructors/mediaAreaVenue.md | 35 + docs/API_docs/constructors/message.md | 125 + .../constructors/messageActionBoostApply.md | 27 + .../constructors/messageActionBotAllowed.md | 34 + .../messageActionChannelCreate.md | 29 + .../messageActionChannelMigrateFrom.md | 30 + .../constructors/messageActionChatAddUser.md | 29 + .../constructors/messageActionChatCreate.md | 30 + .../messageActionChatDeletePhoto.md | 24 + .../messageActionChatDeleteUser.md | 29 + .../messageActionChatEditPhoto.md | 29 + .../messageActionChatEditTitle.md | 29 + .../messageActionChatJoinedByLink.md | 29 + .../messageActionChatJoinedByRequest.md | 24 + .../messageActionChatMigrateTo.md | 29 + .../messageActionContactSignUp.md | 24 + .../constructors/messageActionCustomAction.md | 29 + .../constructors/messageActionEmpty.md | 24 + .../constructors/messageActionGameScore.md | 30 + .../messageActionGeoProximityReached.md | 31 + .../constructors/messageActionGiftCode.md | 37 + .../constructors/messageActionGiftPremium.md | 33 + .../messageActionGiveawayLaunch.md | 24 + .../messageActionGiveawayResults.md | 30 + .../constructors/messageActionGroupCall.md | 30 + .../messageActionGroupCallScheduled.md | 30 + .../constructors/messageActionHistoryClear.md | 24 + .../messageActionInviteToGroupCall.md | 30 + .../constructors/messageActionPaymentSent.md | 33 + .../messageActionPaymentSentMe.md | 36 + .../constructors/messageActionPhoneCall.md | 32 + .../constructors/messageActionPinMessage.md | 24 + .../messageActionRequestedPeer.md | 30 + .../messageActionRequestedPeerSentMe.md | 28 + .../messageActionScreenshotTaken.md | 24 + .../messageActionSecureValuesSent.md | 29 + .../messageActionSecureValuesSentMe.md | 30 + .../constructors/messageActionSetChatTheme.md | 29 + .../messageActionSetChatWallPaper.md | 31 + .../messageActionSetMessagesTTL.md | 30 + .../messageActionSuggestProfilePhoto.md | 29 + .../constructors/messageActionTopicCreate.md | 31 + .../constructors/messageActionTopicEdit.md | 32 + .../messageActionWebViewDataSent.md | 31 + .../messageActionWebViewDataSentMe.md | 30 + docs/API_docs/constructors/messageEmpty.md | 30 + .../constructors/messageEntityBankCard.md | 30 + .../constructors/messageEntityBlockquote.md | 30 + .../constructors/messageEntityBold.md | 30 + .../constructors/messageEntityBotCommand.md | 30 + .../constructors/messageEntityCashtag.md | 30 + .../constructors/messageEntityCode.md | 30 + .../constructors/messageEntityCustomEmoji.md | 32 + .../constructors/messageEntityEmail.md | 30 + .../constructors/messageEntityHashtag.md | 30 + .../constructors/messageEntityItalic.md | 30 + .../constructors/messageEntityMention.md | 30 + .../constructors/messageEntityMentionName.md | 31 + .../constructors/messageEntityPhone.md | 30 + .../API_docs/constructors/messageEntityPre.md | 31 + .../constructors/messageEntitySpoiler.md | 30 + .../constructors/messageEntityStrike.md | 30 + .../constructors/messageEntityTextUrl.md | 33 + .../constructors/messageEntityUnderline.md | 30 + .../constructors/messageEntityUnknown.md | 30 + .../API_docs/constructors/messageEntityUrl.md | 30 + .../constructors/messageExtendedMedia.md | 29 + .../messageExtendedMediaPreview.md | 32 + .../API_docs/constructors/messageFwdHeader.md | 41 + .../constructors/messageMediaContact.md | 33 + .../API_docs/constructors/messageMediaDice.md | 30 + .../constructors/messageMediaDocument.md | 36 + .../constructors/messageMediaEmpty.md | 24 + .../API_docs/constructors/messageMediaGame.md | 29 + docs/API_docs/constructors/messageMediaGeo.md | 29 + .../constructors/messageMediaGeoLive.md | 32 + .../constructors/messageMediaGiveaway.md | 36 + .../messageMediaGiveawayResults.md | 39 + .../constructors/messageMediaInvoice.md | 38 + .../constructors/messageMediaPhoto.md | 31 + .../API_docs/constructors/messageMediaPoll.md | 30 + .../constructors/messageMediaStory.md | 32 + .../constructors/messageMediaUnsupported.md | 24 + .../constructors/messageMediaVenue.md | 34 + .../constructors/messageMediaWebPage.md | 33 + .../constructors/messagePeerReaction.md | 34 + docs/API_docs/constructors/messagePeerVote.md | 31 + .../messagePeerVoteInputOption.md | 30 + .../constructors/messagePeerVoteMultiple.md | 31 + docs/API_docs/constructors/messageRange.md | 30 + .../API_docs/constructors/messageReactions.md | 33 + docs/API_docs/constructors/messageReplies.md | 35 + .../constructors/messageReplyHeader.md | 39 + .../constructors/messageReplyStoryHeader.md | 30 + docs/API_docs/constructors/messageService.md | 41 + docs/API_docs/constructors/messageViews.md | 31 + .../messages.affectedFoundMessages.md | 33 + .../constructors/messages.affectedHistory.md | 32 + .../constructors/messages.affectedMessages.md | 31 + .../constructors/messages.allStickers.md | 31 + .../messages.allStickersNotModified.md | 25 + .../constructors/messages.archivedStickers.md | 31 + .../messages.availableReactions.md | 31 + .../messages.availableReactionsNotModified.md | 25 + docs/API_docs/constructors/messages.botApp.md | 33 + .../messages.botCallbackAnswer.md | 35 + .../constructors/messages.botResults.md | 37 + .../constructors/messages.channelMessages.md | 37 + .../messages.chatAdminsWithInvites.md | 31 + .../constructors/messages.chatFull.md | 32 + .../messages.chatInviteImporters.md | 32 + docs/API_docs/constructors/messages.chats.md | 30 + .../constructors/messages.chatsSlice.md | 31 + .../messages.checkedHistoryImportPeer.md | 30 + .../constructors/messages.dhConfig.md | 33 + .../messages.dhConfigNotModified.md | 30 + .../constructors/messages.dialogFilters.md | 29 + .../API_docs/constructors/messages.dialogs.md | 33 + .../messages.dialogsNotModified.md | 30 + .../constructors/messages.dialogsSlice.md | 34 + .../messages.discussionMessage.md | 36 + .../constructors/messages.emojiGroups.md | 31 + .../messages.emojiGroupsNotModified.md | 25 + .../messages.exportedChatInvite.md | 31 + .../messages.exportedChatInviteReplaced.md | 32 + .../messages.exportedChatInvites.md | 32 + .../constructors/messages.favedStickers.md | 32 + .../messages.favedStickersNotModified.md | 25 + .../constructors/messages.featuredStickers.md | 34 + .../messages.featuredStickersNotModified.md | 30 + .../constructors/messages.forumTopics.md | 36 + .../constructors/messages.foundStickerSets.md | 31 + .../messages.foundStickerSetsNotModified.md | 25 + .../constructors/messages.highScores.md | 31 + .../constructors/messages.historyImport.md | 30 + .../messages.historyImportParsed.md | 33 + .../constructors/messages.inactiveChats.md | 32 + .../constructors/messages.invitedUsers.md | 29 + .../constructors/messages.messageEditData.md | 30 + .../messages.messageReactionsList.md | 34 + .../constructors/messages.messageViews.md | 32 + .../constructors/messages.messages.md | 32 + .../messages.messagesNotModified.md | 30 + .../constructors/messages.messagesSlice.md | 36 + .../constructors/messages.myStickers.md | 29 + .../constructors/messages.peerDialogs.md | 34 + .../constructors/messages.peerSettings.md | 32 + .../constructors/messages.quickReplies.md | 31 + .../messages.quickRepliesNotModified.md | 23 + .../constructors/messages.reactions.md | 31 + .../messages.reactionsNotModified.md | 25 + .../constructors/messages.recentStickers.md | 33 + .../messages.recentStickersNotModified.md | 25 + .../constructors/messages.savedDialogs.md | 33 + .../messages.savedDialogsNotModified.md | 30 + .../messages.savedDialogsSlice.md | 34 + .../constructors/messages.savedGifs.md | 31 + .../messages.savedGifsNotModified.md | 25 + .../messages.savedReactionTags.md | 29 + .../messages.savedReactionTagsNotModified.md | 23 + .../constructors/messages.searchCounter.md | 32 + .../messages.searchResultsCalendar.md | 38 + .../messages.searchResultsPositions.md | 31 + .../messages.sentEncryptedFile.md | 31 + .../messages.sentEncryptedMessage.md | 30 + .../messages.sponsoredMessages.md | 33 + .../messages.sponsoredMessagesEmpty.md | 25 + .../constructors/messages.stickerSet.md | 33 + ...messages.stickerSetInstallResultArchive.md | 30 + ...messages.stickerSetInstallResultSuccess.md | 25 + .../messages.stickerSetNotModified.md | 25 + .../constructors/messages.stickers.md | 31 + .../messages.stickersNotModified.md | 25 + .../constructors/messages.transcribedAudio.md | 34 + .../constructors/messages.translateResult.md | 30 + .../constructors/messages.votesList.md | 34 + .../API_docs/constructors/messages.webPage.md | 32 + docs/API_docs/constructors/missingInvitee.md | 29 + docs/API_docs/constructors/myBoost.md | 33 + docs/API_docs/constructors/nearestDc.md | 31 + .../constructors/notificationSoundDefault.md | 24 + .../constructors/notificationSoundLocal.md | 30 + .../constructors/notificationSoundNone.md | 24 + .../constructors/notificationSoundRingtone.md | 29 + .../API_docs/constructors/notifyBroadcasts.md | 24 + docs/API_docs/constructors/notifyChats.md | 24 + .../API_docs/constructors/notifyForumTopic.md | 30 + docs/API_docs/constructors/notifyPeer.md | 29 + docs/API_docs/constructors/notifyUsers.md | 24 + docs/API_docs/constructors/null.md | 10 + docs/API_docs/constructors/outboxReadDate.md | 27 + docs/API_docs/constructors/page.md | 36 + docs/API_docs/constructors/pageBlockAnchor.md | 29 + docs/API_docs/constructors/pageBlockAudio.md | 30 + .../constructors/pageBlockAuthorDate.md | 30 + .../constructors/pageBlockBlockquote.md | 30 + .../API_docs/constructors/pageBlockChannel.md | 29 + .../API_docs/constructors/pageBlockCollage.md | 30 + docs/API_docs/constructors/pageBlockCover.md | 29 + .../API_docs/constructors/pageBlockDetails.md | 31 + .../API_docs/constructors/pageBlockDivider.md | 24 + docs/API_docs/constructors/pageBlockEmbed.md | 36 + .../constructors/pageBlockEmbedPost.md | 35 + docs/API_docs/constructors/pageBlockFooter.md | 29 + docs/API_docs/constructors/pageBlockHeader.md | 29 + docs/API_docs/constructors/pageBlockKicker.md | 29 + docs/API_docs/constructors/pageBlockList.md | 29 + docs/API_docs/constructors/pageBlockMap.md | 33 + .../constructors/pageBlockOrderedList.md | 29 + .../constructors/pageBlockParagraph.md | 29 + docs/API_docs/constructors/pageBlockPhoto.md | 32 + .../constructors/pageBlockPreformatted.md | 30 + .../constructors/pageBlockPullquote.md | 30 + .../constructors/pageBlockRelatedArticles.md | 30 + .../constructors/pageBlockSlideshow.md | 30 + .../constructors/pageBlockSubheader.md | 29 + .../constructors/pageBlockSubtitle.md | 29 + docs/API_docs/constructors/pageBlockTable.md | 32 + docs/API_docs/constructors/pageBlockTitle.md | 29 + .../constructors/pageBlockUnsupported.md | 24 + docs/API_docs/constructors/pageBlockVideo.md | 32 + docs/API_docs/constructors/pageCaption.md | 30 + .../constructors/pageListItemBlocks.md | 29 + .../API_docs/constructors/pageListItemText.md | 29 + .../constructors/pageListOrderedItemBlocks.md | 30 + .../constructors/pageListOrderedItemText.md | 30 + .../constructors/pageRelatedArticle.md | 35 + docs/API_docs/constructors/pageTableCell.md | 36 + docs/API_docs/constructors/pageTableRow.md | 29 + ...6PBKDF2HMACSHA512iter100000SHA256ModPow.md | 32 + .../constructors/passwordKdfAlgoUnknown.md | 24 + docs/API_docs/constructors/paymentCharge.md | 30 + .../constructors/paymentFormMethod.md | 30 + .../constructors/paymentRequestedInfo.md | 32 + .../paymentSavedCredentialsCard.md | 30 + .../constructors/payments.bankCardData.md | 31 + .../constructors/payments.checkedGiftCode.md | 38 + .../constructors/payments.exportedInvoice.md | 30 + .../constructors/payments.giveawayInfo.md | 37 + .../payments.giveawayInfoResults.md | 36 + .../constructors/payments.paymentForm.md | 45 + .../constructors/payments.paymentReceipt.md | 43 + .../constructors/payments.paymentResult.md | 30 + .../payments.paymentVerificationNeeded.md | 30 + .../constructors/payments.savedInfo.md | 31 + .../payments.validatedRequestedInfo.md | 31 + docs/API_docs/constructors/peerBlocked.md | 30 + docs/API_docs/constructors/peerChannel.md | 29 + docs/API_docs/constructors/peerChat.md | 29 + docs/API_docs/constructors/peerColor.md | 30 + docs/API_docs/constructors/peerLocated.md | 31 + .../constructors/peerNotifySettings.md | 39 + docs/API_docs/constructors/peerSelfLocated.md | 29 + docs/API_docs/constructors/peerSettings.md | 44 + docs/API_docs/constructors/peerStories.md | 31 + docs/API_docs/constructors/peerUser.md | 29 + .../phone.exportedGroupCallInvite.md | 30 + docs/API_docs/constructors/phone.groupCall.md | 34 + .../phone.groupCallStreamChannels.md | 30 + .../phone.groupCallStreamRtmpUrl.md | 31 + .../constructors/phone.groupParticipants.md | 35 + .../constructors/phone.joinAsPeers.md | 32 + docs/API_docs/constructors/phone.phoneCall.md | 31 + docs/API_docs/constructors/phoneCall.md | 41 + .../constructors/phoneCallAccepted.md | 36 + .../phoneCallDiscardReasonBusy.md | 24 + .../phoneCallDiscardReasonDisconnect.md | 24 + .../phoneCallDiscardReasonHangup.md | 24 + .../phoneCallDiscardReasonMissed.md | 24 + .../constructors/phoneCallDiscarded.md | 34 + docs/API_docs/constructors/phoneCallEmpty.md | 29 + .../constructors/phoneCallProtocol.md | 33 + .../constructors/phoneCallRequested.md | 36 + .../API_docs/constructors/phoneCallWaiting.md | 36 + docs/API_docs/constructors/phoneConnection.md | 34 + .../constructors/phoneConnectionWebrtc.md | 36 + docs/API_docs/constructors/photo.md | 36 + docs/API_docs/constructors/photoCachedSize.md | 32 + .../constructors/photoCachedSize_23.md | 33 + docs/API_docs/constructors/photoEmpty.md | 29 + docs/API_docs/constructors/photoPathSize.md | 30 + docs/API_docs/constructors/photoSize.md | 32 + docs/API_docs/constructors/photoSizeEmpty.md | 29 + .../constructors/photoSizeProgressive.md | 32 + docs/API_docs/constructors/photoSize_23.md | 33 + .../constructors/photoStrippedSize.md | 35 + docs/API_docs/constructors/photos.photo.md | 31 + docs/API_docs/constructors/photos.photos.md | 31 + .../constructors/photos.photosSlice.md | 32 + docs/API_docs/constructors/poll.md | 37 + docs/API_docs/constructors/pollAnswer.md | 30 + .../API_docs/constructors/pollAnswerVoters.md | 32 + docs/API_docs/constructors/pollResults.md | 34 + docs/API_docs/constructors/popularContact.md | 30 + docs/API_docs/constructors/postAddress.md | 34 + .../postInteractionCountersMessage.md | 32 + .../postInteractionCountersStory.md | 32 + .../constructors/premium.boostsList.md | 33 + .../constructors/premium.boostsStatus.md | 39 + .../API_docs/constructors/premium.myBoosts.md | 32 + .../constructors/premiumGiftCodeOption.md | 34 + .../constructors/premiumGiftOption.md | 33 + .../constructors/premiumSubscriptionOption.md | 36 + docs/API_docs/constructors/prepaidGiveaway.md | 32 + docs/API_docs/constructors/privacyKeyAbout.md | 24 + .../constructors/privacyKeyAddedByPhone.md | 24 + .../constructors/privacyKeyBirthday.md | 22 + .../constructors/privacyKeyChatInvite.md | 24 + .../constructors/privacyKeyForwards.md | 24 + .../constructors/privacyKeyPhoneCall.md | 24 + .../constructors/privacyKeyPhoneNumber.md | 24 + .../constructors/privacyKeyPhoneP2P.md | 24 + .../constructors/privacyKeyProfilePhoto.md | 24 + .../constructors/privacyKeyStatusTimestamp.md | 24 + .../constructors/privacyKeyVoiceMessages.md | 24 + .../constructors/privacyValueAllowAll.md | 24 + .../privacyValueAllowChatParticipants.md | 29 + .../privacyValueAllowCloseFriends.md | 24 + .../constructors/privacyValueAllowContacts.md | 24 + .../constructors/privacyValueAllowPremium.md | 22 + .../constructors/privacyValueAllowUsers.md | 29 + .../constructors/privacyValueDisallowAll.md | 24 + .../privacyValueDisallowChatParticipants.md | 29 + .../privacyValueDisallowContacts.md | 24 + .../constructors/privacyValueDisallowUsers.md | 29 + .../constructors/publicForwardMessage.md | 29 + .../constructors/publicForwardStory.md | 30 + docs/API_docs/constructors/quickReply.md | 30 + docs/API_docs/constructors/reactionCount.md | 31 + .../constructors/reactionCustomEmoji.md | 29 + docs/API_docs/constructors/reactionEmoji.md | 29 + docs/API_docs/constructors/reactionEmpty.md | 24 + .../reactionNotificationsFromAll.md | 22 + .../reactionNotificationsFromContacts.md | 22 + .../constructors/reactionsNotifySettings.md | 30 + .../constructors/readParticipantDate.md | 30 + .../constructors/receivedNotifyMessage.md | 29 + docs/API_docs/constructors/recentMeUrlChat.md | 30 + .../constructors/recentMeUrlChatInvite.md | 30 + .../constructors/recentMeUrlStickerSet.md | 30 + .../constructors/recentMeUrlUnknown.md | 29 + docs/API_docs/constructors/recentMeUrlUser.md | 30 + .../constructors/replyInlineMarkup.md | 29 + .../constructors/replyKeyboardForceReply.md | 31 + .../constructors/replyKeyboardHide.md | 29 + .../constructors/replyKeyboardMarkup.md | 34 + .../constructors/requestPeerTypeBroadcast.md | 32 + .../constructors/requestPeerTypeChat.md | 34 + .../constructors/requestPeerTypeUser.md | 30 + .../constructors/requestedPeerChannel.md | 30 + .../constructors/requestedPeerChat.md | 29 + .../constructors/requestedPeerUser.md | 31 + .../constructors/restrictionReason.md | 33 + docs/API_docs/constructors/savedDialog.md | 31 + .../constructors/savedPhoneContact.md | 32 + .../API_docs/constructors/savedReactionTag.md | 29 + .../constructors/searchResultPosition.md | 31 + .../searchResultsCalendarPeriod.md | 34 + .../secureCredentialsEncrypted.md | 31 + docs/API_docs/constructors/secureData.md | 31 + docs/API_docs/constructors/secureFile.md | 35 + docs/API_docs/constructors/secureFileEmpty.md | 24 + ...sswordKdfAlgoPBKDF2HMACSHA512iter100000.md | 29 + .../securePasswordKdfAlgoSHA512.md | 29 + .../securePasswordKdfAlgoUnknown.md | 24 + .../API_docs/constructors/securePlainEmail.md | 29 + .../API_docs/constructors/securePlainPhone.md | 29 + .../constructors/secureRequiredType.md | 32 + .../constructors/secureRequiredTypeOneOf.md | 29 + .../constructors/secureSecretSettings.md | 31 + docs/API_docs/constructors/secureValue.md | 37 + .../API_docs/constructors/secureValueError.md | 31 + .../constructors/secureValueErrorData.md | 32 + .../constructors/secureValueErrorFile.md | 31 + .../constructors/secureValueErrorFiles.md | 31 + .../constructors/secureValueErrorFrontSide.md | 31 + .../secureValueErrorReverseSide.md | 31 + .../constructors/secureValueErrorSelfie.md | 31 + .../secureValueErrorTranslationFile.md | 31 + .../secureValueErrorTranslationFiles.md | 31 + docs/API_docs/constructors/secureValueHash.md | 30 + .../constructors/secureValueTypeAddress.md | 24 + .../secureValueTypeBankStatement.md | 24 + .../secureValueTypeDriverLicense.md | 24 + .../constructors/secureValueTypeEmail.md | 24 + .../secureValueTypeIdentityCard.md | 24 + .../secureValueTypeInternalPassport.md | 24 + .../constructors/secureValueTypePassport.md | 24 + .../secureValueTypePassportRegistration.md | 24 + .../secureValueTypePersonalDetails.md | 24 + .../constructors/secureValueTypePhone.md | 24 + .../secureValueTypeRentalAgreement.md | 24 + .../secureValueTypeTemporaryRegistration.md | 24 + .../secureValueTypeUtilityBill.md | 24 + docs/API_docs/constructors/sendAsPeer.md | 30 + .../constructors/sendMessageCancelAction.md | 24 + .../sendMessageChooseContactAction.md | 24 + .../sendMessageChooseStickerAction.md | 24 + .../sendMessageEmojiInteraction.md | 31 + .../sendMessageEmojiInteractionSeen.md | 29 + .../constructors/sendMessageGamePlayAction.md | 24 + .../sendMessageGeoLocationAction.md | 24 + .../sendMessageHistoryImportAction.md | 29 + .../sendMessageRecordAudioAction.md | 24 + .../sendMessageRecordRoundAction.md | 24 + .../sendMessageRecordVideoAction.md | 24 + .../constructors/sendMessageTypingAction.md | 24 + .../sendMessageUploadAudioAction.md | 29 + .../sendMessageUploadAudioAction_17.md | 24 + .../sendMessageUploadDocumentAction.md | 29 + .../sendMessageUploadDocumentAction_17.md | 24 + .../sendMessageUploadPhotoAction.md | 29 + .../sendMessageUploadPhotoAction_17.md | 24 + .../sendMessageUploadRoundAction.md | 29 + .../sendMessageUploadRoundAction_66.md | 24 + .../sendMessageUploadVideoAction.md | 29 + .../sendMessageUploadVideoAction_17.md | 24 + docs/API_docs/constructors/shippingOption.md | 31 + .../constructors/simpleWebViewResultUrl.md | 29 + docs/API_docs/constructors/smsJob.md | 29 + .../constructors/smsjobs.eligibleToJoin.md | 29 + docs/API_docs/constructors/smsjobs.status.md | 35 + .../constructors/speakingInGroupCallAction.md | 24 + .../API_docs/constructors/sponsoredMessage.md | 100 + .../sponsoredMessageReportOption.md | 28 + .../stats.broadcastRevenueStats.md | 31 + .../stats.broadcastRevenueTransactions.md | 29 + .../stats.broadcastRevenueWithdrawalUrl.md | 28 + .../constructors/stats.broadcastStats.md | 51 + .../constructors/stats.megagroupStats.md | 46 + .../constructors/stats.messageStats.md | 31 + .../constructors/stats.publicForwards.md | 34 + .../API_docs/constructors/stats.storyStats.md | 31 + .../constructors/statsAbsValueAndPrev.md | 30 + .../constructors/statsDateRangeDays.md | 30 + docs/API_docs/constructors/statsGraph.md | 30 + docs/API_docs/constructors/statsGraphAsync.md | 29 + docs/API_docs/constructors/statsGraphError.md | 29 + .../constructors/statsGroupTopAdmin.md | 32 + .../constructors/statsGroupTopInviter.md | 30 + .../constructors/statsGroupTopPoster.md | 31 + .../constructors/statsPercentValue.md | 31 + docs/API_docs/constructors/statsURL.md | 29 + docs/API_docs/constructors/stickerKeyword.md | 30 + docs/API_docs/constructors/stickerPack.md | 31 + docs/API_docs/constructors/stickerSet.md | 46 + .../constructors/stickerSetCovered.md | 30 + .../constructors/stickerSetFullCovered.md | 33 + .../constructors/stickerSetMultiCovered.md | 30 + .../constructors/stickerSetNoCovered.md | 29 + .../stickers.suggestedShortName.md | 30 + docs/API_docs/constructors/storage.fileGif.md | 25 + .../API_docs/constructors/storage.fileJpeg.md | 25 + docs/API_docs/constructors/storage.fileMov.md | 25 + docs/API_docs/constructors/storage.fileMp3.md | 25 + docs/API_docs/constructors/storage.fileMp4.md | 25 + .../constructors/storage.filePartial.md | 25 + docs/API_docs/constructors/storage.filePdf.md | 25 + docs/API_docs/constructors/storage.filePng.md | 25 + .../constructors/storage.fileUnknown.md | 25 + .../API_docs/constructors/storage.fileWebp.md | 25 + .../constructors/stories.allStories.md | 36 + .../stories.allStoriesNotModified.md | 31 + .../constructors/stories.peerStories.md | 32 + docs/API_docs/constructors/stories.stories.md | 34 + .../stories.storyReactionsList.md | 34 + .../constructors/stories.storyViews.md | 31 + .../constructors/stories.storyViewsList.md | 37 + .../constructors/storiesStealthMode.md | 30 + docs/API_docs/constructors/storyFwdHeader.md | 32 + docs/API_docs/constructors/storyItem.md | 110 + .../API_docs/constructors/storyItemDeleted.md | 29 + .../API_docs/constructors/storyItemSkipped.md | 32 + docs/API_docs/constructors/storyReaction.md | 31 + .../storyReactionPublicForward.md | 29 + .../constructors/storyReactionPublicRepost.md | 30 + docs/API_docs/constructors/storyView.md | 33 + .../constructors/storyViewPublicForward.md | 31 + .../constructors/storyViewPublicRepost.md | 32 + docs/API_docs/constructors/storyViews.md | 34 + docs/API_docs/constructors/textAnchor.md | 30 + docs/API_docs/constructors/textBold.md | 29 + docs/API_docs/constructors/textConcat.md | 29 + docs/API_docs/constructors/textEmail.md | 30 + docs/API_docs/constructors/textEmpty.md | 24 + docs/API_docs/constructors/textFixed.md | 29 + docs/API_docs/constructors/textImage.md | 31 + docs/API_docs/constructors/textItalic.md | 29 + docs/API_docs/constructors/textMarked.md | 29 + docs/API_docs/constructors/textPhone.md | 30 + docs/API_docs/constructors/textPlain.md | 29 + docs/API_docs/constructors/textStrike.md | 29 + docs/API_docs/constructors/textSubscript.md | 29 + docs/API_docs/constructors/textSuperscript.md | 29 + docs/API_docs/constructors/textUnderline.md | 29 + docs/API_docs/constructors/textUrl.md | 31 + .../API_docs/constructors/textWithEntities.md | 91 + docs/API_docs/constructors/theme.md | 39 + docs/API_docs/constructors/themeSettings.md | 34 + docs/API_docs/constructors/timezone.md | 29 + docs/API_docs/constructors/topPeer.md | 30 + .../constructors/topPeerCategoryBotsInline.md | 24 + .../constructors/topPeerCategoryBotsPM.md | 24 + .../constructors/topPeerCategoryChannels.md | 24 + .../topPeerCategoryCorrespondents.md | 24 + .../topPeerCategoryForwardChats.md | 24 + .../topPeerCategoryForwardUsers.md | 24 + .../constructors/topPeerCategoryGroups.md | 24 + .../constructors/topPeerCategoryPeers.md | 31 + .../constructors/topPeerCategoryPhoneCalls.md | 24 + docs/API_docs/constructors/true.md | 24 + .../constructors/updateAttachMenuBots.md | 24 + .../constructors/updateAutoSaveSettings.md | 24 + .../constructors/updateBotBusinessConnect.md | 28 + .../constructors/updateBotCallbackQuery.md | 35 + .../constructors/updateBotChatBoost.md | 31 + .../updateBotChatInviteRequester.md | 34 + .../constructors/updateBotCommands.md | 31 + .../updateBotDeleteBusinessMessage.md | 30 + .../updateBotEditBusinessMessage.md | 30 + .../constructors/updateBotInlineQuery.md | 34 + .../constructors/updateBotInlineSend.md | 33 + .../constructors/updateBotMenuButton.md | 30 + .../constructors/updateBotMessageReaction.md | 35 + .../constructors/updateBotMessageReactions.md | 33 + .../updateBotNewBusinessMessage.md | 30 + .../constructors/updateBotPrecheckoutQuery.md | 35 + .../constructors/updateBotShippingQuery.md | 32 + .../API_docs/constructors/updateBotStopped.md | 32 + .../constructors/updateBotWebhookJSON.md | 29 + .../constructors/updateBotWebhookJSONQuery.md | 31 + docs/API_docs/constructors/updateChannel.md | 29 + .../updateChannelAvailableMessages.md | 30 + .../updateChannelMessageForwards.md | 31 + .../constructors/updateChannelMessageViews.md | 31 + .../constructors/updateChannelParticipant.md | 37 + .../constructors/updateChannelPinnedTopic.md | 31 + .../constructors/updateChannelPinnedTopics.md | 30 + .../updateChannelReadMessagesContents.md | 31 + .../constructors/updateChannelTooLong.md | 31 + .../constructors/updateChannelUserTyping.md | 32 + .../updateChannelViewForumAsMessages.md | 31 + .../constructors/updateChannelWebPage.md | 32 + docs/API_docs/constructors/updateChat.md | 29 + .../updateChatDefaultBannedRights.md | 31 + .../constructors/updateChatParticipant.md | 36 + .../constructors/updateChatParticipantAdd.md | 33 + .../updateChatParticipantAdmin.md | 32 + .../updateChatParticipantDelete.md | 31 + .../constructors/updateChatParticipants.md | 29 + .../constructors/updateChatUserTyping.md | 31 + docs/API_docs/constructors/updateConfig.md | 24 + .../constructors/updateContactsReset.md | 24 + docs/API_docs/constructors/updateDcOptions.md | 29 + .../updateDeleteChannelMessages.md | 32 + .../constructors/updateDeleteMessages.md | 31 + .../constructors/updateDeleteQuickReply.md | 27 + .../updateDeleteQuickReplyMessages.md | 28 + .../updateDeleteScheduledMessages.md | 30 + .../constructors/updateDialogFilter.md | 30 + .../constructors/updateDialogFilterOrder.md | 29 + .../constructors/updateDialogFilters.md | 24 + .../constructors/updateDialogPinned.md | 31 + .../constructors/updateDialogUnreadMark.md | 30 + .../constructors/updateDraftMessage.md | 31 + .../constructors/updateEditChannelMessage.md | 31 + .../constructors/updateEditMessage.md | 31 + .../constructors/updateEncryptedChatTyping.md | 29 + .../updateEncryptedMessagesRead.md | 31 + .../API_docs/constructors/updateEncryption.md | 30 + .../constructors/updateFavedStickers.md | 24 + .../constructors/updateFolderPeers.md | 31 + .../constructors/updateGeoLiveViewed.md | 30 + docs/API_docs/constructors/updateGroupCall.md | 30 + .../constructors/updateGroupCallConnection.md | 30 + .../updateGroupCallParticipants.md | 31 + .../updateInlineBotCallbackQuery.md | 34 + docs/API_docs/constructors/updateLangPack.md | 29 + .../constructors/updateLangPackTooLong.md | 29 + .../API_docs/constructors/updateLoginToken.md | 24 + .../updateMessageExtendedMedia.md | 31 + docs/API_docs/constructors/updateMessageID.md | 29 + .../constructors/updateMessagePoll.md | 31 + .../constructors/updateMessagePollVote.md | 32 + .../constructors/updateMessageReactions.md | 32 + .../constructors/updateMoveStickerSetToTop.md | 31 + .../constructors/updateNewAuthorization.md | 33 + .../constructors/updateNewChannelMessage.md | 31 + .../constructors/updateNewEncryptedMessage.md | 30 + .../API_docs/constructors/updateNewMessage.md | 31 + .../constructors/updateNewQuickReply.md | 27 + .../constructors/updateNewScheduledMessage.md | 29 + .../constructors/updateNewStickerSet.md | 29 + .../constructors/updateNewStoryReaction.md | 29 + .../constructors/updateNotifySettings.md | 30 + .../constructors/updatePeerBlocked.md | 31 + .../constructors/updatePeerHistoryTTL.md | 30 + .../constructors/updatePeerLocated.md | 29 + .../constructors/updatePeerSettings.md | 30 + .../constructors/updatePeerWallpaper.md | 31 + .../constructors/updatePendingJoinRequests.md | 31 + docs/API_docs/constructors/updatePhoneCall.md | 29 + .../updatePhoneCallSignalingData.md | 30 + .../updatePinnedChannelMessages.md | 33 + .../constructors/updatePinnedDialogs.md | 30 + .../constructors/updatePinnedMessages.md | 33 + .../constructors/updatePinnedSavedDialogs.md | 29 + docs/API_docs/constructors/updatePrivacy.md | 30 + .../API_docs/constructors/updatePtsChanged.md | 24 + .../constructors/updateQuickReplies.md | 27 + .../constructors/updateQuickReplyMessage.md | 27 + .../updateReadChannelDiscussionInbox.md | 33 + .../updateReadChannelDiscussionOutbox.md | 31 + .../constructors/updateReadChannelInbox.md | 33 + .../constructors/updateReadChannelOutbox.md | 30 + .../updateReadFeaturedEmojiStickers.md | 24 + .../updateReadFeaturedStickers.md | 24 + .../constructors/updateReadHistoryInbox.md | 34 + .../constructors/updateReadHistoryOutbox.md | 32 + .../updateReadMessagesContents.md | 32 + .../constructors/updateReadStories.md | 30 + .../constructors/updateRecentEmojiStatuses.md | 24 + .../constructors/updateRecentReactions.md | 24 + .../constructors/updateRecentStickers.md | 24 + .../constructors/updateSavedDialogPinned.md | 30 + docs/API_docs/constructors/updateSavedGifs.md | 24 + .../constructors/updateSavedReactionTags.md | 22 + .../constructors/updateSavedRingtones.md | 24 + .../constructors/updateSentStoryReaction.md | 31 + .../constructors/updateServiceNotification.md | 98 + docs/API_docs/constructors/updateShort.md | 30 + .../constructors/updateShortChatMessage.md | 105 + .../constructors/updateShortMessage.md | 104 + .../constructors/updateShortSentMessage.md | 97 + docs/API_docs/constructors/updateSmsJob.md | 27 + .../constructors/updateStickerSets.md | 30 + .../constructors/updateStickerSetsOrder.md | 31 + .../constructors/updateStoriesStealthMode.md | 29 + docs/API_docs/constructors/updateStory.md | 30 + docs/API_docs/constructors/updateStoryID.md | 31 + docs/API_docs/constructors/updateTheme.md | 29 + .../constructors/updateTranscribedAudio.md | 33 + docs/API_docs/constructors/updateUser.md | 29 + .../constructors/updateUserEmojiStatus.md | 30 + docs/API_docs/constructors/updateUserName.md | 32 + docs/API_docs/constructors/updateUserPhone.md | 30 + .../API_docs/constructors/updateUserStatus.md | 30 + .../API_docs/constructors/updateUserTyping.md | 30 + docs/API_docs/constructors/updateWebPage.md | 31 + .../constructors/updateWebViewResultSent.md | 29 + .../constructors/updates.channelDifference.md | 36 + .../updates.channelDifferenceEmpty.md | 32 + .../updates.channelDifferenceTooLong.md | 50 + .../constructors/updates.difference.md | 35 + .../constructors/updates.differenceEmpty.md | 31 + .../constructors/updates.differenceSlice.md | 35 + .../constructors/updates.differenceTooLong.md | 30 + docs/API_docs/constructors/updates.md | 33 + docs/API_docs/constructors/updates.state.md | 34 + docs/API_docs/constructors/updatesCombined.md | 34 + docs/API_docs/constructors/updatesTooLong.md | 24 + docs/API_docs/constructors/upload.cdnFile.md | 30 + .../upload.cdnFileReuploadNeeded.md | 30 + docs/API_docs/constructors/upload.file.md | 32 + .../constructors/upload.fileCdnRedirect.md | 34 + docs/API_docs/constructors/upload.webFile.md | 34 + .../constructors/urlAuthResultAccepted.md | 29 + .../constructors/urlAuthResultDefault.md | 24 + .../constructors/urlAuthResultRequest.md | 31 + docs/API_docs/constructors/user.md | 69 + docs/API_docs/constructors/userEmpty.md | 29 + docs/API_docs/constructors/userFull.md | 69 + .../API_docs/constructors/userProfilePhoto.md | 33 + .../constructors/userProfilePhotoEmpty.md | 24 + docs/API_docs/constructors/userStatusEmpty.md | 24 + .../constructors/userStatusLastMonth.md | 29 + .../constructors/userStatusLastWeek.md | 29 + .../constructors/userStatusOffline.md | 29 + .../API_docs/constructors/userStatusOnline.md | 29 + .../constructors/userStatusRecently.md | 29 + docs/API_docs/constructors/username.md | 31 + docs/API_docs/constructors/users.userFull.md | 32 + docs/API_docs/constructors/videoSize.md | 33 + .../constructors/videoSizeEmojiMarkup.md | 30 + .../constructors/videoSizeStickerMarkup.md | 31 + docs/API_docs/constructors/wallPaper.md | 37 + docs/API_docs/constructors/wallPaperNoFile.md | 32 + .../constructors/wallPaperSettings.md | 37 + .../API_docs/constructors/webAuthorization.md | 37 + docs/API_docs/constructors/webDocument.md | 33 + .../constructors/webDocumentNoProxy.md | 32 + docs/API_docs/constructors/webPage.md | 47 + .../webPageAttributeStickerSet.md | 29 + .../constructors/webPageAttributeStory.md | 31 + .../constructors/webPageAttributeTheme.md | 30 + docs/API_docs/constructors/webPageEmpty.md | 30 + .../constructors/webPageNotModified.md | 29 + docs/API_docs/constructors/webPagePending.md | 31 + .../constructors/webViewMessageSent.md | 29 + .../API_docs/constructors/webViewResultUrl.md | 30 + docs/API_docs/index.md | 17 + .../methods/account.acceptAuthorization.md | 46 + .../methods/account.cancelPasswordEmail.md | 37 + .../account.changeAuthorizationSettings.md | 45 + docs/API_docs/methods/account.changePhone.md | 44 + .../API_docs/methods/account.checkUsername.md | 42 + .../account.clearRecentEmojiStatuses.md | 37 + .../methods/account.confirmPasswordEmail.md | 42 + docs/API_docs/methods/account.confirmPhone.md | 43 + .../methods/account.createBusinessChatLink.md | 40 + docs/API_docs/methods/account.createTheme.md | 45 + .../methods/account.declinePasswordReset.md | 37 + .../API_docs/methods/account.deleteAccount.md | 45 + .../account.deleteAutoSaveExceptions.md | 37 + .../methods/account.deleteBusinessChatLink.md | 40 + .../methods/account.deleteSecureValue.md | 42 + .../account.disablePeerConnectedBot.md | 40 + .../methods/account.editBusinessChatLink.md | 41 + .../methods/account.finishTakeoutSession.md | 42 + .../API_docs/methods/account.getAccountTTL.md | 37 + .../methods/account.getAllSecureValues.md | 37 + .../methods/account.getAuthorizationForm.md | 44 + .../methods/account.getAuthorizations.md | 37 + .../account.getAutoDownloadSettings.md | 37 + .../methods/account.getAutoSaveSettings.md | 37 + .../account.getBotBusinessConnection.md | 40 + .../methods/account.getBusinessChatLinks.md | 35 + .../account.getChannelDefaultEmojiStatuses.md | 42 + ...ccount.getChannelRestrictedStatusEmojis.md | 42 + .../API_docs/methods/account.getChatThemes.md | 42 + .../methods/account.getConnectedBots.md | 35 + .../account.getContactSignUpNotification.md | 37 + .../methods/account.getContentSettings.md | 37 + .../account.getDefaultBackgroundEmojis.md | 42 + .../account.getDefaultEmojiStatuses.md | 42 + .../account.getDefaultGroupPhotoEmojis.md | 42 + .../account.getDefaultProfilePhotoEmojis.md | 42 + .../account.getGlobalPrivacySettings.md | 37 + .../methods/account.getMultiWallPapers.md | 42 + .../methods/account.getNotifyExceptions.md | 44 + .../methods/account.getNotifySettings.md | 42 + docs/API_docs/methods/account.getPassword.md | 37 + .../methods/account.getPasswordSettings.md | 42 + docs/API_docs/methods/account.getPrivacy.md | 42 + .../account.getReactionsNotifySettings.md | 35 + .../methods/account.getRecentEmojiStatuses.md | 42 + .../methods/account.getSavedRingtones.md | 42 + .../methods/account.getSecureValue.md | 42 + docs/API_docs/methods/account.getTheme.md | 43 + docs/API_docs/methods/account.getThemes.md | 43 + .../methods/account.getTmpPassword.md | 43 + docs/API_docs/methods/account.getWallPaper.md | 42 + .../API_docs/methods/account.getWallPapers.md | 42 + .../methods/account.getWebAuthorizations.md | 37 + .../methods/account.initTakeoutSession.md | 48 + docs/API_docs/methods/account.installTheme.md | 45 + .../methods/account.installWallPaper.md | 43 + .../methods/account.invalidateSignInCodes.md | 42 + .../methods/account.registerDevice.md | 47 + .../methods/account.reorderUsernames.md | 42 + docs/API_docs/methods/account.reportPeer.md | 50 + .../methods/account.reportProfilePhoto.md | 51 + .../methods/account.resendPasswordEmail.md | 37 + .../methods/account.resetAuthorization.md | 42 + .../methods/account.resetNotifySettings.md | 37 + .../API_docs/methods/account.resetPassword.md | 37 + .../methods/account.resetWallPapers.md | 37 + .../methods/account.resetWebAuthorization.md | 42 + .../methods/account.resetWebAuthorizations.md | 37 + .../account.resolveBusinessChatLink.md | 40 + .../account.saveAutoDownloadSettings.md | 44 + .../methods/account.saveAutoSaveSettings.md | 46 + docs/API_docs/methods/account.saveRingtone.md | 46 + .../methods/account.saveSecureValue.md | 43 + docs/API_docs/methods/account.saveTheme.md | 43 + .../API_docs/methods/account.saveWallPaper.md | 44 + .../methods/account.sendChangePhoneCode.md | 43 + .../methods/account.sendConfirmPhoneCode.md | 43 + .../methods/account.sendVerifyEmailCode.md | 43 + .../methods/account.sendVerifyPhoneCode.md | 43 + .../API_docs/methods/account.setAccountTTL.md | 42 + .../methods/account.setAuthorizationTTL.md | 42 + .../account.setContactSignUpNotification.md | 42 + .../methods/account.setContentSettings.md | 42 + .../account.setGlobalPrivacySettings.md | 42 + docs/API_docs/methods/account.setPrivacy.md | 43 + .../account.setReactionsNotifySettings.md | 40 + .../account.toggleConnectedBotPaused.md | 41 + .../account.toggleSponsoredMessages.md | 40 + .../methods/account.toggleUsername.md | 43 + .../methods/account.unregisterDevice.md | 44 + .../methods/account.updateBirthday.md | 40 + .../account.updateBusinessAwayMessage.md | 46 + .../account.updateBusinessGreetingMessage.md | 46 + .../methods/account.updateBusinessIntro.md | 40 + .../methods/account.updateBusinessLocation.md | 41 + .../account.updateBusinessWorkHours.md | 40 + docs/API_docs/methods/account.updateColor.md | 44 + .../methods/account.updateConnectedBot.md | 43 + .../methods/account.updateDeviceLocked.md | 42 + .../methods/account.updateEmojiStatus.md | 42 + .../methods/account.updateNotifySettings.md | 43 + .../methods/account.updatePasswordSettings.md | 43 + .../methods/account.updatePersonalChannel.md | 40 + .../API_docs/methods/account.updateProfile.md | 44 + docs/API_docs/methods/account.updateStatus.md | 42 + docs/API_docs/methods/account.updateTheme.md | 47 + .../methods/account.updateUsername.md | 42 + .../methods/account.uploadRingtone.md | 44 + docs/API_docs/methods/account.uploadTheme.md | 45 + .../methods/account.uploadWallPaper.md | 45 + docs/API_docs/methods/account.verifyEmail.md | 43 + docs/API_docs/methods/account.verifyPhone.md | 44 + docs/API_docs/methods/api_index.md | 2542 +++++++++++ .../API_docs/methods/auth.acceptLoginToken.md | 46 + docs/API_docs/methods/auth.bindTempAuthKey.md | 45 + docs/API_docs/methods/auth.cancelCode.md | 43 + docs/API_docs/methods/auth.checkPassword.md | 42 + .../methods/auth.checkRecoveryPassword.md | 42 + .../API_docs/methods/auth.dropTempAuthKeys.md | 42 + .../methods/auth.exportAuthorization.md | 42 + .../API_docs/methods/auth.exportLoginToken.md | 47 + .../methods/auth.importAuthorization.md | 43 + .../methods/auth.importBotAuthorization.md | 44 + .../API_docs/methods/auth.importLoginToken.md | 44 + .../auth.importWebTokenAuthorization.md | 44 + docs/API_docs/methods/auth.logOut.md | 37 + docs/API_docs/methods/auth.recoverPassword.md | 43 + .../methods/auth.reportMissingCode.md | 42 + .../methods/auth.requestFirebaseSms.md | 45 + .../methods/auth.requestPasswordRecovery.md | 37 + docs/API_docs/methods/auth.resendCode.md | 43 + .../methods/auth.resetAuthorizations.md | 39 + docs/API_docs/methods/auth.resetLoginEmail.md | 43 + docs/API_docs/methods/auth.sendCode.md | 45 + docs/API_docs/methods/auth.signIn.md | 45 + docs/API_docs/methods/auth.signUp.md | 46 + .../API_docs/methods/bots.allowSendMessage.md | 42 + .../methods/bots.answerWebhookJSONQuery.md | 43 + docs/API_docs/methods/bots.canSendMessage.md | 42 + docs/API_docs/methods/bots.getBotCommands.md | 43 + docs/API_docs/methods/bots.getBotInfo.md | 43 + .../API_docs/methods/bots.getBotMenuButton.md | 42 + .../methods/bots.invokeWebViewCustomMethod.md | 46 + .../API_docs/methods/bots.reorderUsernames.md | 43 + .../API_docs/methods/bots.resetBotCommands.md | 43 + .../methods/bots.sendCustomRequest.md | 43 + .../bots.setBotBroadcastDefaultAdminRights.md | 42 + docs/API_docs/methods/bots.setBotCommands.md | 44 + .../bots.setBotGroupDefaultAdminRights.md | 42 + docs/API_docs/methods/bots.setBotInfo.md | 46 + .../API_docs/methods/bots.setBotMenuButton.md | 43 + docs/API_docs/methods/bots.toggleUsername.md | 44 + .../methods/channels.checkUsername.md | 43 + .../methods/channels.clickSponsoredMessage.md | 46 + .../methods/channels.convertToGigagroup.md | 42 + .../methods/channels.createChannel.md | 50 + .../methods/channels.createForumTopic.md | 46 + .../channels.deactivateAllUsernames.md | 42 + .../methods/channels.deleteChannel.md | 42 + .../methods/channels.deleteHistory.md | 44 + .../methods/channels.deleteMessages.md | 43 + .../channels.deleteParticipantHistory.md | 43 + .../methods/channels.deleteTopicHistory.md | 43 + docs/API_docs/methods/channels.editAdmin.md | 45 + docs/API_docs/methods/channels.editBanned.md | 44 + docs/API_docs/methods/channels.editCreator.md | 44 + .../methods/channels.editForumTopic.md | 47 + .../API_docs/methods/channels.editLocation.md | 44 + docs/API_docs/methods/channels.editPhoto.md | 43 + docs/API_docs/methods/channels.editTitle.md | 43 + .../methods/channels.exportMessageLink.md | 45 + docs/API_docs/methods/channels.getAdminLog.md | 48 + .../channels.getAdminedPublicChannels.md | 44 + .../channels.getChannelRecommendations.md | 42 + docs/API_docs/methods/channels.getChannels.md | 42 + .../methods/channels.getForumTopics.md | 47 + .../methods/channels.getForumTopicsByID.md | 43 + .../methods/channels.getFullChannel.md | 42 + .../channels.getGroupsForDiscussion.md | 40 + .../methods/channels.getInactiveChannels.md | 37 + .../methods/channels.getLeftChannels.md | 42 + docs/API_docs/methods/channels.getMessages.md | 52 + .../methods/channels.getParticipant.md | 43 + .../methods/channels.getParticipants.md | 46 + docs/API_docs/methods/channels.getSendAs.md | 42 + .../methods/channels.getSponsoredMessages.md | 42 + .../methods/channels.inviteToChannel.md | 45 + docs/API_docs/methods/channels.joinChannel.md | 42 + .../API_docs/methods/channels.leaveChannel.md | 42 + docs/API_docs/methods/channels.readHistory.md | 43 + .../methods/channels.readMessageContents.md | 43 + .../channels.reorderPinnedForumTopics.md | 44 + .../methods/channels.reorderUsernames.md | 43 + .../channels.reportAntiSpamFalsePositive.md | 43 + docs/API_docs/methods/channels.reportSpam.md | 44 + .../channels.reportSponsoredMessage.md | 41 + .../channels.restrictSponsoredMessages.md | 41 + ...channels.setBoostsToUnblockRestrictions.md | 41 + .../methods/channels.setDiscussionGroup.md | 43 + .../methods/channels.setEmojiStickers.md | 41 + docs/API_docs/methods/channels.setStickers.md | 43 + .../methods/channels.toggleAntiSpam.md | 43 + docs/API_docs/methods/channels.toggleForum.md | 43 + .../methods/channels.toggleJoinRequest.md | 43 + .../methods/channels.toggleJoinToSend.md | 43 + .../channels.toggleParticipantsHidden.md | 45 + .../channels.togglePreHistoryHidden.md | 43 + .../methods/channels.toggleSignatures.md | 43 + .../methods/channels.toggleSlowMode.md | 43 + .../methods/channels.toggleUsername.md | 44 + .../channels.toggleViewForumAsMessages.md | 45 + docs/API_docs/methods/channels.updateColor.md | 45 + .../methods/channels.updateEmojiStatus.md | 43 + .../channels.updatePinnedForumTopic.md | 44 + .../methods/channels.updateUsername.md | 43 + .../methods/channels.viewSponsoredMessage.md | 42 + .../methods/chatlists.checkChatlistInvite.md | 42 + .../methods/chatlists.deleteExportedInvite.md | 43 + .../methods/chatlists.editExportedInvite.md | 45 + .../methods/chatlists.exportChatlistInvite.md | 44 + .../methods/chatlists.getChatlistUpdates.md | 42 + .../methods/chatlists.getExportedInvites.md | 42 + .../chatlists.getLeaveChatlistSuggestions.md | 42 + .../methods/chatlists.hideChatlistUpdates.md | 42 + .../methods/chatlists.joinChatlistInvite.md | 43 + .../methods/chatlists.joinChatlistUpdates.md | 43 + .../methods/chatlists.leaveChatlist.md | 43 + .../methods/contacts.acceptContact.md | 42 + docs/API_docs/methods/contacts.addContact.md | 48 + docs/API_docs/methods/contacts.block.md | 43 + .../methods/contacts.blockFromReplies.md | 45 + .../methods/contacts.deleteByPhones.md | 42 + .../methods/contacts.deleteContacts.md | 42 + .../methods/contacts.editCloseFriends.md | 42 + .../methods/contacts.exportContactToken.md | 37 + .../API_docs/methods/contacts.getBirthdays.md | 35 + docs/API_docs/methods/contacts.getBlocked.md | 44 + .../methods/contacts.getContactIDs.md | 43 + docs/API_docs/methods/contacts.getContacts.md | 42 + docs/API_docs/methods/contacts.getLocated.md | 44 + docs/API_docs/methods/contacts.getSaved.md | 37 + docs/API_docs/methods/contacts.getStatuses.md | 37 + docs/API_docs/methods/contacts.getTopPeers.md | 52 + .../methods/contacts.importContactToken.md | 42 + .../methods/contacts.importContacts.md | 44 + docs/API_docs/methods/contacts.resetSaved.md | 37 + .../methods/contacts.resetTopPeerRating.md | 43 + .../API_docs/methods/contacts.resolvePhone.md | 42 + .../methods/contacts.resolveUsername.md | 42 + docs/API_docs/methods/contacts.search.md | 43 + docs/API_docs/methods/contacts.setBlocked.md | 44 + .../methods/contacts.toggleTopPeers.md | 42 + docs/API_docs/methods/contacts.unblock.md | 43 + .../methods/folders.editPeerFolders.md | 42 + .../methods/fragment.getCollectibleInfo.md | 40 + .../methods/help.acceptTermsOfService.md | 42 + .../methods/help.dismissSuggestion.md | 43 + docs/API_docs/methods/help.editUserInfo.md | 111 + docs/API_docs/methods/help.getAppConfig.md | 42 + docs/API_docs/methods/help.getAppUpdate.md | 42 + docs/API_docs/methods/help.getCdnConfig.md | 37 + docs/API_docs/methods/help.getConfig.md | 37 + .../API_docs/methods/help.getCountriesList.md | 43 + docs/API_docs/methods/help.getDeepLinkInfo.md | 42 + docs/API_docs/methods/help.getInviteText.md | 37 + docs/API_docs/methods/help.getNearestDc.md | 37 + .../methods/help.getPassportConfig.md | 42 + docs/API_docs/methods/help.getPeerColors.md | 42 + .../methods/help.getPeerProfileColors.md | 42 + docs/API_docs/methods/help.getPremiumPromo.md | 37 + docs/API_docs/methods/help.getPromoData.md | 37 + docs/API_docs/methods/help.getRecentMeUrls.md | 45 + docs/API_docs/methods/help.getSupport.md | 37 + docs/API_docs/methods/help.getSupportName.md | 37 + .../methods/help.getTermsOfServiceUpdate.md | 37 + .../API_docs/methods/help.getTimezonesList.md | 40 + docs/API_docs/methods/help.getUserInfo.md | 42 + docs/API_docs/methods/help.hidePromoData.md | 42 + docs/API_docs/methods/help.saveAppLog.md | 42 + .../methods/help.setBotUpdatesStatus.md | 49 + docs/API_docs/methods/index.md | 1689 +++++++ docs/API_docs/methods/initConnection.md | 50 + docs/API_docs/methods/invokeAfterMsg.md | 42 + docs/API_docs/methods/invokeAfterMsgs.md | 42 + .../methods/invokeWithBusinessConnection.md | 40 + docs/API_docs/methods/invokeWithLayer.md | 42 + .../methods/invokeWithMessagesRange.md | 42 + docs/API_docs/methods/invokeWithTakeout.md | 42 + docs/API_docs/methods/invokeWithoutUpdates.md | 41 + .../methods/langpack.getDifference.md | 44 + docs/API_docs/methods/langpack.getLangPack.md | 43 + docs/API_docs/methods/langpack.getLanguage.md | 43 + .../API_docs/methods/langpack.getLanguages.md | 42 + docs/API_docs/methods/langpack.getStrings.md | 44 + .../methods/messages.acceptEncryption.md | 44 + .../methods/messages.acceptUrlAuth.md | 46 + docs/API_docs/methods/messages.addChatUser.md | 46 + .../methods/messages.checkChatInvite.md | 42 + .../methods/messages.checkHistoryImport.md | 42 + .../messages.checkHistoryImportPeer.md | 44 + .../messages.checkQuickReplyShortcut.md | 40 + .../methods/messages.clearAllDrafts.md | 37 + .../methods/messages.clearRecentReactions.md | 37 + .../methods/messages.clearRecentStickers.md | 42 + docs/API_docs/methods/messages.createChat.md | 46 + docs/API_docs/methods/messages.deleteChat.md | 42 + .../methods/messages.deleteChatUser.md | 44 + .../messages.deleteExportedChatInvite.md | 43 + .../methods/messages.deleteHistory.md | 47 + .../methods/messages.deleteMessages.md | 43 + .../messages.deletePhoneCallHistory.md | 42 + .../messages.deleteQuickReplyMessages.md | 41 + .../messages.deleteQuickReplyShortcut.md | 40 + ...ssages.deleteRevokedExportedChatInvites.md | 43 + .../methods/messages.deleteSavedHistory.md | 45 + .../messages.deleteScheduledMessages.md | 43 + .../methods/messages.discardEncryption.md | 43 + .../methods/messages.editChatAbout.md | 43 + .../methods/messages.editChatAdmin.md | 44 + .../messages.editChatDefaultBannedRights.md | 43 + .../methods/messages.editChatPhoto.md | 43 + .../methods/messages.editChatTitle.md | 43 + .../messages.editExportedChatInvite.md | 48 + .../methods/messages.editInlineBotMessage.md | 121 + docs/API_docs/methods/messages.editMessage.md | 124 + .../messages.editQuickReplyShortcut.md | 41 + .../methods/messages.exportChatInvite.md | 47 + docs/API_docs/methods/messages.faveSticker.md | 43 + .../methods/messages.forwardMessages.md | 54 + .../methods/messages.getAdminsWithInvites.md | 42 + .../API_docs/methods/messages.getAllDrafts.md | 38 + .../methods/messages.getAllStickers.md | 42 + .../methods/messages.getArchivedStickers.md | 45 + .../methods/messages.getAttachMenuBot.md | 42 + .../methods/messages.getAttachMenuBots.md | 42 + .../methods/messages.getAttachedStickers.md | 42 + .../methods/messages.getAvailableReactions.md | 42 + docs/API_docs/methods/messages.getBotApp.md | 43 + .../methods/messages.getBotCallbackAnswer.md | 46 + .../messages.getChatInviteImporters.md | 48 + docs/API_docs/methods/messages.getChats.md | 42 + .../methods/messages.getCommonChats.md | 44 + .../messages.getCustomEmojiDocuments.md | 44 + .../methods/messages.getDefaultHistoryTTL.md | 37 + .../messages.getDefaultTagReactions.md | 40 + docs/API_docs/methods/messages.getDhConfig.md | 43 + .../methods/messages.getDialogFilters.md | 37 + .../methods/messages.getDialogUnreadMarks.md | 37 + docs/API_docs/methods/messages.getDialogs.md | 48 + .../methods/messages.getDiscussionMessage.md | 43 + .../methods/messages.getDocumentByHash.md | 44 + .../methods/messages.getEmojiGroups.md | 42 + .../methods/messages.getEmojiKeywords.md | 42 + .../messages.getEmojiKeywordsDifference.md | 43 + .../messages.getEmojiKeywordsLanguages.md | 44 + .../messages.getEmojiProfilePhotoGroups.md | 42 + .../methods/messages.getEmojiStatusGroups.md | 42 + .../methods/messages.getEmojiStickerGroups.md | 40 + .../methods/messages.getEmojiStickers.md | 42 + docs/API_docs/methods/messages.getEmojiURL.md | 42 + .../methods/messages.getExportedChatInvite.md | 43 + .../messages.getExportedChatInvites.md | 47 + .../methods/messages.getExtendedMedia.md | 43 + .../methods/messages.getFavedStickers.md | 42 + .../messages.getFeaturedEmojiStickers.md | 42 + .../methods/messages.getFeaturedStickers.md | 42 + docs/API_docs/methods/messages.getFullChat.md | 42 + .../methods/messages.getGameHighScores.md | 44 + docs/API_docs/methods/messages.getHistory.md | 58 + .../methods/messages.getInlineBotResults.md | 46 + .../messages.getInlineGameHighScores.md | 43 + .../methods/messages.getMaskStickers.md | 42 + .../methods/messages.getMessageEditData.md | 43 + .../messages.getMessageReactionsList.md | 46 + .../messages.getMessageReadParticipants.md | 43 + docs/API_docs/methods/messages.getMessages.md | 51 + .../methods/messages.getMessagesReactions.md | 43 + .../methods/messages.getMessagesViews.md | 44 + .../methods/messages.getMyStickers.md | 41 + .../messages.getOldFeaturedStickers.md | 44 + docs/API_docs/methods/messages.getOnlines.md | 42 + .../methods/messages.getOutboxReadDate.md | 41 + .../methods/messages.getPeerDialogs.md | 42 + .../methods/messages.getPeerSettings.md | 42 + .../methods/messages.getPinnedDialogs.md | 42 + .../methods/messages.getPinnedSavedDialogs.md | 37 + .../methods/messages.getPollResults.md | 43 + .../API_docs/methods/messages.getPollVotes.md | 46 + .../methods/messages.getQuickReplies.md | 40 + .../methods/messages.getQuickReplyMessages.md | 42 + .../methods/messages.getRecentLocations.md | 44 + .../methods/messages.getRecentReactions.md | 43 + .../methods/messages.getRecentStickers.md | 43 + docs/API_docs/methods/messages.getReplies.md | 50 + .../methods/messages.getSavedDialogs.md | 47 + .../API_docs/methods/messages.getSavedGifs.md | 42 + .../methods/messages.getSavedHistory.md | 49 + .../methods/messages.getSavedReactionTags.md | 41 + .../methods/messages.getScheduledHistory.md | 43 + .../methods/messages.getScheduledMessages.md | 43 + .../methods/messages.getSearchCounters.md | 45 + .../messages.getSearchResultsCalendar.md | 49 + .../messages.getSearchResultsPositions.md | 48 + .../methods/messages.getSplitRanges.md | 37 + .../methods/messages.getStickerSet.md | 43 + docs/API_docs/methods/messages.getStickers.md | 43 + .../messages.getSuggestedDialogFilters.md | 37 + .../methods/messages.getTopReactions.md | 43 + .../methods/messages.getUnreadMentions.md | 48 + .../methods/messages.getUnreadReactions.md | 48 + docs/API_docs/methods/messages.getWebPage.md | 43 + .../methods/messages.getWebPagePreview.md | 110 + .../messages.hideAllChatJoinRequests.md | 44 + .../methods/messages.hideChatJoinRequest.md | 44 + .../methods/messages.hidePeerSettingsBar.md | 42 + .../methods/messages.importChatInvite.md | 42 + .../methods/messages.initHistoryImport.md | 44 + .../methods/messages.installStickerSet.md | 43 + .../methods/messages.markDialogUnread.md | 43 + docs/API_docs/methods/messages.migrateChat.md | 42 + .../methods/messages.prolongWebView.md | 49 + .../methods/messages.rateTranscribedAudio.md | 45 + .../methods/messages.readDiscussion.md | 44 + .../methods/messages.readEncryptedHistory.md | 43 + .../methods/messages.readFeaturedStickers.md | 42 + docs/API_docs/methods/messages.readHistory.md | 43 + .../API_docs/methods/messages.readMentions.md | 43 + .../methods/messages.readMessageContents.md | 42 + .../methods/messages.readReactions.md | 43 + .../methods/messages.receivedMessages.md | 42 + .../methods/messages.receivedQueue.md | 42 + .../methods/messages.reorderPinnedDialogs.md | 44 + .../messages.reorderPinnedSavedDialogs.md | 43 + .../methods/messages.reorderQuickReplies.md | 40 + .../methods/messages.reorderStickerSets.md | 44 + docs/API_docs/methods/messages.report.md | 51 + .../methods/messages.reportEncryptedSpam.md | 42 + .../methods/messages.reportReaction.md | 44 + docs/API_docs/methods/messages.reportSpam.md | 42 + .../methods/messages.requestAppWebView.md | 49 + .../methods/messages.requestEncryption.md | 43 + .../methods/messages.requestSimpleWebView.md | 48 + .../methods/messages.requestUrlAuth.md | 45 + .../methods/messages.requestWebView.md | 53 + .../methods/messages.saveDefaultSendAs.md | 43 + docs/API_docs/methods/messages.saveDraft.md | 115 + docs/API_docs/methods/messages.saveGif.md | 43 + .../methods/messages.saveRecentSticker.md | 44 + docs/API_docs/methods/messages.search.md | 56 + .../methods/messages.searchCustomEmoji.md | 43 + .../messages.searchEmojiStickerSets.md | 44 + .../API_docs/methods/messages.searchGlobal.md | 51 + .../methods/messages.searchSentMedia.md | 45 + .../methods/messages.searchStickerSets.md | 44 + .../methods/messages.sendBotRequestedPeer.md | 45 + .../methods/messages.sendEncrypted.md | 44 + .../methods/messages.sendEncryptedFile.md | 45 + .../methods/messages.sendEncryptedService.md | 43 + .../methods/messages.sendInlineBotResult.md | 52 + docs/API_docs/methods/messages.sendMedia.md | 129 + docs/API_docs/methods/messages.sendMessage.md | 129 + .../methods/messages.sendMultiMedia.md | 53 + .../messages.sendQuickReplyMessages.md | 42 + .../API_docs/methods/messages.sendReaction.md | 48 + .../methods/messages.sendScheduledMessages.md | 43 + .../messages.sendScreenshotNotification.md | 43 + docs/API_docs/methods/messages.sendVote.md | 46 + .../methods/messages.sendWebViewData.md | 44 + .../messages.sendWebViewResultMessage.md | 43 + .../methods/messages.setBotCallbackAnswer.md | 52 + .../messages.setBotPrecheckoutResults.md | 46 + .../methods/messages.setBotShippingResults.md | 44 + .../messages.setChatAvailableReactions.md | 44 + .../API_docs/methods/messages.setChatTheme.md | 43 + .../methods/messages.setChatWallPaper.md | 47 + .../methods/messages.setDefaultHistoryTTL.md | 42 + .../methods/messages.setDefaultReaction.md | 42 + .../methods/messages.setEncryptedTyping.md | 43 + .../API_docs/methods/messages.setGameScore.md | 47 + .../methods/messages.setHistoryTTL.md | 43 + .../methods/messages.setInlineBotResults.md | 49 + .../methods/messages.setInlineGameScore.md | 46 + docs/API_docs/methods/messages.setTyping.md | 44 + docs/API_docs/methods/messages.startBot.md | 44 + .../methods/messages.startHistoryImport.md | 44 + .../methods/messages.toggleBotInAttachMenu.md | 44 + .../messages.toggleDialogFilterTags.md | 40 + .../methods/messages.toggleDialogPin.md | 43 + .../methods/messages.toggleNoForwards.md | 43 + .../messages.togglePeerTranslations.md | 43 + .../methods/messages.toggleSavedDialogPin.md | 43 + .../methods/messages.toggleStickerSets.md | 45 + .../methods/messages.transcribeAudio.md | 43 + .../methods/messages.translateText.md | 47 + .../methods/messages.uninstallStickerSet.md | 42 + .../methods/messages.unpinAllMessages.md | 43 + .../methods/messages.updateDialogFilter.md | 43 + .../messages.updateDialogFiltersOrder.md | 42 + .../methods/messages.updatePinnedMessage.md | 46 + .../messages.updateSavedReactionTag.md | 41 + .../methods/messages.uploadEncryptedFile.md | 43 + .../methods/messages.uploadImportedMedia.md | 45 + docs/API_docs/methods/messages.uploadMedia.md | 44 + .../methods/payments.applyGiftCode.md | 42 + .../payments.assignAppStoreTransaction.md | 43 + .../payments.assignPlayMarketTransaction.md | 43 + .../methods/payments.canPurchasePremium.md | 42 + .../methods/payments.checkGiftCode.md | 42 + .../methods/payments.clearSavedInfo.md | 43 + .../methods/payments.exportInvoice.md | 42 + .../methods/payments.getBankCardData.md | 42 + .../methods/payments.getGiveawayInfo.md | 43 + .../methods/payments.getPaymentForm.md | 43 + .../methods/payments.getPaymentReceipt.md | 43 + .../payments.getPremiumGiftCodeOptions.md | 42 + .../API_docs/methods/payments.getSavedInfo.md | 37 + .../methods/payments.launchPrepaidGiveaway.md | 44 + .../methods/payments.sendPaymentForm.md | 47 + .../methods/payments.validateRequestedInfo.md | 44 + docs/API_docs/methods/phone.acceptCall.md | 44 + docs/API_docs/methods/phone.checkGroupCall.md | 44 + docs/API_docs/methods/phone.confirmCall.md | 45 + .../API_docs/methods/phone.createGroupCall.md | 45 + docs/API_docs/methods/phone.discardCall.md | 46 + .../methods/phone.discardGroupCall.md | 42 + .../methods/phone.editGroupCallParticipant.md | 55 + .../methods/phone.editGroupCallTitle.md | 43 + .../methods/phone.exportGroupCallInvite.md | 43 + docs/API_docs/methods/phone.getCallConfig.md | 37 + docs/API_docs/methods/phone.getGroupCall.md | 43 + .../methods/phone.getGroupCallJoinAs.md | 42 + .../phone.getGroupCallStreamChannels.md | 44 + .../phone.getGroupCallStreamRtmpUrl.md | 43 + .../methods/phone.getGroupParticipants.md | 46 + .../methods/phone.inviteToGroupCall.md | 43 + docs/API_docs/methods/phone.joinGroupCall.md | 47 + .../phone.joinGroupCallPresentation.md | 43 + docs/API_docs/methods/phone.leaveGroupCall.md | 43 + .../phone.leaveGroupCallPresentation.md | 42 + docs/API_docs/methods/phone.receivedCall.md | 42 + docs/API_docs/methods/phone.requestCall.md | 45 + docs/API_docs/methods/phone.saveCallDebug.md | 43 + docs/API_docs/methods/phone.saveCallLog.md | 43 + .../phone.saveDefaultGroupCallJoinAs.md | 43 + .../methods/phone.sendSignalingData.md | 43 + docs/API_docs/methods/phone.setCallRating.md | 45 + .../methods/phone.startScheduledGroupCall.md | 42 + .../methods/phone.toggleGroupCallRecord.md | 46 + .../methods/phone.toggleGroupCallSettings.md | 44 + .../phone.toggleGroupCallStartSubscription.md | 43 + docs/API_docs/methods/photos.deletePhotos.md | 42 + docs/API_docs/methods/photos.getUserPhotos.md | 45 + .../methods/photos.updateProfilePhoto.md | 44 + .../photos.uploadContactProfilePhoto.md | 50 + .../methods/photos.uploadProfilePhoto.md | 49 + docs/API_docs/methods/premium.applyBoost.md | 43 + .../API_docs/methods/premium.getBoostsList.md | 45 + .../methods/premium.getBoostsStatus.md | 42 + docs/API_docs/methods/premium.getMyBoosts.md | 37 + .../API_docs/methods/premium.getUserBoosts.md | 43 + docs/API_docs/methods/smsjobs.finishJob.md | 41 + docs/API_docs/methods/smsjobs.getSmsJob.md | 40 + docs/API_docs/methods/smsjobs.getStatus.md | 35 + .../methods/smsjobs.isEligibleToJoin.md | 35 + docs/API_docs/methods/smsjobs.join.md | 35 + docs/API_docs/methods/smsjobs.leave.md | 35 + .../methods/smsjobs.updateSettings.md | 40 + .../methods/stats.getBroadcastRevenueStats.md | 41 + .../stats.getBroadcastRevenueTransactions.md | 42 + .../stats.getBroadcastRevenueWithdrawalUrl.md | 41 + .../methods/stats.getBroadcastStats.md | 43 + .../methods/stats.getMegagroupStats.md | 43 + .../methods/stats.getMessagePublicForwards.md | 46 + .../API_docs/methods/stats.getMessageStats.md | 44 + .../methods/stats.getStoryPublicForwards.md | 45 + docs/API_docs/methods/stats.getStoryStats.md | 44 + docs/API_docs/methods/stats.loadAsyncGraph.md | 43 + .../methods/stickers.addStickerToSet.md | 43 + .../methods/stickers.changeSticker.md | 45 + .../methods/stickers.changeStickerPosition.md | 43 + .../methods/stickers.checkShortName.md | 42 + .../methods/stickers.createStickerSet.md | 50 + .../methods/stickers.deleteStickerSet.md | 42 + .../methods/stickers.removeStickerFromSet.md | 42 + .../methods/stickers.renameStickerSet.md | 43 + .../methods/stickers.replaceSticker.md | 41 + .../methods/stickers.setStickerSetThumb.md | 44 + .../methods/stickers.suggestShortName.md | 42 + .../methods/stories.activateStealthMode.md | 45 + docs/API_docs/methods/stories.canSendStory.md | 42 + .../API_docs/methods/stories.deleteStories.md | 43 + docs/API_docs/methods/stories.editStory.md | 109 + .../methods/stories.exportStoryLink.md | 43 + .../methods/stories.getAllReadPeerStories.md | 37 + .../API_docs/methods/stories.getAllStories.md | 44 + .../methods/stories.getChatsToSend.md | 37 + .../API_docs/methods/stories.getPeerMaxIDs.md | 42 + .../methods/stories.getPeerStories.md | 42 + .../methods/stories.getPinnedStories.md | 44 + .../methods/stories.getStoriesArchive.md | 44 + .../methods/stories.getStoriesByID.md | 43 + .../methods/stories.getStoriesViews.md | 43 + .../methods/stories.getStoryReactionsList.md | 49 + .../methods/stories.getStoryViewsList.md | 49 + .../methods/stories.incrementStoryViews.md | 43 + docs/API_docs/methods/stories.readStories.md | 43 + docs/API_docs/methods/stories.report.md | 51 + docs/API_docs/methods/stories.sendReaction.md | 45 + docs/API_docs/methods/stories.sendStory.md | 114 + .../methods/stories.toggleAllStoriesHidden.md | 42 + .../stories.togglePeerStoriesHidden.md | 43 + docs/API_docs/methods/stories.togglePinned.md | 44 + .../methods/stories.togglePinnedToTop.md | 41 + .../methods/updates.getChannelDifference.md | 50 + .../API_docs/methods/updates.getDifference.md | 51 + docs/API_docs/methods/updates.getState.md | 41 + docs/API_docs/methods/upload.getCdnFile.md | 44 + .../methods/upload.getCdnFileHashes.md | 43 + docs/API_docs/methods/upload.getFile.md | 46 + docs/API_docs/methods/upload.getFileHashes.md | 43 + docs/API_docs/methods/upload.getWebFile.md | 46 + .../methods/upload.reuploadCdnFile.md | 43 + .../methods/upload.saveBigFilePart.md | 45 + docs/API_docs/methods/upload.saveFilePart.md | 44 + docs/API_docs/methods/users.getFullUser.md | 42 + .../users.getIsPremiumRequiredToContact.md | 40 + docs/API_docs/methods/users.getUsers.md | 42 + .../methods/users.setSecureValueErrors.md | 45 + docs/API_docs/types/!X.md | 11 + docs/API_docs/types/AccountDaysTTL.md | 23 + docs/API_docs/types/AppWebViewResult.md | 23 + docs/API_docs/types/AttachMenuBot.md | 21 + docs/API_docs/types/AttachMenuBotIcon.md | 21 + docs/API_docs/types/AttachMenuBotIconColor.md | 21 + docs/API_docs/types/AttachMenuBots.md | 25 + docs/API_docs/types/AttachMenuBotsBot.md | 23 + docs/API_docs/types/AttachMenuPeerType.md | 29 + docs/API_docs/types/Authorization.md | 23 + docs/API_docs/types/AutoDownloadSettings.md | 21 + docs/API_docs/types/AutoSaveException.md | 21 + docs/API_docs/types/AutoSaveSettings.md | 21 + docs/API_docs/types/AvailableReaction.md | 21 + docs/API_docs/types/BankCardOpenUrl.md | 21 + docs/API_docs/types/BaseTheme.md | 29 + docs/API_docs/types/Birthday.md | 21 + docs/API_docs/types/Bool.md | 10 + docs/API_docs/types/Boost.md | 21 + docs/API_docs/types/BotApp.md | 23 + docs/API_docs/types/BotBusinessConnection.md | 21 + docs/API_docs/types/BotCommand.md | 23 + docs/API_docs/types/BotCommandScope.md | 33 + docs/API_docs/types/BotInfo.md | 21 + docs/API_docs/types/BotInlineMessage.md | 33 + docs/API_docs/types/BotInlineResult.md | 23 + docs/API_docs/types/BotMenuButton.md | 27 + .../types/BroadcastRevenueBalances.md | 21 + .../types/BroadcastRevenueTransaction.md | 25 + docs/API_docs/types/BusinessAwayMessage.md | 21 + .../types/BusinessAwayMessageSchedule.md | 25 + docs/API_docs/types/BusinessBotRecipients.md | 21 + docs/API_docs/types/BusinessChatLink.md | 25 + .../API_docs/types/BusinessGreetingMessage.md | 21 + docs/API_docs/types/BusinessIntro.md | 21 + docs/API_docs/types/BusinessLocation.md | 21 + docs/API_docs/types/BusinessRecipients.md | 21 + docs/API_docs/types/BusinessWeeklyOpen.md | 21 + docs/API_docs/types/BusinessWorkHours.md | 21 + docs/API_docs/types/CdnConfig.md | 23 + docs/API_docs/types/CdnPublicKey.md | 21 + docs/API_docs/types/ChannelAdminLogEvent.md | 21 + .../types/ChannelAdminLogEventAction.md | 115 + .../types/ChannelAdminLogEventsFilter.md | 21 + docs/API_docs/types/ChannelLocation.md | 23 + docs/API_docs/types/ChannelMessagesFilter.md | 23 + docs/API_docs/types/ChannelParticipant.md | 31 + .../types/ChannelParticipantsFilter.md | 35 + docs/API_docs/types/Chat.md | 64 + docs/API_docs/types/ChatAdminRights.md | 21 + docs/API_docs/types/ChatAdminWithInvites.md | 21 + docs/API_docs/types/ChatBannedRights.md | 21 + docs/API_docs/types/ChatFull.md | 23 + docs/API_docs/types/ChatInvite.md | 27 + docs/API_docs/types/ChatInviteImporter.md | 21 + docs/API_docs/types/ChatOnlines.md | 23 + docs/API_docs/types/ChatParticipant.md | 25 + docs/API_docs/types/ChatParticipants.md | 23 + docs/API_docs/types/ChatPhoto.md | 23 + docs/API_docs/types/ChatReactions.md | 25 + docs/API_docs/types/CodeSettings.md | 21 + docs/API_docs/types/Config.md | 23 + docs/API_docs/types/ConnectedBot.md | 21 + docs/API_docs/types/Contact.md | 21 + docs/API_docs/types/ContactBirthday.md | 21 + docs/API_docs/types/ContactStatus.md | 23 + docs/API_docs/types/DataJSON.md | 10 + docs/API_docs/types/DcOption.md | 21 + docs/API_docs/types/DecryptedMessage.md | 31 + docs/API_docs/types/DecryptedMessageAction.md | 45 + docs/API_docs/types/DecryptedMessageLayer.md | 21 + docs/API_docs/types/DecryptedMessageMedia.md | 51 + docs/API_docs/types/DefaultHistoryTTL.md | 23 + docs/API_docs/types/Dialog.md | 23 + docs/API_docs/types/DialogFilter.md | 25 + docs/API_docs/types/DialogFilterSuggested.md | 23 + docs/API_docs/types/DialogPeer.md | 25 + docs/API_docs/types/Document.md | 31 + docs/API_docs/types/DocumentAttribute.md | 47 + docs/API_docs/types/DraftMessage.md | 23 + docs/API_docs/types/EmailVerification.md | 25 + docs/API_docs/types/EmailVerifyPurpose.md | 25 + docs/API_docs/types/EmojiGroup.md | 25 + docs/API_docs/types/EmojiKeyword.md | 23 + .../API_docs/types/EmojiKeywordsDifference.md | 25 + docs/API_docs/types/EmojiLanguage.md | 23 + docs/API_docs/types/EmojiList.md | 33 + docs/API_docs/types/EmojiStatus.md | 25 + docs/API_docs/types/EmojiURL.md | 23 + docs/API_docs/types/EncryptedChat.md | 33 + docs/API_docs/types/EncryptedFile.md | 25 + docs/API_docs/types/EncryptedMessage.md | 23 + docs/API_docs/types/Error.md | 21 + docs/API_docs/types/ExportedChatInvite.md | 25 + docs/API_docs/types/ExportedChatlistInvite.md | 23 + docs/API_docs/types/ExportedContactToken.md | 23 + docs/API_docs/types/ExportedMessageLink.md | 23 + docs/API_docs/types/ExportedStoryLink.md | 23 + docs/API_docs/types/FileHash.md | 27 + docs/API_docs/types/FileLocation.md | 23 + docs/API_docs/types/Folder.md | 21 + docs/API_docs/types/FolderPeer.md | 21 + docs/API_docs/types/ForumTopic.md | 23 + docs/API_docs/types/Game.md | 21 + docs/API_docs/types/GeoPoint.md | 23 + docs/API_docs/types/GlobalPrivacySettings.md | 25 + docs/API_docs/types/GroupCall.md | 23 + docs/API_docs/types/GroupCallParticipant.md | 21 + .../types/GroupCallParticipantVideo.md | 21 + .../GroupCallParticipantVideoSourceGroup.md | 21 + docs/API_docs/types/GroupCallStreamChannel.md | 21 + docs/API_docs/types/HighScore.md | 21 + docs/API_docs/types/ImportedContact.md | 21 + docs/API_docs/types/InlineBotSwitchPM.md | 21 + docs/API_docs/types/InlineBotWebView.md | 21 + docs/API_docs/types/InlineQueryPeerType.md | 31 + docs/API_docs/types/InputAppEvent.md | 21 + docs/API_docs/types/InputBotApp.md | 23 + docs/API_docs/types/InputBotInlineMessage.md | 35 + .../API_docs/types/InputBotInlineMessageID.md | 23 + docs/API_docs/types/InputBotInlineResult.md | 27 + .../types/InputBusinessAwayMessage.md | 21 + .../types/InputBusinessBotRecipients.md | 21 + docs/API_docs/types/InputBusinessChatLink.md | 21 + .../types/InputBusinessGreetingMessage.md | 21 + docs/API_docs/types/InputBusinessIntro.md | 21 + .../API_docs/types/InputBusinessRecipients.md | 21 + docs/API_docs/types/InputChannel.md | 60 + docs/API_docs/types/InputChatPhoto.md | 25 + docs/API_docs/types/InputChatlist.md | 21 + docs/API_docs/types/InputCheckPasswordSRP.md | 24 + docs/API_docs/types/InputClientProxy.md | 21 + docs/API_docs/types/InputCollectible.md | 23 + docs/API_docs/types/InputContact.md | 21 + docs/API_docs/types/InputDialogPeer.md | 23 + docs/API_docs/types/InputDocument.md | 24 + docs/API_docs/types/InputEncryptedChat.md | 29 + docs/API_docs/types/InputEncryptedFile.md | 35 + docs/API_docs/types/InputFile.md | 31 + docs/API_docs/types/InputFileLocation.md | 39 + docs/API_docs/types/InputFolderPeer.md | 21 + docs/API_docs/types/InputGame.md | 23 + docs/API_docs/types/InputGeoPoint.md | 23 + docs/API_docs/types/InputGroupCall.md | 21 + docs/API_docs/types/InputInvoice.md | 25 + docs/API_docs/types/InputMedia.md | 54 + docs/API_docs/types/InputMessage.md | 34 + docs/API_docs/types/InputNotifyPeer.md | 29 + .../API_docs/types/InputPaymentCredentials.md | 27 + docs/API_docs/types/InputPeer.md | 68 + .../API_docs/types/InputPeerNotifySettings.md | 21 + docs/API_docs/types/InputPhoneCall.md | 21 + docs/API_docs/types/InputPhoto.md | 24 + docs/API_docs/types/InputPrivacyKey.md | 41 + docs/API_docs/types/InputPrivacyRule.md | 39 + .../API_docs/types/InputQuickReplyShortcut.md | 23 + docs/API_docs/types/InputReplyTo.md | 23 + docs/API_docs/types/InputSecureFile.md | 23 + docs/API_docs/types/InputSecureValue.md | 21 + docs/API_docs/types/InputSingleMedia.md | 21 + docs/API_docs/types/InputStickerSet.md | 41 + docs/API_docs/types/InputStickerSetItem.md | 21 + docs/API_docs/types/InputStickeredMedia.md | 23 + .../types/InputStorePaymentPurpose.md | 27 + docs/API_docs/types/InputTheme.md | 23 + docs/API_docs/types/InputThemeSettings.md | 21 + docs/API_docs/types/InputUser.md | 62 + docs/API_docs/types/InputWallPaper.md | 25 + docs/API_docs/types/InputWebDocument.md | 21 + docs/API_docs/types/InputWebFileLocation.md | 25 + docs/API_docs/types/Invoice.md | 21 + docs/API_docs/types/JSONObjectValue.md | 21 + docs/API_docs/types/JSONValue.md | 31 + docs/API_docs/types/KeyboardButton.md | 74 + docs/API_docs/types/KeyboardButtonRow.md | 21 + docs/API_docs/types/LabeledPrice.md | 21 + docs/API_docs/types/LangPackDifference.md | 25 + docs/API_docs/types/LangPackLanguage.md | 25 + docs/API_docs/types/LangPackString.md | 27 + docs/API_docs/types/MaskCoords.md | 21 + docs/API_docs/types/MediaArea.md | 31 + docs/API_docs/types/MediaAreaCoordinates.md | 21 + docs/API_docs/types/Message.md | 25 + docs/API_docs/types/MessageAction.md | 105 + docs/API_docs/types/MessageEntity.md | 61 + docs/API_docs/types/MessageExtendedMedia.md | 23 + docs/API_docs/types/MessageFwdHeader.md | 21 + docs/API_docs/types/MessageMedia.md | 57 + docs/API_docs/types/MessagePeerReaction.md | 21 + docs/API_docs/types/MessagePeerVote.md | 25 + docs/API_docs/types/MessageRange.md | 23 + docs/API_docs/types/MessageReactions.md | 21 + docs/API_docs/types/MessageReplies.md | 21 + docs/API_docs/types/MessageReplyHeader.md | 23 + docs/API_docs/types/MessageViews.md | 21 + docs/API_docs/types/MessagesFilter.md | 53 + docs/API_docs/types/MissingInvitee.md | 21 + docs/API_docs/types/MyBoost.md | 21 + docs/API_docs/types/NearestDc.md | 23 + docs/API_docs/types/NotificationSound.md | 27 + docs/API_docs/types/NotifyPeer.md | 29 + docs/API_docs/types/Null.md | 21 + docs/API_docs/types/OutboxReadDate.md | 23 + docs/API_docs/types/Page.md | 21 + docs/API_docs/types/PageBlock.md | 77 + docs/API_docs/types/PageCaption.md | 21 + docs/API_docs/types/PageListItem.md | 23 + docs/API_docs/types/PageListOrderedItem.md | 23 + docs/API_docs/types/PageRelatedArticle.md | 21 + docs/API_docs/types/PageTableCell.md | 21 + docs/API_docs/types/PageTableRow.md | 21 + docs/API_docs/types/PasswordKdfAlgo.md | 23 + docs/API_docs/types/PaymentCharge.md | 21 + docs/API_docs/types/PaymentFormMethod.md | 21 + docs/API_docs/types/PaymentRequestedInfo.md | 21 + .../API_docs/types/PaymentSavedCredentials.md | 21 + docs/API_docs/types/Peer.md | 62 + docs/API_docs/types/PeerBlocked.md | 21 + docs/API_docs/types/PeerColor.md | 21 + docs/API_docs/types/PeerLocated.md | 23 + docs/API_docs/types/PeerNotifySettings.md | 23 + docs/API_docs/types/PeerSettings.md | 21 + docs/API_docs/types/PeerStories.md | 21 + docs/API_docs/types/PhoneCall.md | 31 + docs/API_docs/types/PhoneCallDiscardReason.md | 27 + docs/API_docs/types/PhoneCallProtocol.md | 21 + docs/API_docs/types/PhoneConnection.md | 23 + docs/API_docs/types/Photo.md | 23 + docs/API_docs/types/PhotoSize.md | 35 + docs/API_docs/types/Poll.md | 21 + docs/API_docs/types/PollAnswer.md | 21 + docs/API_docs/types/PollAnswerVoters.md | 21 + docs/API_docs/types/PollResults.md | 21 + docs/API_docs/types/PopularContact.md | 21 + docs/API_docs/types/PostAddress.md | 21 + .../API_docs/types/PostInteractionCounters.md | 23 + docs/API_docs/types/PremiumGiftCodeOption.md | 23 + docs/API_docs/types/PremiumGiftOption.md | 21 + .../types/PremiumSubscriptionOption.md | 21 + docs/API_docs/types/PrepaidGiveaway.md | 21 + docs/API_docs/types/PrivacyKey.md | 41 + docs/API_docs/types/PrivacyRule.md | 39 + docs/API_docs/types/PublicForward.md | 23 + docs/API_docs/types/QuickReply.md | 21 + docs/API_docs/types/Reaction.md | 25 + docs/API_docs/types/ReactionCount.md | 21 + .../types/ReactionNotificationsFrom.md | 23 + .../API_docs/types/ReactionsNotifySettings.md | 25 + docs/API_docs/types/ReadParticipantDate.md | 23 + docs/API_docs/types/ReceivedNotifyMessage.md | 23 + docs/API_docs/types/RecentMeUrl.md | 29 + docs/API_docs/types/ReplyMarkup.md | 33 + docs/API_docs/types/ReportReason.md | 39 + docs/API_docs/types/RequestPeerType.md | 25 + docs/API_docs/types/RequestedPeer.md | 25 + docs/API_docs/types/RestrictionReason.md | 21 + docs/API_docs/types/RichText.md | 51 + docs/API_docs/types/SavedContact.md | 23 + docs/API_docs/types/SavedDialog.md | 21 + docs/API_docs/types/SavedReactionTag.md | 21 + .../types/SearchResultsCalendarPeriod.md | 21 + docs/API_docs/types/SearchResultsPosition.md | 21 + .../types/SecureCredentialsEncrypted.md | 21 + docs/API_docs/types/SecureData.md | 21 + docs/API_docs/types/SecureFile.md | 23 + docs/API_docs/types/SecurePasswordKdfAlgo.md | 25 + docs/API_docs/types/SecurePlainData.md | 23 + docs/API_docs/types/SecureRequiredType.md | 23 + docs/API_docs/types/SecureSecretSettings.md | 21 + docs/API_docs/types/SecureValue.md | 27 + docs/API_docs/types/SecureValueError.md | 37 + docs/API_docs/types/SecureValueHash.md | 21 + docs/API_docs/types/SecureValueType.md | 45 + docs/API_docs/types/SendAsPeer.md | 21 + docs/API_docs/types/SendMessageAction.md | 65 + docs/API_docs/types/ShippingOption.md | 21 + docs/API_docs/types/SimpleWebViewResult.md | 23 + docs/API_docs/types/SmsJob.md | 23 + docs/API_docs/types/SponsoredMessage.md | 21 + .../types/SponsoredMessageReportOption.md | 21 + docs/API_docs/types/StatsAbsValueAndPrev.md | 21 + docs/API_docs/types/StatsDateRangeDays.md | 21 + docs/API_docs/types/StatsGraph.md | 27 + docs/API_docs/types/StatsGroupTopAdmin.md | 21 + docs/API_docs/types/StatsGroupTopInviter.md | 21 + docs/API_docs/types/StatsGroupTopPoster.md | 21 + docs/API_docs/types/StatsPercentValue.md | 21 + docs/API_docs/types/StatsURL.md | 21 + docs/API_docs/types/StickerKeyword.md | 21 + docs/API_docs/types/StickerPack.md | 21 + docs/API_docs/types/StickerSet.md | 21 + docs/API_docs/types/StickerSetCovered.md | 29 + docs/API_docs/types/StoriesStealthMode.md | 21 + docs/API_docs/types/StoryFwdHeader.md | 21 + docs/API_docs/types/StoryItem.md | 25 + docs/API_docs/types/StoryReaction.md | 25 + docs/API_docs/types/StoryView.md | 25 + docs/API_docs/types/StoryViews.md | 21 + docs/API_docs/types/TextWithEntities.md | 21 + docs/API_docs/types/Theme.md | 27 + docs/API_docs/types/ThemeSettings.md | 21 + docs/API_docs/types/Timezone.md | 21 + docs/API_docs/types/TopPeer.md | 21 + docs/API_docs/types/TopPeerCategory.md | 35 + docs/API_docs/types/TopPeerCategoryPeers.md | 21 + docs/API_docs/types/True.md | 21 + docs/API_docs/types/Update.md | 289 ++ docs/API_docs/types/Updates.md | 248 + docs/API_docs/types/UrlAuthResult.md | 29 + docs/API_docs/types/User.md | 68 + docs/API_docs/types/UserFull.md | 21 + docs/API_docs/types/UserProfilePhoto.md | 23 + docs/API_docs/types/UserStatus.md | 31 + docs/API_docs/types/Username.md | 21 + docs/API_docs/types/VideoSize.md | 25 + docs/API_docs/types/WallPaper.md | 29 + docs/API_docs/types/WallPaperSettings.md | 21 + docs/API_docs/types/WebAuthorization.md | 21 + docs/API_docs/types/WebDocument.md | 23 + docs/API_docs/types/WebPage.md | 27 + docs/API_docs/types/WebPageAttribute.md | 25 + docs/API_docs/types/WebViewMessageSent.md | 23 + docs/API_docs/types/WebViewResult.md | 23 + docs/API_docs/types/X.md | 35 + .../types/account.AuthorizationForm.md | 24 + docs/API_docs/types/account.Authorizations.md | 24 + .../types/account.AutoDownloadSettings.md | 24 + .../types/account.AutoSaveSettings.md | 24 + .../types/account.BusinessChatLinks.md | 24 + docs/API_docs/types/account.ConnectedBots.md | 24 + .../API_docs/types/account.ContentSettings.md | 24 + docs/API_docs/types/account.EmailVerified.md | 26 + docs/API_docs/types/account.EmojiStatuses.md | 30 + docs/API_docs/types/account.Password.md | 24 + .../types/account.PasswordInputSettings.md | 22 + .../types/account.PasswordSettings.md | 24 + docs/API_docs/types/account.PrivacyRules.md | 26 + .../types/account.ResetPasswordResult.md | 28 + .../account.ResolvedBusinessChatLinks.md | 24 + docs/API_docs/types/account.SavedRingtone.md | 26 + docs/API_docs/types/account.SavedRingtones.md | 26 + docs/API_docs/types/account.SentEmailCode.md | 24 + docs/API_docs/types/account.Takeout.md | 24 + docs/API_docs/types/account.Themes.md | 28 + docs/API_docs/types/account.TmpPassword.md | 24 + docs/API_docs/types/account.WallPapers.md | 26 + .../types/account.WebAuthorizations.md | 24 + docs/API_docs/types/auth.Authorization.md | 38 + docs/API_docs/types/auth.CodeType.md | 30 + .../types/auth.ExportedAuthorization.md | 24 + docs/API_docs/types/auth.LoggedOut.md | 24 + docs/API_docs/types/auth.LoginToken.md | 30 + docs/API_docs/types/auth.PasswordRecovery.md | 24 + docs/API_docs/types/auth.SentCode.md | 36 + docs/API_docs/types/auth.SentCodeType.md | 42 + docs/API_docs/types/bots.BotInfo.md | 24 + docs/API_docs/types/bytes.md | 13 + .../types/channels.AdminLogResults.md | 24 + .../types/channels.ChannelParticipant.md | 24 + .../types/channels.ChannelParticipants.md | 26 + docs/API_docs/types/channels.SendAsPeers.md | 24 + .../channels.SponsoredMessageReportResult.md | 28 + .../types/chatlists.ChatlistInvite.md | 26 + .../types/chatlists.ChatlistUpdates.md | 24 + .../types/chatlists.ExportedChatlistInvite.md | 24 + .../types/chatlists.ExportedInvites.md | 24 + docs/API_docs/types/contacts.Blocked.md | 26 + .../types/contacts.ContactBirthdays.md | 24 + docs/API_docs/types/contacts.Contacts.md | 26 + docs/API_docs/types/contacts.Found.md | 24 + .../types/contacts.ImportedContacts.md | 24 + docs/API_docs/types/contacts.ResolvedPeer.md | 26 + docs/API_docs/types/contacts.TopPeers.md | 28 + docs/API_docs/types/double.md | 10 + .../types/fragment.CollectibleInfo.md | 24 + docs/API_docs/types/help.AppConfig.md | 26 + docs/API_docs/types/help.AppUpdate.md | 26 + docs/API_docs/types/help.CountriesList.md | 26 + docs/API_docs/types/help.Country.md | 22 + docs/API_docs/types/help.CountryCode.md | 22 + docs/API_docs/types/help.DeepLinkInfo.md | 26 + docs/API_docs/types/help.InviteText.md | 24 + docs/API_docs/types/help.PassportConfig.md | 26 + docs/API_docs/types/help.PeerColorOption.md | 22 + docs/API_docs/types/help.PeerColorSet.md | 24 + docs/API_docs/types/help.PeerColors.md | 28 + docs/API_docs/types/help.PremiumPromo.md | 24 + docs/API_docs/types/help.PromoData.md | 26 + docs/API_docs/types/help.RecentMeUrls.md | 24 + docs/API_docs/types/help.Support.md | 24 + docs/API_docs/types/help.SupportName.md | 24 + docs/API_docs/types/help.TermsOfService.md | 22 + .../types/help.TermsOfServiceUpdate.md | 26 + docs/API_docs/types/help.TimezonesList.md | 26 + docs/API_docs/types/help.UserInfo.md | 28 + docs/API_docs/types/index.md | 999 +++++ docs/API_docs/types/int.md | 10 + docs/API_docs/types/int128.md | 10 + docs/API_docs/types/int256.md | 10 + docs/API_docs/types/int512.md | 10 + docs/API_docs/types/int53.md | 10 + docs/API_docs/types/long.md | 10 + .../types/messages.AffectedFoundMessages.md | 24 + .../types/messages.AffectedHistory.md | 36 + .../types/messages.AffectedMessages.md | 30 + docs/API_docs/types/messages.AllStickers.md | 30 + .../types/messages.ArchivedStickers.md | 24 + .../types/messages.AvailableReactions.md | 26 + docs/API_docs/types/messages.BotApp.md | 24 + .../types/messages.BotCallbackAnswer.md | 24 + docs/API_docs/types/messages.BotResults.md | 24 + .../types/messages.ChatAdminsWithInvites.md | 24 + docs/API_docs/types/messages.ChatFull.md | 26 + .../types/messages.ChatInviteImporters.md | 24 + docs/API_docs/types/messages.Chats.md | 40 + .../messages.CheckedHistoryImportPeer.md | 24 + docs/API_docs/types/messages.DhConfig.md | 26 + docs/API_docs/types/messages.DialogFilters.md | 24 + docs/API_docs/types/messages.Dialogs.md | 28 + .../types/messages.DiscussionMessage.md | 24 + docs/API_docs/types/messages.EmojiGroups.md | 32 + .../types/messages.ExportedChatInvite.md | 28 + .../types/messages.ExportedChatInvites.md | 24 + docs/API_docs/types/messages.FavedStickers.md | 26 + .../types/messages.FeaturedStickers.md | 30 + docs/API_docs/types/messages.ForumTopics.md | 26 + .../types/messages.FoundStickerSets.md | 28 + docs/API_docs/types/messages.HighScores.md | 26 + docs/API_docs/types/messages.HistoryImport.md | 24 + .../types/messages.HistoryImportParsed.md | 24 + docs/API_docs/types/messages.InactiveChats.md | 24 + docs/API_docs/types/messages.InvitedUsers.md | 28 + .../types/messages.MessageEditData.md | 24 + .../types/messages.MessageReactionsList.md | 24 + docs/API_docs/types/messages.MessageViews.md | 24 + docs/API_docs/types/messages.Messages.md | 56 + docs/API_docs/types/messages.MyStickers.md | 24 + docs/API_docs/types/messages.PeerDialogs.md | 26 + docs/API_docs/types/messages.PeerSettings.md | 24 + docs/API_docs/types/messages.QuickReplies.md | 26 + docs/API_docs/types/messages.Reactions.md | 30 + .../API_docs/types/messages.RecentStickers.md | 26 + docs/API_docs/types/messages.SavedDialogs.md | 30 + docs/API_docs/types/messages.SavedGifs.md | 26 + .../types/messages.SavedReactionTags.md | 26 + docs/API_docs/types/messages.SearchCounter.md | 24 + .../types/messages.SearchResultsCalendar.md | 24 + .../types/messages.SearchResultsPositions.md | 24 + .../types/messages.SentEncryptedMessage.md | 30 + .../types/messages.SponsoredMessages.md | 26 + docs/API_docs/types/messages.StickerSet.md | 42 + .../types/messages.StickerSetInstallResult.md | 26 + docs/API_docs/types/messages.Stickers.md | 26 + .../types/messages.TranscribedAudio.md | 24 + .../API_docs/types/messages.TranslatedText.md | 24 + docs/API_docs/types/messages.VotesList.md | 24 + docs/API_docs/types/messages.WebPage.md | 24 + docs/API_docs/types/payments.BankCardData.md | 24 + .../types/payments.CheckedGiftCode.md | 24 + .../types/payments.ExportedInvoice.md | 24 + docs/API_docs/types/payments.GiveawayInfo.md | 26 + docs/API_docs/types/payments.PaymentForm.md | 24 + .../API_docs/types/payments.PaymentReceipt.md | 24 + docs/API_docs/types/payments.PaymentResult.md | 26 + docs/API_docs/types/payments.SavedInfo.md | 24 + .../types/payments.ValidatedRequestedInfo.md | 24 + .../types/phone.ExportedGroupCallInvite.md | 24 + docs/API_docs/types/phone.GroupCall.md | 24 + .../types/phone.GroupCallStreamChannels.md | 24 + .../types/phone.GroupCallStreamRtmpUrl.md | 24 + .../API_docs/types/phone.GroupParticipants.md | 24 + docs/API_docs/types/phone.JoinAsPeers.md | 24 + docs/API_docs/types/phone.PhoneCall.md | 28 + docs/API_docs/types/photos.Photo.md | 28 + docs/API_docs/types/photos.Photos.md | 26 + docs/API_docs/types/premium.BoostsList.md | 26 + docs/API_docs/types/premium.BoostsStatus.md | 24 + docs/API_docs/types/premium.MyBoosts.md | 26 + .../types/smsjobs.EligibilityToJoin.md | 24 + docs/API_docs/types/smsjobs.Status.md | 24 + .../types/stats.BroadcastRevenueStats.md | 24 + .../stats.BroadcastRevenueTransactions.md | 24 + .../stats.BroadcastRevenueWithdrawalUrl.md | 24 + docs/API_docs/types/stats.BroadcastStats.md | 24 + docs/API_docs/types/stats.MegagroupStats.md | 24 + docs/API_docs/types/stats.MessageStats.md | 24 + docs/API_docs/types/stats.PublicForwards.md | 26 + docs/API_docs/types/stats.StoryStats.md | 24 + .../types/stickers.SuggestedShortName.md | 24 + docs/API_docs/types/storage.FileType.md | 40 + docs/API_docs/types/stories.AllStories.md | 26 + docs/API_docs/types/stories.PeerStories.md | 24 + docs/API_docs/types/stories.Stories.md | 28 + .../types/stories.StoryReactionsList.md | 24 + docs/API_docs/types/stories.StoryViews.md | 24 + docs/API_docs/types/stories.StoryViewsList.md | 24 + docs/API_docs/types/string.md | 10 + .../types/updates.ChannelDifference.md | 28 + docs/API_docs/types/updates.Difference.md | 30 + docs/API_docs/types/updates.State.md | 24 + docs/API_docs/types/upload.CdnFile.md | 26 + docs/API_docs/types/upload.File.md | 26 + docs/API_docs/types/upload.WebFile.md | 24 + docs/API_docs/types/users.UserFull.md | 24 + docs/API_docs/types/waveform.md | 16 + docs/CNAME | 1 + docs/Chat.md | 51 + docs/FOSS.html | 10 + docs/FullInfo.md | 26 + docs/Info.md | 26 + docs/LICENSE-theme.txt | 21 + docs/PHP/danog/MadelineProto/API.md | 3287 ++++++++++++++ docs/PHP/danog/MadelineProto/AsyncTools.md | 380 ++ docs/PHP/danog/MadelineProto/BotApiFileId.md | 48 + .../danog/MadelineProto/Broadcast/Action.md | 42 + .../danog/MadelineProto/Broadcast/Filter.md | 54 + .../danog/MadelineProto/Broadcast/Progress.md | 26 + .../danog/MadelineProto/Broadcast/Status.md | 67 + docs/PHP/danog/MadelineProto/Conversion.md | 108 + docs/PHP/danog/MadelineProto/EventHandler.md | 3318 ++++++++++++++ .../EventHandler/AbstractMessage.md | 536 +++ .../EventHandler/AbstractPoll.md | 57 + .../EventHandler/AbstractPrivateMessage.md | 796 ++++ .../EventHandler/AbstractStory.md | 22 + .../MadelineProto/EventHandler/Action.md | 19 + .../EventHandler/Action/Cancel.md | 19 + .../EventHandler/Action/ChooseContact.md | 19 + .../EventHandler/Action/ChooseSticker.md | 19 + .../EventHandler/Action/EmojiSeen.md | 44 + .../EventHandler/Action/EmojiTap.md | 49 + .../EventHandler/Action/GamePlay.md | 19 + .../EventHandler/Action/GeoLocation.md | 19 + .../EventHandler/Action/GroupCallSpeaking.md | 19 + .../EventHandler/Action/HistoryImport.md | 44 + .../EventHandler/Action/RecordAudio.md | 19 + .../EventHandler/Action/RecordRound.md | 19 + .../EventHandler/Action/RecordVideo.md | 19 + .../EventHandler/Action/Typing.md | 19 + .../EventHandler/Action/UploadAudio.md | 44 + .../EventHandler/Action/UploadDocument.md | 44 + .../EventHandler/Action/UploadPhoto.md | 44 + .../EventHandler/Action/UploadRound.md | 44 + .../EventHandler/Action/UploadVideo.md | 44 + .../EventHandler/Attributes/Cron.md | 37 + .../EventHandler/Attributes/Handler.md | 19 + .../MadelineProto/EventHandler/BotApp.md | 31 + .../MadelineProto/EventHandler/BotCommands.md | 23 + .../EventHandler/CallbackQuery.md | 42 + .../Channel/ChannelParticipant.md | 50 + .../EventHandler/Channel/MessageForwards.md | 23 + .../Channel/MessageViewsChanged.md | 23 + .../EventHandler/Channel/UpdateChannel.md | 21 + .../MadelineProto/EventHandler/ChatInvite.md | 35 + .../ChatInvite/ChatInviteExported.md | 48 + .../ChatInvite/ChatInvitePublicJoin.md | 35 + .../EventHandler/ChatInviteRequester.md | 21 + .../BotChatInviteRequest.md | 25 + .../PendingJoinRequests.md | 23 + .../MadelineProto/EventHandler/Command.md | 22 + .../MadelineProto/EventHandler/CommandType.md | 65 + .../MadelineProto/EventHandler/Delete.md | 21 + .../Delete/DeleteChannelMessages.md | 22 + .../EventHandler/Delete/DeleteMessages.md | 21 + .../Delete/DeleteScheduledMessages.md | 22 + .../Filter/Combinator/FilterNot.md | 92 + .../Filter/Combinator/FiltersAnd.md | 92 + .../Filter/Combinator/FiltersOr.md | 92 + .../EventHandler/Filter/Filter.md | 74 + .../EventHandler/Filter/FilterAllowAll.md | 74 + .../Filter/FilterButtonQueryData.md | 86 + .../EventHandler/Filter/FilterChannel.md | 74 + .../EventHandler/Filter/FilterCommand.md | 94 + .../Filter/FilterCommandCaseInsensitive.md | 94 + .../EventHandler/Filter/FilterEdited.md | 74 + .../EventHandler/Filter/FilterEnded.md | 74 + .../EventHandler/Filter/FilterForwarded.md | 74 + .../Filter/FilterForwardedFrom.md | 87 + .../EventHandler/Filter/FilterFromAdmin.md | 75 + .../EventHandler/Filter/FilterFromBot.md | 75 + .../EventHandler/Filter/FilterFromSender.md | 87 + .../EventHandler/Filter/FilterFromSenders.md | 87 + .../EventHandler/Filter/FilterGroup.md | 74 + .../EventHandler/Filter/FilterIncoming.md | 74 + .../EventHandler/Filter/FilterMedia.md | 74 + .../EventHandler/Filter/FilterMessage.md | 74 + .../EventHandler/Filter/FilterNoMedia.md | 74 + .../EventHandler/Filter/FilterNotEdited.md | 74 + .../EventHandler/Filter/FilterOutgoing.md | 74 + .../EventHandler/Filter/FilterPeer.md | 87 + .../EventHandler/Filter/FilterPoll.md | 74 + .../EventHandler/Filter/FilterPrivate.md | 74 + .../EventHandler/Filter/FilterRegex.md | 94 + .../Filter/FilterRegexMatchAll.md | 93 + .../EventHandler/Filter/FilterReply.md | 74 + .../EventHandler/Filter/FilterReplyToSelf.md | 74 + .../EventHandler/Filter/FilterRunning.md | 74 + .../EventHandler/Filter/FilterSecret.md | 74 + .../EventHandler/Filter/FilterSender.md | 87 + .../EventHandler/Filter/FilterSenders.md | 87 + .../EventHandler/Filter/FilterService.md | 74 + .../EventHandler/Filter/FilterText.md | 86 + .../Filter/FilterTextCaseInsensitive.md | 86 + .../EventHandler/Filter/FilterTextContains.md | 86 + .../FilterTextContainsCaseInsensitive.md | 86 + .../EventHandler/Filter/FilterTextEnds.md | 86 + .../Filter/FilterTextEndsCaseInsensitive.md | 86 + .../EventHandler/Filter/FilterTextStarts.md | 86 + .../Filter/FilterTextStartsCaseInsensitive.md | 86 + .../EventHandler/Filter/FilterTopic.md | 74 + .../EventHandler/Filter/FilterTopicId.md | 86 + .../EventHandler/Filter/Media/FilterAudio.md | 74 + .../Filter/Media/FilterDocument.md | 74 + .../Filter/Media/FilterDocumentPhoto.md | 74 + .../EventHandler/Filter/Media/FilterGif.md | 74 + .../EventHandler/Filter/Media/FilterPhoto.md | 74 + .../Filter/Media/FilterRoundVideo.md | 74 + .../Filter/Media/FilterSticker.md | 74 + .../EventHandler/Filter/Media/FilterVideo.md | 74 + .../EventHandler/Filter/Media/FilterVoice.md | 74 + .../Filter/Poll/FilterMultiplePoll.md | 74 + .../Filter/Poll/FilterQuizPoll.md | 74 + .../Filter/Poll/FilterSinglePoll.md | 74 + .../EventHandler/ForwardedInfo.md | 27 + .../MadelineProto/EventHandler/InlineQuery.md | 30 + .../MadelineProto/EventHandler/Keyboard.md | 64 + .../EventHandler/Keyboard/InlineKeyboard.md | 64 + .../EventHandler/Keyboard/ReplyKeyboard.md | 64 + .../danog/MadelineProto/EventHandler/Media.md | 118 + .../EventHandler/Media/AbstractAudio.md | 119 + .../EventHandler/Media/AbstractSticker.md | 122 + .../EventHandler/Media/AbstractVideo.md | 122 + .../EventHandler/Media/AnimatedSticker.md | 123 + .../MadelineProto/EventHandler/Media/Audio.md | 121 + .../EventHandler/Media/CustomEmoji.md | 124 + .../EventHandler/Media/Document.md | 118 + .../EventHandler/Media/DocumentPhoto.md | 121 + .../EventHandler/Media/GeoPoint.md | 40 + .../MadelineProto/EventHandler/Media/Gif.md | 137 + .../EventHandler/Media/MaskPosition.md | 67 + .../EventHandler/Media/MaskSticker.md | 132 + .../EventHandler/Media/MediaStory.md | 39 + .../MadelineProto/EventHandler/Media/Photo.md | 119 + .../EventHandler/Media/RoundVideo.md | 122 + .../EventHandler/Media/StaticSticker.md | 123 + .../EventHandler/Media/Sticker.md | 123 + .../MadelineProto/EventHandler/Media/Video.md | 123 + .../EventHandler/Media/VideoSticker.md | 124 + .../MadelineProto/EventHandler/Media/Voice.md | 120 + .../MadelineProto/EventHandler/Message.md | 784 ++++ .../EventHandler/Message/ChannelMessage.md | 868 ++++ .../EventHandler/Message/Entities/BankCard.md | 77 + .../Message/Entities/Blockquote.md | 77 + .../EventHandler/Message/Entities/Bold.md | 77 + .../Message/Entities/BotCommand.md | 77 + .../EventHandler/Message/Entities/Cashtag.md | 77 + .../EventHandler/Message/Entities/Code.md | 77 + .../Message/Entities/CustomEmoji.md | 79 + .../EventHandler/Message/Entities/Email.md | 77 + .../EventHandler/Message/Entities/Hashtag.md | 77 + .../Message/Entities/InputMentionName.md | 79 + .../EventHandler/Message/Entities/Italic.md | 77 + .../EventHandler/Message/Entities/Mention.md | 77 + .../Message/Entities/MentionName.md | 79 + .../Message/Entities/MessageEntity.md | 77 + .../EventHandler/Message/Entities/Phone.md | 77 + .../EventHandler/Message/Entities/Pre.md | 79 + .../EventHandler/Message/Entities/Spoiler.md | 77 + .../EventHandler/Message/Entities/Strike.md | 77 + .../EventHandler/Message/Entities/TextUrl.md | 79 + .../Message/Entities/Underline.md | 77 + .../EventHandler/Message/Entities/Url.md | 77 + .../EventHandler/Message/GroupMessage.md | 1057 +++++ .../EventHandler/Message/PrivateMessage.md | 796 ++++ .../EventHandler/Message/ReportReason.md | 79 + .../EventHandler/Message/SecretMessage.md | 794 ++++ .../Message/Service/DialogBotAllowed.md | 540 +++ .../Message/Service/DialogChannelCreated.md | 557 +++ .../Service/DialogChannelMigrateFrom.md | 559 +++ .../Message/Service/DialogChatJoinedByLink.md | 557 +++ .../Message/Service/DialogChatMigrateTo.md | 557 +++ .../Message/Service/DialogContactSignUp.md | 536 +++ .../Message/Service/DialogCreated.md | 559 +++ .../Message/Service/DialogDeleteMessages.md | 557 +++ .../Message/Service/DialogGameScore.md | 559 +++ .../Service/DialogGeoProximityReached.md | 561 +++ .../Message/Service/DialogGiftPremium.md | 565 +++ .../Message/Service/DialogGroupCall.md | 538 +++ .../Service/DialogGroupCall/GroupCall.md | 560 +++ .../DialogGroupCall/GroupCallInvited.md | 559 +++ .../DialogGroupCall/GroupCallScheduled.md | 559 +++ .../Message/Service/DialogHistoryCleared.md | 536 +++ .../Service/DialogMemberJoinedByRequest.md | 536 +++ .../Message/Service/DialogMemberLeft.md | 557 +++ .../Message/Service/DialogMembersJoined.md | 557 +++ .../Message/Service/DialogMessagePinned.md | 550 +++ .../Message/Service/DialogPeerRequested.md | 538 +++ .../Message/Service/DialogPhoneCall.md | 564 +++ .../Message/Service/DialogPhotoChanged.md | 558 +++ .../Message/Service/DialogReadMessages.md | 537 +++ .../Message/Service/DialogScreenshotTaken.md | 557 +++ .../Message/Service/DialogSetChatTheme.md | 557 +++ .../Message/Service/DialogSetChatWallPaper.md | 560 +++ .../Message/Service/DialogSetTTL.md | 559 +++ .../Service/DialogSuggestProfilePhoto.md | 558 +++ .../Message/Service/DialogTitleChanged.md | 557 +++ .../Message/Service/DialogTopicCreated.md | 561 +++ .../Message/Service/DialogTopicEdited.md | 571 +++ .../Message/Service/DialogWebView.md | 560 +++ .../EventHandler/Message/ServiceMessage.md | 536 +++ .../MadelineProto/EventHandler/Participant.md | 35 + .../EventHandler/Participant/Admin.md | 44 + .../EventHandler/Participant/Banned.md | 41 + .../EventHandler/Participant/Creator.md | 39 + .../EventHandler/Participant/Left.md | 37 + .../EventHandler/Participant/Member.md | 38 + .../EventHandler/Participant/MySelf.md | 40 + .../EventHandler/Participant/Rights.md | 19 + .../EventHandler/Participant/Rights/Admin.md | 35 + .../EventHandler/Participant/Rights/Banned.md | 40 + .../MadelineProto/EventHandler/Pinned.md | 23 + .../Pinned/PinnedChannelMessages.md | 23 + .../Pinned/PinnedGroupMessages.md | 23 + .../Pinned/PinnedPrivateMessages.md | 23 + .../EventHandler/Plugin/RestartPlugin.md | 3334 ++++++++++++++ .../EventHandler/Poll/MultiplePoll.md | 57 + .../EventHandler/Poll/PollAnswer.md | 42 + .../EventHandler/Poll/QuizPoll.md | 71 + .../EventHandler/Poll/SinglePoll.md | 57 + .../MadelineProto/EventHandler/Privacy.md | 22 + .../EventHandler/Privacy/Rule.md | 79 + .../EventHandler/Privacy/RuleDestination.md | 35 + .../Privacy/RuleDestination/AllowAll.md | 35 + .../RuleDestination/AllowChatParticipants.md | 37 + .../RuleDestination/AllowCloseFriends.md | 35 + .../Privacy/RuleDestination/AllowContacts.md | 35 + .../Privacy/RuleDestination/AllowUsers.md | 37 + .../Privacy/RuleDestination/DisallowAll.md | 35 + .../DisallowChatParticipants.md | 37 + .../RuleDestination/DisallowContacts.md | 35 + .../Privacy/RuleDestination/DisallowUsers.md | 37 + .../EventHandler/Query/ButtonQuery.md | 46 + .../EventHandler/Query/ChatButtonQuery.md | 148 + .../EventHandler/Query/ChatGameQuery.md | 145 + .../EventHandler/Query/GameQuery.md | 43 + .../EventHandler/Query/InlineButtonQuery.md | 79 + .../EventHandler/Query/InlineGameQuery.md | 76 + .../EventHandler/SimpleFilter/Ended.md | 19 + .../EventHandler/SimpleFilter/FromAdmin.md | 19 + .../SimpleFilter/FromAdminOrOutgoing.md | 19 + .../EventHandler/SimpleFilter/HasAudio.md | 19 + .../EventHandler/SimpleFilter/HasDocument.md | 19 + .../SimpleFilter/HasDocumentPhoto.md | 19 + .../EventHandler/SimpleFilter/HasGif.md | 19 + .../EventHandler/SimpleFilter/HasMedia.md | 19 + .../SimpleFilter/HasMultiplePoll.md | 19 + .../EventHandler/SimpleFilter/HasNoMedia.md | 19 + .../EventHandler/SimpleFilter/HasPhoto.md | 19 + .../EventHandler/SimpleFilter/HasPoll.md | 19 + .../EventHandler/SimpleFilter/HasQuizPoll.md | 19 + .../SimpleFilter/HasRoundVideo.md | 19 + .../SimpleFilter/HasSinglePoll.md | 19 + .../EventHandler/SimpleFilter/HasSticker.md | 19 + .../EventHandler/SimpleFilter/HasTopic.md | 19 + .../EventHandler/SimpleFilter/HasVideo.md | 19 + .../EventHandler/SimpleFilter/HasVoice.md | 19 + .../EventHandler/SimpleFilter/Incoming.md | 19 + .../EventHandler/SimpleFilter/IsEdited.md | 19 + .../EventHandler/SimpleFilter/IsForwarded.md | 19 + .../EventHandler/SimpleFilter/IsNotEdited.md | 19 + .../EventHandler/SimpleFilter/IsReply.md | 19 + .../SimpleFilter/IsReplyToSelf.md | 19 + .../EventHandler/SimpleFilter/Outgoing.md | 19 + .../EventHandler/SimpleFilter/Running.md | 19 + .../MadelineProto/EventHandler/Story/Story.md | 173 + .../EventHandler/Story/StoryDeleted.md | 22 + .../EventHandler/Story/StoryReaction.md | 23 + .../EventHandler/Topic/IconColor.md | 73 + .../MadelineProto/EventHandler/Typing.md | 22 + .../EventHandler/Typing/ChatUserTyping.md | 23 + .../EventHandler/Typing/SecretUserTyping.md | 23 + .../Typing/SupergroupUserTyping.md | 24 + .../EventHandler/Typing/UserTyping.md | 22 + .../MadelineProto/EventHandler/Update.md | 19 + .../EventHandler/User/Blocked.md | 23 + .../EventHandler/User/BotStopped.md | 23 + .../MadelineProto/EventHandler/User/Phone.md | 22 + .../MadelineProto/EventHandler/User/Status.md | 43 + .../EventHandler/User/Status/Emoji.md | 63 + .../EventHandler/User/Status/EmptyStatus.md | 43 + .../EventHandler/User/Status/LastMonth.md | 43 + .../EventHandler/User/Status/LastWeek.md | 43 + .../EventHandler/User/Status/Offline.md | 62 + .../EventHandler/User/Status/Online.md | 62 + .../EventHandler/User/Status/Recently.md | 43 + .../EventHandler/User/Username.md | 24 + .../EventHandler/User/UsernameInfo.md | 23 + .../MadelineProto/EventHandler/Wallpaper.md | 29 + .../Wallpaper/WallpaperSettings.md | 28 + .../danog/MadelineProto/EventHandlerIssue.md | 64 + docs/PHP/danog/MadelineProto/Exception.md | 156 + docs/PHP/danog/MadelineProto/FileCallback.md | 58 + .../MadelineProto/FileCallbackInterface.md | 30 + docs/PHP/danog/MadelineProto/LocalFile.md | 37 + docs/PHP/danog/MadelineProto/Logger.md | 156 + .../MadelineProto/MTProtoTools/DialogId.md | 104 + .../MadelineProto/MyTelegramOrgWrapper.md | 97 + docs/PHP/danog/MadelineProto/Ogg.md | 151 + docs/PHP/danog/MadelineProto/OggWriter.md | 71 + docs/PHP/danog/MadelineProto/PTSException.md | 136 + docs/PHP/danog/MadelineProto/ParseMode.md | 65 + .../MadelineProto/PeerNotInDbException.md | 144 + .../danog/MadelineProto/PluginEventHandler.md | 3317 ++++++++++++++ docs/PHP/danog/MadelineProto/PsrLogger.md | 209 + .../MadelineProto/RPCError/FloodWaitError.md | 191 + .../danog/MadelineProto/RPCErrorException.md | 177 + docs/PHP/danog/MadelineProto/RemoteUrl.md | 37 + .../danog/MadelineProto/ResponseException.md | 96 + .../MadelineProto/SecretChats/SecretChat.md | 45 + .../SecretPeerNotInDbException.md | 142 + .../danog/MadelineProto/SecurityException.md | 96 + docs/PHP/danog/MadelineProto/Settings.md | 465 ++ .../danog/MadelineProto/Settings/AppInfo.md | 215 + docs/PHP/danog/MadelineProto/Settings/Auth.md | 66 + .../MadelineProto/Settings/Connection.md | 468 ++ .../Database/DriverDatabaseAbstract.md | 270 ++ .../MadelineProto/Settings/Database/Memory.md | 130 + .../MadelineProto/Settings/Database/Mysql.md | 361 ++ .../Settings/Database/Postgres.md | 359 ++ .../MadelineProto/Settings/Database/Redis.md | 282 ++ .../Settings/Database/SerializerType.md | 63 + .../Settings/Database/SqlAbstract.md | 359 ++ .../Settings/DatabaseAbstract.md | 130 + .../PHP/danog/MadelineProto/Settings/Files.md | 122 + docs/PHP/danog/MadelineProto/Settings/Ipc.md | 37 + .../danog/MadelineProto/Settings/Logger.md | 126 + docs/PHP/danog/MadelineProto/Settings/Peer.md | 80 + docs/PHP/danog/MadelineProto/Settings/Pwr.md | 19 + docs/PHP/danog/MadelineProto/Settings/RPC.md | 101 + .../MadelineProto/Settings/SecretChats.md | 42 + .../MadelineProto/Settings/Serialization.md | 42 + .../danog/MadelineProto/Settings/TLSchema.md | 151 + .../danog/MadelineProto/Settings/Templates.md | 42 + docs/PHP/danog/MadelineProto/Settings/VoIP.md | 19 + docs/PHP/danog/MadelineProto/Shutdown.md | 59 + .../danog/MadelineProto/SimpleEventHandler.md | 3318 ++++++++++++++ docs/PHP/danog/MadelineProto/StrTools.md | 279 ++ .../MadelineProto/TL/Conversion/Exception.md | 136 + .../MadelineProto/TL/Conversion/Extension.md | 89 + docs/PHP/danog/MadelineProto/TL/Exception.md | 136 + .../PHP/danog/MadelineProto/TL/TLInterface.md | 139 + .../danog/MadelineProto/TL/Types/Button.md | 93 + .../PHP/danog/MadelineProto/TL/Types/Bytes.md | 93 + .../MadelineProto/TL/Types/LoginQrCode.md | 122 + docs/PHP/danog/MadelineProto/TextEntities.md | 67 + docs/PHP/danog/MadelineProto/Tools.md | 779 ++++ docs/PHP/danog/MadelineProto/VoIP.md | 200 + .../PHP/danog/MadelineProto/VoIP/CallState.md | 46 + .../danog/MadelineProto/VoIP/DiscardReason.md | 67 + .../PHP/danog/MadelineProto/VoIP/VoIPState.md | 71 + docs/PHP/index.md | 372 ++ docs/Participant.md | 24 + docs/README.md | 3 + docs/_config.yml | 38 + docs/_includes/fix_linenos.html | 65 + docs/_includes/footer_custom.html | 3 + docs/_includes/head.html | 33 + docs/_includes/head_custom.html | 0 docs/_includes/header_custom.html | 0 docs/_includes/nav.html | 101 + docs/_includes/title.html | 5 + docs/_includes/vendor/anchor_headings.html | 175 + docs/_layouts/about.html | 5 + docs/_layouts/default.html | 195 + docs/_layouts/empty.html | 3 + docs/_layouts/home.html | 5 + docs/_layouts/page.html | 5 + docs/_layouts/post.html | 5 + docs/_layouts/table_wrappers.html | 7 + docs/_layouts/vendor/compress.html | 10 + docs/_sass/base.scss | 108 + docs/_sass/buttons.scss | 119 + docs/_sass/code.scss | 340 ++ docs/_sass/color_schemes/dark.scss | 21 + docs/_sass/color_schemes/light.scss | 3 + docs/_sass/content.scss | 231 + docs/_sass/custom/custom.scss | 0 docs/_sass/labels.scss | 37 + docs/_sass/layout.scss | 208 + docs/_sass/modules.scss | 20 + docs/_sass/navigation.scss | 226 + docs/_sass/print.scss | 40 + docs/_sass/search.scss | 324 ++ docs/_sass/support/_functions.scss | 9 + docs/_sass/support/_variables.scss | 153 + docs/_sass/support/mixins/_buttons.scss | 27 + docs/_sass/support/mixins/_layout.scss | 34 + docs/_sass/support/mixins/_typography.scss | 84 + docs/_sass/support/mixins/mixins.scss | 3 + docs/_sass/support/support.scss | 3 + docs/_sass/tables.scss | 58 + docs/_sass/typography.scss | 64 + docs/_sass/utilities/_colors.scss | 239 + docs/_sass/utilities/_layout.scss | 95 + docs/_sass/utilities/_lists.scss | 17 + docs/_sass/utilities/_spacing.scss | 165 + docs/_sass/utilities/_typography.scss | 91 + docs/_sass/utilities/utilities.scss | 5 + docs/_sass/vendor/normalize.scss/README.md | 7 + .../vendor/normalize.scss/normalize.scss | 349 ++ docs/apikey.pub | 1 + docs/assets/css/just-the-docs-dark.scss | 8 + docs/assets/css/just-the-docs-light.scss | 8 + docs/assets/images/just-the-docs.png | Bin 0 -> 20992 bytes docs/assets/images/search.svg | 1 + docs/assets/js/just-the-docs.js | 488 ++ docs/assets/js/vendor/lunr.min.js | 6 + docs/assets/js/zzzz-search-data.json | 73 + docs/botLogin.md | 24 + docs/complete2FALogin.md | 37 + docs/completePhoneLogin.md | 37 + docs/completeSignup.md | 37 + docs/docs/ASYNC.md | 244 + docs/docs/BROADCAST.md | 276 ++ docs/docs/CALLS.md | 195 + docs/docs/CHAT_INFO.md | 63 + docs/docs/CONTRIB.md | 89 + docs/docs/CREATING_A_CLIENT.md | 25 + docs/docs/DATABASE.md | 97 + docs/docs/DIALOGS.md | 37 + docs/docs/DOCKER.md | 230 + docs/docs/EXCEPTIONS.md | 116 + docs/docs/FAQ.md | 196 + docs/docs/FEATURES.md | 53 + docs/docs/FILES.md | 784 ++++ docs/docs/FILTERS.md | 942 ++++ docs/docs/FLOOD_WAIT.md | 17 + docs/docs/INLINE_BUTTONS.md | 57 + docs/docs/INSTALLATION.md | 89 + docs/docs/LOGGING.md | 81 + docs/docs/LOGIN.md | 195 + docs/docs/PLUGINS.md | 373 ++ docs/docs/PROXY.md | 181 + docs/docs/REQUIREMENTS.md | 56 + docs/docs/SECRET_CHATS.md | 75 + docs/docs/SELF.md | 19 + docs/docs/SETTINGS.md | 71 + docs/docs/TEMPLATES.md | 33 + docs/docs/UPDATES.md | 1368 ++++++ docs/docs/UPDATES_INTERNAL.md | 29 + docs/docs/UPGRADING.md | 273 ++ docs/docs/USING_METHODS.md | 103 + docs/favicons/android-chrome-192x192.png | Bin 0 -> 30187 bytes docs/favicons/android-chrome-256x256.png | Bin 0 -> 47860 bytes docs/favicons/apple-touch-icon.png | Bin 0 -> 9805 bytes docs/favicons/browserconfig.xml | 9 + docs/favicons/favicon-16x16.png | Bin 0 -> 830 bytes docs/favicons/favicon-32x32.png | Bin 0 -> 1685 bytes docs/favicons/favicon.ico | Bin 0 -> 15086 bytes docs/favicons/manifest.json | 17 + docs/favicons/mstile-150x150.png | Bin 0 -> 14277 bytes docs/favicons/safari-pinned-tab.svg | 1 + docs/getFullDialogs.md | 22 + docs/getFullInfo.md | 25 + docs/getId.md | 25 + docs/getInfo.md | 25 + docs/getPwrChat.md | 26 + docs/getSelf.md | 22 + docs/index.md | 1095 +++++ docs/logo-hover.png | Bin 0 -> 132728 bytes docs/logo.png | Bin 0 -> 82072 bytes docs/phoneLogin.md | 39 + docs/requestSecretChat.md | 27 + docs/res/bg1.png | Bin 0 -> 819383 bytes docs/res/bg1_blured.png | Bin 0 -> 376878 bytes docs/robots.txt | 5 + docs/update2fa.md | 33 + template/!X.md | 11 + template/Bool.md | 10 + template/DataJSON.md | 10 + template/InputCheckPasswordSRP.md | 1 + template/InputDocument.md | 1 + template/InputEncryptedChat.md | 8 + template/InputFile.md | 8 + template/InputMedia.md | 1 + template/InputMessage.md | 7 + template/InputPhoto.md | 1 + template/KeyboardButton.md | 21 + template/Method.md | 12 + template/PhoneCall.md | 1 + template/ReplyMarkup.md | 6 + template/Type.md | 19 + template/Updates.md | 15 + template/User.md | 35 + template/boolFalse.md | 10 + template/boolTrue.md | 10 + template/bytes.md | 13 + template/chunks.md | 6 + template/constructor-example.md | 5 + template/constructors-index.md | 10 + template/disallow.json | 41 + template/double.md | 10 + template/index.md | 17 + template/int.md | 10 + template/int128.md | 10 + template/int256.md | 10 + template/int512.md | 10 + template/int53.md | 10 + template/long.md | 10 + template/method-example.md | 15 + template/methods-api-index.md | 38 + template/methods-index.md | 37 + template/null.md | 10 + template/parse_mode.md | 60 + template/photoStrippedSize.md | 35 + template/reply_markup.md | 6 + template/string.md | 10 + template/types-index.md | 9 + template/waveform.md | 16 + 2996 files changed, 169531 insertions(+) create mode 100644 .gitignore create mode 100644 .woodpecker.yml create mode 100644 docs/.well-known/amphtml/apikey.pub create mode 100644 docs/API_docs/constructors/account.authorizationForm.md create mode 100644 docs/API_docs/constructors/account.authorizations.md create mode 100644 docs/API_docs/constructors/account.autoDownloadSettings.md create mode 100644 docs/API_docs/constructors/account.autoSaveSettings.md create mode 100644 docs/API_docs/constructors/account.businessChatLinks.md create mode 100644 docs/API_docs/constructors/account.connectedBots.md create mode 100644 docs/API_docs/constructors/account.contentSettings.md create mode 100644 docs/API_docs/constructors/account.emailVerified.md create mode 100644 docs/API_docs/constructors/account.emailVerifiedLogin.md create mode 100644 docs/API_docs/constructors/account.emojiStatuses.md create mode 100644 docs/API_docs/constructors/account.emojiStatusesNotModified.md create mode 100644 docs/API_docs/constructors/account.password.md create mode 100644 docs/API_docs/constructors/account.passwordInputSettings.md create mode 100644 docs/API_docs/constructors/account.passwordSettings.md create mode 100644 docs/API_docs/constructors/account.privacyRules.md create mode 100644 docs/API_docs/constructors/account.resetPasswordFailedWait.md create mode 100644 docs/API_docs/constructors/account.resetPasswordOk.md create mode 100644 docs/API_docs/constructors/account.resetPasswordRequestedWait.md create mode 100644 docs/API_docs/constructors/account.resolvedBusinessChatLinks.md create mode 100644 docs/API_docs/constructors/account.savedRingtone.md create mode 100644 docs/API_docs/constructors/account.savedRingtoneConverted.md create mode 100644 docs/API_docs/constructors/account.savedRingtones.md create mode 100644 docs/API_docs/constructors/account.savedRingtonesNotModified.md create mode 100644 docs/API_docs/constructors/account.sentEmailCode.md create mode 100644 docs/API_docs/constructors/account.takeout.md create mode 100644 docs/API_docs/constructors/account.themes.md create mode 100644 docs/API_docs/constructors/account.themesNotModified.md create mode 100644 docs/API_docs/constructors/account.tmpPassword.md create mode 100644 docs/API_docs/constructors/account.wallPapers.md create mode 100644 docs/API_docs/constructors/account.wallPapersNotModified.md create mode 100644 docs/API_docs/constructors/account.webAuthorizations.md create mode 100644 docs/API_docs/constructors/accountDaysTTL.md create mode 100644 docs/API_docs/constructors/appWebViewResultUrl.md create mode 100644 docs/API_docs/constructors/attachMenuBot.md create mode 100644 docs/API_docs/constructors/attachMenuBotIcon.md create mode 100644 docs/API_docs/constructors/attachMenuBotIconColor.md create mode 100644 docs/API_docs/constructors/attachMenuBots.md create mode 100644 docs/API_docs/constructors/attachMenuBotsBot.md create mode 100644 docs/API_docs/constructors/attachMenuBotsNotModified.md create mode 100644 docs/API_docs/constructors/attachMenuPeerTypeBotPM.md create mode 100644 docs/API_docs/constructors/attachMenuPeerTypeBroadcast.md create mode 100644 docs/API_docs/constructors/attachMenuPeerTypeChat.md create mode 100644 docs/API_docs/constructors/attachMenuPeerTypePM.md create mode 100644 docs/API_docs/constructors/attachMenuPeerTypeSameBotPM.md create mode 100644 docs/API_docs/constructors/auth.authorization.md create mode 100644 docs/API_docs/constructors/auth.authorizationSignUpRequired.md create mode 100644 docs/API_docs/constructors/auth.codeTypeCall.md create mode 100644 docs/API_docs/constructors/auth.codeTypeFlashCall.md create mode 100644 docs/API_docs/constructors/auth.codeTypeFragmentSms.md create mode 100644 docs/API_docs/constructors/auth.codeTypeMissedCall.md create mode 100644 docs/API_docs/constructors/auth.codeTypeSms.md create mode 100644 docs/API_docs/constructors/auth.exportedAuthorization.md create mode 100644 docs/API_docs/constructors/auth.loggedOut.md create mode 100644 docs/API_docs/constructors/auth.loginToken.md create mode 100644 docs/API_docs/constructors/auth.loginTokenMigrateTo.md create mode 100644 docs/API_docs/constructors/auth.loginTokenSuccess.md create mode 100644 docs/API_docs/constructors/auth.passwordRecovery.md create mode 100644 docs/API_docs/constructors/auth.sentCode.md create mode 100644 docs/API_docs/constructors/auth.sentCodeSuccess.md create mode 100644 docs/API_docs/constructors/auth.sentCodeTypeApp.md create mode 100644 docs/API_docs/constructors/auth.sentCodeTypeCall.md create mode 100644 docs/API_docs/constructors/auth.sentCodeTypeEmailCode.md create mode 100644 docs/API_docs/constructors/auth.sentCodeTypeFirebaseSms.md create mode 100644 docs/API_docs/constructors/auth.sentCodeTypeFlashCall.md create mode 100644 docs/API_docs/constructors/auth.sentCodeTypeFragmentSms.md create mode 100644 docs/API_docs/constructors/auth.sentCodeTypeMissedCall.md create mode 100644 docs/API_docs/constructors/auth.sentCodeTypeSetUpEmailRequired.md create mode 100644 docs/API_docs/constructors/auth.sentCodeTypeSms.md create mode 100644 docs/API_docs/constructors/auth.sentCodeTypeSmsPhrase.md create mode 100644 docs/API_docs/constructors/auth.sentCodeTypeSmsWord.md create mode 100644 docs/API_docs/constructors/authorization.md create mode 100644 docs/API_docs/constructors/autoDownloadSettings.md create mode 100644 docs/API_docs/constructors/autoSaveException.md create mode 100644 docs/API_docs/constructors/autoSaveSettings.md create mode 100644 docs/API_docs/constructors/availableReaction.md create mode 100644 docs/API_docs/constructors/bankCardOpenUrl.md create mode 100644 docs/API_docs/constructors/baseThemeArctic.md create mode 100644 docs/API_docs/constructors/baseThemeClassic.md create mode 100644 docs/API_docs/constructors/baseThemeDay.md create mode 100644 docs/API_docs/constructors/baseThemeNight.md create mode 100644 docs/API_docs/constructors/baseThemeTinted.md create mode 100644 docs/API_docs/constructors/birthday.md create mode 100644 docs/API_docs/constructors/boolFalse.md create mode 100644 docs/API_docs/constructors/boolTrue.md create mode 100644 docs/API_docs/constructors/boost.md create mode 100644 docs/API_docs/constructors/botApp.md create mode 100644 docs/API_docs/constructors/botAppNotModified.md create mode 100644 docs/API_docs/constructors/botBusinessConnection.md create mode 100644 docs/API_docs/constructors/botCommand.md create mode 100644 docs/API_docs/constructors/botCommandScopeChatAdmins.md create mode 100644 docs/API_docs/constructors/botCommandScopeChats.md create mode 100644 docs/API_docs/constructors/botCommandScopeDefault.md create mode 100644 docs/API_docs/constructors/botCommandScopePeer.md create mode 100644 docs/API_docs/constructors/botCommandScopePeerAdmins.md create mode 100644 docs/API_docs/constructors/botCommandScopePeerUser.md create mode 100644 docs/API_docs/constructors/botCommandScopeUsers.md create mode 100644 docs/API_docs/constructors/botInfo.md create mode 100644 docs/API_docs/constructors/botInlineMediaResult.md create mode 100644 docs/API_docs/constructors/botInlineMessageMediaAuto.md create mode 100644 docs/API_docs/constructors/botInlineMessageMediaContact.md create mode 100644 docs/API_docs/constructors/botInlineMessageMediaGeo.md create mode 100644 docs/API_docs/constructors/botInlineMessageMediaInvoice.md create mode 100644 docs/API_docs/constructors/botInlineMessageMediaVenue.md create mode 100644 docs/API_docs/constructors/botInlineMessageMediaWebPage.md create mode 100644 docs/API_docs/constructors/botInlineMessageText.md create mode 100644 docs/API_docs/constructors/botInlineResult.md create mode 100644 docs/API_docs/constructors/botMenuButton.md create mode 100644 docs/API_docs/constructors/botMenuButtonCommands.md create mode 100644 docs/API_docs/constructors/botMenuButtonDefault.md create mode 100644 docs/API_docs/constructors/bots.botInfo.md create mode 100644 docs/API_docs/constructors/broadcastRevenueBalances.md create mode 100644 docs/API_docs/constructors/broadcastRevenueTransactionProceeds.md create mode 100644 docs/API_docs/constructors/broadcastRevenueTransactionRefund.md create mode 100644 docs/API_docs/constructors/broadcastRevenueTransactionWithdrawal.md create mode 100644 docs/API_docs/constructors/businessAwayMessage.md create mode 100644 docs/API_docs/constructors/businessAwayMessageScheduleAlways.md create mode 100644 docs/API_docs/constructors/businessAwayMessageScheduleCustom.md create mode 100644 docs/API_docs/constructors/businessAwayMessageScheduleOutsideWorkHours.md create mode 100644 docs/API_docs/constructors/businessBotRecipients.md create mode 100644 docs/API_docs/constructors/businessChatLink.md create mode 100644 docs/API_docs/constructors/businessGreetingMessage.md create mode 100644 docs/API_docs/constructors/businessIntro.md create mode 100644 docs/API_docs/constructors/businessLocation.md create mode 100644 docs/API_docs/constructors/businessRecipients.md create mode 100644 docs/API_docs/constructors/businessWeeklyOpen.md create mode 100644 docs/API_docs/constructors/businessWorkHours.md create mode 100644 docs/API_docs/constructors/cdnConfig.md create mode 100644 docs/API_docs/constructors/cdnPublicKey.md create mode 100644 docs/API_docs/constructors/channel.md create mode 100644 docs/API_docs/constructors/channelAdminLogEvent.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionChangeAbout.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionChangeAvailableReactions.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionChangeEmojiStatus.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionChangeEmojiStickerSet.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionChangeHistoryTTL.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionChangeLinkedChat.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionChangeLocation.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionChangePeerColor.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionChangePhoto.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionChangeProfilePeerColor.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionChangeStickerSet.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionChangeTitle.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionChangeUsername.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionChangeUsernames.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionChangeWallpaper.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionCreateTopic.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionDefaultBannedRights.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionDeleteMessage.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionDeleteTopic.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionDiscardGroupCall.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionEditMessage.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionEditTopic.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionExportedInviteDelete.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionExportedInviteEdit.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionExportedInviteRevoke.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionParticipantInvite.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionParticipantJoin.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionParticipantJoinByInvite.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionParticipantJoinByRequest.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionParticipantLeave.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionParticipantMute.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionParticipantToggleAdmin.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionParticipantToggleBan.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionParticipantUnmute.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionParticipantVolume.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionPinTopic.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionSendMessage.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionStartGroupCall.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionStopPoll.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionToggleAntiSpam.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionToggleForum.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionToggleGroupCallSetting.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionToggleInvites.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionToggleNoForwards.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionTogglePreHistoryHidden.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionToggleSignatures.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionToggleSlowMode.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventActionUpdatePinned.md create mode 100644 docs/API_docs/constructors/channelAdminLogEventsFilter.md create mode 100644 docs/API_docs/constructors/channelForbidden.md create mode 100644 docs/API_docs/constructors/channelFull.md create mode 100644 docs/API_docs/constructors/channelLocation.md create mode 100644 docs/API_docs/constructors/channelLocationEmpty.md create mode 100644 docs/API_docs/constructors/channelMessagesFilter.md create mode 100644 docs/API_docs/constructors/channelMessagesFilterEmpty.md create mode 100644 docs/API_docs/constructors/channelParticipant.md create mode 100644 docs/API_docs/constructors/channelParticipantAdmin.md create mode 100644 docs/API_docs/constructors/channelParticipantBanned.md create mode 100644 docs/API_docs/constructors/channelParticipantCreator.md create mode 100644 docs/API_docs/constructors/channelParticipantLeft.md create mode 100644 docs/API_docs/constructors/channelParticipantSelf.md create mode 100644 docs/API_docs/constructors/channelParticipantsAdmins.md create mode 100644 docs/API_docs/constructors/channelParticipantsBanned.md create mode 100644 docs/API_docs/constructors/channelParticipantsBots.md create mode 100644 docs/API_docs/constructors/channelParticipantsContacts.md create mode 100644 docs/API_docs/constructors/channelParticipantsKicked.md create mode 100644 docs/API_docs/constructors/channelParticipantsMentions.md create mode 100644 docs/API_docs/constructors/channelParticipantsRecent.md create mode 100644 docs/API_docs/constructors/channelParticipantsSearch.md create mode 100644 docs/API_docs/constructors/channels.adminLogResults.md create mode 100644 docs/API_docs/constructors/channels.channelParticipant.md create mode 100644 docs/API_docs/constructors/channels.channelParticipants.md create mode 100644 docs/API_docs/constructors/channels.channelParticipantsNotModified.md create mode 100644 docs/API_docs/constructors/channels.sendAsPeers.md create mode 100644 docs/API_docs/constructors/channels.sponsoredMessageReportResultAdsHidden.md create mode 100644 docs/API_docs/constructors/channels.sponsoredMessageReportResultChooseOption.md create mode 100644 docs/API_docs/constructors/channels.sponsoredMessageReportResultReported.md create mode 100644 docs/API_docs/constructors/chat.md create mode 100644 docs/API_docs/constructors/chatAdminRights.md create mode 100644 docs/API_docs/constructors/chatAdminWithInvites.md create mode 100644 docs/API_docs/constructors/chatBannedRights.md create mode 100644 docs/API_docs/constructors/chatEmpty.md create mode 100644 docs/API_docs/constructors/chatForbidden.md create mode 100644 docs/API_docs/constructors/chatFull.md create mode 100644 docs/API_docs/constructors/chatInvite.md create mode 100644 docs/API_docs/constructors/chatInviteAlready.md create mode 100644 docs/API_docs/constructors/chatInviteExported.md create mode 100644 docs/API_docs/constructors/chatInviteImporter.md create mode 100644 docs/API_docs/constructors/chatInvitePeek.md create mode 100644 docs/API_docs/constructors/chatInvitePublicJoinRequests.md create mode 100644 docs/API_docs/constructors/chatOnlines.md create mode 100644 docs/API_docs/constructors/chatParticipant.md create mode 100644 docs/API_docs/constructors/chatParticipantAdmin.md create mode 100644 docs/API_docs/constructors/chatParticipantCreator.md create mode 100644 docs/API_docs/constructors/chatParticipants.md create mode 100644 docs/API_docs/constructors/chatParticipantsForbidden.md create mode 100644 docs/API_docs/constructors/chatPhoto.md create mode 100644 docs/API_docs/constructors/chatPhotoEmpty.md create mode 100644 docs/API_docs/constructors/chatReactionsAll.md create mode 100644 docs/API_docs/constructors/chatReactionsNone.md create mode 100644 docs/API_docs/constructors/chatReactionsSome.md create mode 100644 docs/API_docs/constructors/chatlists.chatlistInvite.md create mode 100644 docs/API_docs/constructors/chatlists.chatlistInviteAlready.md create mode 100644 docs/API_docs/constructors/chatlists.chatlistUpdates.md create mode 100644 docs/API_docs/constructors/chatlists.exportedChatlistInvite.md create mode 100644 docs/API_docs/constructors/chatlists.exportedInvites.md create mode 100644 docs/API_docs/constructors/codeSettings.md create mode 100644 docs/API_docs/constructors/config.md create mode 100644 docs/API_docs/constructors/connectedBot.md create mode 100644 docs/API_docs/constructors/contact.md create mode 100644 docs/API_docs/constructors/contactBirthday.md create mode 100644 docs/API_docs/constructors/contactStatus.md create mode 100644 docs/API_docs/constructors/contacts.blocked.md create mode 100644 docs/API_docs/constructors/contacts.blockedSlice.md create mode 100644 docs/API_docs/constructors/contacts.contactBirthdays.md create mode 100644 docs/API_docs/constructors/contacts.contacts.md create mode 100644 docs/API_docs/constructors/contacts.contactsNotModified.md create mode 100644 docs/API_docs/constructors/contacts.found.md create mode 100644 docs/API_docs/constructors/contacts.importedContacts.md create mode 100644 docs/API_docs/constructors/contacts.resolvedPeer.md create mode 100644 docs/API_docs/constructors/contacts.topPeers.md create mode 100644 docs/API_docs/constructors/contacts.topPeersDisabled.md create mode 100644 docs/API_docs/constructors/contacts.topPeersNotModified.md create mode 100644 docs/API_docs/constructors/dataJSON.md create mode 100644 docs/API_docs/constructors/dcOption.md create mode 100644 docs/API_docs/constructors/decryptedMessageActionAbortKey_20.md create mode 100644 docs/API_docs/constructors/decryptedMessageActionAcceptKey_20.md create mode 100644 docs/API_docs/constructors/decryptedMessageActionCommitKey_20.md create mode 100644 docs/API_docs/constructors/decryptedMessageActionDeleteMessages_8.md create mode 100644 docs/API_docs/constructors/decryptedMessageActionFlushHistory_8.md create mode 100644 docs/API_docs/constructors/decryptedMessageActionNoop_20.md create mode 100644 docs/API_docs/constructors/decryptedMessageActionNotifyLayer_17.md create mode 100644 docs/API_docs/constructors/decryptedMessageActionReadMessages_8.md create mode 100644 docs/API_docs/constructors/decryptedMessageActionRequestKey_20.md create mode 100644 docs/API_docs/constructors/decryptedMessageActionResend_17.md create mode 100644 docs/API_docs/constructors/decryptedMessageActionScreenshotMessages_8.md create mode 100644 docs/API_docs/constructors/decryptedMessageActionSetMessageTTL_8.md create mode 100644 docs/API_docs/constructors/decryptedMessageActionTyping_17.md create mode 100644 docs/API_docs/constructors/decryptedMessageLayer_17.md create mode 100644 docs/API_docs/constructors/decryptedMessageMediaAudio_17.md create mode 100644 docs/API_docs/constructors/decryptedMessageMediaAudio_8.md create mode 100644 docs/API_docs/constructors/decryptedMessageMediaContact_8.md create mode 100644 docs/API_docs/constructors/decryptedMessageMediaDocument_143.md create mode 100644 docs/API_docs/constructors/decryptedMessageMediaDocument_45.md create mode 100644 docs/API_docs/constructors/decryptedMessageMediaDocument_8.md create mode 100644 docs/API_docs/constructors/decryptedMessageMediaEmpty_8.md create mode 100644 docs/API_docs/constructors/decryptedMessageMediaExternalDocument_23.md create mode 100644 docs/API_docs/constructors/decryptedMessageMediaGeoPoint_8.md create mode 100644 docs/API_docs/constructors/decryptedMessageMediaPhoto_45.md create mode 100644 docs/API_docs/constructors/decryptedMessageMediaPhoto_8.md create mode 100644 docs/API_docs/constructors/decryptedMessageMediaVenue_45.md create mode 100644 docs/API_docs/constructors/decryptedMessageMediaVideo_17.md create mode 100644 docs/API_docs/constructors/decryptedMessageMediaVideo_45.md create mode 100644 docs/API_docs/constructors/decryptedMessageMediaVideo_8.md create mode 100644 docs/API_docs/constructors/decryptedMessageMediaWebPage_45.md create mode 100644 docs/API_docs/constructors/decryptedMessageService_17.md create mode 100644 docs/API_docs/constructors/decryptedMessageService_8.md create mode 100644 docs/API_docs/constructors/decryptedMessage_17.md create mode 100644 docs/API_docs/constructors/decryptedMessage_45.md create mode 100644 docs/API_docs/constructors/decryptedMessage_73.md create mode 100644 docs/API_docs/constructors/decryptedMessage_8.md create mode 100644 docs/API_docs/constructors/defaultHistoryTTL.md create mode 100644 docs/API_docs/constructors/dialog.md create mode 100644 docs/API_docs/constructors/dialogFilter.md create mode 100644 docs/API_docs/constructors/dialogFilterChatlist.md create mode 100644 docs/API_docs/constructors/dialogFilterDefault.md create mode 100644 docs/API_docs/constructors/dialogFilterSuggested.md create mode 100644 docs/API_docs/constructors/dialogFolder.md create mode 100644 docs/API_docs/constructors/dialogPeer.md create mode 100644 docs/API_docs/constructors/dialogPeerFolder.md create mode 100644 docs/API_docs/constructors/document.md create mode 100644 docs/API_docs/constructors/documentAttributeAnimated.md create mode 100644 docs/API_docs/constructors/documentAttributeAudio.md create mode 100644 docs/API_docs/constructors/documentAttributeAudio_23.md create mode 100644 docs/API_docs/constructors/documentAttributeAudio_45.md create mode 100644 docs/API_docs/constructors/documentAttributeCustomEmoji.md create mode 100644 docs/API_docs/constructors/documentAttributeFilename.md create mode 100644 docs/API_docs/constructors/documentAttributeHasStickers.md create mode 100644 docs/API_docs/constructors/documentAttributeImageSize.md create mode 100644 docs/API_docs/constructors/documentAttributeSticker.md create mode 100644 docs/API_docs/constructors/documentAttributeSticker_23.md create mode 100644 docs/API_docs/constructors/documentAttributeSticker_45.md create mode 100644 docs/API_docs/constructors/documentAttributeVideo.md create mode 100644 docs/API_docs/constructors/documentAttributeVideo_23.md create mode 100644 docs/API_docs/constructors/documentAttributeVideo_66.md create mode 100644 docs/API_docs/constructors/documentEmpty.md create mode 100644 docs/API_docs/constructors/draftMessage.md create mode 100644 docs/API_docs/constructors/draftMessageEmpty.md create mode 100644 docs/API_docs/constructors/emailVerificationApple.md create mode 100644 docs/API_docs/constructors/emailVerificationCode.md create mode 100644 docs/API_docs/constructors/emailVerificationGoogle.md create mode 100644 docs/API_docs/constructors/emailVerifyPurposeLoginChange.md create mode 100644 docs/API_docs/constructors/emailVerifyPurposeLoginSetup.md create mode 100644 docs/API_docs/constructors/emailVerifyPurposePassport.md create mode 100644 docs/API_docs/constructors/emojiGroup.md create mode 100644 docs/API_docs/constructors/emojiGroupGreeting.md create mode 100644 docs/API_docs/constructors/emojiGroupPremium.md create mode 100644 docs/API_docs/constructors/emojiKeyword.md create mode 100644 docs/API_docs/constructors/emojiKeywordDeleted.md create mode 100644 docs/API_docs/constructors/emojiKeywordsDifference.md create mode 100644 docs/API_docs/constructors/emojiLanguage.md create mode 100644 docs/API_docs/constructors/emojiList.md create mode 100644 docs/API_docs/constructors/emojiListNotModified.md create mode 100644 docs/API_docs/constructors/emojiStatus.md create mode 100644 docs/API_docs/constructors/emojiStatusEmpty.md create mode 100644 docs/API_docs/constructors/emojiStatusUntil.md create mode 100644 docs/API_docs/constructors/emojiURL.md create mode 100644 docs/API_docs/constructors/encryptedChat.md create mode 100644 docs/API_docs/constructors/encryptedChatDiscarded.md create mode 100644 docs/API_docs/constructors/encryptedChatEmpty.md create mode 100644 docs/API_docs/constructors/encryptedChatRequested.md create mode 100644 docs/API_docs/constructors/encryptedChatWaiting.md create mode 100644 docs/API_docs/constructors/encryptedFile.md create mode 100644 docs/API_docs/constructors/encryptedFileEmpty.md create mode 100644 docs/API_docs/constructors/encryptedMessage.md create mode 100644 docs/API_docs/constructors/encryptedMessageService.md create mode 100644 docs/API_docs/constructors/error.md create mode 100644 docs/API_docs/constructors/exportedChatlistInvite.md create mode 100644 docs/API_docs/constructors/exportedContactToken.md create mode 100644 docs/API_docs/constructors/exportedMessageLink.md create mode 100644 docs/API_docs/constructors/exportedStoryLink.md create mode 100644 docs/API_docs/constructors/fileHash.md create mode 100644 docs/API_docs/constructors/fileLocationUnavailable_23.md create mode 100644 docs/API_docs/constructors/fileLocation_23.md create mode 100644 docs/API_docs/constructors/folder.md create mode 100644 docs/API_docs/constructors/folderPeer.md create mode 100644 docs/API_docs/constructors/forumTopic.md create mode 100644 docs/API_docs/constructors/forumTopicDeleted.md create mode 100644 docs/API_docs/constructors/fragment.collectibleInfo.md create mode 100644 docs/API_docs/constructors/game.md create mode 100644 docs/API_docs/constructors/geoPoint.md create mode 100644 docs/API_docs/constructors/geoPointEmpty.md create mode 100644 docs/API_docs/constructors/globalPrivacySettings.md create mode 100644 docs/API_docs/constructors/groupCall.md create mode 100644 docs/API_docs/constructors/groupCallDiscarded.md create mode 100644 docs/API_docs/constructors/groupCallParticipant.md create mode 100644 docs/API_docs/constructors/groupCallParticipantVideo.md create mode 100644 docs/API_docs/constructors/groupCallParticipantVideoSourceGroup.md create mode 100644 docs/API_docs/constructors/groupCallStreamChannel.md create mode 100644 docs/API_docs/constructors/help.appConfig.md create mode 100644 docs/API_docs/constructors/help.appConfigNotModified.md create mode 100644 docs/API_docs/constructors/help.appUpdate.md create mode 100644 docs/API_docs/constructors/help.countriesList.md create mode 100644 docs/API_docs/constructors/help.countriesListNotModified.md create mode 100644 docs/API_docs/constructors/help.country.md create mode 100644 docs/API_docs/constructors/help.countryCode.md create mode 100644 docs/API_docs/constructors/help.deepLinkInfo.md create mode 100644 docs/API_docs/constructors/help.deepLinkInfoEmpty.md create mode 100644 docs/API_docs/constructors/help.inviteText.md create mode 100644 docs/API_docs/constructors/help.noAppUpdate.md create mode 100644 docs/API_docs/constructors/help.passportConfig.md create mode 100644 docs/API_docs/constructors/help.passportConfigNotModified.md create mode 100644 docs/API_docs/constructors/help.peerColorOption.md create mode 100644 docs/API_docs/constructors/help.peerColorProfileSet.md create mode 100644 docs/API_docs/constructors/help.peerColorSet.md create mode 100644 docs/API_docs/constructors/help.peerColors.md create mode 100644 docs/API_docs/constructors/help.peerColorsNotModified.md create mode 100644 docs/API_docs/constructors/help.premiumPromo.md create mode 100644 docs/API_docs/constructors/help.promoData.md create mode 100644 docs/API_docs/constructors/help.promoDataEmpty.md create mode 100644 docs/API_docs/constructors/help.recentMeUrls.md create mode 100644 docs/API_docs/constructors/help.support.md create mode 100644 docs/API_docs/constructors/help.supportName.md create mode 100644 docs/API_docs/constructors/help.termsOfService.md create mode 100644 docs/API_docs/constructors/help.termsOfServiceUpdate.md create mode 100644 docs/API_docs/constructors/help.termsOfServiceUpdateEmpty.md create mode 100644 docs/API_docs/constructors/help.timezonesList.md create mode 100644 docs/API_docs/constructors/help.timezonesListNotModified.md create mode 100644 docs/API_docs/constructors/help.userInfo.md create mode 100644 docs/API_docs/constructors/help.userInfoEmpty.md create mode 100644 docs/API_docs/constructors/highScore.md create mode 100644 docs/API_docs/constructors/importedContact.md create mode 100644 docs/API_docs/constructors/index.md create mode 100644 docs/API_docs/constructors/inlineBotSwitchPM.md create mode 100644 docs/API_docs/constructors/inlineBotWebView.md create mode 100644 docs/API_docs/constructors/inlineQueryPeerTypeBotPM.md create mode 100644 docs/API_docs/constructors/inlineQueryPeerTypeBroadcast.md create mode 100644 docs/API_docs/constructors/inlineQueryPeerTypeChat.md create mode 100644 docs/API_docs/constructors/inlineQueryPeerTypeMegagroup.md create mode 100644 docs/API_docs/constructors/inlineQueryPeerTypePM.md create mode 100644 docs/API_docs/constructors/inlineQueryPeerTypeSameBotPM.md create mode 100644 docs/API_docs/constructors/inputAppEvent.md create mode 100644 docs/API_docs/constructors/inputBotAppID.md create mode 100644 docs/API_docs/constructors/inputBotAppShortName.md create mode 100644 docs/API_docs/constructors/inputBotInlineMessageGame.md create mode 100644 docs/API_docs/constructors/inputBotInlineMessageID.md create mode 100644 docs/API_docs/constructors/inputBotInlineMessageID64.md create mode 100644 docs/API_docs/constructors/inputBotInlineMessageMediaAuto.md create mode 100644 docs/API_docs/constructors/inputBotInlineMessageMediaContact.md create mode 100644 docs/API_docs/constructors/inputBotInlineMessageMediaGeo.md create mode 100644 docs/API_docs/constructors/inputBotInlineMessageMediaInvoice.md create mode 100644 docs/API_docs/constructors/inputBotInlineMessageMediaVenue.md create mode 100644 docs/API_docs/constructors/inputBotInlineMessageMediaWebPage.md create mode 100644 docs/API_docs/constructors/inputBotInlineMessageText.md create mode 100644 docs/API_docs/constructors/inputBotInlineResult.md create mode 100644 docs/API_docs/constructors/inputBotInlineResultDocument.md create mode 100644 docs/API_docs/constructors/inputBotInlineResultGame.md create mode 100644 docs/API_docs/constructors/inputBotInlineResultPhoto.md create mode 100644 docs/API_docs/constructors/inputBusinessAwayMessage.md create mode 100644 docs/API_docs/constructors/inputBusinessBotRecipients.md create mode 100644 docs/API_docs/constructors/inputBusinessChatLink.md create mode 100644 docs/API_docs/constructors/inputBusinessGreetingMessage.md create mode 100644 docs/API_docs/constructors/inputBusinessIntro.md create mode 100644 docs/API_docs/constructors/inputBusinessRecipients.md create mode 100644 docs/API_docs/constructors/inputChannel.md create mode 100644 docs/API_docs/constructors/inputChannelEmpty.md create mode 100644 docs/API_docs/constructors/inputChannelFromMessage.md create mode 100644 docs/API_docs/constructors/inputChatPhoto.md create mode 100644 docs/API_docs/constructors/inputChatPhotoEmpty.md create mode 100644 docs/API_docs/constructors/inputChatUploadedPhoto.md create mode 100644 docs/API_docs/constructors/inputChatlistDialogFilter.md create mode 100644 docs/API_docs/constructors/inputCheckPasswordEmpty.md create mode 100644 docs/API_docs/constructors/inputCheckPasswordSRP.md create mode 100644 docs/API_docs/constructors/inputClientProxy.md create mode 100644 docs/API_docs/constructors/inputCollectiblePhone.md create mode 100644 docs/API_docs/constructors/inputCollectibleUsername.md create mode 100644 docs/API_docs/constructors/inputDialogPeer.md create mode 100644 docs/API_docs/constructors/inputDialogPeerFolder.md create mode 100644 docs/API_docs/constructors/inputDocument.md create mode 100644 docs/API_docs/constructors/inputDocumentEmpty.md create mode 100644 docs/API_docs/constructors/inputDocumentFileLocation.md create mode 100644 docs/API_docs/constructors/inputEncryptedChat.md create mode 100644 docs/API_docs/constructors/inputEncryptedFile.md create mode 100644 docs/API_docs/constructors/inputEncryptedFileBigUploaded.md create mode 100644 docs/API_docs/constructors/inputEncryptedFileEmpty.md create mode 100644 docs/API_docs/constructors/inputEncryptedFileLocation.md create mode 100644 docs/API_docs/constructors/inputEncryptedFileUploaded.md create mode 100644 docs/API_docs/constructors/inputFile.md create mode 100644 docs/API_docs/constructors/inputFileBig.md create mode 100644 docs/API_docs/constructors/inputFileLocation.md create mode 100644 docs/API_docs/constructors/inputFolderPeer.md create mode 100644 docs/API_docs/constructors/inputGameID.md create mode 100644 docs/API_docs/constructors/inputGameShortName.md create mode 100644 docs/API_docs/constructors/inputGeoPoint.md create mode 100644 docs/API_docs/constructors/inputGeoPointEmpty.md create mode 100644 docs/API_docs/constructors/inputGroupCall.md create mode 100644 docs/API_docs/constructors/inputGroupCallStream.md create mode 100644 docs/API_docs/constructors/inputInvoiceMessage.md create mode 100644 docs/API_docs/constructors/inputInvoicePremiumGiftCode.md create mode 100644 docs/API_docs/constructors/inputInvoiceSlug.md create mode 100644 docs/API_docs/constructors/inputKeyboardButtonRequestPeer.md create mode 100644 docs/API_docs/constructors/inputKeyboardButtonUrlAuth.md create mode 100644 docs/API_docs/constructors/inputKeyboardButtonUserProfile.md create mode 100644 docs/API_docs/constructors/inputMediaAreaChannelPost.md create mode 100644 docs/API_docs/constructors/inputMediaAreaVenue.md create mode 100644 docs/API_docs/constructors/inputMediaContact.md create mode 100644 docs/API_docs/constructors/inputMediaDice.md create mode 100644 docs/API_docs/constructors/inputMediaDocument.md create mode 100644 docs/API_docs/constructors/inputMediaDocumentExternal.md create mode 100644 docs/API_docs/constructors/inputMediaEmpty.md create mode 100644 docs/API_docs/constructors/inputMediaGame.md create mode 100644 docs/API_docs/constructors/inputMediaGeoLive.md create mode 100644 docs/API_docs/constructors/inputMediaGeoPoint.md create mode 100644 docs/API_docs/constructors/inputMediaInvoice.md create mode 100644 docs/API_docs/constructors/inputMediaPhoto.md create mode 100644 docs/API_docs/constructors/inputMediaPhotoExternal.md create mode 100644 docs/API_docs/constructors/inputMediaPoll.md create mode 100644 docs/API_docs/constructors/inputMediaStory.md create mode 100644 docs/API_docs/constructors/inputMediaUploadedDocument.md create mode 100644 docs/API_docs/constructors/inputMediaUploadedPhoto.md create mode 100644 docs/API_docs/constructors/inputMediaVenue.md create mode 100644 docs/API_docs/constructors/inputMediaWebPage.md create mode 100644 docs/API_docs/constructors/inputMessageCallbackQuery.md create mode 100644 docs/API_docs/constructors/inputMessageEntityMentionName.md create mode 100644 docs/API_docs/constructors/inputMessageID.md create mode 100644 docs/API_docs/constructors/inputMessagePinned.md create mode 100644 docs/API_docs/constructors/inputMessageReplyTo.md create mode 100644 docs/API_docs/constructors/inputMessagesFilterChatPhotos.md create mode 100644 docs/API_docs/constructors/inputMessagesFilterContacts.md create mode 100644 docs/API_docs/constructors/inputMessagesFilterDocument.md create mode 100644 docs/API_docs/constructors/inputMessagesFilterEmpty.md create mode 100644 docs/API_docs/constructors/inputMessagesFilterGeo.md create mode 100644 docs/API_docs/constructors/inputMessagesFilterGif.md create mode 100644 docs/API_docs/constructors/inputMessagesFilterMusic.md create mode 100644 docs/API_docs/constructors/inputMessagesFilterMyMentions.md create mode 100644 docs/API_docs/constructors/inputMessagesFilterPhoneCalls.md create mode 100644 docs/API_docs/constructors/inputMessagesFilterPhotoVideo.md create mode 100644 docs/API_docs/constructors/inputMessagesFilterPhotos.md create mode 100644 docs/API_docs/constructors/inputMessagesFilterPinned.md create mode 100644 docs/API_docs/constructors/inputMessagesFilterRoundVideo.md create mode 100644 docs/API_docs/constructors/inputMessagesFilterRoundVoice.md create mode 100644 docs/API_docs/constructors/inputMessagesFilterUrl.md create mode 100644 docs/API_docs/constructors/inputMessagesFilterVideo.md create mode 100644 docs/API_docs/constructors/inputMessagesFilterVoice.md create mode 100644 docs/API_docs/constructors/inputNotifyBroadcasts.md create mode 100644 docs/API_docs/constructors/inputNotifyChats.md create mode 100644 docs/API_docs/constructors/inputNotifyForumTopic.md create mode 100644 docs/API_docs/constructors/inputNotifyPeer.md create mode 100644 docs/API_docs/constructors/inputNotifyUsers.md create mode 100644 docs/API_docs/constructors/inputPaymentCredentials.md create mode 100644 docs/API_docs/constructors/inputPaymentCredentialsApplePay.md create mode 100644 docs/API_docs/constructors/inputPaymentCredentialsGooglePay.md create mode 100644 docs/API_docs/constructors/inputPaymentCredentialsSaved.md create mode 100644 docs/API_docs/constructors/inputPeerChannel.md create mode 100644 docs/API_docs/constructors/inputPeerChannelFromMessage.md create mode 100644 docs/API_docs/constructors/inputPeerChat.md create mode 100644 docs/API_docs/constructors/inputPeerEmpty.md create mode 100644 docs/API_docs/constructors/inputPeerNotifySettings.md create mode 100644 docs/API_docs/constructors/inputPeerPhotoFileLocation.md create mode 100644 docs/API_docs/constructors/inputPeerSelf.md create mode 100644 docs/API_docs/constructors/inputPeerUser.md create mode 100644 docs/API_docs/constructors/inputPeerUserFromMessage.md create mode 100644 docs/API_docs/constructors/inputPhoneCall.md create mode 100644 docs/API_docs/constructors/inputPhoneContact.md create mode 100644 docs/API_docs/constructors/inputPhoto.md create mode 100644 docs/API_docs/constructors/inputPhotoEmpty.md create mode 100644 docs/API_docs/constructors/inputPhotoFileLocation.md create mode 100644 docs/API_docs/constructors/inputPhotoLegacyFileLocation.md create mode 100644 docs/API_docs/constructors/inputPrivacyKeyAbout.md create mode 100644 docs/API_docs/constructors/inputPrivacyKeyAddedByPhone.md create mode 100644 docs/API_docs/constructors/inputPrivacyKeyBirthday.md create mode 100644 docs/API_docs/constructors/inputPrivacyKeyChatInvite.md create mode 100644 docs/API_docs/constructors/inputPrivacyKeyForwards.md create mode 100644 docs/API_docs/constructors/inputPrivacyKeyPhoneCall.md create mode 100644 docs/API_docs/constructors/inputPrivacyKeyPhoneNumber.md create mode 100644 docs/API_docs/constructors/inputPrivacyKeyPhoneP2P.md create mode 100644 docs/API_docs/constructors/inputPrivacyKeyProfilePhoto.md create mode 100644 docs/API_docs/constructors/inputPrivacyKeyStatusTimestamp.md create mode 100644 docs/API_docs/constructors/inputPrivacyKeyVoiceMessages.md create mode 100644 docs/API_docs/constructors/inputPrivacyValueAllowAll.md create mode 100644 docs/API_docs/constructors/inputPrivacyValueAllowChatParticipants.md create mode 100644 docs/API_docs/constructors/inputPrivacyValueAllowCloseFriends.md create mode 100644 docs/API_docs/constructors/inputPrivacyValueAllowContacts.md create mode 100644 docs/API_docs/constructors/inputPrivacyValueAllowPremium.md create mode 100644 docs/API_docs/constructors/inputPrivacyValueAllowUsers.md create mode 100644 docs/API_docs/constructors/inputPrivacyValueDisallowAll.md create mode 100644 docs/API_docs/constructors/inputPrivacyValueDisallowChatParticipants.md create mode 100644 docs/API_docs/constructors/inputPrivacyValueDisallowContacts.md create mode 100644 docs/API_docs/constructors/inputPrivacyValueDisallowUsers.md create mode 100644 docs/API_docs/constructors/inputQuickReplyShortcut.md create mode 100644 docs/API_docs/constructors/inputQuickReplyShortcutId.md create mode 100644 docs/API_docs/constructors/inputReplyToMessage.md create mode 100644 docs/API_docs/constructors/inputReplyToStory.md create mode 100644 docs/API_docs/constructors/inputReportReasonChildAbuse.md create mode 100644 docs/API_docs/constructors/inputReportReasonCopyright.md create mode 100644 docs/API_docs/constructors/inputReportReasonFake.md create mode 100644 docs/API_docs/constructors/inputReportReasonGeoIrrelevant.md create mode 100644 docs/API_docs/constructors/inputReportReasonIllegalDrugs.md create mode 100644 docs/API_docs/constructors/inputReportReasonOther.md create mode 100644 docs/API_docs/constructors/inputReportReasonPersonalDetails.md create mode 100644 docs/API_docs/constructors/inputReportReasonPornography.md create mode 100644 docs/API_docs/constructors/inputReportReasonSpam.md create mode 100644 docs/API_docs/constructors/inputReportReasonViolence.md create mode 100644 docs/API_docs/constructors/inputSecureFile.md create mode 100644 docs/API_docs/constructors/inputSecureFileLocation.md create mode 100644 docs/API_docs/constructors/inputSecureFileUploaded.md create mode 100644 docs/API_docs/constructors/inputSecureValue.md create mode 100644 docs/API_docs/constructors/inputSingleMedia.md create mode 100644 docs/API_docs/constructors/inputStickerSetAnimatedEmoji.md create mode 100644 docs/API_docs/constructors/inputStickerSetAnimatedEmojiAnimations.md create mode 100644 docs/API_docs/constructors/inputStickerSetDice.md create mode 100644 docs/API_docs/constructors/inputStickerSetEmojiChannelDefaultStatuses.md create mode 100644 docs/API_docs/constructors/inputStickerSetEmojiDefaultStatuses.md create mode 100644 docs/API_docs/constructors/inputStickerSetEmojiDefaultTopicIcons.md create mode 100644 docs/API_docs/constructors/inputStickerSetEmojiGenericAnimations.md create mode 100644 docs/API_docs/constructors/inputStickerSetEmpty.md create mode 100644 docs/API_docs/constructors/inputStickerSetID.md create mode 100644 docs/API_docs/constructors/inputStickerSetItem.md create mode 100644 docs/API_docs/constructors/inputStickerSetPremiumGifts.md create mode 100644 docs/API_docs/constructors/inputStickerSetShortName.md create mode 100644 docs/API_docs/constructors/inputStickerSetThumb.md create mode 100644 docs/API_docs/constructors/inputStickeredMediaDocument.md create mode 100644 docs/API_docs/constructors/inputStickeredMediaPhoto.md create mode 100644 docs/API_docs/constructors/inputStorePaymentGiftPremium.md create mode 100644 docs/API_docs/constructors/inputStorePaymentPremiumGiftCode.md create mode 100644 docs/API_docs/constructors/inputStorePaymentPremiumGiveaway.md create mode 100644 docs/API_docs/constructors/inputStorePaymentPremiumSubscription.md create mode 100644 docs/API_docs/constructors/inputTakeoutFileLocation.md create mode 100644 docs/API_docs/constructors/inputTheme.md create mode 100644 docs/API_docs/constructors/inputThemeSettings.md create mode 100644 docs/API_docs/constructors/inputThemeSlug.md create mode 100644 docs/API_docs/constructors/inputUser.md create mode 100644 docs/API_docs/constructors/inputUserEmpty.md create mode 100644 docs/API_docs/constructors/inputUserFromMessage.md create mode 100644 docs/API_docs/constructors/inputUserSelf.md create mode 100644 docs/API_docs/constructors/inputWallPaper.md create mode 100644 docs/API_docs/constructors/inputWallPaperNoFile.md create mode 100644 docs/API_docs/constructors/inputWallPaperSlug.md create mode 100644 docs/API_docs/constructors/inputWebDocument.md create mode 100644 docs/API_docs/constructors/inputWebFileAudioAlbumThumbLocation.md create mode 100644 docs/API_docs/constructors/inputWebFileGeoPointLocation.md create mode 100644 docs/API_docs/constructors/inputWebFileLocation.md create mode 100644 docs/API_docs/constructors/invoice.md create mode 100644 docs/API_docs/constructors/jsonArray.md create mode 100644 docs/API_docs/constructors/jsonBool.md create mode 100644 docs/API_docs/constructors/jsonNull.md create mode 100644 docs/API_docs/constructors/jsonNumber.md create mode 100644 docs/API_docs/constructors/jsonObject.md create mode 100644 docs/API_docs/constructors/jsonObjectValue.md create mode 100644 docs/API_docs/constructors/jsonString.md create mode 100644 docs/API_docs/constructors/keyboardButton.md create mode 100644 docs/API_docs/constructors/keyboardButtonBuy.md create mode 100644 docs/API_docs/constructors/keyboardButtonCallback.md create mode 100644 docs/API_docs/constructors/keyboardButtonGame.md create mode 100644 docs/API_docs/constructors/keyboardButtonRequestGeoLocation.md create mode 100644 docs/API_docs/constructors/keyboardButtonRequestPeer.md create mode 100644 docs/API_docs/constructors/keyboardButtonRequestPhone.md create mode 100644 docs/API_docs/constructors/keyboardButtonRequestPoll.md create mode 100644 docs/API_docs/constructors/keyboardButtonRow.md create mode 100644 docs/API_docs/constructors/keyboardButtonSimpleWebView.md create mode 100644 docs/API_docs/constructors/keyboardButtonSwitchInline.md create mode 100644 docs/API_docs/constructors/keyboardButtonUrl.md create mode 100644 docs/API_docs/constructors/keyboardButtonUrlAuth.md create mode 100644 docs/API_docs/constructors/keyboardButtonUserProfile.md create mode 100644 docs/API_docs/constructors/keyboardButtonWebView.md create mode 100644 docs/API_docs/constructors/labeledPrice.md create mode 100644 docs/API_docs/constructors/langPackDifference.md create mode 100644 docs/API_docs/constructors/langPackLanguage.md create mode 100644 docs/API_docs/constructors/langPackString.md create mode 100644 docs/API_docs/constructors/langPackStringDeleted.md create mode 100644 docs/API_docs/constructors/langPackStringPluralized.md create mode 100644 docs/API_docs/constructors/maskCoords.md create mode 100644 docs/API_docs/constructors/mediaAreaChannelPost.md create mode 100644 docs/API_docs/constructors/mediaAreaCoordinates.md create mode 100644 docs/API_docs/constructors/mediaAreaGeoPoint.md create mode 100644 docs/API_docs/constructors/mediaAreaSuggestedReaction.md create mode 100644 docs/API_docs/constructors/mediaAreaVenue.md create mode 100644 docs/API_docs/constructors/message.md create mode 100644 docs/API_docs/constructors/messageActionBoostApply.md create mode 100644 docs/API_docs/constructors/messageActionBotAllowed.md create mode 100644 docs/API_docs/constructors/messageActionChannelCreate.md create mode 100644 docs/API_docs/constructors/messageActionChannelMigrateFrom.md create mode 100644 docs/API_docs/constructors/messageActionChatAddUser.md create mode 100644 docs/API_docs/constructors/messageActionChatCreate.md create mode 100644 docs/API_docs/constructors/messageActionChatDeletePhoto.md create mode 100644 docs/API_docs/constructors/messageActionChatDeleteUser.md create mode 100644 docs/API_docs/constructors/messageActionChatEditPhoto.md create mode 100644 docs/API_docs/constructors/messageActionChatEditTitle.md create mode 100644 docs/API_docs/constructors/messageActionChatJoinedByLink.md create mode 100644 docs/API_docs/constructors/messageActionChatJoinedByRequest.md create mode 100644 docs/API_docs/constructors/messageActionChatMigrateTo.md create mode 100644 docs/API_docs/constructors/messageActionContactSignUp.md create mode 100644 docs/API_docs/constructors/messageActionCustomAction.md create mode 100644 docs/API_docs/constructors/messageActionEmpty.md create mode 100644 docs/API_docs/constructors/messageActionGameScore.md create mode 100644 docs/API_docs/constructors/messageActionGeoProximityReached.md create mode 100644 docs/API_docs/constructors/messageActionGiftCode.md create mode 100644 docs/API_docs/constructors/messageActionGiftPremium.md create mode 100644 docs/API_docs/constructors/messageActionGiveawayLaunch.md create mode 100644 docs/API_docs/constructors/messageActionGiveawayResults.md create mode 100644 docs/API_docs/constructors/messageActionGroupCall.md create mode 100644 docs/API_docs/constructors/messageActionGroupCallScheduled.md create mode 100644 docs/API_docs/constructors/messageActionHistoryClear.md create mode 100644 docs/API_docs/constructors/messageActionInviteToGroupCall.md create mode 100644 docs/API_docs/constructors/messageActionPaymentSent.md create mode 100644 docs/API_docs/constructors/messageActionPaymentSentMe.md create mode 100644 docs/API_docs/constructors/messageActionPhoneCall.md create mode 100644 docs/API_docs/constructors/messageActionPinMessage.md create mode 100644 docs/API_docs/constructors/messageActionRequestedPeer.md create mode 100644 docs/API_docs/constructors/messageActionRequestedPeerSentMe.md create mode 100644 docs/API_docs/constructors/messageActionScreenshotTaken.md create mode 100644 docs/API_docs/constructors/messageActionSecureValuesSent.md create mode 100644 docs/API_docs/constructors/messageActionSecureValuesSentMe.md create mode 100644 docs/API_docs/constructors/messageActionSetChatTheme.md create mode 100644 docs/API_docs/constructors/messageActionSetChatWallPaper.md create mode 100644 docs/API_docs/constructors/messageActionSetMessagesTTL.md create mode 100644 docs/API_docs/constructors/messageActionSuggestProfilePhoto.md create mode 100644 docs/API_docs/constructors/messageActionTopicCreate.md create mode 100644 docs/API_docs/constructors/messageActionTopicEdit.md create mode 100644 docs/API_docs/constructors/messageActionWebViewDataSent.md create mode 100644 docs/API_docs/constructors/messageActionWebViewDataSentMe.md create mode 100644 docs/API_docs/constructors/messageEmpty.md create mode 100644 docs/API_docs/constructors/messageEntityBankCard.md create mode 100644 docs/API_docs/constructors/messageEntityBlockquote.md create mode 100644 docs/API_docs/constructors/messageEntityBold.md create mode 100644 docs/API_docs/constructors/messageEntityBotCommand.md create mode 100644 docs/API_docs/constructors/messageEntityCashtag.md create mode 100644 docs/API_docs/constructors/messageEntityCode.md create mode 100644 docs/API_docs/constructors/messageEntityCustomEmoji.md create mode 100644 docs/API_docs/constructors/messageEntityEmail.md create mode 100644 docs/API_docs/constructors/messageEntityHashtag.md create mode 100644 docs/API_docs/constructors/messageEntityItalic.md create mode 100644 docs/API_docs/constructors/messageEntityMention.md create mode 100644 docs/API_docs/constructors/messageEntityMentionName.md create mode 100644 docs/API_docs/constructors/messageEntityPhone.md create mode 100644 docs/API_docs/constructors/messageEntityPre.md create mode 100644 docs/API_docs/constructors/messageEntitySpoiler.md create mode 100644 docs/API_docs/constructors/messageEntityStrike.md create mode 100644 docs/API_docs/constructors/messageEntityTextUrl.md create mode 100644 docs/API_docs/constructors/messageEntityUnderline.md create mode 100644 docs/API_docs/constructors/messageEntityUnknown.md create mode 100644 docs/API_docs/constructors/messageEntityUrl.md create mode 100644 docs/API_docs/constructors/messageExtendedMedia.md create mode 100644 docs/API_docs/constructors/messageExtendedMediaPreview.md create mode 100644 docs/API_docs/constructors/messageFwdHeader.md create mode 100644 docs/API_docs/constructors/messageMediaContact.md create mode 100644 docs/API_docs/constructors/messageMediaDice.md create mode 100644 docs/API_docs/constructors/messageMediaDocument.md create mode 100644 docs/API_docs/constructors/messageMediaEmpty.md create mode 100644 docs/API_docs/constructors/messageMediaGame.md create mode 100644 docs/API_docs/constructors/messageMediaGeo.md create mode 100644 docs/API_docs/constructors/messageMediaGeoLive.md create mode 100644 docs/API_docs/constructors/messageMediaGiveaway.md create mode 100644 docs/API_docs/constructors/messageMediaGiveawayResults.md create mode 100644 docs/API_docs/constructors/messageMediaInvoice.md create mode 100644 docs/API_docs/constructors/messageMediaPhoto.md create mode 100644 docs/API_docs/constructors/messageMediaPoll.md create mode 100644 docs/API_docs/constructors/messageMediaStory.md create mode 100644 docs/API_docs/constructors/messageMediaUnsupported.md create mode 100644 docs/API_docs/constructors/messageMediaVenue.md create mode 100644 docs/API_docs/constructors/messageMediaWebPage.md create mode 100644 docs/API_docs/constructors/messagePeerReaction.md create mode 100644 docs/API_docs/constructors/messagePeerVote.md create mode 100644 docs/API_docs/constructors/messagePeerVoteInputOption.md create mode 100644 docs/API_docs/constructors/messagePeerVoteMultiple.md create mode 100644 docs/API_docs/constructors/messageRange.md create mode 100644 docs/API_docs/constructors/messageReactions.md create mode 100644 docs/API_docs/constructors/messageReplies.md create mode 100644 docs/API_docs/constructors/messageReplyHeader.md create mode 100644 docs/API_docs/constructors/messageReplyStoryHeader.md create mode 100644 docs/API_docs/constructors/messageService.md create mode 100644 docs/API_docs/constructors/messageViews.md create mode 100644 docs/API_docs/constructors/messages.affectedFoundMessages.md create mode 100644 docs/API_docs/constructors/messages.affectedHistory.md create mode 100644 docs/API_docs/constructors/messages.affectedMessages.md create mode 100644 docs/API_docs/constructors/messages.allStickers.md create mode 100644 docs/API_docs/constructors/messages.allStickersNotModified.md create mode 100644 docs/API_docs/constructors/messages.archivedStickers.md create mode 100644 docs/API_docs/constructors/messages.availableReactions.md create mode 100644 docs/API_docs/constructors/messages.availableReactionsNotModified.md create mode 100644 docs/API_docs/constructors/messages.botApp.md create mode 100644 docs/API_docs/constructors/messages.botCallbackAnswer.md create mode 100644 docs/API_docs/constructors/messages.botResults.md create mode 100644 docs/API_docs/constructors/messages.channelMessages.md create mode 100644 docs/API_docs/constructors/messages.chatAdminsWithInvites.md create mode 100644 docs/API_docs/constructors/messages.chatFull.md create mode 100644 docs/API_docs/constructors/messages.chatInviteImporters.md create mode 100644 docs/API_docs/constructors/messages.chats.md create mode 100644 docs/API_docs/constructors/messages.chatsSlice.md create mode 100644 docs/API_docs/constructors/messages.checkedHistoryImportPeer.md create mode 100644 docs/API_docs/constructors/messages.dhConfig.md create mode 100644 docs/API_docs/constructors/messages.dhConfigNotModified.md create mode 100644 docs/API_docs/constructors/messages.dialogFilters.md create mode 100644 docs/API_docs/constructors/messages.dialogs.md create mode 100644 docs/API_docs/constructors/messages.dialogsNotModified.md create mode 100644 docs/API_docs/constructors/messages.dialogsSlice.md create mode 100644 docs/API_docs/constructors/messages.discussionMessage.md create mode 100644 docs/API_docs/constructors/messages.emojiGroups.md create mode 100644 docs/API_docs/constructors/messages.emojiGroupsNotModified.md create mode 100644 docs/API_docs/constructors/messages.exportedChatInvite.md create mode 100644 docs/API_docs/constructors/messages.exportedChatInviteReplaced.md create mode 100644 docs/API_docs/constructors/messages.exportedChatInvites.md create mode 100644 docs/API_docs/constructors/messages.favedStickers.md create mode 100644 docs/API_docs/constructors/messages.favedStickersNotModified.md create mode 100644 docs/API_docs/constructors/messages.featuredStickers.md create mode 100644 docs/API_docs/constructors/messages.featuredStickersNotModified.md create mode 100644 docs/API_docs/constructors/messages.forumTopics.md create mode 100644 docs/API_docs/constructors/messages.foundStickerSets.md create mode 100644 docs/API_docs/constructors/messages.foundStickerSetsNotModified.md create mode 100644 docs/API_docs/constructors/messages.highScores.md create mode 100644 docs/API_docs/constructors/messages.historyImport.md create mode 100644 docs/API_docs/constructors/messages.historyImportParsed.md create mode 100644 docs/API_docs/constructors/messages.inactiveChats.md create mode 100644 docs/API_docs/constructors/messages.invitedUsers.md create mode 100644 docs/API_docs/constructors/messages.messageEditData.md create mode 100644 docs/API_docs/constructors/messages.messageReactionsList.md create mode 100644 docs/API_docs/constructors/messages.messageViews.md create mode 100644 docs/API_docs/constructors/messages.messages.md create mode 100644 docs/API_docs/constructors/messages.messagesNotModified.md create mode 100644 docs/API_docs/constructors/messages.messagesSlice.md create mode 100644 docs/API_docs/constructors/messages.myStickers.md create mode 100644 docs/API_docs/constructors/messages.peerDialogs.md create mode 100644 docs/API_docs/constructors/messages.peerSettings.md create mode 100644 docs/API_docs/constructors/messages.quickReplies.md create mode 100644 docs/API_docs/constructors/messages.quickRepliesNotModified.md create mode 100644 docs/API_docs/constructors/messages.reactions.md create mode 100644 docs/API_docs/constructors/messages.reactionsNotModified.md create mode 100644 docs/API_docs/constructors/messages.recentStickers.md create mode 100644 docs/API_docs/constructors/messages.recentStickersNotModified.md create mode 100644 docs/API_docs/constructors/messages.savedDialogs.md create mode 100644 docs/API_docs/constructors/messages.savedDialogsNotModified.md create mode 100644 docs/API_docs/constructors/messages.savedDialogsSlice.md create mode 100644 docs/API_docs/constructors/messages.savedGifs.md create mode 100644 docs/API_docs/constructors/messages.savedGifsNotModified.md create mode 100644 docs/API_docs/constructors/messages.savedReactionTags.md create mode 100644 docs/API_docs/constructors/messages.savedReactionTagsNotModified.md create mode 100644 docs/API_docs/constructors/messages.searchCounter.md create mode 100644 docs/API_docs/constructors/messages.searchResultsCalendar.md create mode 100644 docs/API_docs/constructors/messages.searchResultsPositions.md create mode 100644 docs/API_docs/constructors/messages.sentEncryptedFile.md create mode 100644 docs/API_docs/constructors/messages.sentEncryptedMessage.md create mode 100644 docs/API_docs/constructors/messages.sponsoredMessages.md create mode 100644 docs/API_docs/constructors/messages.sponsoredMessagesEmpty.md create mode 100644 docs/API_docs/constructors/messages.stickerSet.md create mode 100644 docs/API_docs/constructors/messages.stickerSetInstallResultArchive.md create mode 100644 docs/API_docs/constructors/messages.stickerSetInstallResultSuccess.md create mode 100644 docs/API_docs/constructors/messages.stickerSetNotModified.md create mode 100644 docs/API_docs/constructors/messages.stickers.md create mode 100644 docs/API_docs/constructors/messages.stickersNotModified.md create mode 100644 docs/API_docs/constructors/messages.transcribedAudio.md create mode 100644 docs/API_docs/constructors/messages.translateResult.md create mode 100644 docs/API_docs/constructors/messages.votesList.md create mode 100644 docs/API_docs/constructors/messages.webPage.md create mode 100644 docs/API_docs/constructors/missingInvitee.md create mode 100644 docs/API_docs/constructors/myBoost.md create mode 100644 docs/API_docs/constructors/nearestDc.md create mode 100644 docs/API_docs/constructors/notificationSoundDefault.md create mode 100644 docs/API_docs/constructors/notificationSoundLocal.md create mode 100644 docs/API_docs/constructors/notificationSoundNone.md create mode 100644 docs/API_docs/constructors/notificationSoundRingtone.md create mode 100644 docs/API_docs/constructors/notifyBroadcasts.md create mode 100644 docs/API_docs/constructors/notifyChats.md create mode 100644 docs/API_docs/constructors/notifyForumTopic.md create mode 100644 docs/API_docs/constructors/notifyPeer.md create mode 100644 docs/API_docs/constructors/notifyUsers.md create mode 100644 docs/API_docs/constructors/null.md create mode 100644 docs/API_docs/constructors/outboxReadDate.md create mode 100644 docs/API_docs/constructors/page.md create mode 100644 docs/API_docs/constructors/pageBlockAnchor.md create mode 100644 docs/API_docs/constructors/pageBlockAudio.md create mode 100644 docs/API_docs/constructors/pageBlockAuthorDate.md create mode 100644 docs/API_docs/constructors/pageBlockBlockquote.md create mode 100644 docs/API_docs/constructors/pageBlockChannel.md create mode 100644 docs/API_docs/constructors/pageBlockCollage.md create mode 100644 docs/API_docs/constructors/pageBlockCover.md create mode 100644 docs/API_docs/constructors/pageBlockDetails.md create mode 100644 docs/API_docs/constructors/pageBlockDivider.md create mode 100644 docs/API_docs/constructors/pageBlockEmbed.md create mode 100644 docs/API_docs/constructors/pageBlockEmbedPost.md create mode 100644 docs/API_docs/constructors/pageBlockFooter.md create mode 100644 docs/API_docs/constructors/pageBlockHeader.md create mode 100644 docs/API_docs/constructors/pageBlockKicker.md create mode 100644 docs/API_docs/constructors/pageBlockList.md create mode 100644 docs/API_docs/constructors/pageBlockMap.md create mode 100644 docs/API_docs/constructors/pageBlockOrderedList.md create mode 100644 docs/API_docs/constructors/pageBlockParagraph.md create mode 100644 docs/API_docs/constructors/pageBlockPhoto.md create mode 100644 docs/API_docs/constructors/pageBlockPreformatted.md create mode 100644 docs/API_docs/constructors/pageBlockPullquote.md create mode 100644 docs/API_docs/constructors/pageBlockRelatedArticles.md create mode 100644 docs/API_docs/constructors/pageBlockSlideshow.md create mode 100644 docs/API_docs/constructors/pageBlockSubheader.md create mode 100644 docs/API_docs/constructors/pageBlockSubtitle.md create mode 100644 docs/API_docs/constructors/pageBlockTable.md create mode 100644 docs/API_docs/constructors/pageBlockTitle.md create mode 100644 docs/API_docs/constructors/pageBlockUnsupported.md create mode 100644 docs/API_docs/constructors/pageBlockVideo.md create mode 100644 docs/API_docs/constructors/pageCaption.md create mode 100644 docs/API_docs/constructors/pageListItemBlocks.md create mode 100644 docs/API_docs/constructors/pageListItemText.md create mode 100644 docs/API_docs/constructors/pageListOrderedItemBlocks.md create mode 100644 docs/API_docs/constructors/pageListOrderedItemText.md create mode 100644 docs/API_docs/constructors/pageRelatedArticle.md create mode 100644 docs/API_docs/constructors/pageTableCell.md create mode 100644 docs/API_docs/constructors/pageTableRow.md create mode 100644 docs/API_docs/constructors/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow.md create mode 100644 docs/API_docs/constructors/passwordKdfAlgoUnknown.md create mode 100644 docs/API_docs/constructors/paymentCharge.md create mode 100644 docs/API_docs/constructors/paymentFormMethod.md create mode 100644 docs/API_docs/constructors/paymentRequestedInfo.md create mode 100644 docs/API_docs/constructors/paymentSavedCredentialsCard.md create mode 100644 docs/API_docs/constructors/payments.bankCardData.md create mode 100644 docs/API_docs/constructors/payments.checkedGiftCode.md create mode 100644 docs/API_docs/constructors/payments.exportedInvoice.md create mode 100644 docs/API_docs/constructors/payments.giveawayInfo.md create mode 100644 docs/API_docs/constructors/payments.giveawayInfoResults.md create mode 100644 docs/API_docs/constructors/payments.paymentForm.md create mode 100644 docs/API_docs/constructors/payments.paymentReceipt.md create mode 100644 docs/API_docs/constructors/payments.paymentResult.md create mode 100644 docs/API_docs/constructors/payments.paymentVerificationNeeded.md create mode 100644 docs/API_docs/constructors/payments.savedInfo.md create mode 100644 docs/API_docs/constructors/payments.validatedRequestedInfo.md create mode 100644 docs/API_docs/constructors/peerBlocked.md create mode 100644 docs/API_docs/constructors/peerChannel.md create mode 100644 docs/API_docs/constructors/peerChat.md create mode 100644 docs/API_docs/constructors/peerColor.md create mode 100644 docs/API_docs/constructors/peerLocated.md create mode 100644 docs/API_docs/constructors/peerNotifySettings.md create mode 100644 docs/API_docs/constructors/peerSelfLocated.md create mode 100644 docs/API_docs/constructors/peerSettings.md create mode 100644 docs/API_docs/constructors/peerStories.md create mode 100644 docs/API_docs/constructors/peerUser.md create mode 100644 docs/API_docs/constructors/phone.exportedGroupCallInvite.md create mode 100644 docs/API_docs/constructors/phone.groupCall.md create mode 100644 docs/API_docs/constructors/phone.groupCallStreamChannels.md create mode 100644 docs/API_docs/constructors/phone.groupCallStreamRtmpUrl.md create mode 100644 docs/API_docs/constructors/phone.groupParticipants.md create mode 100644 docs/API_docs/constructors/phone.joinAsPeers.md create mode 100644 docs/API_docs/constructors/phone.phoneCall.md create mode 100644 docs/API_docs/constructors/phoneCall.md create mode 100644 docs/API_docs/constructors/phoneCallAccepted.md create mode 100644 docs/API_docs/constructors/phoneCallDiscardReasonBusy.md create mode 100644 docs/API_docs/constructors/phoneCallDiscardReasonDisconnect.md create mode 100644 docs/API_docs/constructors/phoneCallDiscardReasonHangup.md create mode 100644 docs/API_docs/constructors/phoneCallDiscardReasonMissed.md create mode 100644 docs/API_docs/constructors/phoneCallDiscarded.md create mode 100644 docs/API_docs/constructors/phoneCallEmpty.md create mode 100644 docs/API_docs/constructors/phoneCallProtocol.md create mode 100644 docs/API_docs/constructors/phoneCallRequested.md create mode 100644 docs/API_docs/constructors/phoneCallWaiting.md create mode 100644 docs/API_docs/constructors/phoneConnection.md create mode 100644 docs/API_docs/constructors/phoneConnectionWebrtc.md create mode 100644 docs/API_docs/constructors/photo.md create mode 100644 docs/API_docs/constructors/photoCachedSize.md create mode 100644 docs/API_docs/constructors/photoCachedSize_23.md create mode 100644 docs/API_docs/constructors/photoEmpty.md create mode 100644 docs/API_docs/constructors/photoPathSize.md create mode 100644 docs/API_docs/constructors/photoSize.md create mode 100644 docs/API_docs/constructors/photoSizeEmpty.md create mode 100644 docs/API_docs/constructors/photoSizeProgressive.md create mode 100644 docs/API_docs/constructors/photoSize_23.md create mode 100644 docs/API_docs/constructors/photoStrippedSize.md create mode 100644 docs/API_docs/constructors/photos.photo.md create mode 100644 docs/API_docs/constructors/photos.photos.md create mode 100644 docs/API_docs/constructors/photos.photosSlice.md create mode 100644 docs/API_docs/constructors/poll.md create mode 100644 docs/API_docs/constructors/pollAnswer.md create mode 100644 docs/API_docs/constructors/pollAnswerVoters.md create mode 100644 docs/API_docs/constructors/pollResults.md create mode 100644 docs/API_docs/constructors/popularContact.md create mode 100644 docs/API_docs/constructors/postAddress.md create mode 100644 docs/API_docs/constructors/postInteractionCountersMessage.md create mode 100644 docs/API_docs/constructors/postInteractionCountersStory.md create mode 100644 docs/API_docs/constructors/premium.boostsList.md create mode 100644 docs/API_docs/constructors/premium.boostsStatus.md create mode 100644 docs/API_docs/constructors/premium.myBoosts.md create mode 100644 docs/API_docs/constructors/premiumGiftCodeOption.md create mode 100644 docs/API_docs/constructors/premiumGiftOption.md create mode 100644 docs/API_docs/constructors/premiumSubscriptionOption.md create mode 100644 docs/API_docs/constructors/prepaidGiveaway.md create mode 100644 docs/API_docs/constructors/privacyKeyAbout.md create mode 100644 docs/API_docs/constructors/privacyKeyAddedByPhone.md create mode 100644 docs/API_docs/constructors/privacyKeyBirthday.md create mode 100644 docs/API_docs/constructors/privacyKeyChatInvite.md create mode 100644 docs/API_docs/constructors/privacyKeyForwards.md create mode 100644 docs/API_docs/constructors/privacyKeyPhoneCall.md create mode 100644 docs/API_docs/constructors/privacyKeyPhoneNumber.md create mode 100644 docs/API_docs/constructors/privacyKeyPhoneP2P.md create mode 100644 docs/API_docs/constructors/privacyKeyProfilePhoto.md create mode 100644 docs/API_docs/constructors/privacyKeyStatusTimestamp.md create mode 100644 docs/API_docs/constructors/privacyKeyVoiceMessages.md create mode 100644 docs/API_docs/constructors/privacyValueAllowAll.md create mode 100644 docs/API_docs/constructors/privacyValueAllowChatParticipants.md create mode 100644 docs/API_docs/constructors/privacyValueAllowCloseFriends.md create mode 100644 docs/API_docs/constructors/privacyValueAllowContacts.md create mode 100644 docs/API_docs/constructors/privacyValueAllowPremium.md create mode 100644 docs/API_docs/constructors/privacyValueAllowUsers.md create mode 100644 docs/API_docs/constructors/privacyValueDisallowAll.md create mode 100644 docs/API_docs/constructors/privacyValueDisallowChatParticipants.md create mode 100644 docs/API_docs/constructors/privacyValueDisallowContacts.md create mode 100644 docs/API_docs/constructors/privacyValueDisallowUsers.md create mode 100644 docs/API_docs/constructors/publicForwardMessage.md create mode 100644 docs/API_docs/constructors/publicForwardStory.md create mode 100644 docs/API_docs/constructors/quickReply.md create mode 100644 docs/API_docs/constructors/reactionCount.md create mode 100644 docs/API_docs/constructors/reactionCustomEmoji.md create mode 100644 docs/API_docs/constructors/reactionEmoji.md create mode 100644 docs/API_docs/constructors/reactionEmpty.md create mode 100644 docs/API_docs/constructors/reactionNotificationsFromAll.md create mode 100644 docs/API_docs/constructors/reactionNotificationsFromContacts.md create mode 100644 docs/API_docs/constructors/reactionsNotifySettings.md create mode 100644 docs/API_docs/constructors/readParticipantDate.md create mode 100644 docs/API_docs/constructors/receivedNotifyMessage.md create mode 100644 docs/API_docs/constructors/recentMeUrlChat.md create mode 100644 docs/API_docs/constructors/recentMeUrlChatInvite.md create mode 100644 docs/API_docs/constructors/recentMeUrlStickerSet.md create mode 100644 docs/API_docs/constructors/recentMeUrlUnknown.md create mode 100644 docs/API_docs/constructors/recentMeUrlUser.md create mode 100644 docs/API_docs/constructors/replyInlineMarkup.md create mode 100644 docs/API_docs/constructors/replyKeyboardForceReply.md create mode 100644 docs/API_docs/constructors/replyKeyboardHide.md create mode 100644 docs/API_docs/constructors/replyKeyboardMarkup.md create mode 100644 docs/API_docs/constructors/requestPeerTypeBroadcast.md create mode 100644 docs/API_docs/constructors/requestPeerTypeChat.md create mode 100644 docs/API_docs/constructors/requestPeerTypeUser.md create mode 100644 docs/API_docs/constructors/requestedPeerChannel.md create mode 100644 docs/API_docs/constructors/requestedPeerChat.md create mode 100644 docs/API_docs/constructors/requestedPeerUser.md create mode 100644 docs/API_docs/constructors/restrictionReason.md create mode 100644 docs/API_docs/constructors/savedDialog.md create mode 100644 docs/API_docs/constructors/savedPhoneContact.md create mode 100644 docs/API_docs/constructors/savedReactionTag.md create mode 100644 docs/API_docs/constructors/searchResultPosition.md create mode 100644 docs/API_docs/constructors/searchResultsCalendarPeriod.md create mode 100644 docs/API_docs/constructors/secureCredentialsEncrypted.md create mode 100644 docs/API_docs/constructors/secureData.md create mode 100644 docs/API_docs/constructors/secureFile.md create mode 100644 docs/API_docs/constructors/secureFileEmpty.md create mode 100644 docs/API_docs/constructors/securePasswordKdfAlgoPBKDF2HMACSHA512iter100000.md create mode 100644 docs/API_docs/constructors/securePasswordKdfAlgoSHA512.md create mode 100644 docs/API_docs/constructors/securePasswordKdfAlgoUnknown.md create mode 100644 docs/API_docs/constructors/securePlainEmail.md create mode 100644 docs/API_docs/constructors/securePlainPhone.md create mode 100644 docs/API_docs/constructors/secureRequiredType.md create mode 100644 docs/API_docs/constructors/secureRequiredTypeOneOf.md create mode 100644 docs/API_docs/constructors/secureSecretSettings.md create mode 100644 docs/API_docs/constructors/secureValue.md create mode 100644 docs/API_docs/constructors/secureValueError.md create mode 100644 docs/API_docs/constructors/secureValueErrorData.md create mode 100644 docs/API_docs/constructors/secureValueErrorFile.md create mode 100644 docs/API_docs/constructors/secureValueErrorFiles.md create mode 100644 docs/API_docs/constructors/secureValueErrorFrontSide.md create mode 100644 docs/API_docs/constructors/secureValueErrorReverseSide.md create mode 100644 docs/API_docs/constructors/secureValueErrorSelfie.md create mode 100644 docs/API_docs/constructors/secureValueErrorTranslationFile.md create mode 100644 docs/API_docs/constructors/secureValueErrorTranslationFiles.md create mode 100644 docs/API_docs/constructors/secureValueHash.md create mode 100644 docs/API_docs/constructors/secureValueTypeAddress.md create mode 100644 docs/API_docs/constructors/secureValueTypeBankStatement.md create mode 100644 docs/API_docs/constructors/secureValueTypeDriverLicense.md create mode 100644 docs/API_docs/constructors/secureValueTypeEmail.md create mode 100644 docs/API_docs/constructors/secureValueTypeIdentityCard.md create mode 100644 docs/API_docs/constructors/secureValueTypeInternalPassport.md create mode 100644 docs/API_docs/constructors/secureValueTypePassport.md create mode 100644 docs/API_docs/constructors/secureValueTypePassportRegistration.md create mode 100644 docs/API_docs/constructors/secureValueTypePersonalDetails.md create mode 100644 docs/API_docs/constructors/secureValueTypePhone.md create mode 100644 docs/API_docs/constructors/secureValueTypeRentalAgreement.md create mode 100644 docs/API_docs/constructors/secureValueTypeTemporaryRegistration.md create mode 100644 docs/API_docs/constructors/secureValueTypeUtilityBill.md create mode 100644 docs/API_docs/constructors/sendAsPeer.md create mode 100644 docs/API_docs/constructors/sendMessageCancelAction.md create mode 100644 docs/API_docs/constructors/sendMessageChooseContactAction.md create mode 100644 docs/API_docs/constructors/sendMessageChooseStickerAction.md create mode 100644 docs/API_docs/constructors/sendMessageEmojiInteraction.md create mode 100644 docs/API_docs/constructors/sendMessageEmojiInteractionSeen.md create mode 100644 docs/API_docs/constructors/sendMessageGamePlayAction.md create mode 100644 docs/API_docs/constructors/sendMessageGeoLocationAction.md create mode 100644 docs/API_docs/constructors/sendMessageHistoryImportAction.md create mode 100644 docs/API_docs/constructors/sendMessageRecordAudioAction.md create mode 100644 docs/API_docs/constructors/sendMessageRecordRoundAction.md create mode 100644 docs/API_docs/constructors/sendMessageRecordVideoAction.md create mode 100644 docs/API_docs/constructors/sendMessageTypingAction.md create mode 100644 docs/API_docs/constructors/sendMessageUploadAudioAction.md create mode 100644 docs/API_docs/constructors/sendMessageUploadAudioAction_17.md create mode 100644 docs/API_docs/constructors/sendMessageUploadDocumentAction.md create mode 100644 docs/API_docs/constructors/sendMessageUploadDocumentAction_17.md create mode 100644 docs/API_docs/constructors/sendMessageUploadPhotoAction.md create mode 100644 docs/API_docs/constructors/sendMessageUploadPhotoAction_17.md create mode 100644 docs/API_docs/constructors/sendMessageUploadRoundAction.md create mode 100644 docs/API_docs/constructors/sendMessageUploadRoundAction_66.md create mode 100644 docs/API_docs/constructors/sendMessageUploadVideoAction.md create mode 100644 docs/API_docs/constructors/sendMessageUploadVideoAction_17.md create mode 100644 docs/API_docs/constructors/shippingOption.md create mode 100644 docs/API_docs/constructors/simpleWebViewResultUrl.md create mode 100644 docs/API_docs/constructors/smsJob.md create mode 100644 docs/API_docs/constructors/smsjobs.eligibleToJoin.md create mode 100644 docs/API_docs/constructors/smsjobs.status.md create mode 100644 docs/API_docs/constructors/speakingInGroupCallAction.md create mode 100644 docs/API_docs/constructors/sponsoredMessage.md create mode 100644 docs/API_docs/constructors/sponsoredMessageReportOption.md create mode 100644 docs/API_docs/constructors/stats.broadcastRevenueStats.md create mode 100644 docs/API_docs/constructors/stats.broadcastRevenueTransactions.md create mode 100644 docs/API_docs/constructors/stats.broadcastRevenueWithdrawalUrl.md create mode 100644 docs/API_docs/constructors/stats.broadcastStats.md create mode 100644 docs/API_docs/constructors/stats.megagroupStats.md create mode 100644 docs/API_docs/constructors/stats.messageStats.md create mode 100644 docs/API_docs/constructors/stats.publicForwards.md create mode 100644 docs/API_docs/constructors/stats.storyStats.md create mode 100644 docs/API_docs/constructors/statsAbsValueAndPrev.md create mode 100644 docs/API_docs/constructors/statsDateRangeDays.md create mode 100644 docs/API_docs/constructors/statsGraph.md create mode 100644 docs/API_docs/constructors/statsGraphAsync.md create mode 100644 docs/API_docs/constructors/statsGraphError.md create mode 100644 docs/API_docs/constructors/statsGroupTopAdmin.md create mode 100644 docs/API_docs/constructors/statsGroupTopInviter.md create mode 100644 docs/API_docs/constructors/statsGroupTopPoster.md create mode 100644 docs/API_docs/constructors/statsPercentValue.md create mode 100644 docs/API_docs/constructors/statsURL.md create mode 100644 docs/API_docs/constructors/stickerKeyword.md create mode 100644 docs/API_docs/constructors/stickerPack.md create mode 100644 docs/API_docs/constructors/stickerSet.md create mode 100644 docs/API_docs/constructors/stickerSetCovered.md create mode 100644 docs/API_docs/constructors/stickerSetFullCovered.md create mode 100644 docs/API_docs/constructors/stickerSetMultiCovered.md create mode 100644 docs/API_docs/constructors/stickerSetNoCovered.md create mode 100644 docs/API_docs/constructors/stickers.suggestedShortName.md create mode 100644 docs/API_docs/constructors/storage.fileGif.md create mode 100644 docs/API_docs/constructors/storage.fileJpeg.md create mode 100644 docs/API_docs/constructors/storage.fileMov.md create mode 100644 docs/API_docs/constructors/storage.fileMp3.md create mode 100644 docs/API_docs/constructors/storage.fileMp4.md create mode 100644 docs/API_docs/constructors/storage.filePartial.md create mode 100644 docs/API_docs/constructors/storage.filePdf.md create mode 100644 docs/API_docs/constructors/storage.filePng.md create mode 100644 docs/API_docs/constructors/storage.fileUnknown.md create mode 100644 docs/API_docs/constructors/storage.fileWebp.md create mode 100644 docs/API_docs/constructors/stories.allStories.md create mode 100644 docs/API_docs/constructors/stories.allStoriesNotModified.md create mode 100644 docs/API_docs/constructors/stories.peerStories.md create mode 100644 docs/API_docs/constructors/stories.stories.md create mode 100644 docs/API_docs/constructors/stories.storyReactionsList.md create mode 100644 docs/API_docs/constructors/stories.storyViews.md create mode 100644 docs/API_docs/constructors/stories.storyViewsList.md create mode 100644 docs/API_docs/constructors/storiesStealthMode.md create mode 100644 docs/API_docs/constructors/storyFwdHeader.md create mode 100644 docs/API_docs/constructors/storyItem.md create mode 100644 docs/API_docs/constructors/storyItemDeleted.md create mode 100644 docs/API_docs/constructors/storyItemSkipped.md create mode 100644 docs/API_docs/constructors/storyReaction.md create mode 100644 docs/API_docs/constructors/storyReactionPublicForward.md create mode 100644 docs/API_docs/constructors/storyReactionPublicRepost.md create mode 100644 docs/API_docs/constructors/storyView.md create mode 100644 docs/API_docs/constructors/storyViewPublicForward.md create mode 100644 docs/API_docs/constructors/storyViewPublicRepost.md create mode 100644 docs/API_docs/constructors/storyViews.md create mode 100644 docs/API_docs/constructors/textAnchor.md create mode 100644 docs/API_docs/constructors/textBold.md create mode 100644 docs/API_docs/constructors/textConcat.md create mode 100644 docs/API_docs/constructors/textEmail.md create mode 100644 docs/API_docs/constructors/textEmpty.md create mode 100644 docs/API_docs/constructors/textFixed.md create mode 100644 docs/API_docs/constructors/textImage.md create mode 100644 docs/API_docs/constructors/textItalic.md create mode 100644 docs/API_docs/constructors/textMarked.md create mode 100644 docs/API_docs/constructors/textPhone.md create mode 100644 docs/API_docs/constructors/textPlain.md create mode 100644 docs/API_docs/constructors/textStrike.md create mode 100644 docs/API_docs/constructors/textSubscript.md create mode 100644 docs/API_docs/constructors/textSuperscript.md create mode 100644 docs/API_docs/constructors/textUnderline.md create mode 100644 docs/API_docs/constructors/textUrl.md create mode 100644 docs/API_docs/constructors/textWithEntities.md create mode 100644 docs/API_docs/constructors/theme.md create mode 100644 docs/API_docs/constructors/themeSettings.md create mode 100644 docs/API_docs/constructors/timezone.md create mode 100644 docs/API_docs/constructors/topPeer.md create mode 100644 docs/API_docs/constructors/topPeerCategoryBotsInline.md create mode 100644 docs/API_docs/constructors/topPeerCategoryBotsPM.md create mode 100644 docs/API_docs/constructors/topPeerCategoryChannels.md create mode 100644 docs/API_docs/constructors/topPeerCategoryCorrespondents.md create mode 100644 docs/API_docs/constructors/topPeerCategoryForwardChats.md create mode 100644 docs/API_docs/constructors/topPeerCategoryForwardUsers.md create mode 100644 docs/API_docs/constructors/topPeerCategoryGroups.md create mode 100644 docs/API_docs/constructors/topPeerCategoryPeers.md create mode 100644 docs/API_docs/constructors/topPeerCategoryPhoneCalls.md create mode 100644 docs/API_docs/constructors/true.md create mode 100644 docs/API_docs/constructors/updateAttachMenuBots.md create mode 100644 docs/API_docs/constructors/updateAutoSaveSettings.md create mode 100644 docs/API_docs/constructors/updateBotBusinessConnect.md create mode 100644 docs/API_docs/constructors/updateBotCallbackQuery.md create mode 100644 docs/API_docs/constructors/updateBotChatBoost.md create mode 100644 docs/API_docs/constructors/updateBotChatInviteRequester.md create mode 100644 docs/API_docs/constructors/updateBotCommands.md create mode 100644 docs/API_docs/constructors/updateBotDeleteBusinessMessage.md create mode 100644 docs/API_docs/constructors/updateBotEditBusinessMessage.md create mode 100644 docs/API_docs/constructors/updateBotInlineQuery.md create mode 100644 docs/API_docs/constructors/updateBotInlineSend.md create mode 100644 docs/API_docs/constructors/updateBotMenuButton.md create mode 100644 docs/API_docs/constructors/updateBotMessageReaction.md create mode 100644 docs/API_docs/constructors/updateBotMessageReactions.md create mode 100644 docs/API_docs/constructors/updateBotNewBusinessMessage.md create mode 100644 docs/API_docs/constructors/updateBotPrecheckoutQuery.md create mode 100644 docs/API_docs/constructors/updateBotShippingQuery.md create mode 100644 docs/API_docs/constructors/updateBotStopped.md create mode 100644 docs/API_docs/constructors/updateBotWebhookJSON.md create mode 100644 docs/API_docs/constructors/updateBotWebhookJSONQuery.md create mode 100644 docs/API_docs/constructors/updateChannel.md create mode 100644 docs/API_docs/constructors/updateChannelAvailableMessages.md create mode 100644 docs/API_docs/constructors/updateChannelMessageForwards.md create mode 100644 docs/API_docs/constructors/updateChannelMessageViews.md create mode 100644 docs/API_docs/constructors/updateChannelParticipant.md create mode 100644 docs/API_docs/constructors/updateChannelPinnedTopic.md create mode 100644 docs/API_docs/constructors/updateChannelPinnedTopics.md create mode 100644 docs/API_docs/constructors/updateChannelReadMessagesContents.md create mode 100644 docs/API_docs/constructors/updateChannelTooLong.md create mode 100644 docs/API_docs/constructors/updateChannelUserTyping.md create mode 100644 docs/API_docs/constructors/updateChannelViewForumAsMessages.md create mode 100644 docs/API_docs/constructors/updateChannelWebPage.md create mode 100644 docs/API_docs/constructors/updateChat.md create mode 100644 docs/API_docs/constructors/updateChatDefaultBannedRights.md create mode 100644 docs/API_docs/constructors/updateChatParticipant.md create mode 100644 docs/API_docs/constructors/updateChatParticipantAdd.md create mode 100644 docs/API_docs/constructors/updateChatParticipantAdmin.md create mode 100644 docs/API_docs/constructors/updateChatParticipantDelete.md create mode 100644 docs/API_docs/constructors/updateChatParticipants.md create mode 100644 docs/API_docs/constructors/updateChatUserTyping.md create mode 100644 docs/API_docs/constructors/updateConfig.md create mode 100644 docs/API_docs/constructors/updateContactsReset.md create mode 100644 docs/API_docs/constructors/updateDcOptions.md create mode 100644 docs/API_docs/constructors/updateDeleteChannelMessages.md create mode 100644 docs/API_docs/constructors/updateDeleteMessages.md create mode 100644 docs/API_docs/constructors/updateDeleteQuickReply.md create mode 100644 docs/API_docs/constructors/updateDeleteQuickReplyMessages.md create mode 100644 docs/API_docs/constructors/updateDeleteScheduledMessages.md create mode 100644 docs/API_docs/constructors/updateDialogFilter.md create mode 100644 docs/API_docs/constructors/updateDialogFilterOrder.md create mode 100644 docs/API_docs/constructors/updateDialogFilters.md create mode 100644 docs/API_docs/constructors/updateDialogPinned.md create mode 100644 docs/API_docs/constructors/updateDialogUnreadMark.md create mode 100644 docs/API_docs/constructors/updateDraftMessage.md create mode 100644 docs/API_docs/constructors/updateEditChannelMessage.md create mode 100644 docs/API_docs/constructors/updateEditMessage.md create mode 100644 docs/API_docs/constructors/updateEncryptedChatTyping.md create mode 100644 docs/API_docs/constructors/updateEncryptedMessagesRead.md create mode 100644 docs/API_docs/constructors/updateEncryption.md create mode 100644 docs/API_docs/constructors/updateFavedStickers.md create mode 100644 docs/API_docs/constructors/updateFolderPeers.md create mode 100644 docs/API_docs/constructors/updateGeoLiveViewed.md create mode 100644 docs/API_docs/constructors/updateGroupCall.md create mode 100644 docs/API_docs/constructors/updateGroupCallConnection.md create mode 100644 docs/API_docs/constructors/updateGroupCallParticipants.md create mode 100644 docs/API_docs/constructors/updateInlineBotCallbackQuery.md create mode 100644 docs/API_docs/constructors/updateLangPack.md create mode 100644 docs/API_docs/constructors/updateLangPackTooLong.md create mode 100644 docs/API_docs/constructors/updateLoginToken.md create mode 100644 docs/API_docs/constructors/updateMessageExtendedMedia.md create mode 100644 docs/API_docs/constructors/updateMessageID.md create mode 100644 docs/API_docs/constructors/updateMessagePoll.md create mode 100644 docs/API_docs/constructors/updateMessagePollVote.md create mode 100644 docs/API_docs/constructors/updateMessageReactions.md create mode 100644 docs/API_docs/constructors/updateMoveStickerSetToTop.md create mode 100644 docs/API_docs/constructors/updateNewAuthorization.md create mode 100644 docs/API_docs/constructors/updateNewChannelMessage.md create mode 100644 docs/API_docs/constructors/updateNewEncryptedMessage.md create mode 100644 docs/API_docs/constructors/updateNewMessage.md create mode 100644 docs/API_docs/constructors/updateNewQuickReply.md create mode 100644 docs/API_docs/constructors/updateNewScheduledMessage.md create mode 100644 docs/API_docs/constructors/updateNewStickerSet.md create mode 100644 docs/API_docs/constructors/updateNewStoryReaction.md create mode 100644 docs/API_docs/constructors/updateNotifySettings.md create mode 100644 docs/API_docs/constructors/updatePeerBlocked.md create mode 100644 docs/API_docs/constructors/updatePeerHistoryTTL.md create mode 100644 docs/API_docs/constructors/updatePeerLocated.md create mode 100644 docs/API_docs/constructors/updatePeerSettings.md create mode 100644 docs/API_docs/constructors/updatePeerWallpaper.md create mode 100644 docs/API_docs/constructors/updatePendingJoinRequests.md create mode 100644 docs/API_docs/constructors/updatePhoneCall.md create mode 100644 docs/API_docs/constructors/updatePhoneCallSignalingData.md create mode 100644 docs/API_docs/constructors/updatePinnedChannelMessages.md create mode 100644 docs/API_docs/constructors/updatePinnedDialogs.md create mode 100644 docs/API_docs/constructors/updatePinnedMessages.md create mode 100644 docs/API_docs/constructors/updatePinnedSavedDialogs.md create mode 100644 docs/API_docs/constructors/updatePrivacy.md create mode 100644 docs/API_docs/constructors/updatePtsChanged.md create mode 100644 docs/API_docs/constructors/updateQuickReplies.md create mode 100644 docs/API_docs/constructors/updateQuickReplyMessage.md create mode 100644 docs/API_docs/constructors/updateReadChannelDiscussionInbox.md create mode 100644 docs/API_docs/constructors/updateReadChannelDiscussionOutbox.md create mode 100644 docs/API_docs/constructors/updateReadChannelInbox.md create mode 100644 docs/API_docs/constructors/updateReadChannelOutbox.md create mode 100644 docs/API_docs/constructors/updateReadFeaturedEmojiStickers.md create mode 100644 docs/API_docs/constructors/updateReadFeaturedStickers.md create mode 100644 docs/API_docs/constructors/updateReadHistoryInbox.md create mode 100644 docs/API_docs/constructors/updateReadHistoryOutbox.md create mode 100644 docs/API_docs/constructors/updateReadMessagesContents.md create mode 100644 docs/API_docs/constructors/updateReadStories.md create mode 100644 docs/API_docs/constructors/updateRecentEmojiStatuses.md create mode 100644 docs/API_docs/constructors/updateRecentReactions.md create mode 100644 docs/API_docs/constructors/updateRecentStickers.md create mode 100644 docs/API_docs/constructors/updateSavedDialogPinned.md create mode 100644 docs/API_docs/constructors/updateSavedGifs.md create mode 100644 docs/API_docs/constructors/updateSavedReactionTags.md create mode 100644 docs/API_docs/constructors/updateSavedRingtones.md create mode 100644 docs/API_docs/constructors/updateSentStoryReaction.md create mode 100644 docs/API_docs/constructors/updateServiceNotification.md create mode 100644 docs/API_docs/constructors/updateShort.md create mode 100644 docs/API_docs/constructors/updateShortChatMessage.md create mode 100644 docs/API_docs/constructors/updateShortMessage.md create mode 100644 docs/API_docs/constructors/updateShortSentMessage.md create mode 100644 docs/API_docs/constructors/updateSmsJob.md create mode 100644 docs/API_docs/constructors/updateStickerSets.md create mode 100644 docs/API_docs/constructors/updateStickerSetsOrder.md create mode 100644 docs/API_docs/constructors/updateStoriesStealthMode.md create mode 100644 docs/API_docs/constructors/updateStory.md create mode 100644 docs/API_docs/constructors/updateStoryID.md create mode 100644 docs/API_docs/constructors/updateTheme.md create mode 100644 docs/API_docs/constructors/updateTranscribedAudio.md create mode 100644 docs/API_docs/constructors/updateUser.md create mode 100644 docs/API_docs/constructors/updateUserEmojiStatus.md create mode 100644 docs/API_docs/constructors/updateUserName.md create mode 100644 docs/API_docs/constructors/updateUserPhone.md create mode 100644 docs/API_docs/constructors/updateUserStatus.md create mode 100644 docs/API_docs/constructors/updateUserTyping.md create mode 100644 docs/API_docs/constructors/updateWebPage.md create mode 100644 docs/API_docs/constructors/updateWebViewResultSent.md create mode 100644 docs/API_docs/constructors/updates.channelDifference.md create mode 100644 docs/API_docs/constructors/updates.channelDifferenceEmpty.md create mode 100644 docs/API_docs/constructors/updates.channelDifferenceTooLong.md create mode 100644 docs/API_docs/constructors/updates.difference.md create mode 100644 docs/API_docs/constructors/updates.differenceEmpty.md create mode 100644 docs/API_docs/constructors/updates.differenceSlice.md create mode 100644 docs/API_docs/constructors/updates.differenceTooLong.md create mode 100644 docs/API_docs/constructors/updates.md create mode 100644 docs/API_docs/constructors/updates.state.md create mode 100644 docs/API_docs/constructors/updatesCombined.md create mode 100644 docs/API_docs/constructors/updatesTooLong.md create mode 100644 docs/API_docs/constructors/upload.cdnFile.md create mode 100644 docs/API_docs/constructors/upload.cdnFileReuploadNeeded.md create mode 100644 docs/API_docs/constructors/upload.file.md create mode 100644 docs/API_docs/constructors/upload.fileCdnRedirect.md create mode 100644 docs/API_docs/constructors/upload.webFile.md create mode 100644 docs/API_docs/constructors/urlAuthResultAccepted.md create mode 100644 docs/API_docs/constructors/urlAuthResultDefault.md create mode 100644 docs/API_docs/constructors/urlAuthResultRequest.md create mode 100644 docs/API_docs/constructors/user.md create mode 100644 docs/API_docs/constructors/userEmpty.md create mode 100644 docs/API_docs/constructors/userFull.md create mode 100644 docs/API_docs/constructors/userProfilePhoto.md create mode 100644 docs/API_docs/constructors/userProfilePhotoEmpty.md create mode 100644 docs/API_docs/constructors/userStatusEmpty.md create mode 100644 docs/API_docs/constructors/userStatusLastMonth.md create mode 100644 docs/API_docs/constructors/userStatusLastWeek.md create mode 100644 docs/API_docs/constructors/userStatusOffline.md create mode 100644 docs/API_docs/constructors/userStatusOnline.md create mode 100644 docs/API_docs/constructors/userStatusRecently.md create mode 100644 docs/API_docs/constructors/username.md create mode 100644 docs/API_docs/constructors/users.userFull.md create mode 100644 docs/API_docs/constructors/videoSize.md create mode 100644 docs/API_docs/constructors/videoSizeEmojiMarkup.md create mode 100644 docs/API_docs/constructors/videoSizeStickerMarkup.md create mode 100644 docs/API_docs/constructors/wallPaper.md create mode 100644 docs/API_docs/constructors/wallPaperNoFile.md create mode 100644 docs/API_docs/constructors/wallPaperSettings.md create mode 100644 docs/API_docs/constructors/webAuthorization.md create mode 100644 docs/API_docs/constructors/webDocument.md create mode 100644 docs/API_docs/constructors/webDocumentNoProxy.md create mode 100644 docs/API_docs/constructors/webPage.md create mode 100644 docs/API_docs/constructors/webPageAttributeStickerSet.md create mode 100644 docs/API_docs/constructors/webPageAttributeStory.md create mode 100644 docs/API_docs/constructors/webPageAttributeTheme.md create mode 100644 docs/API_docs/constructors/webPageEmpty.md create mode 100644 docs/API_docs/constructors/webPageNotModified.md create mode 100644 docs/API_docs/constructors/webPagePending.md create mode 100644 docs/API_docs/constructors/webViewMessageSent.md create mode 100644 docs/API_docs/constructors/webViewResultUrl.md create mode 100644 docs/API_docs/index.md create mode 100644 docs/API_docs/methods/account.acceptAuthorization.md create mode 100644 docs/API_docs/methods/account.cancelPasswordEmail.md create mode 100644 docs/API_docs/methods/account.changeAuthorizationSettings.md create mode 100644 docs/API_docs/methods/account.changePhone.md create mode 100644 docs/API_docs/methods/account.checkUsername.md create mode 100644 docs/API_docs/methods/account.clearRecentEmojiStatuses.md create mode 100644 docs/API_docs/methods/account.confirmPasswordEmail.md create mode 100644 docs/API_docs/methods/account.confirmPhone.md create mode 100644 docs/API_docs/methods/account.createBusinessChatLink.md create mode 100644 docs/API_docs/methods/account.createTheme.md create mode 100644 docs/API_docs/methods/account.declinePasswordReset.md create mode 100644 docs/API_docs/methods/account.deleteAccount.md create mode 100644 docs/API_docs/methods/account.deleteAutoSaveExceptions.md create mode 100644 docs/API_docs/methods/account.deleteBusinessChatLink.md create mode 100644 docs/API_docs/methods/account.deleteSecureValue.md create mode 100644 docs/API_docs/methods/account.disablePeerConnectedBot.md create mode 100644 docs/API_docs/methods/account.editBusinessChatLink.md create mode 100644 docs/API_docs/methods/account.finishTakeoutSession.md create mode 100644 docs/API_docs/methods/account.getAccountTTL.md create mode 100644 docs/API_docs/methods/account.getAllSecureValues.md create mode 100644 docs/API_docs/methods/account.getAuthorizationForm.md create mode 100644 docs/API_docs/methods/account.getAuthorizations.md create mode 100644 docs/API_docs/methods/account.getAutoDownloadSettings.md create mode 100644 docs/API_docs/methods/account.getAutoSaveSettings.md create mode 100644 docs/API_docs/methods/account.getBotBusinessConnection.md create mode 100644 docs/API_docs/methods/account.getBusinessChatLinks.md create mode 100644 docs/API_docs/methods/account.getChannelDefaultEmojiStatuses.md create mode 100644 docs/API_docs/methods/account.getChannelRestrictedStatusEmojis.md create mode 100644 docs/API_docs/methods/account.getChatThemes.md create mode 100644 docs/API_docs/methods/account.getConnectedBots.md create mode 100644 docs/API_docs/methods/account.getContactSignUpNotification.md create mode 100644 docs/API_docs/methods/account.getContentSettings.md create mode 100644 docs/API_docs/methods/account.getDefaultBackgroundEmojis.md create mode 100644 docs/API_docs/methods/account.getDefaultEmojiStatuses.md create mode 100644 docs/API_docs/methods/account.getDefaultGroupPhotoEmojis.md create mode 100644 docs/API_docs/methods/account.getDefaultProfilePhotoEmojis.md create mode 100644 docs/API_docs/methods/account.getGlobalPrivacySettings.md create mode 100644 docs/API_docs/methods/account.getMultiWallPapers.md create mode 100644 docs/API_docs/methods/account.getNotifyExceptions.md create mode 100644 docs/API_docs/methods/account.getNotifySettings.md create mode 100644 docs/API_docs/methods/account.getPassword.md create mode 100644 docs/API_docs/methods/account.getPasswordSettings.md create mode 100644 docs/API_docs/methods/account.getPrivacy.md create mode 100644 docs/API_docs/methods/account.getReactionsNotifySettings.md create mode 100644 docs/API_docs/methods/account.getRecentEmojiStatuses.md create mode 100644 docs/API_docs/methods/account.getSavedRingtones.md create mode 100644 docs/API_docs/methods/account.getSecureValue.md create mode 100644 docs/API_docs/methods/account.getTheme.md create mode 100644 docs/API_docs/methods/account.getThemes.md create mode 100644 docs/API_docs/methods/account.getTmpPassword.md create mode 100644 docs/API_docs/methods/account.getWallPaper.md create mode 100644 docs/API_docs/methods/account.getWallPapers.md create mode 100644 docs/API_docs/methods/account.getWebAuthorizations.md create mode 100644 docs/API_docs/methods/account.initTakeoutSession.md create mode 100644 docs/API_docs/methods/account.installTheme.md create mode 100644 docs/API_docs/methods/account.installWallPaper.md create mode 100644 docs/API_docs/methods/account.invalidateSignInCodes.md create mode 100644 docs/API_docs/methods/account.registerDevice.md create mode 100644 docs/API_docs/methods/account.reorderUsernames.md create mode 100644 docs/API_docs/methods/account.reportPeer.md create mode 100644 docs/API_docs/methods/account.reportProfilePhoto.md create mode 100644 docs/API_docs/methods/account.resendPasswordEmail.md create mode 100644 docs/API_docs/methods/account.resetAuthorization.md create mode 100644 docs/API_docs/methods/account.resetNotifySettings.md create mode 100644 docs/API_docs/methods/account.resetPassword.md create mode 100644 docs/API_docs/methods/account.resetWallPapers.md create mode 100644 docs/API_docs/methods/account.resetWebAuthorization.md create mode 100644 docs/API_docs/methods/account.resetWebAuthorizations.md create mode 100644 docs/API_docs/methods/account.resolveBusinessChatLink.md create mode 100644 docs/API_docs/methods/account.saveAutoDownloadSettings.md create mode 100644 docs/API_docs/methods/account.saveAutoSaveSettings.md create mode 100644 docs/API_docs/methods/account.saveRingtone.md create mode 100644 docs/API_docs/methods/account.saveSecureValue.md create mode 100644 docs/API_docs/methods/account.saveTheme.md create mode 100644 docs/API_docs/methods/account.saveWallPaper.md create mode 100644 docs/API_docs/methods/account.sendChangePhoneCode.md create mode 100644 docs/API_docs/methods/account.sendConfirmPhoneCode.md create mode 100644 docs/API_docs/methods/account.sendVerifyEmailCode.md create mode 100644 docs/API_docs/methods/account.sendVerifyPhoneCode.md create mode 100644 docs/API_docs/methods/account.setAccountTTL.md create mode 100644 docs/API_docs/methods/account.setAuthorizationTTL.md create mode 100644 docs/API_docs/methods/account.setContactSignUpNotification.md create mode 100644 docs/API_docs/methods/account.setContentSettings.md create mode 100644 docs/API_docs/methods/account.setGlobalPrivacySettings.md create mode 100644 docs/API_docs/methods/account.setPrivacy.md create mode 100644 docs/API_docs/methods/account.setReactionsNotifySettings.md create mode 100644 docs/API_docs/methods/account.toggleConnectedBotPaused.md create mode 100644 docs/API_docs/methods/account.toggleSponsoredMessages.md create mode 100644 docs/API_docs/methods/account.toggleUsername.md create mode 100644 docs/API_docs/methods/account.unregisterDevice.md create mode 100644 docs/API_docs/methods/account.updateBirthday.md create mode 100644 docs/API_docs/methods/account.updateBusinessAwayMessage.md create mode 100644 docs/API_docs/methods/account.updateBusinessGreetingMessage.md create mode 100644 docs/API_docs/methods/account.updateBusinessIntro.md create mode 100644 docs/API_docs/methods/account.updateBusinessLocation.md create mode 100644 docs/API_docs/methods/account.updateBusinessWorkHours.md create mode 100644 docs/API_docs/methods/account.updateColor.md create mode 100644 docs/API_docs/methods/account.updateConnectedBot.md create mode 100644 docs/API_docs/methods/account.updateDeviceLocked.md create mode 100644 docs/API_docs/methods/account.updateEmojiStatus.md create mode 100644 docs/API_docs/methods/account.updateNotifySettings.md create mode 100644 docs/API_docs/methods/account.updatePasswordSettings.md create mode 100644 docs/API_docs/methods/account.updatePersonalChannel.md create mode 100644 docs/API_docs/methods/account.updateProfile.md create mode 100644 docs/API_docs/methods/account.updateStatus.md create mode 100644 docs/API_docs/methods/account.updateTheme.md create mode 100644 docs/API_docs/methods/account.updateUsername.md create mode 100644 docs/API_docs/methods/account.uploadRingtone.md create mode 100644 docs/API_docs/methods/account.uploadTheme.md create mode 100644 docs/API_docs/methods/account.uploadWallPaper.md create mode 100644 docs/API_docs/methods/account.verifyEmail.md create mode 100644 docs/API_docs/methods/account.verifyPhone.md create mode 100644 docs/API_docs/methods/api_index.md create mode 100644 docs/API_docs/methods/auth.acceptLoginToken.md create mode 100644 docs/API_docs/methods/auth.bindTempAuthKey.md create mode 100644 docs/API_docs/methods/auth.cancelCode.md create mode 100644 docs/API_docs/methods/auth.checkPassword.md create mode 100644 docs/API_docs/methods/auth.checkRecoveryPassword.md create mode 100644 docs/API_docs/methods/auth.dropTempAuthKeys.md create mode 100644 docs/API_docs/methods/auth.exportAuthorization.md create mode 100644 docs/API_docs/methods/auth.exportLoginToken.md create mode 100644 docs/API_docs/methods/auth.importAuthorization.md create mode 100644 docs/API_docs/methods/auth.importBotAuthorization.md create mode 100644 docs/API_docs/methods/auth.importLoginToken.md create mode 100644 docs/API_docs/methods/auth.importWebTokenAuthorization.md create mode 100644 docs/API_docs/methods/auth.logOut.md create mode 100644 docs/API_docs/methods/auth.recoverPassword.md create mode 100644 docs/API_docs/methods/auth.reportMissingCode.md create mode 100644 docs/API_docs/methods/auth.requestFirebaseSms.md create mode 100644 docs/API_docs/methods/auth.requestPasswordRecovery.md create mode 100644 docs/API_docs/methods/auth.resendCode.md create mode 100644 docs/API_docs/methods/auth.resetAuthorizations.md create mode 100644 docs/API_docs/methods/auth.resetLoginEmail.md create mode 100644 docs/API_docs/methods/auth.sendCode.md create mode 100644 docs/API_docs/methods/auth.signIn.md create mode 100644 docs/API_docs/methods/auth.signUp.md create mode 100644 docs/API_docs/methods/bots.allowSendMessage.md create mode 100644 docs/API_docs/methods/bots.answerWebhookJSONQuery.md create mode 100644 docs/API_docs/methods/bots.canSendMessage.md create mode 100644 docs/API_docs/methods/bots.getBotCommands.md create mode 100644 docs/API_docs/methods/bots.getBotInfo.md create mode 100644 docs/API_docs/methods/bots.getBotMenuButton.md create mode 100644 docs/API_docs/methods/bots.invokeWebViewCustomMethod.md create mode 100644 docs/API_docs/methods/bots.reorderUsernames.md create mode 100644 docs/API_docs/methods/bots.resetBotCommands.md create mode 100644 docs/API_docs/methods/bots.sendCustomRequest.md create mode 100644 docs/API_docs/methods/bots.setBotBroadcastDefaultAdminRights.md create mode 100644 docs/API_docs/methods/bots.setBotCommands.md create mode 100644 docs/API_docs/methods/bots.setBotGroupDefaultAdminRights.md create mode 100644 docs/API_docs/methods/bots.setBotInfo.md create mode 100644 docs/API_docs/methods/bots.setBotMenuButton.md create mode 100644 docs/API_docs/methods/bots.toggleUsername.md create mode 100644 docs/API_docs/methods/channels.checkUsername.md create mode 100644 docs/API_docs/methods/channels.clickSponsoredMessage.md create mode 100644 docs/API_docs/methods/channels.convertToGigagroup.md create mode 100644 docs/API_docs/methods/channels.createChannel.md create mode 100644 docs/API_docs/methods/channels.createForumTopic.md create mode 100644 docs/API_docs/methods/channels.deactivateAllUsernames.md create mode 100644 docs/API_docs/methods/channels.deleteChannel.md create mode 100644 docs/API_docs/methods/channels.deleteHistory.md create mode 100644 docs/API_docs/methods/channels.deleteMessages.md create mode 100644 docs/API_docs/methods/channels.deleteParticipantHistory.md create mode 100644 docs/API_docs/methods/channels.deleteTopicHistory.md create mode 100644 docs/API_docs/methods/channels.editAdmin.md create mode 100644 docs/API_docs/methods/channels.editBanned.md create mode 100644 docs/API_docs/methods/channels.editCreator.md create mode 100644 docs/API_docs/methods/channels.editForumTopic.md create mode 100644 docs/API_docs/methods/channels.editLocation.md create mode 100644 docs/API_docs/methods/channels.editPhoto.md create mode 100644 docs/API_docs/methods/channels.editTitle.md create mode 100644 docs/API_docs/methods/channels.exportMessageLink.md create mode 100644 docs/API_docs/methods/channels.getAdminLog.md create mode 100644 docs/API_docs/methods/channels.getAdminedPublicChannels.md create mode 100644 docs/API_docs/methods/channels.getChannelRecommendations.md create mode 100644 docs/API_docs/methods/channels.getChannels.md create mode 100644 docs/API_docs/methods/channels.getForumTopics.md create mode 100644 docs/API_docs/methods/channels.getForumTopicsByID.md create mode 100644 docs/API_docs/methods/channels.getFullChannel.md create mode 100644 docs/API_docs/methods/channels.getGroupsForDiscussion.md create mode 100644 docs/API_docs/methods/channels.getInactiveChannels.md create mode 100644 docs/API_docs/methods/channels.getLeftChannels.md create mode 100644 docs/API_docs/methods/channels.getMessages.md create mode 100644 docs/API_docs/methods/channels.getParticipant.md create mode 100644 docs/API_docs/methods/channels.getParticipants.md create mode 100644 docs/API_docs/methods/channels.getSendAs.md create mode 100644 docs/API_docs/methods/channels.getSponsoredMessages.md create mode 100644 docs/API_docs/methods/channels.inviteToChannel.md create mode 100644 docs/API_docs/methods/channels.joinChannel.md create mode 100644 docs/API_docs/methods/channels.leaveChannel.md create mode 100644 docs/API_docs/methods/channels.readHistory.md create mode 100644 docs/API_docs/methods/channels.readMessageContents.md create mode 100644 docs/API_docs/methods/channels.reorderPinnedForumTopics.md create mode 100644 docs/API_docs/methods/channels.reorderUsernames.md create mode 100644 docs/API_docs/methods/channels.reportAntiSpamFalsePositive.md create mode 100644 docs/API_docs/methods/channels.reportSpam.md create mode 100644 docs/API_docs/methods/channels.reportSponsoredMessage.md create mode 100644 docs/API_docs/methods/channels.restrictSponsoredMessages.md create mode 100644 docs/API_docs/methods/channels.setBoostsToUnblockRestrictions.md create mode 100644 docs/API_docs/methods/channels.setDiscussionGroup.md create mode 100644 docs/API_docs/methods/channels.setEmojiStickers.md create mode 100644 docs/API_docs/methods/channels.setStickers.md create mode 100644 docs/API_docs/methods/channels.toggleAntiSpam.md create mode 100644 docs/API_docs/methods/channels.toggleForum.md create mode 100644 docs/API_docs/methods/channels.toggleJoinRequest.md create mode 100644 docs/API_docs/methods/channels.toggleJoinToSend.md create mode 100644 docs/API_docs/methods/channels.toggleParticipantsHidden.md create mode 100644 docs/API_docs/methods/channels.togglePreHistoryHidden.md create mode 100644 docs/API_docs/methods/channels.toggleSignatures.md create mode 100644 docs/API_docs/methods/channels.toggleSlowMode.md create mode 100644 docs/API_docs/methods/channels.toggleUsername.md create mode 100644 docs/API_docs/methods/channels.toggleViewForumAsMessages.md create mode 100644 docs/API_docs/methods/channels.updateColor.md create mode 100644 docs/API_docs/methods/channels.updateEmojiStatus.md create mode 100644 docs/API_docs/methods/channels.updatePinnedForumTopic.md create mode 100644 docs/API_docs/methods/channels.updateUsername.md create mode 100644 docs/API_docs/methods/channels.viewSponsoredMessage.md create mode 100644 docs/API_docs/methods/chatlists.checkChatlistInvite.md create mode 100644 docs/API_docs/methods/chatlists.deleteExportedInvite.md create mode 100644 docs/API_docs/methods/chatlists.editExportedInvite.md create mode 100644 docs/API_docs/methods/chatlists.exportChatlistInvite.md create mode 100644 docs/API_docs/methods/chatlists.getChatlistUpdates.md create mode 100644 docs/API_docs/methods/chatlists.getExportedInvites.md create mode 100644 docs/API_docs/methods/chatlists.getLeaveChatlistSuggestions.md create mode 100644 docs/API_docs/methods/chatlists.hideChatlistUpdates.md create mode 100644 docs/API_docs/methods/chatlists.joinChatlistInvite.md create mode 100644 docs/API_docs/methods/chatlists.joinChatlistUpdates.md create mode 100644 docs/API_docs/methods/chatlists.leaveChatlist.md create mode 100644 docs/API_docs/methods/contacts.acceptContact.md create mode 100644 docs/API_docs/methods/contacts.addContact.md create mode 100644 docs/API_docs/methods/contacts.block.md create mode 100644 docs/API_docs/methods/contacts.blockFromReplies.md create mode 100644 docs/API_docs/methods/contacts.deleteByPhones.md create mode 100644 docs/API_docs/methods/contacts.deleteContacts.md create mode 100644 docs/API_docs/methods/contacts.editCloseFriends.md create mode 100644 docs/API_docs/methods/contacts.exportContactToken.md create mode 100644 docs/API_docs/methods/contacts.getBirthdays.md create mode 100644 docs/API_docs/methods/contacts.getBlocked.md create mode 100644 docs/API_docs/methods/contacts.getContactIDs.md create mode 100644 docs/API_docs/methods/contacts.getContacts.md create mode 100644 docs/API_docs/methods/contacts.getLocated.md create mode 100644 docs/API_docs/methods/contacts.getSaved.md create mode 100644 docs/API_docs/methods/contacts.getStatuses.md create mode 100644 docs/API_docs/methods/contacts.getTopPeers.md create mode 100644 docs/API_docs/methods/contacts.importContactToken.md create mode 100644 docs/API_docs/methods/contacts.importContacts.md create mode 100644 docs/API_docs/methods/contacts.resetSaved.md create mode 100644 docs/API_docs/methods/contacts.resetTopPeerRating.md create mode 100644 docs/API_docs/methods/contacts.resolvePhone.md create mode 100644 docs/API_docs/methods/contacts.resolveUsername.md create mode 100644 docs/API_docs/methods/contacts.search.md create mode 100644 docs/API_docs/methods/contacts.setBlocked.md create mode 100644 docs/API_docs/methods/contacts.toggleTopPeers.md create mode 100644 docs/API_docs/methods/contacts.unblock.md create mode 100644 docs/API_docs/methods/folders.editPeerFolders.md create mode 100644 docs/API_docs/methods/fragment.getCollectibleInfo.md create mode 100644 docs/API_docs/methods/help.acceptTermsOfService.md create mode 100644 docs/API_docs/methods/help.dismissSuggestion.md create mode 100644 docs/API_docs/methods/help.editUserInfo.md create mode 100644 docs/API_docs/methods/help.getAppConfig.md create mode 100644 docs/API_docs/methods/help.getAppUpdate.md create mode 100644 docs/API_docs/methods/help.getCdnConfig.md create mode 100644 docs/API_docs/methods/help.getConfig.md create mode 100644 docs/API_docs/methods/help.getCountriesList.md create mode 100644 docs/API_docs/methods/help.getDeepLinkInfo.md create mode 100644 docs/API_docs/methods/help.getInviteText.md create mode 100644 docs/API_docs/methods/help.getNearestDc.md create mode 100644 docs/API_docs/methods/help.getPassportConfig.md create mode 100644 docs/API_docs/methods/help.getPeerColors.md create mode 100644 docs/API_docs/methods/help.getPeerProfileColors.md create mode 100644 docs/API_docs/methods/help.getPremiumPromo.md create mode 100644 docs/API_docs/methods/help.getPromoData.md create mode 100644 docs/API_docs/methods/help.getRecentMeUrls.md create mode 100644 docs/API_docs/methods/help.getSupport.md create mode 100644 docs/API_docs/methods/help.getSupportName.md create mode 100644 docs/API_docs/methods/help.getTermsOfServiceUpdate.md create mode 100644 docs/API_docs/methods/help.getTimezonesList.md create mode 100644 docs/API_docs/methods/help.getUserInfo.md create mode 100644 docs/API_docs/methods/help.hidePromoData.md create mode 100644 docs/API_docs/methods/help.saveAppLog.md create mode 100644 docs/API_docs/methods/help.setBotUpdatesStatus.md create mode 100644 docs/API_docs/methods/index.md create mode 100644 docs/API_docs/methods/initConnection.md create mode 100644 docs/API_docs/methods/invokeAfterMsg.md create mode 100644 docs/API_docs/methods/invokeAfterMsgs.md create mode 100644 docs/API_docs/methods/invokeWithBusinessConnection.md create mode 100644 docs/API_docs/methods/invokeWithLayer.md create mode 100644 docs/API_docs/methods/invokeWithMessagesRange.md create mode 100644 docs/API_docs/methods/invokeWithTakeout.md create mode 100644 docs/API_docs/methods/invokeWithoutUpdates.md create mode 100644 docs/API_docs/methods/langpack.getDifference.md create mode 100644 docs/API_docs/methods/langpack.getLangPack.md create mode 100644 docs/API_docs/methods/langpack.getLanguage.md create mode 100644 docs/API_docs/methods/langpack.getLanguages.md create mode 100644 docs/API_docs/methods/langpack.getStrings.md create mode 100644 docs/API_docs/methods/messages.acceptEncryption.md create mode 100644 docs/API_docs/methods/messages.acceptUrlAuth.md create mode 100644 docs/API_docs/methods/messages.addChatUser.md create mode 100644 docs/API_docs/methods/messages.checkChatInvite.md create mode 100644 docs/API_docs/methods/messages.checkHistoryImport.md create mode 100644 docs/API_docs/methods/messages.checkHistoryImportPeer.md create mode 100644 docs/API_docs/methods/messages.checkQuickReplyShortcut.md create mode 100644 docs/API_docs/methods/messages.clearAllDrafts.md create mode 100644 docs/API_docs/methods/messages.clearRecentReactions.md create mode 100644 docs/API_docs/methods/messages.clearRecentStickers.md create mode 100644 docs/API_docs/methods/messages.createChat.md create mode 100644 docs/API_docs/methods/messages.deleteChat.md create mode 100644 docs/API_docs/methods/messages.deleteChatUser.md create mode 100644 docs/API_docs/methods/messages.deleteExportedChatInvite.md create mode 100644 docs/API_docs/methods/messages.deleteHistory.md create mode 100644 docs/API_docs/methods/messages.deleteMessages.md create mode 100644 docs/API_docs/methods/messages.deletePhoneCallHistory.md create mode 100644 docs/API_docs/methods/messages.deleteQuickReplyMessages.md create mode 100644 docs/API_docs/methods/messages.deleteQuickReplyShortcut.md create mode 100644 docs/API_docs/methods/messages.deleteRevokedExportedChatInvites.md create mode 100644 docs/API_docs/methods/messages.deleteSavedHistory.md create mode 100644 docs/API_docs/methods/messages.deleteScheduledMessages.md create mode 100644 docs/API_docs/methods/messages.discardEncryption.md create mode 100644 docs/API_docs/methods/messages.editChatAbout.md create mode 100644 docs/API_docs/methods/messages.editChatAdmin.md create mode 100644 docs/API_docs/methods/messages.editChatDefaultBannedRights.md create mode 100644 docs/API_docs/methods/messages.editChatPhoto.md create mode 100644 docs/API_docs/methods/messages.editChatTitle.md create mode 100644 docs/API_docs/methods/messages.editExportedChatInvite.md create mode 100644 docs/API_docs/methods/messages.editInlineBotMessage.md create mode 100644 docs/API_docs/methods/messages.editMessage.md create mode 100644 docs/API_docs/methods/messages.editQuickReplyShortcut.md create mode 100644 docs/API_docs/methods/messages.exportChatInvite.md create mode 100644 docs/API_docs/methods/messages.faveSticker.md create mode 100644 docs/API_docs/methods/messages.forwardMessages.md create mode 100644 docs/API_docs/methods/messages.getAdminsWithInvites.md create mode 100644 docs/API_docs/methods/messages.getAllDrafts.md create mode 100644 docs/API_docs/methods/messages.getAllStickers.md create mode 100644 docs/API_docs/methods/messages.getArchivedStickers.md create mode 100644 docs/API_docs/methods/messages.getAttachMenuBot.md create mode 100644 docs/API_docs/methods/messages.getAttachMenuBots.md create mode 100644 docs/API_docs/methods/messages.getAttachedStickers.md create mode 100644 docs/API_docs/methods/messages.getAvailableReactions.md create mode 100644 docs/API_docs/methods/messages.getBotApp.md create mode 100644 docs/API_docs/methods/messages.getBotCallbackAnswer.md create mode 100644 docs/API_docs/methods/messages.getChatInviteImporters.md create mode 100644 docs/API_docs/methods/messages.getChats.md create mode 100644 docs/API_docs/methods/messages.getCommonChats.md create mode 100644 docs/API_docs/methods/messages.getCustomEmojiDocuments.md create mode 100644 docs/API_docs/methods/messages.getDefaultHistoryTTL.md create mode 100644 docs/API_docs/methods/messages.getDefaultTagReactions.md create mode 100644 docs/API_docs/methods/messages.getDhConfig.md create mode 100644 docs/API_docs/methods/messages.getDialogFilters.md create mode 100644 docs/API_docs/methods/messages.getDialogUnreadMarks.md create mode 100644 docs/API_docs/methods/messages.getDialogs.md create mode 100644 docs/API_docs/methods/messages.getDiscussionMessage.md create mode 100644 docs/API_docs/methods/messages.getDocumentByHash.md create mode 100644 docs/API_docs/methods/messages.getEmojiGroups.md create mode 100644 docs/API_docs/methods/messages.getEmojiKeywords.md create mode 100644 docs/API_docs/methods/messages.getEmojiKeywordsDifference.md create mode 100644 docs/API_docs/methods/messages.getEmojiKeywordsLanguages.md create mode 100644 docs/API_docs/methods/messages.getEmojiProfilePhotoGroups.md create mode 100644 docs/API_docs/methods/messages.getEmojiStatusGroups.md create mode 100644 docs/API_docs/methods/messages.getEmojiStickerGroups.md create mode 100644 docs/API_docs/methods/messages.getEmojiStickers.md create mode 100644 docs/API_docs/methods/messages.getEmojiURL.md create mode 100644 docs/API_docs/methods/messages.getExportedChatInvite.md create mode 100644 docs/API_docs/methods/messages.getExportedChatInvites.md create mode 100644 docs/API_docs/methods/messages.getExtendedMedia.md create mode 100644 docs/API_docs/methods/messages.getFavedStickers.md create mode 100644 docs/API_docs/methods/messages.getFeaturedEmojiStickers.md create mode 100644 docs/API_docs/methods/messages.getFeaturedStickers.md create mode 100644 docs/API_docs/methods/messages.getFullChat.md create mode 100644 docs/API_docs/methods/messages.getGameHighScores.md create mode 100644 docs/API_docs/methods/messages.getHistory.md create mode 100644 docs/API_docs/methods/messages.getInlineBotResults.md create mode 100644 docs/API_docs/methods/messages.getInlineGameHighScores.md create mode 100644 docs/API_docs/methods/messages.getMaskStickers.md create mode 100644 docs/API_docs/methods/messages.getMessageEditData.md create mode 100644 docs/API_docs/methods/messages.getMessageReactionsList.md create mode 100644 docs/API_docs/methods/messages.getMessageReadParticipants.md create mode 100644 docs/API_docs/methods/messages.getMessages.md create mode 100644 docs/API_docs/methods/messages.getMessagesReactions.md create mode 100644 docs/API_docs/methods/messages.getMessagesViews.md create mode 100644 docs/API_docs/methods/messages.getMyStickers.md create mode 100644 docs/API_docs/methods/messages.getOldFeaturedStickers.md create mode 100644 docs/API_docs/methods/messages.getOnlines.md create mode 100644 docs/API_docs/methods/messages.getOutboxReadDate.md create mode 100644 docs/API_docs/methods/messages.getPeerDialogs.md create mode 100644 docs/API_docs/methods/messages.getPeerSettings.md create mode 100644 docs/API_docs/methods/messages.getPinnedDialogs.md create mode 100644 docs/API_docs/methods/messages.getPinnedSavedDialogs.md create mode 100644 docs/API_docs/methods/messages.getPollResults.md create mode 100644 docs/API_docs/methods/messages.getPollVotes.md create mode 100644 docs/API_docs/methods/messages.getQuickReplies.md create mode 100644 docs/API_docs/methods/messages.getQuickReplyMessages.md create mode 100644 docs/API_docs/methods/messages.getRecentLocations.md create mode 100644 docs/API_docs/methods/messages.getRecentReactions.md create mode 100644 docs/API_docs/methods/messages.getRecentStickers.md create mode 100644 docs/API_docs/methods/messages.getReplies.md create mode 100644 docs/API_docs/methods/messages.getSavedDialogs.md create mode 100644 docs/API_docs/methods/messages.getSavedGifs.md create mode 100644 docs/API_docs/methods/messages.getSavedHistory.md create mode 100644 docs/API_docs/methods/messages.getSavedReactionTags.md create mode 100644 docs/API_docs/methods/messages.getScheduledHistory.md create mode 100644 docs/API_docs/methods/messages.getScheduledMessages.md create mode 100644 docs/API_docs/methods/messages.getSearchCounters.md create mode 100644 docs/API_docs/methods/messages.getSearchResultsCalendar.md create mode 100644 docs/API_docs/methods/messages.getSearchResultsPositions.md create mode 100644 docs/API_docs/methods/messages.getSplitRanges.md create mode 100644 docs/API_docs/methods/messages.getStickerSet.md create mode 100644 docs/API_docs/methods/messages.getStickers.md create mode 100644 docs/API_docs/methods/messages.getSuggestedDialogFilters.md create mode 100644 docs/API_docs/methods/messages.getTopReactions.md create mode 100644 docs/API_docs/methods/messages.getUnreadMentions.md create mode 100644 docs/API_docs/methods/messages.getUnreadReactions.md create mode 100644 docs/API_docs/methods/messages.getWebPage.md create mode 100644 docs/API_docs/methods/messages.getWebPagePreview.md create mode 100644 docs/API_docs/methods/messages.hideAllChatJoinRequests.md create mode 100644 docs/API_docs/methods/messages.hideChatJoinRequest.md create mode 100644 docs/API_docs/methods/messages.hidePeerSettingsBar.md create mode 100644 docs/API_docs/methods/messages.importChatInvite.md create mode 100644 docs/API_docs/methods/messages.initHistoryImport.md create mode 100644 docs/API_docs/methods/messages.installStickerSet.md create mode 100644 docs/API_docs/methods/messages.markDialogUnread.md create mode 100644 docs/API_docs/methods/messages.migrateChat.md create mode 100644 docs/API_docs/methods/messages.prolongWebView.md create mode 100644 docs/API_docs/methods/messages.rateTranscribedAudio.md create mode 100644 docs/API_docs/methods/messages.readDiscussion.md create mode 100644 docs/API_docs/methods/messages.readEncryptedHistory.md create mode 100644 docs/API_docs/methods/messages.readFeaturedStickers.md create mode 100644 docs/API_docs/methods/messages.readHistory.md create mode 100644 docs/API_docs/methods/messages.readMentions.md create mode 100644 docs/API_docs/methods/messages.readMessageContents.md create mode 100644 docs/API_docs/methods/messages.readReactions.md create mode 100644 docs/API_docs/methods/messages.receivedMessages.md create mode 100644 docs/API_docs/methods/messages.receivedQueue.md create mode 100644 docs/API_docs/methods/messages.reorderPinnedDialogs.md create mode 100644 docs/API_docs/methods/messages.reorderPinnedSavedDialogs.md create mode 100644 docs/API_docs/methods/messages.reorderQuickReplies.md create mode 100644 docs/API_docs/methods/messages.reorderStickerSets.md create mode 100644 docs/API_docs/methods/messages.report.md create mode 100644 docs/API_docs/methods/messages.reportEncryptedSpam.md create mode 100644 docs/API_docs/methods/messages.reportReaction.md create mode 100644 docs/API_docs/methods/messages.reportSpam.md create mode 100644 docs/API_docs/methods/messages.requestAppWebView.md create mode 100644 docs/API_docs/methods/messages.requestEncryption.md create mode 100644 docs/API_docs/methods/messages.requestSimpleWebView.md create mode 100644 docs/API_docs/methods/messages.requestUrlAuth.md create mode 100644 docs/API_docs/methods/messages.requestWebView.md create mode 100644 docs/API_docs/methods/messages.saveDefaultSendAs.md create mode 100644 docs/API_docs/methods/messages.saveDraft.md create mode 100644 docs/API_docs/methods/messages.saveGif.md create mode 100644 docs/API_docs/methods/messages.saveRecentSticker.md create mode 100644 docs/API_docs/methods/messages.search.md create mode 100644 docs/API_docs/methods/messages.searchCustomEmoji.md create mode 100644 docs/API_docs/methods/messages.searchEmojiStickerSets.md create mode 100644 docs/API_docs/methods/messages.searchGlobal.md create mode 100644 docs/API_docs/methods/messages.searchSentMedia.md create mode 100644 docs/API_docs/methods/messages.searchStickerSets.md create mode 100644 docs/API_docs/methods/messages.sendBotRequestedPeer.md create mode 100644 docs/API_docs/methods/messages.sendEncrypted.md create mode 100644 docs/API_docs/methods/messages.sendEncryptedFile.md create mode 100644 docs/API_docs/methods/messages.sendEncryptedService.md create mode 100644 docs/API_docs/methods/messages.sendInlineBotResult.md create mode 100644 docs/API_docs/methods/messages.sendMedia.md create mode 100644 docs/API_docs/methods/messages.sendMessage.md create mode 100644 docs/API_docs/methods/messages.sendMultiMedia.md create mode 100644 docs/API_docs/methods/messages.sendQuickReplyMessages.md create mode 100644 docs/API_docs/methods/messages.sendReaction.md create mode 100644 docs/API_docs/methods/messages.sendScheduledMessages.md create mode 100644 docs/API_docs/methods/messages.sendScreenshotNotification.md create mode 100644 docs/API_docs/methods/messages.sendVote.md create mode 100644 docs/API_docs/methods/messages.sendWebViewData.md create mode 100644 docs/API_docs/methods/messages.sendWebViewResultMessage.md create mode 100644 docs/API_docs/methods/messages.setBotCallbackAnswer.md create mode 100644 docs/API_docs/methods/messages.setBotPrecheckoutResults.md create mode 100644 docs/API_docs/methods/messages.setBotShippingResults.md create mode 100644 docs/API_docs/methods/messages.setChatAvailableReactions.md create mode 100644 docs/API_docs/methods/messages.setChatTheme.md create mode 100644 docs/API_docs/methods/messages.setChatWallPaper.md create mode 100644 docs/API_docs/methods/messages.setDefaultHistoryTTL.md create mode 100644 docs/API_docs/methods/messages.setDefaultReaction.md create mode 100644 docs/API_docs/methods/messages.setEncryptedTyping.md create mode 100644 docs/API_docs/methods/messages.setGameScore.md create mode 100644 docs/API_docs/methods/messages.setHistoryTTL.md create mode 100644 docs/API_docs/methods/messages.setInlineBotResults.md create mode 100644 docs/API_docs/methods/messages.setInlineGameScore.md create mode 100644 docs/API_docs/methods/messages.setTyping.md create mode 100644 docs/API_docs/methods/messages.startBot.md create mode 100644 docs/API_docs/methods/messages.startHistoryImport.md create mode 100644 docs/API_docs/methods/messages.toggleBotInAttachMenu.md create mode 100644 docs/API_docs/methods/messages.toggleDialogFilterTags.md create mode 100644 docs/API_docs/methods/messages.toggleDialogPin.md create mode 100644 docs/API_docs/methods/messages.toggleNoForwards.md create mode 100644 docs/API_docs/methods/messages.togglePeerTranslations.md create mode 100644 docs/API_docs/methods/messages.toggleSavedDialogPin.md create mode 100644 docs/API_docs/methods/messages.toggleStickerSets.md create mode 100644 docs/API_docs/methods/messages.transcribeAudio.md create mode 100644 docs/API_docs/methods/messages.translateText.md create mode 100644 docs/API_docs/methods/messages.uninstallStickerSet.md create mode 100644 docs/API_docs/methods/messages.unpinAllMessages.md create mode 100644 docs/API_docs/methods/messages.updateDialogFilter.md create mode 100644 docs/API_docs/methods/messages.updateDialogFiltersOrder.md create mode 100644 docs/API_docs/methods/messages.updatePinnedMessage.md create mode 100644 docs/API_docs/methods/messages.updateSavedReactionTag.md create mode 100644 docs/API_docs/methods/messages.uploadEncryptedFile.md create mode 100644 docs/API_docs/methods/messages.uploadImportedMedia.md create mode 100644 docs/API_docs/methods/messages.uploadMedia.md create mode 100644 docs/API_docs/methods/payments.applyGiftCode.md create mode 100644 docs/API_docs/methods/payments.assignAppStoreTransaction.md create mode 100644 docs/API_docs/methods/payments.assignPlayMarketTransaction.md create mode 100644 docs/API_docs/methods/payments.canPurchasePremium.md create mode 100644 docs/API_docs/methods/payments.checkGiftCode.md create mode 100644 docs/API_docs/methods/payments.clearSavedInfo.md create mode 100644 docs/API_docs/methods/payments.exportInvoice.md create mode 100644 docs/API_docs/methods/payments.getBankCardData.md create mode 100644 docs/API_docs/methods/payments.getGiveawayInfo.md create mode 100644 docs/API_docs/methods/payments.getPaymentForm.md create mode 100644 docs/API_docs/methods/payments.getPaymentReceipt.md create mode 100644 docs/API_docs/methods/payments.getPremiumGiftCodeOptions.md create mode 100644 docs/API_docs/methods/payments.getSavedInfo.md create mode 100644 docs/API_docs/methods/payments.launchPrepaidGiveaway.md create mode 100644 docs/API_docs/methods/payments.sendPaymentForm.md create mode 100644 docs/API_docs/methods/payments.validateRequestedInfo.md create mode 100644 docs/API_docs/methods/phone.acceptCall.md create mode 100644 docs/API_docs/methods/phone.checkGroupCall.md create mode 100644 docs/API_docs/methods/phone.confirmCall.md create mode 100644 docs/API_docs/methods/phone.createGroupCall.md create mode 100644 docs/API_docs/methods/phone.discardCall.md create mode 100644 docs/API_docs/methods/phone.discardGroupCall.md create mode 100644 docs/API_docs/methods/phone.editGroupCallParticipant.md create mode 100644 docs/API_docs/methods/phone.editGroupCallTitle.md create mode 100644 docs/API_docs/methods/phone.exportGroupCallInvite.md create mode 100644 docs/API_docs/methods/phone.getCallConfig.md create mode 100644 docs/API_docs/methods/phone.getGroupCall.md create mode 100644 docs/API_docs/methods/phone.getGroupCallJoinAs.md create mode 100644 docs/API_docs/methods/phone.getGroupCallStreamChannels.md create mode 100644 docs/API_docs/methods/phone.getGroupCallStreamRtmpUrl.md create mode 100644 docs/API_docs/methods/phone.getGroupParticipants.md create mode 100644 docs/API_docs/methods/phone.inviteToGroupCall.md create mode 100644 docs/API_docs/methods/phone.joinGroupCall.md create mode 100644 docs/API_docs/methods/phone.joinGroupCallPresentation.md create mode 100644 docs/API_docs/methods/phone.leaveGroupCall.md create mode 100644 docs/API_docs/methods/phone.leaveGroupCallPresentation.md create mode 100644 docs/API_docs/methods/phone.receivedCall.md create mode 100644 docs/API_docs/methods/phone.requestCall.md create mode 100644 docs/API_docs/methods/phone.saveCallDebug.md create mode 100644 docs/API_docs/methods/phone.saveCallLog.md create mode 100644 docs/API_docs/methods/phone.saveDefaultGroupCallJoinAs.md create mode 100644 docs/API_docs/methods/phone.sendSignalingData.md create mode 100644 docs/API_docs/methods/phone.setCallRating.md create mode 100644 docs/API_docs/methods/phone.startScheduledGroupCall.md create mode 100644 docs/API_docs/methods/phone.toggleGroupCallRecord.md create mode 100644 docs/API_docs/methods/phone.toggleGroupCallSettings.md create mode 100644 docs/API_docs/methods/phone.toggleGroupCallStartSubscription.md create mode 100644 docs/API_docs/methods/photos.deletePhotos.md create mode 100644 docs/API_docs/methods/photos.getUserPhotos.md create mode 100644 docs/API_docs/methods/photos.updateProfilePhoto.md create mode 100644 docs/API_docs/methods/photos.uploadContactProfilePhoto.md create mode 100644 docs/API_docs/methods/photos.uploadProfilePhoto.md create mode 100644 docs/API_docs/methods/premium.applyBoost.md create mode 100644 docs/API_docs/methods/premium.getBoostsList.md create mode 100644 docs/API_docs/methods/premium.getBoostsStatus.md create mode 100644 docs/API_docs/methods/premium.getMyBoosts.md create mode 100644 docs/API_docs/methods/premium.getUserBoosts.md create mode 100644 docs/API_docs/methods/smsjobs.finishJob.md create mode 100644 docs/API_docs/methods/smsjobs.getSmsJob.md create mode 100644 docs/API_docs/methods/smsjobs.getStatus.md create mode 100644 docs/API_docs/methods/smsjobs.isEligibleToJoin.md create mode 100644 docs/API_docs/methods/smsjobs.join.md create mode 100644 docs/API_docs/methods/smsjobs.leave.md create mode 100644 docs/API_docs/methods/smsjobs.updateSettings.md create mode 100644 docs/API_docs/methods/stats.getBroadcastRevenueStats.md create mode 100644 docs/API_docs/methods/stats.getBroadcastRevenueTransactions.md create mode 100644 docs/API_docs/methods/stats.getBroadcastRevenueWithdrawalUrl.md create mode 100644 docs/API_docs/methods/stats.getBroadcastStats.md create mode 100644 docs/API_docs/methods/stats.getMegagroupStats.md create mode 100644 docs/API_docs/methods/stats.getMessagePublicForwards.md create mode 100644 docs/API_docs/methods/stats.getMessageStats.md create mode 100644 docs/API_docs/methods/stats.getStoryPublicForwards.md create mode 100644 docs/API_docs/methods/stats.getStoryStats.md create mode 100644 docs/API_docs/methods/stats.loadAsyncGraph.md create mode 100644 docs/API_docs/methods/stickers.addStickerToSet.md create mode 100644 docs/API_docs/methods/stickers.changeSticker.md create mode 100644 docs/API_docs/methods/stickers.changeStickerPosition.md create mode 100644 docs/API_docs/methods/stickers.checkShortName.md create mode 100644 docs/API_docs/methods/stickers.createStickerSet.md create mode 100644 docs/API_docs/methods/stickers.deleteStickerSet.md create mode 100644 docs/API_docs/methods/stickers.removeStickerFromSet.md create mode 100644 docs/API_docs/methods/stickers.renameStickerSet.md create mode 100644 docs/API_docs/methods/stickers.replaceSticker.md create mode 100644 docs/API_docs/methods/stickers.setStickerSetThumb.md create mode 100644 docs/API_docs/methods/stickers.suggestShortName.md create mode 100644 docs/API_docs/methods/stories.activateStealthMode.md create mode 100644 docs/API_docs/methods/stories.canSendStory.md create mode 100644 docs/API_docs/methods/stories.deleteStories.md create mode 100644 docs/API_docs/methods/stories.editStory.md create mode 100644 docs/API_docs/methods/stories.exportStoryLink.md create mode 100644 docs/API_docs/methods/stories.getAllReadPeerStories.md create mode 100644 docs/API_docs/methods/stories.getAllStories.md create mode 100644 docs/API_docs/methods/stories.getChatsToSend.md create mode 100644 docs/API_docs/methods/stories.getPeerMaxIDs.md create mode 100644 docs/API_docs/methods/stories.getPeerStories.md create mode 100644 docs/API_docs/methods/stories.getPinnedStories.md create mode 100644 docs/API_docs/methods/stories.getStoriesArchive.md create mode 100644 docs/API_docs/methods/stories.getStoriesByID.md create mode 100644 docs/API_docs/methods/stories.getStoriesViews.md create mode 100644 docs/API_docs/methods/stories.getStoryReactionsList.md create mode 100644 docs/API_docs/methods/stories.getStoryViewsList.md create mode 100644 docs/API_docs/methods/stories.incrementStoryViews.md create mode 100644 docs/API_docs/methods/stories.readStories.md create mode 100644 docs/API_docs/methods/stories.report.md create mode 100644 docs/API_docs/methods/stories.sendReaction.md create mode 100644 docs/API_docs/methods/stories.sendStory.md create mode 100644 docs/API_docs/methods/stories.toggleAllStoriesHidden.md create mode 100644 docs/API_docs/methods/stories.togglePeerStoriesHidden.md create mode 100644 docs/API_docs/methods/stories.togglePinned.md create mode 100644 docs/API_docs/methods/stories.togglePinnedToTop.md create mode 100644 docs/API_docs/methods/updates.getChannelDifference.md create mode 100644 docs/API_docs/methods/updates.getDifference.md create mode 100644 docs/API_docs/methods/updates.getState.md create mode 100644 docs/API_docs/methods/upload.getCdnFile.md create mode 100644 docs/API_docs/methods/upload.getCdnFileHashes.md create mode 100644 docs/API_docs/methods/upload.getFile.md create mode 100644 docs/API_docs/methods/upload.getFileHashes.md create mode 100644 docs/API_docs/methods/upload.getWebFile.md create mode 100644 docs/API_docs/methods/upload.reuploadCdnFile.md create mode 100644 docs/API_docs/methods/upload.saveBigFilePart.md create mode 100644 docs/API_docs/methods/upload.saveFilePart.md create mode 100644 docs/API_docs/methods/users.getFullUser.md create mode 100644 docs/API_docs/methods/users.getIsPremiumRequiredToContact.md create mode 100644 docs/API_docs/methods/users.getUsers.md create mode 100644 docs/API_docs/methods/users.setSecureValueErrors.md create mode 100644 docs/API_docs/types/!X.md create mode 100644 docs/API_docs/types/AccountDaysTTL.md create mode 100644 docs/API_docs/types/AppWebViewResult.md create mode 100644 docs/API_docs/types/AttachMenuBot.md create mode 100644 docs/API_docs/types/AttachMenuBotIcon.md create mode 100644 docs/API_docs/types/AttachMenuBotIconColor.md create mode 100644 docs/API_docs/types/AttachMenuBots.md create mode 100644 docs/API_docs/types/AttachMenuBotsBot.md create mode 100644 docs/API_docs/types/AttachMenuPeerType.md create mode 100644 docs/API_docs/types/Authorization.md create mode 100644 docs/API_docs/types/AutoDownloadSettings.md create mode 100644 docs/API_docs/types/AutoSaveException.md create mode 100644 docs/API_docs/types/AutoSaveSettings.md create mode 100644 docs/API_docs/types/AvailableReaction.md create mode 100644 docs/API_docs/types/BankCardOpenUrl.md create mode 100644 docs/API_docs/types/BaseTheme.md create mode 100644 docs/API_docs/types/Birthday.md create mode 100644 docs/API_docs/types/Bool.md create mode 100644 docs/API_docs/types/Boost.md create mode 100644 docs/API_docs/types/BotApp.md create mode 100644 docs/API_docs/types/BotBusinessConnection.md create mode 100644 docs/API_docs/types/BotCommand.md create mode 100644 docs/API_docs/types/BotCommandScope.md create mode 100644 docs/API_docs/types/BotInfo.md create mode 100644 docs/API_docs/types/BotInlineMessage.md create mode 100644 docs/API_docs/types/BotInlineResult.md create mode 100644 docs/API_docs/types/BotMenuButton.md create mode 100644 docs/API_docs/types/BroadcastRevenueBalances.md create mode 100644 docs/API_docs/types/BroadcastRevenueTransaction.md create mode 100644 docs/API_docs/types/BusinessAwayMessage.md create mode 100644 docs/API_docs/types/BusinessAwayMessageSchedule.md create mode 100644 docs/API_docs/types/BusinessBotRecipients.md create mode 100644 docs/API_docs/types/BusinessChatLink.md create mode 100644 docs/API_docs/types/BusinessGreetingMessage.md create mode 100644 docs/API_docs/types/BusinessIntro.md create mode 100644 docs/API_docs/types/BusinessLocation.md create mode 100644 docs/API_docs/types/BusinessRecipients.md create mode 100644 docs/API_docs/types/BusinessWeeklyOpen.md create mode 100644 docs/API_docs/types/BusinessWorkHours.md create mode 100644 docs/API_docs/types/CdnConfig.md create mode 100644 docs/API_docs/types/CdnPublicKey.md create mode 100644 docs/API_docs/types/ChannelAdminLogEvent.md create mode 100644 docs/API_docs/types/ChannelAdminLogEventAction.md create mode 100644 docs/API_docs/types/ChannelAdminLogEventsFilter.md create mode 100644 docs/API_docs/types/ChannelLocation.md create mode 100644 docs/API_docs/types/ChannelMessagesFilter.md create mode 100644 docs/API_docs/types/ChannelParticipant.md create mode 100644 docs/API_docs/types/ChannelParticipantsFilter.md create mode 100644 docs/API_docs/types/Chat.md create mode 100644 docs/API_docs/types/ChatAdminRights.md create mode 100644 docs/API_docs/types/ChatAdminWithInvites.md create mode 100644 docs/API_docs/types/ChatBannedRights.md create mode 100644 docs/API_docs/types/ChatFull.md create mode 100644 docs/API_docs/types/ChatInvite.md create mode 100644 docs/API_docs/types/ChatInviteImporter.md create mode 100644 docs/API_docs/types/ChatOnlines.md create mode 100644 docs/API_docs/types/ChatParticipant.md create mode 100644 docs/API_docs/types/ChatParticipants.md create mode 100644 docs/API_docs/types/ChatPhoto.md create mode 100644 docs/API_docs/types/ChatReactions.md create mode 100644 docs/API_docs/types/CodeSettings.md create mode 100644 docs/API_docs/types/Config.md create mode 100644 docs/API_docs/types/ConnectedBot.md create mode 100644 docs/API_docs/types/Contact.md create mode 100644 docs/API_docs/types/ContactBirthday.md create mode 100644 docs/API_docs/types/ContactStatus.md create mode 100644 docs/API_docs/types/DataJSON.md create mode 100644 docs/API_docs/types/DcOption.md create mode 100644 docs/API_docs/types/DecryptedMessage.md create mode 100644 docs/API_docs/types/DecryptedMessageAction.md create mode 100644 docs/API_docs/types/DecryptedMessageLayer.md create mode 100644 docs/API_docs/types/DecryptedMessageMedia.md create mode 100644 docs/API_docs/types/DefaultHistoryTTL.md create mode 100644 docs/API_docs/types/Dialog.md create mode 100644 docs/API_docs/types/DialogFilter.md create mode 100644 docs/API_docs/types/DialogFilterSuggested.md create mode 100644 docs/API_docs/types/DialogPeer.md create mode 100644 docs/API_docs/types/Document.md create mode 100644 docs/API_docs/types/DocumentAttribute.md create mode 100644 docs/API_docs/types/DraftMessage.md create mode 100644 docs/API_docs/types/EmailVerification.md create mode 100644 docs/API_docs/types/EmailVerifyPurpose.md create mode 100644 docs/API_docs/types/EmojiGroup.md create mode 100644 docs/API_docs/types/EmojiKeyword.md create mode 100644 docs/API_docs/types/EmojiKeywordsDifference.md create mode 100644 docs/API_docs/types/EmojiLanguage.md create mode 100644 docs/API_docs/types/EmojiList.md create mode 100644 docs/API_docs/types/EmojiStatus.md create mode 100644 docs/API_docs/types/EmojiURL.md create mode 100644 docs/API_docs/types/EncryptedChat.md create mode 100644 docs/API_docs/types/EncryptedFile.md create mode 100644 docs/API_docs/types/EncryptedMessage.md create mode 100644 docs/API_docs/types/Error.md create mode 100644 docs/API_docs/types/ExportedChatInvite.md create mode 100644 docs/API_docs/types/ExportedChatlistInvite.md create mode 100644 docs/API_docs/types/ExportedContactToken.md create mode 100644 docs/API_docs/types/ExportedMessageLink.md create mode 100644 docs/API_docs/types/ExportedStoryLink.md create mode 100644 docs/API_docs/types/FileHash.md create mode 100644 docs/API_docs/types/FileLocation.md create mode 100644 docs/API_docs/types/Folder.md create mode 100644 docs/API_docs/types/FolderPeer.md create mode 100644 docs/API_docs/types/ForumTopic.md create mode 100644 docs/API_docs/types/Game.md create mode 100644 docs/API_docs/types/GeoPoint.md create mode 100644 docs/API_docs/types/GlobalPrivacySettings.md create mode 100644 docs/API_docs/types/GroupCall.md create mode 100644 docs/API_docs/types/GroupCallParticipant.md create mode 100644 docs/API_docs/types/GroupCallParticipantVideo.md create mode 100644 docs/API_docs/types/GroupCallParticipantVideoSourceGroup.md create mode 100644 docs/API_docs/types/GroupCallStreamChannel.md create mode 100644 docs/API_docs/types/HighScore.md create mode 100644 docs/API_docs/types/ImportedContact.md create mode 100644 docs/API_docs/types/InlineBotSwitchPM.md create mode 100644 docs/API_docs/types/InlineBotWebView.md create mode 100644 docs/API_docs/types/InlineQueryPeerType.md create mode 100644 docs/API_docs/types/InputAppEvent.md create mode 100644 docs/API_docs/types/InputBotApp.md create mode 100644 docs/API_docs/types/InputBotInlineMessage.md create mode 100644 docs/API_docs/types/InputBotInlineMessageID.md create mode 100644 docs/API_docs/types/InputBotInlineResult.md create mode 100644 docs/API_docs/types/InputBusinessAwayMessage.md create mode 100644 docs/API_docs/types/InputBusinessBotRecipients.md create mode 100644 docs/API_docs/types/InputBusinessChatLink.md create mode 100644 docs/API_docs/types/InputBusinessGreetingMessage.md create mode 100644 docs/API_docs/types/InputBusinessIntro.md create mode 100644 docs/API_docs/types/InputBusinessRecipients.md create mode 100644 docs/API_docs/types/InputChannel.md create mode 100644 docs/API_docs/types/InputChatPhoto.md create mode 100644 docs/API_docs/types/InputChatlist.md create mode 100644 docs/API_docs/types/InputCheckPasswordSRP.md create mode 100644 docs/API_docs/types/InputClientProxy.md create mode 100644 docs/API_docs/types/InputCollectible.md create mode 100644 docs/API_docs/types/InputContact.md create mode 100644 docs/API_docs/types/InputDialogPeer.md create mode 100644 docs/API_docs/types/InputDocument.md create mode 100644 docs/API_docs/types/InputEncryptedChat.md create mode 100644 docs/API_docs/types/InputEncryptedFile.md create mode 100644 docs/API_docs/types/InputFile.md create mode 100644 docs/API_docs/types/InputFileLocation.md create mode 100644 docs/API_docs/types/InputFolderPeer.md create mode 100644 docs/API_docs/types/InputGame.md create mode 100644 docs/API_docs/types/InputGeoPoint.md create mode 100644 docs/API_docs/types/InputGroupCall.md create mode 100644 docs/API_docs/types/InputInvoice.md create mode 100644 docs/API_docs/types/InputMedia.md create mode 100644 docs/API_docs/types/InputMessage.md create mode 100644 docs/API_docs/types/InputNotifyPeer.md create mode 100644 docs/API_docs/types/InputPaymentCredentials.md create mode 100644 docs/API_docs/types/InputPeer.md create mode 100644 docs/API_docs/types/InputPeerNotifySettings.md create mode 100644 docs/API_docs/types/InputPhoneCall.md create mode 100644 docs/API_docs/types/InputPhoto.md create mode 100644 docs/API_docs/types/InputPrivacyKey.md create mode 100644 docs/API_docs/types/InputPrivacyRule.md create mode 100644 docs/API_docs/types/InputQuickReplyShortcut.md create mode 100644 docs/API_docs/types/InputReplyTo.md create mode 100644 docs/API_docs/types/InputSecureFile.md create mode 100644 docs/API_docs/types/InputSecureValue.md create mode 100644 docs/API_docs/types/InputSingleMedia.md create mode 100644 docs/API_docs/types/InputStickerSet.md create mode 100644 docs/API_docs/types/InputStickerSetItem.md create mode 100644 docs/API_docs/types/InputStickeredMedia.md create mode 100644 docs/API_docs/types/InputStorePaymentPurpose.md create mode 100644 docs/API_docs/types/InputTheme.md create mode 100644 docs/API_docs/types/InputThemeSettings.md create mode 100644 docs/API_docs/types/InputUser.md create mode 100644 docs/API_docs/types/InputWallPaper.md create mode 100644 docs/API_docs/types/InputWebDocument.md create mode 100644 docs/API_docs/types/InputWebFileLocation.md create mode 100644 docs/API_docs/types/Invoice.md create mode 100644 docs/API_docs/types/JSONObjectValue.md create mode 100644 docs/API_docs/types/JSONValue.md create mode 100644 docs/API_docs/types/KeyboardButton.md create mode 100644 docs/API_docs/types/KeyboardButtonRow.md create mode 100644 docs/API_docs/types/LabeledPrice.md create mode 100644 docs/API_docs/types/LangPackDifference.md create mode 100644 docs/API_docs/types/LangPackLanguage.md create mode 100644 docs/API_docs/types/LangPackString.md create mode 100644 docs/API_docs/types/MaskCoords.md create mode 100644 docs/API_docs/types/MediaArea.md create mode 100644 docs/API_docs/types/MediaAreaCoordinates.md create mode 100644 docs/API_docs/types/Message.md create mode 100644 docs/API_docs/types/MessageAction.md create mode 100644 docs/API_docs/types/MessageEntity.md create mode 100644 docs/API_docs/types/MessageExtendedMedia.md create mode 100644 docs/API_docs/types/MessageFwdHeader.md create mode 100644 docs/API_docs/types/MessageMedia.md create mode 100644 docs/API_docs/types/MessagePeerReaction.md create mode 100644 docs/API_docs/types/MessagePeerVote.md create mode 100644 docs/API_docs/types/MessageRange.md create mode 100644 docs/API_docs/types/MessageReactions.md create mode 100644 docs/API_docs/types/MessageReplies.md create mode 100644 docs/API_docs/types/MessageReplyHeader.md create mode 100644 docs/API_docs/types/MessageViews.md create mode 100644 docs/API_docs/types/MessagesFilter.md create mode 100644 docs/API_docs/types/MissingInvitee.md create mode 100644 docs/API_docs/types/MyBoost.md create mode 100644 docs/API_docs/types/NearestDc.md create mode 100644 docs/API_docs/types/NotificationSound.md create mode 100644 docs/API_docs/types/NotifyPeer.md create mode 100644 docs/API_docs/types/Null.md create mode 100644 docs/API_docs/types/OutboxReadDate.md create mode 100644 docs/API_docs/types/Page.md create mode 100644 docs/API_docs/types/PageBlock.md create mode 100644 docs/API_docs/types/PageCaption.md create mode 100644 docs/API_docs/types/PageListItem.md create mode 100644 docs/API_docs/types/PageListOrderedItem.md create mode 100644 docs/API_docs/types/PageRelatedArticle.md create mode 100644 docs/API_docs/types/PageTableCell.md create mode 100644 docs/API_docs/types/PageTableRow.md create mode 100644 docs/API_docs/types/PasswordKdfAlgo.md create mode 100644 docs/API_docs/types/PaymentCharge.md create mode 100644 docs/API_docs/types/PaymentFormMethod.md create mode 100644 docs/API_docs/types/PaymentRequestedInfo.md create mode 100644 docs/API_docs/types/PaymentSavedCredentials.md create mode 100644 docs/API_docs/types/Peer.md create mode 100644 docs/API_docs/types/PeerBlocked.md create mode 100644 docs/API_docs/types/PeerColor.md create mode 100644 docs/API_docs/types/PeerLocated.md create mode 100644 docs/API_docs/types/PeerNotifySettings.md create mode 100644 docs/API_docs/types/PeerSettings.md create mode 100644 docs/API_docs/types/PeerStories.md create mode 100644 docs/API_docs/types/PhoneCall.md create mode 100644 docs/API_docs/types/PhoneCallDiscardReason.md create mode 100644 docs/API_docs/types/PhoneCallProtocol.md create mode 100644 docs/API_docs/types/PhoneConnection.md create mode 100644 docs/API_docs/types/Photo.md create mode 100644 docs/API_docs/types/PhotoSize.md create mode 100644 docs/API_docs/types/Poll.md create mode 100644 docs/API_docs/types/PollAnswer.md create mode 100644 docs/API_docs/types/PollAnswerVoters.md create mode 100644 docs/API_docs/types/PollResults.md create mode 100644 docs/API_docs/types/PopularContact.md create mode 100644 docs/API_docs/types/PostAddress.md create mode 100644 docs/API_docs/types/PostInteractionCounters.md create mode 100644 docs/API_docs/types/PremiumGiftCodeOption.md create mode 100644 docs/API_docs/types/PremiumGiftOption.md create mode 100644 docs/API_docs/types/PremiumSubscriptionOption.md create mode 100644 docs/API_docs/types/PrepaidGiveaway.md create mode 100644 docs/API_docs/types/PrivacyKey.md create mode 100644 docs/API_docs/types/PrivacyRule.md create mode 100644 docs/API_docs/types/PublicForward.md create mode 100644 docs/API_docs/types/QuickReply.md create mode 100644 docs/API_docs/types/Reaction.md create mode 100644 docs/API_docs/types/ReactionCount.md create mode 100644 docs/API_docs/types/ReactionNotificationsFrom.md create mode 100644 docs/API_docs/types/ReactionsNotifySettings.md create mode 100644 docs/API_docs/types/ReadParticipantDate.md create mode 100644 docs/API_docs/types/ReceivedNotifyMessage.md create mode 100644 docs/API_docs/types/RecentMeUrl.md create mode 100644 docs/API_docs/types/ReplyMarkup.md create mode 100644 docs/API_docs/types/ReportReason.md create mode 100644 docs/API_docs/types/RequestPeerType.md create mode 100644 docs/API_docs/types/RequestedPeer.md create mode 100644 docs/API_docs/types/RestrictionReason.md create mode 100644 docs/API_docs/types/RichText.md create mode 100644 docs/API_docs/types/SavedContact.md create mode 100644 docs/API_docs/types/SavedDialog.md create mode 100644 docs/API_docs/types/SavedReactionTag.md create mode 100644 docs/API_docs/types/SearchResultsCalendarPeriod.md create mode 100644 docs/API_docs/types/SearchResultsPosition.md create mode 100644 docs/API_docs/types/SecureCredentialsEncrypted.md create mode 100644 docs/API_docs/types/SecureData.md create mode 100644 docs/API_docs/types/SecureFile.md create mode 100644 docs/API_docs/types/SecurePasswordKdfAlgo.md create mode 100644 docs/API_docs/types/SecurePlainData.md create mode 100644 docs/API_docs/types/SecureRequiredType.md create mode 100644 docs/API_docs/types/SecureSecretSettings.md create mode 100644 docs/API_docs/types/SecureValue.md create mode 100644 docs/API_docs/types/SecureValueError.md create mode 100644 docs/API_docs/types/SecureValueHash.md create mode 100644 docs/API_docs/types/SecureValueType.md create mode 100644 docs/API_docs/types/SendAsPeer.md create mode 100644 docs/API_docs/types/SendMessageAction.md create mode 100644 docs/API_docs/types/ShippingOption.md create mode 100644 docs/API_docs/types/SimpleWebViewResult.md create mode 100644 docs/API_docs/types/SmsJob.md create mode 100644 docs/API_docs/types/SponsoredMessage.md create mode 100644 docs/API_docs/types/SponsoredMessageReportOption.md create mode 100644 docs/API_docs/types/StatsAbsValueAndPrev.md create mode 100644 docs/API_docs/types/StatsDateRangeDays.md create mode 100644 docs/API_docs/types/StatsGraph.md create mode 100644 docs/API_docs/types/StatsGroupTopAdmin.md create mode 100644 docs/API_docs/types/StatsGroupTopInviter.md create mode 100644 docs/API_docs/types/StatsGroupTopPoster.md create mode 100644 docs/API_docs/types/StatsPercentValue.md create mode 100644 docs/API_docs/types/StatsURL.md create mode 100644 docs/API_docs/types/StickerKeyword.md create mode 100644 docs/API_docs/types/StickerPack.md create mode 100644 docs/API_docs/types/StickerSet.md create mode 100644 docs/API_docs/types/StickerSetCovered.md create mode 100644 docs/API_docs/types/StoriesStealthMode.md create mode 100644 docs/API_docs/types/StoryFwdHeader.md create mode 100644 docs/API_docs/types/StoryItem.md create mode 100644 docs/API_docs/types/StoryReaction.md create mode 100644 docs/API_docs/types/StoryView.md create mode 100644 docs/API_docs/types/StoryViews.md create mode 100644 docs/API_docs/types/TextWithEntities.md create mode 100644 docs/API_docs/types/Theme.md create mode 100644 docs/API_docs/types/ThemeSettings.md create mode 100644 docs/API_docs/types/Timezone.md create mode 100644 docs/API_docs/types/TopPeer.md create mode 100644 docs/API_docs/types/TopPeerCategory.md create mode 100644 docs/API_docs/types/TopPeerCategoryPeers.md create mode 100644 docs/API_docs/types/True.md create mode 100644 docs/API_docs/types/Update.md create mode 100644 docs/API_docs/types/Updates.md create mode 100644 docs/API_docs/types/UrlAuthResult.md create mode 100644 docs/API_docs/types/User.md create mode 100644 docs/API_docs/types/UserFull.md create mode 100644 docs/API_docs/types/UserProfilePhoto.md create mode 100644 docs/API_docs/types/UserStatus.md create mode 100644 docs/API_docs/types/Username.md create mode 100644 docs/API_docs/types/VideoSize.md create mode 100644 docs/API_docs/types/WallPaper.md create mode 100644 docs/API_docs/types/WallPaperSettings.md create mode 100644 docs/API_docs/types/WebAuthorization.md create mode 100644 docs/API_docs/types/WebDocument.md create mode 100644 docs/API_docs/types/WebPage.md create mode 100644 docs/API_docs/types/WebPageAttribute.md create mode 100644 docs/API_docs/types/WebViewMessageSent.md create mode 100644 docs/API_docs/types/WebViewResult.md create mode 100644 docs/API_docs/types/X.md create mode 100644 docs/API_docs/types/account.AuthorizationForm.md create mode 100644 docs/API_docs/types/account.Authorizations.md create mode 100644 docs/API_docs/types/account.AutoDownloadSettings.md create mode 100644 docs/API_docs/types/account.AutoSaveSettings.md create mode 100644 docs/API_docs/types/account.BusinessChatLinks.md create mode 100644 docs/API_docs/types/account.ConnectedBots.md create mode 100644 docs/API_docs/types/account.ContentSettings.md create mode 100644 docs/API_docs/types/account.EmailVerified.md create mode 100644 docs/API_docs/types/account.EmojiStatuses.md create mode 100644 docs/API_docs/types/account.Password.md create mode 100644 docs/API_docs/types/account.PasswordInputSettings.md create mode 100644 docs/API_docs/types/account.PasswordSettings.md create mode 100644 docs/API_docs/types/account.PrivacyRules.md create mode 100644 docs/API_docs/types/account.ResetPasswordResult.md create mode 100644 docs/API_docs/types/account.ResolvedBusinessChatLinks.md create mode 100644 docs/API_docs/types/account.SavedRingtone.md create mode 100644 docs/API_docs/types/account.SavedRingtones.md create mode 100644 docs/API_docs/types/account.SentEmailCode.md create mode 100644 docs/API_docs/types/account.Takeout.md create mode 100644 docs/API_docs/types/account.Themes.md create mode 100644 docs/API_docs/types/account.TmpPassword.md create mode 100644 docs/API_docs/types/account.WallPapers.md create mode 100644 docs/API_docs/types/account.WebAuthorizations.md create mode 100644 docs/API_docs/types/auth.Authorization.md create mode 100644 docs/API_docs/types/auth.CodeType.md create mode 100644 docs/API_docs/types/auth.ExportedAuthorization.md create mode 100644 docs/API_docs/types/auth.LoggedOut.md create mode 100644 docs/API_docs/types/auth.LoginToken.md create mode 100644 docs/API_docs/types/auth.PasswordRecovery.md create mode 100644 docs/API_docs/types/auth.SentCode.md create mode 100644 docs/API_docs/types/auth.SentCodeType.md create mode 100644 docs/API_docs/types/bots.BotInfo.md create mode 100644 docs/API_docs/types/bytes.md create mode 100644 docs/API_docs/types/channels.AdminLogResults.md create mode 100644 docs/API_docs/types/channels.ChannelParticipant.md create mode 100644 docs/API_docs/types/channels.ChannelParticipants.md create mode 100644 docs/API_docs/types/channels.SendAsPeers.md create mode 100644 docs/API_docs/types/channels.SponsoredMessageReportResult.md create mode 100644 docs/API_docs/types/chatlists.ChatlistInvite.md create mode 100644 docs/API_docs/types/chatlists.ChatlistUpdates.md create mode 100644 docs/API_docs/types/chatlists.ExportedChatlistInvite.md create mode 100644 docs/API_docs/types/chatlists.ExportedInvites.md create mode 100644 docs/API_docs/types/contacts.Blocked.md create mode 100644 docs/API_docs/types/contacts.ContactBirthdays.md create mode 100644 docs/API_docs/types/contacts.Contacts.md create mode 100644 docs/API_docs/types/contacts.Found.md create mode 100644 docs/API_docs/types/contacts.ImportedContacts.md create mode 100644 docs/API_docs/types/contacts.ResolvedPeer.md create mode 100644 docs/API_docs/types/contacts.TopPeers.md create mode 100644 docs/API_docs/types/double.md create mode 100644 docs/API_docs/types/fragment.CollectibleInfo.md create mode 100644 docs/API_docs/types/help.AppConfig.md create mode 100644 docs/API_docs/types/help.AppUpdate.md create mode 100644 docs/API_docs/types/help.CountriesList.md create mode 100644 docs/API_docs/types/help.Country.md create mode 100644 docs/API_docs/types/help.CountryCode.md create mode 100644 docs/API_docs/types/help.DeepLinkInfo.md create mode 100644 docs/API_docs/types/help.InviteText.md create mode 100644 docs/API_docs/types/help.PassportConfig.md create mode 100644 docs/API_docs/types/help.PeerColorOption.md create mode 100644 docs/API_docs/types/help.PeerColorSet.md create mode 100644 docs/API_docs/types/help.PeerColors.md create mode 100644 docs/API_docs/types/help.PremiumPromo.md create mode 100644 docs/API_docs/types/help.PromoData.md create mode 100644 docs/API_docs/types/help.RecentMeUrls.md create mode 100644 docs/API_docs/types/help.Support.md create mode 100644 docs/API_docs/types/help.SupportName.md create mode 100644 docs/API_docs/types/help.TermsOfService.md create mode 100644 docs/API_docs/types/help.TermsOfServiceUpdate.md create mode 100644 docs/API_docs/types/help.TimezonesList.md create mode 100644 docs/API_docs/types/help.UserInfo.md create mode 100644 docs/API_docs/types/index.md create mode 100644 docs/API_docs/types/int.md create mode 100644 docs/API_docs/types/int128.md create mode 100644 docs/API_docs/types/int256.md create mode 100644 docs/API_docs/types/int512.md create mode 100644 docs/API_docs/types/int53.md create mode 100644 docs/API_docs/types/long.md create mode 100644 docs/API_docs/types/messages.AffectedFoundMessages.md create mode 100644 docs/API_docs/types/messages.AffectedHistory.md create mode 100644 docs/API_docs/types/messages.AffectedMessages.md create mode 100644 docs/API_docs/types/messages.AllStickers.md create mode 100644 docs/API_docs/types/messages.ArchivedStickers.md create mode 100644 docs/API_docs/types/messages.AvailableReactions.md create mode 100644 docs/API_docs/types/messages.BotApp.md create mode 100644 docs/API_docs/types/messages.BotCallbackAnswer.md create mode 100644 docs/API_docs/types/messages.BotResults.md create mode 100644 docs/API_docs/types/messages.ChatAdminsWithInvites.md create mode 100644 docs/API_docs/types/messages.ChatFull.md create mode 100644 docs/API_docs/types/messages.ChatInviteImporters.md create mode 100644 docs/API_docs/types/messages.Chats.md create mode 100644 docs/API_docs/types/messages.CheckedHistoryImportPeer.md create mode 100644 docs/API_docs/types/messages.DhConfig.md create mode 100644 docs/API_docs/types/messages.DialogFilters.md create mode 100644 docs/API_docs/types/messages.Dialogs.md create mode 100644 docs/API_docs/types/messages.DiscussionMessage.md create mode 100644 docs/API_docs/types/messages.EmojiGroups.md create mode 100644 docs/API_docs/types/messages.ExportedChatInvite.md create mode 100644 docs/API_docs/types/messages.ExportedChatInvites.md create mode 100644 docs/API_docs/types/messages.FavedStickers.md create mode 100644 docs/API_docs/types/messages.FeaturedStickers.md create mode 100644 docs/API_docs/types/messages.ForumTopics.md create mode 100644 docs/API_docs/types/messages.FoundStickerSets.md create mode 100644 docs/API_docs/types/messages.HighScores.md create mode 100644 docs/API_docs/types/messages.HistoryImport.md create mode 100644 docs/API_docs/types/messages.HistoryImportParsed.md create mode 100644 docs/API_docs/types/messages.InactiveChats.md create mode 100644 docs/API_docs/types/messages.InvitedUsers.md create mode 100644 docs/API_docs/types/messages.MessageEditData.md create mode 100644 docs/API_docs/types/messages.MessageReactionsList.md create mode 100644 docs/API_docs/types/messages.MessageViews.md create mode 100644 docs/API_docs/types/messages.Messages.md create mode 100644 docs/API_docs/types/messages.MyStickers.md create mode 100644 docs/API_docs/types/messages.PeerDialogs.md create mode 100644 docs/API_docs/types/messages.PeerSettings.md create mode 100644 docs/API_docs/types/messages.QuickReplies.md create mode 100644 docs/API_docs/types/messages.Reactions.md create mode 100644 docs/API_docs/types/messages.RecentStickers.md create mode 100644 docs/API_docs/types/messages.SavedDialogs.md create mode 100644 docs/API_docs/types/messages.SavedGifs.md create mode 100644 docs/API_docs/types/messages.SavedReactionTags.md create mode 100644 docs/API_docs/types/messages.SearchCounter.md create mode 100644 docs/API_docs/types/messages.SearchResultsCalendar.md create mode 100644 docs/API_docs/types/messages.SearchResultsPositions.md create mode 100644 docs/API_docs/types/messages.SentEncryptedMessage.md create mode 100644 docs/API_docs/types/messages.SponsoredMessages.md create mode 100644 docs/API_docs/types/messages.StickerSet.md create mode 100644 docs/API_docs/types/messages.StickerSetInstallResult.md create mode 100644 docs/API_docs/types/messages.Stickers.md create mode 100644 docs/API_docs/types/messages.TranscribedAudio.md create mode 100644 docs/API_docs/types/messages.TranslatedText.md create mode 100644 docs/API_docs/types/messages.VotesList.md create mode 100644 docs/API_docs/types/messages.WebPage.md create mode 100644 docs/API_docs/types/payments.BankCardData.md create mode 100644 docs/API_docs/types/payments.CheckedGiftCode.md create mode 100644 docs/API_docs/types/payments.ExportedInvoice.md create mode 100644 docs/API_docs/types/payments.GiveawayInfo.md create mode 100644 docs/API_docs/types/payments.PaymentForm.md create mode 100644 docs/API_docs/types/payments.PaymentReceipt.md create mode 100644 docs/API_docs/types/payments.PaymentResult.md create mode 100644 docs/API_docs/types/payments.SavedInfo.md create mode 100644 docs/API_docs/types/payments.ValidatedRequestedInfo.md create mode 100644 docs/API_docs/types/phone.ExportedGroupCallInvite.md create mode 100644 docs/API_docs/types/phone.GroupCall.md create mode 100644 docs/API_docs/types/phone.GroupCallStreamChannels.md create mode 100644 docs/API_docs/types/phone.GroupCallStreamRtmpUrl.md create mode 100644 docs/API_docs/types/phone.GroupParticipants.md create mode 100644 docs/API_docs/types/phone.JoinAsPeers.md create mode 100644 docs/API_docs/types/phone.PhoneCall.md create mode 100644 docs/API_docs/types/photos.Photo.md create mode 100644 docs/API_docs/types/photos.Photos.md create mode 100644 docs/API_docs/types/premium.BoostsList.md create mode 100644 docs/API_docs/types/premium.BoostsStatus.md create mode 100644 docs/API_docs/types/premium.MyBoosts.md create mode 100644 docs/API_docs/types/smsjobs.EligibilityToJoin.md create mode 100644 docs/API_docs/types/smsjobs.Status.md create mode 100644 docs/API_docs/types/stats.BroadcastRevenueStats.md create mode 100644 docs/API_docs/types/stats.BroadcastRevenueTransactions.md create mode 100644 docs/API_docs/types/stats.BroadcastRevenueWithdrawalUrl.md create mode 100644 docs/API_docs/types/stats.BroadcastStats.md create mode 100644 docs/API_docs/types/stats.MegagroupStats.md create mode 100644 docs/API_docs/types/stats.MessageStats.md create mode 100644 docs/API_docs/types/stats.PublicForwards.md create mode 100644 docs/API_docs/types/stats.StoryStats.md create mode 100644 docs/API_docs/types/stickers.SuggestedShortName.md create mode 100644 docs/API_docs/types/storage.FileType.md create mode 100644 docs/API_docs/types/stories.AllStories.md create mode 100644 docs/API_docs/types/stories.PeerStories.md create mode 100644 docs/API_docs/types/stories.Stories.md create mode 100644 docs/API_docs/types/stories.StoryReactionsList.md create mode 100644 docs/API_docs/types/stories.StoryViews.md create mode 100644 docs/API_docs/types/stories.StoryViewsList.md create mode 100644 docs/API_docs/types/string.md create mode 100644 docs/API_docs/types/updates.ChannelDifference.md create mode 100644 docs/API_docs/types/updates.Difference.md create mode 100644 docs/API_docs/types/updates.State.md create mode 100644 docs/API_docs/types/upload.CdnFile.md create mode 100644 docs/API_docs/types/upload.File.md create mode 100644 docs/API_docs/types/upload.WebFile.md create mode 100644 docs/API_docs/types/users.UserFull.md create mode 100644 docs/API_docs/types/waveform.md create mode 100644 docs/CNAME create mode 100644 docs/Chat.md create mode 100644 docs/FOSS.html create mode 100644 docs/FullInfo.md create mode 100644 docs/Info.md create mode 100644 docs/LICENSE-theme.txt create mode 100644 docs/PHP/danog/MadelineProto/API.md create mode 100644 docs/PHP/danog/MadelineProto/AsyncTools.md create mode 100644 docs/PHP/danog/MadelineProto/BotApiFileId.md create mode 100644 docs/PHP/danog/MadelineProto/Broadcast/Action.md create mode 100644 docs/PHP/danog/MadelineProto/Broadcast/Filter.md create mode 100644 docs/PHP/danog/MadelineProto/Broadcast/Progress.md create mode 100644 docs/PHP/danog/MadelineProto/Broadcast/Status.md create mode 100644 docs/PHP/danog/MadelineProto/Conversion.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/AbstractMessage.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/AbstractPoll.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/AbstractPrivateMessage.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/AbstractStory.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Action.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Action/Cancel.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Action/ChooseContact.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Action/ChooseSticker.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Action/EmojiSeen.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Action/EmojiTap.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Action/GamePlay.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Action/GeoLocation.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Action/GroupCallSpeaking.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Action/HistoryImport.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Action/RecordAudio.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Action/RecordRound.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Action/RecordVideo.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Action/Typing.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Action/UploadAudio.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Action/UploadDocument.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Action/UploadPhoto.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Action/UploadRound.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Action/UploadVideo.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Attributes/Cron.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Attributes/Handler.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/BotApp.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/BotCommands.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/CallbackQuery.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Channel/ChannelParticipant.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Channel/MessageForwards.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Channel/MessageViewsChanged.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Channel/UpdateChannel.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/ChatInvite.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/ChatInvite/ChatInviteExported.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/ChatInvite/ChatInvitePublicJoin.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/BotChatInviteRequest.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/PendingJoinRequests.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Command.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/CommandType.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Delete.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Delete/DeleteChannelMessages.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Delete/DeleteMessages.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Delete/DeleteScheduledMessages.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/Combinator/FilterNot.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/Combinator/FiltersAnd.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/Combinator/FiltersOr.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/Filter.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterAllowAll.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterButtonQueryData.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterChannel.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterCommand.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterCommandCaseInsensitive.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterEdited.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterEnded.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterForwarded.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterForwardedFrom.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromAdmin.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromBot.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromSender.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromSenders.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterGroup.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterIncoming.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterMedia.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterMessage.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterNoMedia.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterNotEdited.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterOutgoing.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterPeer.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterPoll.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterPrivate.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterRegex.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterRegexMatchAll.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterReply.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterReplyToSelf.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterRunning.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterSecret.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterSender.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterSenders.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterService.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterText.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextCaseInsensitive.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextContains.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextContainsCaseInsensitive.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextEnds.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextEndsCaseInsensitive.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextStarts.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextStartsCaseInsensitive.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTopic.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTopicId.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterAudio.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterDocument.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterDocumentPhoto.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterGif.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterPhoto.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterRoundVideo.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterSticker.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterVideo.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterVoice.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/Poll/FilterMultiplePoll.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/Poll/FilterQuizPoll.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Filter/Poll/FilterSinglePoll.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/ForwardedInfo.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/InlineQuery.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Keyboard.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Keyboard/InlineKeyboard.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Keyboard/ReplyKeyboard.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/AbstractAudio.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/AbstractSticker.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/AbstractVideo.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/AnimatedSticker.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/Audio.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/CustomEmoji.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/Document.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/DocumentPhoto.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/GeoPoint.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/Gif.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/MaskPosition.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/MaskSticker.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/MediaStory.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/Photo.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/RoundVideo.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/StaticSticker.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/Sticker.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/Video.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/VideoSticker.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Media/Voice.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/ChannelMessage.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/BankCard.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Blockquote.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Bold.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/BotCommand.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Cashtag.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Code.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/CustomEmoji.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Email.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Hashtag.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/InputMentionName.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Italic.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Mention.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/MentionName.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/MessageEntity.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Phone.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Pre.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Spoiler.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Strike.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/TextUrl.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Underline.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Url.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/GroupMessage.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/PrivateMessage.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/ReportReason.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/SecretMessage.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogBotAllowed.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelCreated.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelMigrateFrom.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatJoinedByLink.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatMigrateTo.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogContactSignUp.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogCreated.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogDeleteMessages.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGameScore.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGeoProximityReached.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGiftPremium.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCall.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallInvited.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallScheduled.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogHistoryCleared.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberJoinedByRequest.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberLeft.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMembersJoined.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMessagePinned.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPeerRequested.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhoneCall.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhotoChanged.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogReadMessages.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogScreenshotTaken.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatTheme.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatWallPaper.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSuggestProfilePhoto.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTitleChanged.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicCreated.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicEdited.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogWebView.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Message/ServiceMessage.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Participant.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Participant/Admin.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Participant/Banned.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Participant/Creator.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Participant/Left.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Participant/Member.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Participant/MySelf.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Participant/Rights.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Participant/Rights/Admin.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Participant/Rights/Banned.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Pinned.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedChannelMessages.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedGroupMessages.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedPrivateMessages.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Plugin/RestartPlugin.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Poll/MultiplePoll.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Poll/PollAnswer.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Poll/QuizPoll.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Poll/SinglePoll.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Privacy.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Privacy/Rule.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowAll.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowChatParticipants.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowCloseFriends.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowContacts.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowUsers.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowAll.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowChatParticipants.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowContacts.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowUsers.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Query/ButtonQuery.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Query/ChatButtonQuery.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Query/ChatGameQuery.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Query/GameQuery.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Query/InlineButtonQuery.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Query/InlineGameQuery.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Ended.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/FromAdmin.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/FromAdminOrOutgoing.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasAudio.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasDocument.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasDocumentPhoto.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasGif.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasMedia.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasMultiplePoll.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasNoMedia.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasPhoto.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasPoll.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasQuizPoll.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasRoundVideo.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasSinglePoll.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasSticker.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasTopic.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasVideo.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasVoice.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Incoming.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsEdited.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsForwarded.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsNotEdited.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsReply.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsReplyToSelf.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Outgoing.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Running.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Story/Story.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Story/StoryDeleted.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Story/StoryReaction.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Topic/IconColor.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Typing.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Typing/ChatUserTyping.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Typing/SecretUserTyping.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Typing/SupergroupUserTyping.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Typing/UserTyping.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Update.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/User/Blocked.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/User/BotStopped.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/User/Phone.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/User/Status.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/User/Status/Emoji.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/User/Status/EmptyStatus.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/User/Status/LastMonth.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/User/Status/LastWeek.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/User/Status/Offline.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/User/Status/Online.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/User/Status/Recently.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/User/Username.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/User/UsernameInfo.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Wallpaper.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandler/Wallpaper/WallpaperSettings.md create mode 100644 docs/PHP/danog/MadelineProto/EventHandlerIssue.md create mode 100644 docs/PHP/danog/MadelineProto/Exception.md create mode 100644 docs/PHP/danog/MadelineProto/FileCallback.md create mode 100644 docs/PHP/danog/MadelineProto/FileCallbackInterface.md create mode 100644 docs/PHP/danog/MadelineProto/LocalFile.md create mode 100644 docs/PHP/danog/MadelineProto/Logger.md create mode 100644 docs/PHP/danog/MadelineProto/MTProtoTools/DialogId.md create mode 100644 docs/PHP/danog/MadelineProto/MyTelegramOrgWrapper.md create mode 100644 docs/PHP/danog/MadelineProto/Ogg.md create mode 100644 docs/PHP/danog/MadelineProto/OggWriter.md create mode 100644 docs/PHP/danog/MadelineProto/PTSException.md create mode 100644 docs/PHP/danog/MadelineProto/ParseMode.md create mode 100644 docs/PHP/danog/MadelineProto/PeerNotInDbException.md create mode 100644 docs/PHP/danog/MadelineProto/PluginEventHandler.md create mode 100644 docs/PHP/danog/MadelineProto/PsrLogger.md create mode 100644 docs/PHP/danog/MadelineProto/RPCError/FloodWaitError.md create mode 100644 docs/PHP/danog/MadelineProto/RPCErrorException.md create mode 100644 docs/PHP/danog/MadelineProto/RemoteUrl.md create mode 100644 docs/PHP/danog/MadelineProto/ResponseException.md create mode 100644 docs/PHP/danog/MadelineProto/SecretChats/SecretChat.md create mode 100644 docs/PHP/danog/MadelineProto/SecretPeerNotInDbException.md create mode 100644 docs/PHP/danog/MadelineProto/SecurityException.md create mode 100644 docs/PHP/danog/MadelineProto/Settings.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/AppInfo.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/Auth.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/Connection.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/Database/DriverDatabaseAbstract.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/Database/Memory.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/Database/Mysql.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/Database/Postgres.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/Database/Redis.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/Database/SerializerType.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/Database/SqlAbstract.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/DatabaseAbstract.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/Files.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/Ipc.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/Logger.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/Peer.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/Pwr.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/RPC.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/SecretChats.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/Serialization.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/TLSchema.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/Templates.md create mode 100644 docs/PHP/danog/MadelineProto/Settings/VoIP.md create mode 100644 docs/PHP/danog/MadelineProto/Shutdown.md create mode 100644 docs/PHP/danog/MadelineProto/SimpleEventHandler.md create mode 100644 docs/PHP/danog/MadelineProto/StrTools.md create mode 100644 docs/PHP/danog/MadelineProto/TL/Conversion/Exception.md create mode 100644 docs/PHP/danog/MadelineProto/TL/Conversion/Extension.md create mode 100644 docs/PHP/danog/MadelineProto/TL/Exception.md create mode 100644 docs/PHP/danog/MadelineProto/TL/TLInterface.md create mode 100644 docs/PHP/danog/MadelineProto/TL/Types/Button.md create mode 100644 docs/PHP/danog/MadelineProto/TL/Types/Bytes.md create mode 100644 docs/PHP/danog/MadelineProto/TL/Types/LoginQrCode.md create mode 100644 docs/PHP/danog/MadelineProto/TextEntities.md create mode 100644 docs/PHP/danog/MadelineProto/Tools.md create mode 100644 docs/PHP/danog/MadelineProto/VoIP.md create mode 100644 docs/PHP/danog/MadelineProto/VoIP/CallState.md create mode 100644 docs/PHP/danog/MadelineProto/VoIP/DiscardReason.md create mode 100644 docs/PHP/danog/MadelineProto/VoIP/VoIPState.md create mode 100644 docs/PHP/index.md create mode 100644 docs/Participant.md create mode 100644 docs/README.md create mode 100644 docs/_config.yml create mode 100644 docs/_includes/fix_linenos.html create mode 100644 docs/_includes/footer_custom.html create mode 100644 docs/_includes/head.html create mode 100644 docs/_includes/head_custom.html create mode 100644 docs/_includes/header_custom.html create mode 100644 docs/_includes/nav.html create mode 100644 docs/_includes/title.html create mode 100755 docs/_includes/vendor/anchor_headings.html create mode 100644 docs/_layouts/about.html create mode 100644 docs/_layouts/default.html create mode 100644 docs/_layouts/empty.html create mode 100644 docs/_layouts/home.html create mode 100644 docs/_layouts/page.html create mode 100644 docs/_layouts/post.html create mode 100644 docs/_layouts/table_wrappers.html create mode 100644 docs/_layouts/vendor/compress.html create mode 100644 docs/_sass/base.scss create mode 100644 docs/_sass/buttons.scss create mode 100644 docs/_sass/code.scss create mode 100644 docs/_sass/color_schemes/dark.scss create mode 100644 docs/_sass/color_schemes/light.scss create mode 100644 docs/_sass/content.scss create mode 100644 docs/_sass/custom/custom.scss create mode 100644 docs/_sass/labels.scss create mode 100644 docs/_sass/layout.scss create mode 100644 docs/_sass/modules.scss create mode 100644 docs/_sass/navigation.scss create mode 100644 docs/_sass/print.scss create mode 100644 docs/_sass/search.scss create mode 100644 docs/_sass/support/_functions.scss create mode 100644 docs/_sass/support/_variables.scss create mode 100644 docs/_sass/support/mixins/_buttons.scss create mode 100644 docs/_sass/support/mixins/_layout.scss create mode 100644 docs/_sass/support/mixins/_typography.scss create mode 100644 docs/_sass/support/mixins/mixins.scss create mode 100644 docs/_sass/support/support.scss create mode 100644 docs/_sass/tables.scss create mode 100644 docs/_sass/typography.scss create mode 100644 docs/_sass/utilities/_colors.scss create mode 100644 docs/_sass/utilities/_layout.scss create mode 100644 docs/_sass/utilities/_lists.scss create mode 100644 docs/_sass/utilities/_spacing.scss create mode 100644 docs/_sass/utilities/_typography.scss create mode 100644 docs/_sass/utilities/utilities.scss create mode 100644 docs/_sass/vendor/normalize.scss/README.md create mode 100644 docs/_sass/vendor/normalize.scss/normalize.scss create mode 120000 docs/apikey.pub create mode 100644 docs/assets/css/just-the-docs-dark.scss create mode 100644 docs/assets/css/just-the-docs-light.scss create mode 100644 docs/assets/images/just-the-docs.png create mode 100644 docs/assets/images/search.svg create mode 100644 docs/assets/js/just-the-docs.js create mode 100644 docs/assets/js/vendor/lunr.min.js create mode 100644 docs/assets/js/zzzz-search-data.json create mode 100644 docs/botLogin.md create mode 100644 docs/complete2FALogin.md create mode 100644 docs/completePhoneLogin.md create mode 100644 docs/completeSignup.md create mode 100644 docs/docs/ASYNC.md create mode 100644 docs/docs/BROADCAST.md create mode 100644 docs/docs/CALLS.md create mode 100644 docs/docs/CHAT_INFO.md create mode 100644 docs/docs/CONTRIB.md create mode 100644 docs/docs/CREATING_A_CLIENT.md create mode 100644 docs/docs/DATABASE.md create mode 100644 docs/docs/DIALOGS.md create mode 100644 docs/docs/DOCKER.md create mode 100644 docs/docs/EXCEPTIONS.md create mode 100644 docs/docs/FAQ.md create mode 100644 docs/docs/FEATURES.md create mode 100644 docs/docs/FILES.md create mode 100644 docs/docs/FILTERS.md create mode 100644 docs/docs/FLOOD_WAIT.md create mode 100644 docs/docs/INLINE_BUTTONS.md create mode 100644 docs/docs/INSTALLATION.md create mode 100644 docs/docs/LOGGING.md create mode 100644 docs/docs/LOGIN.md create mode 100644 docs/docs/PLUGINS.md create mode 100644 docs/docs/PROXY.md create mode 100644 docs/docs/REQUIREMENTS.md create mode 100644 docs/docs/SECRET_CHATS.md create mode 100644 docs/docs/SELF.md create mode 100644 docs/docs/SETTINGS.md create mode 100644 docs/docs/TEMPLATES.md create mode 100644 docs/docs/UPDATES.md create mode 100644 docs/docs/UPDATES_INTERNAL.md create mode 100644 docs/docs/UPGRADING.md create mode 100644 docs/docs/USING_METHODS.md create mode 100644 docs/favicons/android-chrome-192x192.png create mode 100644 docs/favicons/android-chrome-256x256.png create mode 100644 docs/favicons/apple-touch-icon.png create mode 100644 docs/favicons/browserconfig.xml create mode 100644 docs/favicons/favicon-16x16.png create mode 100644 docs/favicons/favicon-32x32.png create mode 100644 docs/favicons/favicon.ico create mode 100644 docs/favicons/manifest.json create mode 100644 docs/favicons/mstile-150x150.png create mode 100644 docs/favicons/safari-pinned-tab.svg create mode 100644 docs/getFullDialogs.md create mode 100644 docs/getFullInfo.md create mode 100644 docs/getId.md create mode 100644 docs/getInfo.md create mode 100644 docs/getPwrChat.md create mode 100644 docs/getSelf.md create mode 100644 docs/index.md create mode 100644 docs/logo-hover.png create mode 100644 docs/logo.png create mode 100644 docs/phoneLogin.md create mode 100644 docs/requestSecretChat.md create mode 100644 docs/res/bg1.png create mode 100644 docs/res/bg1_blured.png create mode 100644 docs/robots.txt create mode 100644 docs/update2fa.md create mode 100644 template/!X.md create mode 100644 template/Bool.md create mode 100644 template/DataJSON.md create mode 100644 template/InputCheckPasswordSRP.md create mode 100644 template/InputDocument.md create mode 100644 template/InputEncryptedChat.md create mode 100644 template/InputFile.md create mode 100644 template/InputMedia.md create mode 100644 template/InputMessage.md create mode 100644 template/InputPhoto.md create mode 100644 template/KeyboardButton.md create mode 100644 template/Method.md create mode 100644 template/PhoneCall.md create mode 100644 template/ReplyMarkup.md create mode 100644 template/Type.md create mode 100644 template/Updates.md create mode 100644 template/User.md create mode 100644 template/boolFalse.md create mode 100644 template/boolTrue.md create mode 100644 template/bytes.md create mode 100644 template/chunks.md create mode 100644 template/constructor-example.md create mode 100644 template/constructors-index.md create mode 100644 template/disallow.json create mode 100644 template/double.md create mode 100644 template/index.md create mode 100644 template/int.md create mode 100644 template/int128.md create mode 100644 template/int256.md create mode 100644 template/int512.md create mode 100644 template/int53.md create mode 100644 template/long.md create mode 100644 template/method-example.md create mode 100644 template/methods-api-index.md create mode 100644 template/methods-index.md create mode 100644 template/null.md create mode 100644 template/parse_mode.md create mode 100644 template/photoStrippedSize.md create mode 100644 template/reply_markup.md create mode 100644 template/string.md create mode 100644 template/types-index.md create mode 100644 template/waveform.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..e494c5f283 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +_site +.jekyll-cache diff --git a/.woodpecker.yml b/.woodpecker.yml new file mode 100644 index 0000000000..8c948b1179 --- /dev/null +++ b/.woodpecker.yml @@ -0,0 +1,31 @@ +steps: + build: + image: danog/gojekyll + when: + branch: master + event: push + secrets: + - DEPLOY_KEY + commands: + - apt-get update && apt-get -y install openssh-client git + - mkdir -p $HOME/.ssh + - ssh-keyscan -t rsa github.com >> $HOME/.ssh/known_hosts + - echo "$DEPLOY_KEY" > $HOME/.ssh/id_rsa + - chmod 0600 $HOME/.ssh/id_rsa + - git config --global user.email "daniil@daniil.it" + - git config --global user.name "Daniil Gentili" + - git remote add o git@github.com:danog/MadelineProtoDocs.git + - git fetch o gh-pages + - cd docs + - gojekyll clean + - gojekyll build + - rm -rf /tmp/_site + - cp -a _site /tmp/ + - cd .. + - git fetch o gh-pages + - git checkout gh-pages + - rm -rf * + - cp -a /tmp/_site/* . + - git add -A + - git commit -am 'Update' + - git push o gh-pages diff --git a/docs/.well-known/amphtml/apikey.pub b/docs/.well-known/amphtml/apikey.pub new file mode 100644 index 0000000000..9da3d54c9d --- /dev/null +++ b/docs/.well-known/amphtml/apikey.pub @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwGcqZ+kZ2QFmGLlQTrZQ +vkJscTcn0RS09H62yhrwhnbHzQ0LSgJxSiPBdZB/prGPV6FgsMvcqXi4jfqHVef6 +tat/x8X7zEdYEBfrI05B/TmGN0QQkoN5OQ0hsEjWUzkv5R0GaYB6RtpQ5RcZiHll +bDZCn0Dyir0PttyKooXHDIQWMOXz4HkzboJk0FaqgddKHX/CE1VUZdOZPDCG7O7A ++HJIEXkVCua5YepDQs19r8RPifgfVOKxhFe0RP/e2jZw816gMQFlI7+jNAJG7IFH +vE3UrvTmyR3gQPugzDipxLdgRjm3rCKcHFWO51jjTMpxwnUitPjBPX93aRzqJ0kV +oQIDAQAB +-----END PUBLIC KEY----- diff --git a/docs/API_docs/constructors/account.authorizationForm.md b/docs/API_docs/constructors/account.authorizationForm.md new file mode 100644 index 0000000000..01c1099268 --- /dev/null +++ b/docs/API_docs/constructors/account.authorizationForm.md @@ -0,0 +1,34 @@ +--- +title: "account.authorizationForm" +description: "Telegram Passport authorization form" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_authorizationForm.html +--- +# Constructor: account.authorizationForm +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Telegram Passport](https://core.telegram.org/passport) authorization form + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|required\_types|Array of [SecureRequiredType](/API_docs/types/SecureRequiredType.html) | Yes|Required [Telegram Passport](https://core.telegram.org/passport) documents| +|values|Array of [SecureValue](/API_docs/types/SecureValue.html) | Yes|Already submitted [Telegram Passport](https://core.telegram.org/passport) documents| +|errors|Array of [SecureValueError](/API_docs/types/SecureValueError.html) | Yes|[Telegram Passport](https://core.telegram.org/passport) errors| +|users|Array of [User](/API_docs/types/User.html) | Yes|Info about the bot to which the form will be submitted| +|privacy\_policy\_url|[string](/API_docs/types/string.html) | Optional|URL of the service's privacy policy| + + + +### Type: [account.AuthorizationForm](/API_docs/types/account.AuthorizationForm.html) + + +### Example: + +``` +$account_authorizationForm = ['_' => 'account.authorizationForm', 'required_types' => [SecureRequiredType, SecureRequiredType], 'values' => [SecureValue, SecureValue], 'errors' => [SecureValueError, SecureValueError], 'users' => [User, User], 'privacy_policy_url' => 'string']; +``` diff --git a/docs/API_docs/constructors/account.authorizations.md b/docs/API_docs/constructors/account.authorizations.md new file mode 100644 index 0000000000..fc0238cd1f --- /dev/null +++ b/docs/API_docs/constructors/account.authorizations.md @@ -0,0 +1,31 @@ +--- +title: "account.authorizations" +description: "Logged-in sessions" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_authorizations.html +--- +# Constructor: account.authorizations +[Back to constructors index](/API_docs/constructors/index.html) + + + +Logged-in sessions + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|authorization\_ttl\_days|[int](/API_docs/types/int.html) | Yes|Time-to-live of session| +|authorizations|Array of [Authorization](/API_docs/types/Authorization.html) | Yes|Logged-in sessions| + + + +### Type: [account.Authorizations](/API_docs/types/account.Authorizations.html) + + +### Example: + +``` +$account_authorizations = ['_' => 'account.authorizations', 'authorization_ttl_days' => int, 'authorizations' => [Authorization, Authorization]]; +``` diff --git a/docs/API_docs/constructors/account.autoDownloadSettings.md b/docs/API_docs/constructors/account.autoDownloadSettings.md new file mode 100644 index 0000000000..86491561f1 --- /dev/null +++ b/docs/API_docs/constructors/account.autoDownloadSettings.md @@ -0,0 +1,32 @@ +--- +title: "account.autoDownloadSettings" +description: "Media autodownload settings" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_autoDownloadSettings.html +--- +# Constructor: account.autoDownloadSettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +Media autodownload settings + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|low|[AutoDownloadSettings](/API_docs/types/AutoDownloadSettings.html) | Yes|Low data usage preset| +|medium|[AutoDownloadSettings](/API_docs/types/AutoDownloadSettings.html) | Yes|Medium data usage preset| +|high|[AutoDownloadSettings](/API_docs/types/AutoDownloadSettings.html) | Yes|High data usage preset| + + + +### Type: [account.AutoDownloadSettings](/API_docs/types/account.AutoDownloadSettings.html) + + +### Example: + +``` +$account_autoDownloadSettings = ['_' => 'account.autoDownloadSettings', 'low' => AutoDownloadSettings, 'medium' => AutoDownloadSettings, 'high' => AutoDownloadSettings]; +``` diff --git a/docs/API_docs/constructors/account.autoSaveSettings.md b/docs/API_docs/constructors/account.autoSaveSettings.md new file mode 100644 index 0000000000..bb5ca77421 --- /dev/null +++ b/docs/API_docs/constructors/account.autoSaveSettings.md @@ -0,0 +1,35 @@ +--- +title: "account.autoSaveSettings" +description: "Contains media autosave settings" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_autoSaveSettings.html +--- +# Constructor: account.autoSaveSettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains media autosave settings + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|users\_settings|[AutoSaveSettings](/API_docs/types/AutoSaveSettings.html) | Yes|Default media autosave settings for private chats| +|chats\_settings|[AutoSaveSettings](/API_docs/types/AutoSaveSettings.html) | Yes|Default media autosave settings for [groups and supergroups](https://core.telegram.org/api/channel)| +|broadcasts\_settings|[AutoSaveSettings](/API_docs/types/AutoSaveSettings.html) | Yes|Default media autosave settings for [channels](https://core.telegram.org/api/channel)| +|exceptions|Array of [AutoSaveException](/API_docs/types/AutoSaveException.html) | Yes|Peer-specific granular autosave settings| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Chats mentioned in the peer-specific granular autosave settings| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users mentioned in the peer-specific granular autosave settings| + + + +### Type: [account.AutoSaveSettings](/API_docs/types/account.AutoSaveSettings.html) + + +### Example: + +``` +$account_autoSaveSettings = ['_' => 'account.autoSaveSettings', 'users_settings' => AutoSaveSettings, 'chats_settings' => AutoSaveSettings, 'broadcasts_settings' => AutoSaveSettings, 'exceptions' => [AutoSaveException, AutoSaveException], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/account.businessChatLinks.md b/docs/API_docs/constructors/account.businessChatLinks.md new file mode 100644 index 0000000000..77c9a5d6aa --- /dev/null +++ b/docs/API_docs/constructors/account.businessChatLinks.md @@ -0,0 +1,30 @@ +--- +title: "account.businessChatLinks" +description: "account.businessChatLinks attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_businessChatLinks.html +--- +# Constructor: account.businessChatLinks +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|links|Array of [BusinessChatLink](/API_docs/types/BusinessChatLink.html) | Yes| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes| +|users|Array of [User](/API_docs/types/User.html) | Yes| + + + +### Type: [account.BusinessChatLinks](/API_docs/types/account.BusinessChatLinks.html) + + +### Example: + +``` +$account_businessChatLinks = ['_' => 'account.businessChatLinks', 'links' => [BusinessChatLink, BusinessChatLink], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/account.connectedBots.md b/docs/API_docs/constructors/account.connectedBots.md new file mode 100644 index 0000000000..0faa8819c8 --- /dev/null +++ b/docs/API_docs/constructors/account.connectedBots.md @@ -0,0 +1,29 @@ +--- +title: "account.connectedBots" +description: "account.connectedBots attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_connectedBots.html +--- +# Constructor: account.connectedBots +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|connected\_bots|Array of [ConnectedBot](/API_docs/types/ConnectedBot.html) | Yes| +|users|Array of [User](/API_docs/types/User.html) | Yes| + + + +### Type: [account.ConnectedBots](/API_docs/types/account.ConnectedBots.html) + + +### Example: + +``` +$account_connectedBots = ['_' => 'account.connectedBots', 'connected_bots' => [ConnectedBot, ConnectedBot], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/account.contentSettings.md b/docs/API_docs/constructors/account.contentSettings.md new file mode 100644 index 0000000000..eec1d25ab9 --- /dev/null +++ b/docs/API_docs/constructors/account.contentSettings.md @@ -0,0 +1,31 @@ +--- +title: "account.contentSettings" +description: "Sensitive content settings" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_contentSettings.html +--- +# Constructor: account.contentSettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +Sensitive content settings + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|sensitive\_enabled|[Bool](/API_docs/types/Bool.html) | Optional|Whether viewing of sensitive (NSFW) content is enabled| +|sensitive\_can\_change|[Bool](/API_docs/types/Bool.html) | Optional|Whether the current client can change the sensitive content settings to view NSFW content| + + + +### Type: [account.ContentSettings](/API_docs/types/account.ContentSettings.html) + + +### Example: + +``` +$account_contentSettings = ['_' => 'account.contentSettings', 'sensitive_enabled' => Bool, 'sensitive_can_change' => Bool]; +``` diff --git a/docs/API_docs/constructors/account.emailVerified.md b/docs/API_docs/constructors/account.emailVerified.md new file mode 100644 index 0000000000..02da88ec24 --- /dev/null +++ b/docs/API_docs/constructors/account.emailVerified.md @@ -0,0 +1,30 @@ +--- +title: "account.emailVerified" +description: "The email was verified correctly." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_emailVerified.html +--- +# Constructor: account.emailVerified +[Back to constructors index](/API_docs/constructors/index.html) + + + +The email was verified correctly. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|email|[string](/API_docs/types/string.html) | Yes|The verified email address.| + + + +### Type: [account.EmailVerified](/API_docs/types/account.EmailVerified.html) + + +### Example: + +``` +$account_emailVerified = ['_' => 'account.emailVerified', 'email' => 'string']; +``` diff --git a/docs/API_docs/constructors/account.emailVerifiedLogin.md b/docs/API_docs/constructors/account.emailVerifiedLogin.md new file mode 100644 index 0000000000..51247a3ff9 --- /dev/null +++ b/docs/API_docs/constructors/account.emailVerifiedLogin.md @@ -0,0 +1,31 @@ +--- +title: "account.emailVerifiedLogin" +description: "The email was verified correctly, and a login code was just sent to it." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_emailVerifiedLogin.html +--- +# Constructor: account.emailVerifiedLogin +[Back to constructors index](/API_docs/constructors/index.html) + + + +The email was verified correctly, and a login code was just sent to it. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|email|[string](/API_docs/types/string.html) | Yes|The verified email address.| +|sent\_code|[auth.SentCode](/API_docs/constructors/auth.SentCode.html) | Yes|Info about the sent [login code](https://core.telegram.org/api/auth)| + + + +### Type: [account.EmailVerified](/API_docs/types/account.EmailVerified.html) + + +### Example: + +``` +$account_emailVerifiedLogin = ['_' => 'account.emailVerifiedLogin', 'email' => 'string', 'sent_code' => auth.SentCode]; +``` diff --git a/docs/API_docs/constructors/account.emojiStatuses.md b/docs/API_docs/constructors/account.emojiStatuses.md new file mode 100644 index 0000000000..a8612e88cd --- /dev/null +++ b/docs/API_docs/constructors/account.emojiStatuses.md @@ -0,0 +1,31 @@ +--- +title: "account.emojiStatuses" +description: "A list of emoji statuses" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_emojiStatuses.html +--- +# Constructor: account.emojiStatuses +[Back to constructors index](/API_docs/constructors/index.html) + + + +A list of [emoji statuses](https://core.telegram.org/api/emoji-status) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hash|[long](/API_docs/types/long.html) | Yes|[Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation)| +|statuses|Array of [EmojiStatus](/API_docs/types/EmojiStatus.html) | Yes|[Emoji statuses](https://core.telegram.org/api/emoji-status)| + + + +### Type: [account.EmojiStatuses](/API_docs/types/account.EmojiStatuses.html) + + +### Example: + +``` +$account_emojiStatuses = ['_' => 'account.emojiStatuses', 'hash' => long, 'statuses' => [EmojiStatus, EmojiStatus]]; +``` diff --git a/docs/API_docs/constructors/account.emojiStatusesNotModified.md b/docs/API_docs/constructors/account.emojiStatusesNotModified.md new file mode 100644 index 0000000000..cc319aaee8 --- /dev/null +++ b/docs/API_docs/constructors/account.emojiStatusesNotModified.md @@ -0,0 +1,25 @@ +--- +title: "account.emojiStatusesNotModified" +description: "The server-side list of emoji statuses hasn't changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_emojiStatusesNotModified.html +--- +# Constructor: account.emojiStatusesNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +The server-side list of [emoji statuses](https://core.telegram.org/api/emoji-status) hasn't changed + + + + +### Type: [account.EmojiStatuses](/API_docs/types/account.EmojiStatuses.html) + + +### Example: + +``` +$account_emojiStatusesNotModified = ['_' => 'account.emojiStatusesNotModified']; +``` diff --git a/docs/API_docs/constructors/account.password.md b/docs/API_docs/constructors/account.password.md new file mode 100644 index 0000000000..00d2dee824 --- /dev/null +++ b/docs/API_docs/constructors/account.password.md @@ -0,0 +1,42 @@ +--- +title: "account.password" +description: "Configuration for two-factor authorization" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_password.html +--- +# Constructor: account.password +[Back to constructors index](/API_docs/constructors/index.html) + + + +Configuration for two-factor authorization + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|has\_recovery|[Bool](/API_docs/types/Bool.html) | Optional|Whether the user has a recovery method configured| +|has\_secure\_values|[Bool](/API_docs/types/Bool.html) | Optional|Whether telegram [passport](https://core.telegram.org/passport) is enabled| +|has\_password|[Bool](/API_docs/types/Bool.html) | Optional|Whether the user has a password| +|current\_algo|[PasswordKdfAlgo](/API_docs/types/PasswordKdfAlgo.html) | Optional|The [KDF algorithm for SRP two-factor authentication](https://core.telegram.org/api/srp) of the current password| +|srp\_B|[bytes](/API_docs/types/bytes.html) | Optional|Srp B param for [SRP authorization](https://core.telegram.org/api/srp)| +|srp\_id|[long](/API_docs/types/long.html) | Optional|Srp ID param for [SRP authorization](https://core.telegram.org/api/srp)| +|hint|[string](/API_docs/types/string.html) | Optional|Text hint for the password| +|email\_unconfirmed\_pattern|[string](/API_docs/types/string.html) | Optional|A [password recovery email](https://core.telegram.org/api/srp#email-verification) with the specified [pattern](https://core.telegram.org/api/pattern) is still awaiting verification| +|new\_algo|[PasswordKdfAlgo](/API_docs/types/PasswordKdfAlgo.html) | Yes|The [KDF algorithm for SRP two-factor authentication](https://core.telegram.org/api/srp) to use when creating new passwords| +|new\_secure\_algo|[SecurePasswordKdfAlgo](/API_docs/types/SecurePasswordKdfAlgo.html) | Yes|The KDF algorithm for telegram [passport](https://core.telegram.org/passport)| +|secure\_random|[bytes](/API_docs/types/bytes.html) | Yes|Secure random string| +|pending\_reset\_date|[int](/API_docs/types/int.html) | Optional|The 2FA password will be automatically removed at this date, unless the user cancels the operation| +|login\_email\_pattern|[string](/API_docs/types/string.html) | Optional|A verified login email with the specified [pattern](https://core.telegram.org/api/pattern) is configured| + + + +### Type: [account.Password](/API_docs/types/account.Password.html) + + +### Example: + +``` +$account_password = ['_' => 'account.password', 'has_recovery' => Bool, 'has_secure_values' => Bool, 'has_password' => Bool, 'current_algo' => PasswordKdfAlgo, 'srp_B' => 'bytes', 'srp_id' => long, 'hint' => 'string', 'email_unconfirmed_pattern' => 'string', 'new_algo' => PasswordKdfAlgo, 'new_secure_algo' => SecurePasswordKdfAlgo, 'secure_random' => 'bytes', 'pending_reset_date' => int, 'login_email_pattern' => 'string']; +``` diff --git a/docs/API_docs/constructors/account.passwordInputSettings.md b/docs/API_docs/constructors/account.passwordInputSettings.md new file mode 100644 index 0000000000..de652141f9 --- /dev/null +++ b/docs/API_docs/constructors/account.passwordInputSettings.md @@ -0,0 +1,34 @@ +--- +title: "account.passwordInputSettings" +description: "Settings for setting up a new password" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_passwordInputSettings.html +--- +# Constructor: account.passwordInputSettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +Settings for setting up a new password + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|new\_algo|[PasswordKdfAlgo](/API_docs/types/PasswordKdfAlgo.html) | Optional|The [SRP algorithm](https://core.telegram.org/api/srp) to use| +|new\_password\_hash|[bytes](/API_docs/types/bytes.html) | Optional|The [computed password hash](https://core.telegram.org/api/srp)| +|hint|[string](/API_docs/types/string.html) | Optional|Text hint for the password| +|email|[string](/API_docs/types/string.html) | Optional|Password recovery email| +|new\_secure\_settings|[SecureSecretSettings](/API_docs/types/SecureSecretSettings.html) | Optional|Telegram [passport](https://core.telegram.org/passport) settings| + + + +### Type: [account.PasswordInputSettings](/API_docs/types/account.PasswordInputSettings.html) + + +### Example: + +``` +$account_passwordInputSettings = ['_' => 'account.passwordInputSettings', 'new_algo' => PasswordKdfAlgo, 'new_password_hash' => 'bytes', 'hint' => 'string', 'email' => 'string', 'new_secure_settings' => SecureSecretSettings]; +``` diff --git a/docs/API_docs/constructors/account.passwordSettings.md b/docs/API_docs/constructors/account.passwordSettings.md new file mode 100644 index 0000000000..214597ed4d --- /dev/null +++ b/docs/API_docs/constructors/account.passwordSettings.md @@ -0,0 +1,31 @@ +--- +title: "account.passwordSettings" +description: "Private info associated to the password info (recovery email, telegram passport info & so on)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_passwordSettings.html +--- +# Constructor: account.passwordSettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +Private info associated to the password info (recovery email, telegram [passport](https://core.telegram.org/passport) info & so on) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|email|[string](/API_docs/types/string.html) | Optional|[2FA Recovery email](https://core.telegram.org/api/srp#email-verification)| +|secure\_settings|[SecureSecretSettings](/API_docs/types/SecureSecretSettings.html) | Optional|Telegram [passport](https://core.telegram.org/passport) settings| + + + +### Type: [account.PasswordSettings](/API_docs/types/account.PasswordSettings.html) + + +### Example: + +``` +$account_passwordSettings = ['_' => 'account.passwordSettings', 'email' => 'string', 'secure_settings' => SecureSecretSettings]; +``` diff --git a/docs/API_docs/constructors/account.privacyRules.md b/docs/API_docs/constructors/account.privacyRules.md new file mode 100644 index 0000000000..d4c88e3bbb --- /dev/null +++ b/docs/API_docs/constructors/account.privacyRules.md @@ -0,0 +1,32 @@ +--- +title: "account.privacyRules" +description: "Privacy rules" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_privacyRules.html +--- +# Constructor: account.privacyRules +[Back to constructors index](/API_docs/constructors/index.html) + + + +Privacy rules + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|rules|Array of [PrivacyRule](/API_docs/types/PrivacyRule.html) | Yes|Privacy rules| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Chats to which the rules apply| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users to which the rules apply| + + + +### Type: [account.PrivacyRules](/API_docs/types/account.PrivacyRules.html) + + +### Example: + +``` +$account_privacyRules = ['_' => 'account.privacyRules', 'rules' => [PrivacyRule, PrivacyRule], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/account.resetPasswordFailedWait.md b/docs/API_docs/constructors/account.resetPasswordFailedWait.md new file mode 100644 index 0000000000..f4f0aff2f6 --- /dev/null +++ b/docs/API_docs/constructors/account.resetPasswordFailedWait.md @@ -0,0 +1,30 @@ +--- +title: "account.resetPasswordFailedWait" +description: "You recently requested a password reset that was canceled, please wait until the specified date before requesting another reset." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_resetPasswordFailedWait.html +--- +# Constructor: account.resetPasswordFailedWait +[Back to constructors index](/API_docs/constructors/index.html) + + + +You recently requested a password reset that was canceled, please wait until the specified date before requesting another reset. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|retry\_date|[int](/API_docs/types/int.html) | Yes|Wait until this date before requesting another reset.| + + + +### Type: [account.ResetPasswordResult](/API_docs/types/account.ResetPasswordResult.html) + + +### Example: + +``` +$account_resetPasswordFailedWait = ['_' => 'account.resetPasswordFailedWait', 'retry_date' => int]; +``` diff --git a/docs/API_docs/constructors/account.resetPasswordOk.md b/docs/API_docs/constructors/account.resetPasswordOk.md new file mode 100644 index 0000000000..a1f3196d74 --- /dev/null +++ b/docs/API_docs/constructors/account.resetPasswordOk.md @@ -0,0 +1,25 @@ +--- +title: "account.resetPasswordOk" +description: "The 2FA password was reset successfully." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_resetPasswordOk.html +--- +# Constructor: account.resetPasswordOk +[Back to constructors index](/API_docs/constructors/index.html) + + + +The 2FA password was reset successfully. + + + + +### Type: [account.ResetPasswordResult](/API_docs/types/account.ResetPasswordResult.html) + + +### Example: + +``` +$account_resetPasswordOk = ['_' => 'account.resetPasswordOk']; +``` diff --git a/docs/API_docs/constructors/account.resetPasswordRequestedWait.md b/docs/API_docs/constructors/account.resetPasswordRequestedWait.md new file mode 100644 index 0000000000..0d22463630 --- /dev/null +++ b/docs/API_docs/constructors/account.resetPasswordRequestedWait.md @@ -0,0 +1,30 @@ +--- +title: "account.resetPasswordRequestedWait" +description: "You successfully requested a password reset, please wait until the specified date before finalizing the reset." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_resetPasswordRequestedWait.html +--- +# Constructor: account.resetPasswordRequestedWait +[Back to constructors index](/API_docs/constructors/index.html) + + + +You successfully requested a password reset, please wait until the specified date before finalizing the reset. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|until\_date|[int](/API_docs/types/int.html) | Yes|Wait until this date before finalizing the reset.| + + + +### Type: [account.ResetPasswordResult](/API_docs/types/account.ResetPasswordResult.html) + + +### Example: + +``` +$account_resetPasswordRequestedWait = ['_' => 'account.resetPasswordRequestedWait', 'until_date' => int]; +``` diff --git a/docs/API_docs/constructors/account.resolvedBusinessChatLinks.md b/docs/API_docs/constructors/account.resolvedBusinessChatLinks.md new file mode 100644 index 0000000000..8c9284f172 --- /dev/null +++ b/docs/API_docs/constructors/account.resolvedBusinessChatLinks.md @@ -0,0 +1,93 @@ +--- +title: "account.resolvedBusinessChatLinks" +description: "account.resolvedBusinessChatLinks attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_resolvedBusinessChatLinks.html +--- +# Constructor: account.resolvedBusinessChatLinks +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|peer|[long](/API_docs/types/long.html) | Yes| +|message|[string](/API_docs/types/string.html) | Yes| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes| +|users|Array of [User](/API_docs/types/User.html) | Yes| + + + +### Type: [account.ResolvedBusinessChatLinks](/API_docs/types/account.ResolvedBusinessChatLinks.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$account_resolvedBusinessChatLinks = ['_' => 'account.resolvedBusinessChatLinks', 'peer' => long, 'message' => 'string', 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/account.savedRingtone.md b/docs/API_docs/constructors/account.savedRingtone.md new file mode 100644 index 0000000000..d198c697f6 --- /dev/null +++ b/docs/API_docs/constructors/account.savedRingtone.md @@ -0,0 +1,25 @@ +--- +title: "account.savedRingtone" +description: "The notification sound was already in MP3 format and was saved without any modification" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_savedRingtone.html +--- +# Constructor: account.savedRingtone +[Back to constructors index](/API_docs/constructors/index.html) + + + +The notification sound was already in MP3 format and was saved without any modification + + + + +### Type: [account.SavedRingtone](/API_docs/types/account.SavedRingtone.html) + + +### Example: + +``` +$account_savedRingtone = ['_' => 'account.savedRingtone']; +``` diff --git a/docs/API_docs/constructors/account.savedRingtoneConverted.md b/docs/API_docs/constructors/account.savedRingtoneConverted.md new file mode 100644 index 0000000000..d590f35639 --- /dev/null +++ b/docs/API_docs/constructors/account.savedRingtoneConverted.md @@ -0,0 +1,30 @@ +--- +title: "account.savedRingtoneConverted" +description: "The notification sound was not in MP3 format and was successfully converted and saved, use the returned Document to refer to the notification sound from now on" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_savedRingtoneConverted.html +--- +# Constructor: account.savedRingtoneConverted +[Back to constructors index](/API_docs/constructors/index.html) + + + +The notification sound was not in MP3 format and was successfully converted and saved, use the returned [Document](../types/Document.html) to refer to the notification sound from now on + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|document|[Document](/API_docs/types/Document.html) | Optional|The converted notification sound| + + + +### Type: [account.SavedRingtone](/API_docs/types/account.SavedRingtone.html) + + +### Example: + +``` +$account_savedRingtoneConverted = ['_' => 'account.savedRingtoneConverted', 'document' => Document]; +``` diff --git a/docs/API_docs/constructors/account.savedRingtones.md b/docs/API_docs/constructors/account.savedRingtones.md new file mode 100644 index 0000000000..637dc256be --- /dev/null +++ b/docs/API_docs/constructors/account.savedRingtones.md @@ -0,0 +1,31 @@ +--- +title: "account.savedRingtones" +description: "A list of saved notification sounds" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_savedRingtones.html +--- +# Constructor: account.savedRingtones +[Back to constructors index](/API_docs/constructors/index.html) + + + +A list of saved notification sounds + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hash|[long](/API_docs/types/long.html) | Yes|[Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation)| +|ringtones|Array of [Document](/API_docs/types/Document.html) | Yes|Saved notification sounds| + + + +### Type: [account.SavedRingtones](/API_docs/types/account.SavedRingtones.html) + + +### Example: + +``` +$account_savedRingtones = ['_' => 'account.savedRingtones', 'hash' => long, 'ringtones' => [Document, Document]]; +``` diff --git a/docs/API_docs/constructors/account.savedRingtonesNotModified.md b/docs/API_docs/constructors/account.savedRingtonesNotModified.md new file mode 100644 index 0000000000..eb87a61636 --- /dev/null +++ b/docs/API_docs/constructors/account.savedRingtonesNotModified.md @@ -0,0 +1,25 @@ +--- +title: "account.savedRingtonesNotModified" +description: "The notification sound list hasn't changed." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_savedRingtonesNotModified.html +--- +# Constructor: account.savedRingtonesNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +The notification sound list hasn't changed. + + + + +### Type: [account.SavedRingtones](/API_docs/types/account.SavedRingtones.html) + + +### Example: + +``` +$account_savedRingtonesNotModified = ['_' => 'account.savedRingtonesNotModified']; +``` diff --git a/docs/API_docs/constructors/account.sentEmailCode.md b/docs/API_docs/constructors/account.sentEmailCode.md new file mode 100644 index 0000000000..24caf4d283 --- /dev/null +++ b/docs/API_docs/constructors/account.sentEmailCode.md @@ -0,0 +1,31 @@ +--- +title: "account.sentEmailCode" +description: "The sent email code" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_sentEmailCode.html +--- +# Constructor: account.sentEmailCode +[Back to constructors index](/API_docs/constructors/index.html) + + + +The sent email code + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|email\_pattern|[string](/API_docs/types/string.html) | Yes|The email (to which the code was sent) must match this [pattern](https://core.telegram.org/api/pattern)| +|length|[int](/API_docs/types/int.html) | Yes|The length of the verification code| + + + +### Type: [account.SentEmailCode](/API_docs/types/account.SentEmailCode.html) + + +### Example: + +``` +$account_sentEmailCode = ['_' => 'account.sentEmailCode', 'email_pattern' => 'string', 'length' => int]; +``` diff --git a/docs/API_docs/constructors/account.takeout.md b/docs/API_docs/constructors/account.takeout.md new file mode 100644 index 0000000000..dad3f1773d --- /dev/null +++ b/docs/API_docs/constructors/account.takeout.md @@ -0,0 +1,30 @@ +--- +title: "account.takeout" +description: "Takeout info" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_takeout.html +--- +# Constructor: account.takeout +[Back to constructors index](/API_docs/constructors/index.html) + + + +Takeout info + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Takeout ID| + + + +### Type: [account.Takeout](/API_docs/types/account.Takeout.html) + + +### Example: + +``` +$account_takeout = ['_' => 'account.takeout', 'id' => long]; +``` diff --git a/docs/API_docs/constructors/account.themes.md b/docs/API_docs/constructors/account.themes.md new file mode 100644 index 0000000000..dab085d1a2 --- /dev/null +++ b/docs/API_docs/constructors/account.themes.md @@ -0,0 +1,31 @@ +--- +title: "account.themes" +description: "Installed themes" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_themes.html +--- +# Constructor: account.themes +[Back to constructors index](/API_docs/constructors/index.html) + + + +Installed themes + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hash|[long](/API_docs/types/long.html) | Yes|[Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation)| +|themes|Array of [Theme](/API_docs/types/Theme.html) | Yes|Themes| + + + +### Type: [account.Themes](/API_docs/types/account.Themes.html) + + +### Example: + +``` +$account_themes = ['_' => 'account.themes', 'hash' => long, 'themes' => [Theme, Theme]]; +``` diff --git a/docs/API_docs/constructors/account.themesNotModified.md b/docs/API_docs/constructors/account.themesNotModified.md new file mode 100644 index 0000000000..d2f72998bd --- /dev/null +++ b/docs/API_docs/constructors/account.themesNotModified.md @@ -0,0 +1,25 @@ +--- +title: "account.themesNotModified" +description: "No new themes were installed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_themesNotModified.html +--- +# Constructor: account.themesNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +No new themes were installed + + + + +### Type: [account.Themes](/API_docs/types/account.Themes.html) + + +### Example: + +``` +$account_themesNotModified = ['_' => 'account.themesNotModified']; +``` diff --git a/docs/API_docs/constructors/account.tmpPassword.md b/docs/API_docs/constructors/account.tmpPassword.md new file mode 100644 index 0000000000..b7e0f4172f --- /dev/null +++ b/docs/API_docs/constructors/account.tmpPassword.md @@ -0,0 +1,31 @@ +--- +title: "account.tmpPassword" +description: "Temporary payment password" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_tmpPassword.html +--- +# Constructor: account.tmpPassword +[Back to constructors index](/API_docs/constructors/index.html) + + + +Temporary payment password + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|tmp\_password|[bytes](/API_docs/types/bytes.html) | Yes|Temporary password| +|valid\_until|[int](/API_docs/types/int.html) | Yes|Validity period| + + + +### Type: [account.TmpPassword](/API_docs/types/account.TmpPassword.html) + + +### Example: + +``` +$account_tmpPassword = ['_' => 'account.tmpPassword', 'tmp_password' => 'bytes', 'valid_until' => int]; +``` diff --git a/docs/API_docs/constructors/account.wallPapers.md b/docs/API_docs/constructors/account.wallPapers.md new file mode 100644 index 0000000000..893e7ff944 --- /dev/null +++ b/docs/API_docs/constructors/account.wallPapers.md @@ -0,0 +1,31 @@ +--- +title: "account.wallPapers" +description: "Installed wallpapers" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_wallPapers.html +--- +# Constructor: account.wallPapers +[Back to constructors index](/API_docs/constructors/index.html) + + + +Installed [wallpapers](https://core.telegram.org/api/wallpapers) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hash|[long](/API_docs/types/long.html) | Yes|[Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation)| +|wallpapers|Array of [WallPaper](/API_docs/types/WallPaper.html) | Yes|[Wallpapers](https://core.telegram.org/api/wallpapers)| + + + +### Type: [account.WallPapers](/API_docs/types/account.WallPapers.html) + + +### Example: + +``` +$account_wallPapers = ['_' => 'account.wallPapers', 'hash' => long, 'wallpapers' => [WallPaper, WallPaper]]; +``` diff --git a/docs/API_docs/constructors/account.wallPapersNotModified.md b/docs/API_docs/constructors/account.wallPapersNotModified.md new file mode 100644 index 0000000000..b09ea919f2 --- /dev/null +++ b/docs/API_docs/constructors/account.wallPapersNotModified.md @@ -0,0 +1,25 @@ +--- +title: "account.wallPapersNotModified" +description: "No new wallpapers were found" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_wallPapersNotModified.html +--- +# Constructor: account.wallPapersNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +No new [wallpapers](https://core.telegram.org/api/wallpapers) were found + + + + +### Type: [account.WallPapers](/API_docs/types/account.WallPapers.html) + + +### Example: + +``` +$account_wallPapersNotModified = ['_' => 'account.wallPapersNotModified']; +``` diff --git a/docs/API_docs/constructors/account.webAuthorizations.md b/docs/API_docs/constructors/account.webAuthorizations.md new file mode 100644 index 0000000000..cf74b49df0 --- /dev/null +++ b/docs/API_docs/constructors/account.webAuthorizations.md @@ -0,0 +1,31 @@ +--- +title: "account.webAuthorizations" +description: "Web authorizations" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/account_webAuthorizations.html +--- +# Constructor: account.webAuthorizations +[Back to constructors index](/API_docs/constructors/index.html) + + + +Web authorizations + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|authorizations|Array of [WebAuthorization](/API_docs/types/WebAuthorization.html) | Yes|Web authorization list| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users| + + + +### Type: [account.WebAuthorizations](/API_docs/types/account.WebAuthorizations.html) + + +### Example: + +``` +$account_webAuthorizations = ['_' => 'account.webAuthorizations', 'authorizations' => [WebAuthorization, WebAuthorization], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/accountDaysTTL.md b/docs/API_docs/constructors/accountDaysTTL.md new file mode 100644 index 0000000000..d3460f28f2 --- /dev/null +++ b/docs/API_docs/constructors/accountDaysTTL.md @@ -0,0 +1,29 @@ +--- +title: "accountDaysTTL" +description: "Time to live in days of the current account" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: accountDaysTTL +[Back to constructors index](/API_docs/constructors/index.html) + + + +Time to live in days of the current account + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|days|[int](/API_docs/types/int.html) | Yes|This account will self-destruct in the specified number of days| + + + +### Type: [AccountDaysTTL](/API_docs/types/AccountDaysTTL.html) + + +### Example: + +``` +$accountDaysTTL = ['_' => 'accountDaysTTL', 'days' => int]; +``` diff --git a/docs/API_docs/constructors/appWebViewResultUrl.md b/docs/API_docs/constructors/appWebViewResultUrl.md new file mode 100644 index 0000000000..532437887e --- /dev/null +++ b/docs/API_docs/constructors/appWebViewResultUrl.md @@ -0,0 +1,29 @@ +--- +title: "appWebViewResultUrl" +description: "Contains the link that must be used to open a direct link Mini App." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: appWebViewResultUrl +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains the link that must be used to open a [direct link Mini App](https://core.telegram.org/api/bots/webapps#direct-link-mini-apps). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|The URL to open| + + + +### Type: [AppWebViewResult](/API_docs/types/AppWebViewResult.html) + + +### Example: + +``` +$appWebViewResultUrl = ['_' => 'appWebViewResultUrl', 'url' => 'string']; +``` diff --git a/docs/API_docs/constructors/attachMenuBot.md b/docs/API_docs/constructors/attachMenuBot.md new file mode 100644 index 0000000000..faf3f3d3ce --- /dev/null +++ b/docs/API_docs/constructors/attachMenuBot.md @@ -0,0 +1,40 @@ +--- +title: "attachMenuBot" +description: "Represents a bot mini app that can be launched from the attachment/side menu »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: attachMenuBot +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a [bot mini app that can be launched from the attachment/side menu »](https://core.telegram.org/api/bots/attach) + +At least one of the `show_in_attach_menu` or the `show_in_side_menu` flags will always be set. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|inactive|[Bool](/API_docs/types/Bool.html) | Optional|If set, before launching the mini app the client should ask the user to add the mini app to the attachment/side menu, and only if the user accepts, after invoking [messages.toggleBotInAttachMenu](../methods/messages.toggleBotInAttachMenu.html) the app should be opened.| +|has\_settings|[Bool](/API_docs/types/Bool.html) | Optional|Deprecated flag, can be ignored.| +|request\_write\_access|[Bool](/API_docs/types/Bool.html) | Optional|Whether the bot would like to send messages to the user.| +|show\_in\_attach\_menu|[Bool](/API_docs/types/Bool.html) | Optional|Whether, when installed, an attachment menu entry should be shown for the Mini App.| +|show\_in\_side\_menu|[Bool](/API_docs/types/Bool.html) | Optional|Whether, when installed, an entry in the main view side menu should be shown for the Mini App.| +|side\_menu\_disclaimer\_needed|[Bool](/API_docs/types/Bool.html) | Optional|If `inactive` if set and the user hasn't previously accepted the third-party mini apps [Terms of Service](https://telegram.org/tos/mini-apps) for this bot, when showing the mini app installation prompt, an additional mandatory checkbox to accept the [mini apps TOS](https://telegram.org/tos/mini-apps) and a disclaimer indicating that this Mini App is not affiliated to Telegram should be shown.| +|bot\_id|[long](/API_docs/types/long.html) | Yes|Bot ID| +|short\_name|[string](/API_docs/types/string.html) | Yes|Attachment menu item name| +|peer\_types|Array of [AttachMenuPeerType](/API_docs/types/AttachMenuPeerType.html) | Optional|List of dialog types where this attachment menu entry should be shown| +|icons|Array of [AttachMenuBotIcon](/API_docs/types/AttachMenuBotIcon.html) | Yes|List of platform-specific static icons and animations to use for the attachment menu button| + + + +### Type: [AttachMenuBot](/API_docs/types/AttachMenuBot.html) + + +### Example: + +``` +$attachMenuBot = ['_' => 'attachMenuBot', 'inactive' => Bool, 'has_settings' => Bool, 'request_write_access' => Bool, 'show_in_attach_menu' => Bool, 'show_in_side_menu' => Bool, 'side_menu_disclaimer_needed' => Bool, 'bot_id' => long, 'short_name' => 'string', 'peer_types' => [AttachMenuPeerType, AttachMenuPeerType], 'icons' => [AttachMenuBotIcon, AttachMenuBotIcon]]; +``` diff --git a/docs/API_docs/constructors/attachMenuBotIcon.md b/docs/API_docs/constructors/attachMenuBotIcon.md new file mode 100644 index 0000000000..5993924c7b --- /dev/null +++ b/docs/API_docs/constructors/attachMenuBotIcon.md @@ -0,0 +1,31 @@ +--- +title: "attachMenuBotIcon" +description: "Represents an attachment menu icon for bot mini apps »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: attachMenuBotIcon +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents an attachment menu icon for [bot mini apps »](https://core.telegram.org/api/bots/attach) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|name|[string](/API_docs/types/string.html) | Yes|One of the following values: note that animated icons must be played when the user clicks on the button, activating the bot mini app.

`default_static` \- Default attachment menu icon in SVG format
`placeholder_static` \- Default placeholder for opened Web Apps in SVG format
`ios_static` \- Attachment menu icon in SVG format for the official iOS app
`ios_animated` \- Animated attachment menu icon in TGS format for the official iOS app
`android_animated` \- Animated attachment menu icon in TGS format for the official Android app
`macos_animated` \- Animated attachment menu icon in TGS format for the official native Mac OS app
`ios_side_menu_static` \- Side menu icon in PNG format for the official iOS app
`android_side_menu_static` \- Side menu icon in SVG format for the official android app
`macos_side_menu_static` \- Side menu icon in PNG format for the official native Mac OS app| +|icon|[Document](/API_docs/types/Document.html) | Optional|The actual icon file.| +|colors|Array of [AttachMenuBotIconColor](/API_docs/types/AttachMenuBotIconColor.html) | Optional|Attachment menu icon colors.| + + + +### Type: [AttachMenuBotIcon](/API_docs/types/AttachMenuBotIcon.html) + + +### Example: + +``` +$attachMenuBotIcon = ['_' => 'attachMenuBotIcon', 'name' => 'string', 'icon' => Document, 'colors' => [AttachMenuBotIconColor, AttachMenuBotIconColor]]; +``` diff --git a/docs/API_docs/constructors/attachMenuBotIconColor.md b/docs/API_docs/constructors/attachMenuBotIconColor.md new file mode 100644 index 0000000000..c1a9ca928a --- /dev/null +++ b/docs/API_docs/constructors/attachMenuBotIconColor.md @@ -0,0 +1,30 @@ +--- +title: "attachMenuBotIconColor" +description: "Represents an attachment menu icon color for bot mini apps »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: attachMenuBotIconColor +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents an attachment menu icon color for [bot mini apps »](https://core.telegram.org/api/bots/attach) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|name|[string](/API_docs/types/string.html) | Yes|One of the following values:
`light_icon` \- Color of the attachment menu icon (light mode)
`light_text` \- Color of the attachment menu label, once selected (light mode)
`dark_icon` \- Color of the attachment menu icon (dark mode)
`dark_text` \- Color of the attachment menu label, once selected (dark mode)| +|color|[int](/API_docs/types/int.html) | Yes|Color in RGB24 format| + + + +### Type: [AttachMenuBotIconColor](/API_docs/types/AttachMenuBotIconColor.html) + + +### Example: + +``` +$attachMenuBotIconColor = ['_' => 'attachMenuBotIconColor', 'name' => 'string', 'color' => int]; +``` diff --git a/docs/API_docs/constructors/attachMenuBots.md b/docs/API_docs/constructors/attachMenuBots.md new file mode 100644 index 0000000000..ef40fbb651 --- /dev/null +++ b/docs/API_docs/constructors/attachMenuBots.md @@ -0,0 +1,31 @@ +--- +title: "attachMenuBots" +description: "Represents a list of bot mini apps that can be launched from the attachment menu »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: attachMenuBots +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a list of [bot mini apps that can be launched from the attachment menu »](https://core.telegram.org/api/bots/attach) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hash|[long](/API_docs/types/long.html) | Yes|[Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation)| +|bots|Array of [AttachMenuBot](/API_docs/types/AttachMenuBot.html) | Yes|List of [bot mini apps that can be launched from the attachment menu »](https://core.telegram.org/api/bots/attach)| +|users|Array of [User](/API_docs/types/User.html) | Yes|Info about related users/bots| + + + +### Type: [AttachMenuBots](/API_docs/types/AttachMenuBots.html) + + +### Example: + +``` +$attachMenuBots = ['_' => 'attachMenuBots', 'hash' => long, 'bots' => [AttachMenuBot, AttachMenuBot], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/attachMenuBotsBot.md b/docs/API_docs/constructors/attachMenuBotsBot.md new file mode 100644 index 0000000000..a5f7f1d08a --- /dev/null +++ b/docs/API_docs/constructors/attachMenuBotsBot.md @@ -0,0 +1,30 @@ +--- +title: "attachMenuBotsBot" +description: "Represents a bot mini app that can be launched from the attachment menu »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: attachMenuBotsBot +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a [bot mini app that can be launched from the attachment menu »](https://core.telegram.org/api/bots/attach) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|bot|[AttachMenuBot](/API_docs/types/AttachMenuBot.html) | Yes|Represents a [bot mini app that can be launched from the attachment menu »](https://core.telegram.org/api/bots/attach)
| +|users|Array of [User](/API_docs/types/User.html) | Yes|Info about related users and bots| + + + +### Type: [AttachMenuBotsBot](/API_docs/types/AttachMenuBotsBot.html) + + +### Example: + +``` +$attachMenuBotsBot = ['_' => 'attachMenuBotsBot', 'bot' => AttachMenuBot, 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/attachMenuBotsNotModified.md b/docs/API_docs/constructors/attachMenuBotsNotModified.md new file mode 100644 index 0000000000..26844d3aa9 --- /dev/null +++ b/docs/API_docs/constructors/attachMenuBotsNotModified.md @@ -0,0 +1,24 @@ +--- +title: "attachMenuBotsNotModified" +description: "The list of bot mini apps hasn't changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: attachMenuBotsNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +The list of bot mini apps hasn't changed + + + + +### Type: [AttachMenuBots](/API_docs/types/AttachMenuBots.html) + + +### Example: + +``` +$attachMenuBotsNotModified = ['_' => 'attachMenuBotsNotModified']; +``` diff --git a/docs/API_docs/constructors/attachMenuPeerTypeBotPM.md b/docs/API_docs/constructors/attachMenuPeerTypeBotPM.md new file mode 100644 index 0000000000..1c34ca39a4 --- /dev/null +++ b/docs/API_docs/constructors/attachMenuPeerTypeBotPM.md @@ -0,0 +1,24 @@ +--- +title: "attachMenuPeerTypeBotPM" +description: "The bot attachment menu entry is available in private chats with other bots (excluding the bot that offers the current attachment menu)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: attachMenuPeerTypeBotPM +[Back to constructors index](/API_docs/constructors/index.html) + + + +The bot attachment menu entry is available in private chats with other bots (excluding the bot that offers the current attachment menu) + + + + +### Type: [AttachMenuPeerType](/API_docs/types/AttachMenuPeerType.html) + + +### Example: + +``` +$attachMenuPeerTypeBotPM = ['_' => 'attachMenuPeerTypeBotPM']; +``` diff --git a/docs/API_docs/constructors/attachMenuPeerTypeBroadcast.md b/docs/API_docs/constructors/attachMenuPeerTypeBroadcast.md new file mode 100644 index 0000000000..ba29b3dcd4 --- /dev/null +++ b/docs/API_docs/constructors/attachMenuPeerTypeBroadcast.md @@ -0,0 +1,24 @@ +--- +title: "attachMenuPeerTypeBroadcast" +description: "The bot attachment menu entry is available in channels" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: attachMenuPeerTypeBroadcast +[Back to constructors index](/API_docs/constructors/index.html) + + + +The bot attachment menu entry is available in channels + + + + +### Type: [AttachMenuPeerType](/API_docs/types/AttachMenuPeerType.html) + + +### Example: + +``` +$attachMenuPeerTypeBroadcast = ['_' => 'attachMenuPeerTypeBroadcast']; +``` diff --git a/docs/API_docs/constructors/attachMenuPeerTypeChat.md b/docs/API_docs/constructors/attachMenuPeerTypeChat.md new file mode 100644 index 0000000000..becb2e176e --- /dev/null +++ b/docs/API_docs/constructors/attachMenuPeerTypeChat.md @@ -0,0 +1,24 @@ +--- +title: "attachMenuPeerTypeChat" +description: "The bot attachment menu entry is available in groups and supergroups" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: attachMenuPeerTypeChat +[Back to constructors index](/API_docs/constructors/index.html) + + + +The bot attachment menu entry is available in [groups and supergroups](https://core.telegram.org/api/channel) + + + + +### Type: [AttachMenuPeerType](/API_docs/types/AttachMenuPeerType.html) + + +### Example: + +``` +$attachMenuPeerTypeChat = ['_' => 'attachMenuPeerTypeChat']; +``` diff --git a/docs/API_docs/constructors/attachMenuPeerTypePM.md b/docs/API_docs/constructors/attachMenuPeerTypePM.md new file mode 100644 index 0000000000..b9dccac628 --- /dev/null +++ b/docs/API_docs/constructors/attachMenuPeerTypePM.md @@ -0,0 +1,24 @@ +--- +title: "attachMenuPeerTypePM" +description: "The bot attachment menu entry is available in private chats with other users (not bots)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: attachMenuPeerTypePM +[Back to constructors index](/API_docs/constructors/index.html) + + + +The bot attachment menu entry is available in private chats with other users (not bots) + + + + +### Type: [AttachMenuPeerType](/API_docs/types/AttachMenuPeerType.html) + + +### Example: + +``` +$attachMenuPeerTypePM = ['_' => 'attachMenuPeerTypePM']; +``` diff --git a/docs/API_docs/constructors/attachMenuPeerTypeSameBotPM.md b/docs/API_docs/constructors/attachMenuPeerTypeSameBotPM.md new file mode 100644 index 0000000000..ed0cfe3324 --- /dev/null +++ b/docs/API_docs/constructors/attachMenuPeerTypeSameBotPM.md @@ -0,0 +1,24 @@ +--- +title: "attachMenuPeerTypeSameBotPM" +description: "The bot attachment menu entry is available in the chat with the bot that offers it" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: attachMenuPeerTypeSameBotPM +[Back to constructors index](/API_docs/constructors/index.html) + + + +The bot attachment menu entry is available in the chat with the bot that offers it + + + + +### Type: [AttachMenuPeerType](/API_docs/types/AttachMenuPeerType.html) + + +### Example: + +``` +$attachMenuPeerTypeSameBotPM = ['_' => 'attachMenuPeerTypeSameBotPM']; +``` diff --git a/docs/API_docs/constructors/auth.authorization.md b/docs/API_docs/constructors/auth.authorization.md new file mode 100644 index 0000000000..9636582196 --- /dev/null +++ b/docs/API_docs/constructors/auth.authorization.md @@ -0,0 +1,34 @@ +--- +title: "auth.authorization" +description: "Contains user authorization info." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_authorization.html +--- +# Constructor: auth.authorization +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains user authorization info. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|setup\_password\_required|[Bool](/API_docs/types/Bool.html) | Optional|Suggests the user to set up a 2-step verification password to be able to log in again| +|otherwise\_relogin\_days|[int](/API_docs/types/int.html) | Optional|Iff setup\_password\_required is set and the user declines to set a 2-step verification password, they will be able to log into their account via SMS again only after this many days pass.| +|tmp\_sessions|[int](/API_docs/types/int.html) | Optional|Temporary [passport](https://core.telegram.org/passport) sessions| +|future\_auth\_token|[bytes](/API_docs/types/bytes.html) | Optional|A [future auth token](https://core.telegram.org/api/auth#future-auth-tokens)| +|user|[User](/API_docs/types/User.html) | Optional|Info on authorized user| + + + +### Type: [auth.Authorization](/API_docs/types/auth.Authorization.html) + + +### Example: + +``` +$auth_authorization = ['_' => 'auth.authorization', 'setup_password_required' => Bool, 'otherwise_relogin_days' => int, 'tmp_sessions' => int, 'future_auth_token' => 'bytes', 'user' => User]; +``` diff --git a/docs/API_docs/constructors/auth.authorizationSignUpRequired.md b/docs/API_docs/constructors/auth.authorizationSignUpRequired.md new file mode 100644 index 0000000000..2e80b339a6 --- /dev/null +++ b/docs/API_docs/constructors/auth.authorizationSignUpRequired.md @@ -0,0 +1,30 @@ +--- +title: "auth.authorizationSignUpRequired" +description: "An account with this phone number doesn't exist on telegram: the user has to enter basic information and sign up" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_authorizationSignUpRequired.html +--- +# Constructor: auth.authorizationSignUpRequired +[Back to constructors index](/API_docs/constructors/index.html) + + + +An account with this phone number doesn't exist on telegram: the user has to [enter basic information and sign up](https://core.telegram.org/api/auth) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|terms\_of\_service|[help.TermsOfService](/API_docs/constructors/help.TermsOfService.html) | Optional|Telegram's terms of service: the user must read and accept the terms of service before signing up to telegram| + + + +### Type: [auth.Authorization](/API_docs/types/auth.Authorization.html) + + +### Example: + +``` +$auth_authorizationSignUpRequired = ['_' => 'auth.authorizationSignUpRequired', 'terms_of_service' => help.TermsOfService]; +``` diff --git a/docs/API_docs/constructors/auth.codeTypeCall.md b/docs/API_docs/constructors/auth.codeTypeCall.md new file mode 100644 index 0000000000..acb4195eff --- /dev/null +++ b/docs/API_docs/constructors/auth.codeTypeCall.md @@ -0,0 +1,25 @@ +--- +title: "auth.codeTypeCall" +description: "The next time, the authentication code is to be delivered via an outgoing phone call." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_codeTypeCall.html +--- +# Constructor: auth.codeTypeCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +The next time, the authentication code is to be delivered via an outgoing phone call. + + + + +### Type: [auth.CodeType](/API_docs/types/auth.CodeType.html) + + +### Example: + +``` +$auth_codeTypeCall = ['_' => 'auth.codeTypeCall']; +``` diff --git a/docs/API_docs/constructors/auth.codeTypeFlashCall.md b/docs/API_docs/constructors/auth.codeTypeFlashCall.md new file mode 100644 index 0000000000..64baafa8d6 --- /dev/null +++ b/docs/API_docs/constructors/auth.codeTypeFlashCall.md @@ -0,0 +1,25 @@ +--- +title: "auth.codeTypeFlashCall" +description: "The next time, the authentication code will be delivered via an immediately canceled incoming call." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_codeTypeFlashCall.html +--- +# Constructor: auth.codeTypeFlashCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +The next time, the authentication code will be delivered via an immediately canceled incoming call. + + + + +### Type: [auth.CodeType](/API_docs/types/auth.CodeType.html) + + +### Example: + +``` +$auth_codeTypeFlashCall = ['_' => 'auth.codeTypeFlashCall']; +``` diff --git a/docs/API_docs/constructors/auth.codeTypeFragmentSms.md b/docs/API_docs/constructors/auth.codeTypeFragmentSms.md new file mode 100644 index 0000000000..3b5e4f77cf --- /dev/null +++ b/docs/API_docs/constructors/auth.codeTypeFragmentSms.md @@ -0,0 +1,25 @@ +--- +title: "auth.codeTypeFragmentSms" +description: "The next time, the authentication code will be delivered via fragment.com" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_codeTypeFragmentSms.html +--- +# Constructor: auth.codeTypeFragmentSms +[Back to constructors index](/API_docs/constructors/index.html) + + + +The next time, the authentication code will be delivered via [fragment.com](https://fragment.com) + + + + +### Type: [auth.CodeType](/API_docs/types/auth.CodeType.html) + + +### Example: + +``` +$auth_codeTypeFragmentSms = ['_' => 'auth.codeTypeFragmentSms']; +``` diff --git a/docs/API_docs/constructors/auth.codeTypeMissedCall.md b/docs/API_docs/constructors/auth.codeTypeMissedCall.md new file mode 100644 index 0000000000..1544c84c14 --- /dev/null +++ b/docs/API_docs/constructors/auth.codeTypeMissedCall.md @@ -0,0 +1,25 @@ +--- +title: "auth.codeTypeMissedCall" +description: "The next time, the authentication code will be delivered via an immediately canceled incoming call, handled manually by the user." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_codeTypeMissedCall.html +--- +# Constructor: auth.codeTypeMissedCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +The next time, the authentication code will be delivered via an immediately canceled incoming call, handled manually by the user. + + + + +### Type: [auth.CodeType](/API_docs/types/auth.CodeType.html) + + +### Example: + +``` +$auth_codeTypeMissedCall = ['_' => 'auth.codeTypeMissedCall']; +``` diff --git a/docs/API_docs/constructors/auth.codeTypeSms.md b/docs/API_docs/constructors/auth.codeTypeSms.md new file mode 100644 index 0000000000..920173b051 --- /dev/null +++ b/docs/API_docs/constructors/auth.codeTypeSms.md @@ -0,0 +1,25 @@ +--- +title: "auth.codeTypeSms" +description: "The next time, the authentication code will be delivered via an immediately canceled incoming call." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_codeTypeSms.html +--- +# Constructor: auth.codeTypeSms +[Back to constructors index](/API_docs/constructors/index.html) + + + +The next time, the authentication code will be delivered via an immediately canceled incoming call. + + + + +### Type: [auth.CodeType](/API_docs/types/auth.CodeType.html) + + +### Example: + +``` +$auth_codeTypeSms = ['_' => 'auth.codeTypeSms']; +``` diff --git a/docs/API_docs/constructors/auth.exportedAuthorization.md b/docs/API_docs/constructors/auth.exportedAuthorization.md new file mode 100644 index 0000000000..e0550a60cd --- /dev/null +++ b/docs/API_docs/constructors/auth.exportedAuthorization.md @@ -0,0 +1,31 @@ +--- +title: "auth.exportedAuthorization" +description: "Data for copying of authorization between data centers." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_exportedAuthorization.html +--- +# Constructor: auth.exportedAuthorization +[Back to constructors index](/API_docs/constructors/index.html) + + + +Data for copying of authorization between data centers. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|current user identifier| +|bytes|[bytes](/API_docs/types/bytes.html) | Yes|authorizes key| + + + +### Type: [auth.ExportedAuthorization](/API_docs/types/auth.ExportedAuthorization.html) + + +### Example: + +``` +$auth_exportedAuthorization = ['_' => 'auth.exportedAuthorization', 'id' => long, 'bytes' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/auth.loggedOut.md b/docs/API_docs/constructors/auth.loggedOut.md new file mode 100644 index 0000000000..6d01af37eb --- /dev/null +++ b/docs/API_docs/constructors/auth.loggedOut.md @@ -0,0 +1,30 @@ +--- +title: "auth.loggedOut" +description: "Future auth token » to be used on subsequent authorizations" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_loggedOut.html +--- +# Constructor: auth.loggedOut +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Future auth token »](https://core.telegram.org/api/auth#future-auth-tokens) to be used on subsequent authorizations + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|future\_auth\_token|[bytes](/API_docs/types/bytes.html) | Optional|[Future auth token »](https://core.telegram.org/api/auth#future-auth-tokens) to be used on subsequent authorizations| + + + +### Type: [auth.LoggedOut](/API_docs/types/auth.LoggedOut.html) + + +### Example: + +``` +$auth_loggedOut = ['_' => 'auth.loggedOut', 'future_auth_token' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/auth.loginToken.md b/docs/API_docs/constructors/auth.loginToken.md new file mode 100644 index 0000000000..d44af4deb7 --- /dev/null +++ b/docs/API_docs/constructors/auth.loginToken.md @@ -0,0 +1,31 @@ +--- +title: "auth.loginToken" +description: "Login token (for QR code login)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_loginToken.html +--- +# Constructor: auth.loginToken +[Back to constructors index](/API_docs/constructors/index.html) + + + +Login token (for [QR code login](https://core.telegram.org/api/qr-login)) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|expires|[int](/API_docs/types/int.html) | Yes|Expiration date of QR code| +|token|[bytes](/API_docs/types/bytes.html) | Yes|Token to render in QR code| + + + +### Type: [auth.LoginToken](/API_docs/types/auth.LoginToken.html) + + +### Example: + +``` +$auth_loginToken = ['_' => 'auth.loginToken', 'expires' => int, 'token' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/auth.loginTokenMigrateTo.md b/docs/API_docs/constructors/auth.loginTokenMigrateTo.md new file mode 100644 index 0000000000..ca1103b75e --- /dev/null +++ b/docs/API_docs/constructors/auth.loginTokenMigrateTo.md @@ -0,0 +1,31 @@ +--- +title: "auth.loginTokenMigrateTo" +description: "Repeat the query to the specified DC" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_loginTokenMigrateTo.html +--- +# Constructor: auth.loginTokenMigrateTo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Repeat the query to the specified DC + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|dc\_id|[int](/API_docs/types/int.html) | Yes|DC ID| +|token|[bytes](/API_docs/types/bytes.html) | Yes|Token to use for login| + + + +### Type: [auth.LoginToken](/API_docs/types/auth.LoginToken.html) + + +### Example: + +``` +$auth_loginTokenMigrateTo = ['_' => 'auth.loginTokenMigrateTo', 'dc_id' => int, 'token' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/auth.loginTokenSuccess.md b/docs/API_docs/constructors/auth.loginTokenSuccess.md new file mode 100644 index 0000000000..7e01a2123e --- /dev/null +++ b/docs/API_docs/constructors/auth.loginTokenSuccess.md @@ -0,0 +1,30 @@ +--- +title: "auth.loginTokenSuccess" +description: "Login via token (QR code) succeeded!" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_loginTokenSuccess.html +--- +# Constructor: auth.loginTokenSuccess +[Back to constructors index](/API_docs/constructors/index.html) + + + +Login via token (QR code) succeeded! + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|authorization|[auth.Authorization](/API_docs/constructors/auth.Authorization.html) | Yes|Authorization info| + + + +### Type: [auth.LoginToken](/API_docs/types/auth.LoginToken.html) + + +### Example: + +``` +$auth_loginTokenSuccess = ['_' => 'auth.loginTokenSuccess', 'authorization' => auth.Authorization]; +``` diff --git a/docs/API_docs/constructors/auth.passwordRecovery.md b/docs/API_docs/constructors/auth.passwordRecovery.md new file mode 100644 index 0000000000..7e5f7cf497 --- /dev/null +++ b/docs/API_docs/constructors/auth.passwordRecovery.md @@ -0,0 +1,30 @@ +--- +title: "auth.passwordRecovery" +description: "Recovery info of a 2FA password, only for accounts with a recovery email configured." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_passwordRecovery.html +--- +# Constructor: auth.passwordRecovery +[Back to constructors index](/API_docs/constructors/index.html) + + + +Recovery info of a [2FA password](https://core.telegram.org/api/srp), only for accounts with a [recovery email configured](https://core.telegram.org/api/srp#email-verification). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|email\_pattern|[string](/API_docs/types/string.html) | Yes|The email to which the recovery code was sent must match this [pattern](https://core.telegram.org/api/pattern).| + + + +### Type: [auth.PasswordRecovery](/API_docs/types/auth.PasswordRecovery.html) + + +### Example: + +``` +$auth_passwordRecovery = ['_' => 'auth.passwordRecovery', 'email_pattern' => 'string']; +``` diff --git a/docs/API_docs/constructors/auth.sentCode.md b/docs/API_docs/constructors/auth.sentCode.md new file mode 100644 index 0000000000..e88334a612 --- /dev/null +++ b/docs/API_docs/constructors/auth.sentCode.md @@ -0,0 +1,33 @@ +--- +title: "auth.sentCode" +description: "Contains info about a sent verification code." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_sentCode.html +--- +# Constructor: auth.sentCode +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains info about a sent verification code. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[auth.SentCodeType](/API_docs/constructors/auth.SentCodeType.html) | Yes|Phone code type| +|phone\_code\_hash|[string](/API_docs/types/string.html) | Yes|Phone code hash, to be stored and later re-used with [auth.signIn](../methods/auth.signIn.html)| +|next\_type|[auth.CodeType](/API_docs/constructors/auth.CodeType.html) | Optional|Phone code type that will be sent next, if the phone code is not received within `timeout` seconds: to send it use [auth.resendCode](../methods/auth.resendCode.html)| +|timeout|[int](/API_docs/types/int.html) | Optional|Timeout for reception of the phone code| + + + +### Type: [auth.SentCode](/API_docs/types/auth.SentCode.html) + + +### Example: + +``` +$auth_sentCode = ['_' => 'auth.sentCode', 'type' => auth.SentCodeType, 'phone_code_hash' => 'string', 'next_type' => auth.CodeType, 'timeout' => int]; +``` diff --git a/docs/API_docs/constructors/auth.sentCodeSuccess.md b/docs/API_docs/constructors/auth.sentCodeSuccess.md new file mode 100644 index 0000000000..62dd19f7bc --- /dev/null +++ b/docs/API_docs/constructors/auth.sentCodeSuccess.md @@ -0,0 +1,30 @@ +--- +title: "auth.sentCodeSuccess" +description: "The user successfully authorized using future auth tokens" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_sentCodeSuccess.html +--- +# Constructor: auth.sentCodeSuccess +[Back to constructors index](/API_docs/constructors/index.html) + + + +The user successfully authorized using [future auth tokens](https://core.telegram.org/api/auth#future-auth-tokens) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|authorization|[auth.Authorization](/API_docs/constructors/auth.Authorization.html) | Yes|Authorization info| + + + +### Type: [auth.SentCode](/API_docs/types/auth.SentCode.html) + + +### Example: + +``` +$auth_sentCodeSuccess = ['_' => 'auth.sentCodeSuccess', 'authorization' => auth.Authorization]; +``` diff --git a/docs/API_docs/constructors/auth.sentCodeTypeApp.md b/docs/API_docs/constructors/auth.sentCodeTypeApp.md new file mode 100644 index 0000000000..57247ff0c5 --- /dev/null +++ b/docs/API_docs/constructors/auth.sentCodeTypeApp.md @@ -0,0 +1,30 @@ +--- +title: "auth.sentCodeTypeApp" +description: "The code was sent through the telegram app" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_sentCodeTypeApp.html +--- +# Constructor: auth.sentCodeTypeApp +[Back to constructors index](/API_docs/constructors/index.html) + + + +The code was sent through the telegram app + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|length|[int](/API_docs/types/int.html) | Yes|Length of the code in bytes| + + + +### Type: [auth.SentCodeType](/API_docs/types/auth.SentCodeType.html) + + +### Example: + +``` +$auth_sentCodeTypeApp = ['_' => 'auth.sentCodeTypeApp', 'length' => int]; +``` diff --git a/docs/API_docs/constructors/auth.sentCodeTypeCall.md b/docs/API_docs/constructors/auth.sentCodeTypeCall.md new file mode 100644 index 0000000000..cc44637d3b --- /dev/null +++ b/docs/API_docs/constructors/auth.sentCodeTypeCall.md @@ -0,0 +1,30 @@ +--- +title: "auth.sentCodeTypeCall" +description: "The code will be sent via a phone call: a synthesized voice will tell the user which verification code to input." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_sentCodeTypeCall.html +--- +# Constructor: auth.sentCodeTypeCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +The code will be sent via a phone call: a synthesized voice will tell the user which verification code to input. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|length|[int](/API_docs/types/int.html) | Yes|Length of the verification code| + + + +### Type: [auth.SentCodeType](/API_docs/types/auth.SentCodeType.html) + + +### Example: + +``` +$auth_sentCodeTypeCall = ['_' => 'auth.sentCodeTypeCall', 'length' => int]; +``` diff --git a/docs/API_docs/constructors/auth.sentCodeTypeEmailCode.md b/docs/API_docs/constructors/auth.sentCodeTypeEmailCode.md new file mode 100644 index 0000000000..684acc2b68 --- /dev/null +++ b/docs/API_docs/constructors/auth.sentCodeTypeEmailCode.md @@ -0,0 +1,35 @@ +--- +title: "auth.sentCodeTypeEmailCode" +description: "The code was sent via the previously configured login email »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_sentCodeTypeEmailCode.html +--- +# Constructor: auth.sentCodeTypeEmailCode +[Back to constructors index](/API_docs/constructors/index.html) + + + +The code was sent via the [previously configured login email »](https://core.telegram.org/api/auth#email-verification) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|apple\_signin\_allowed|[Bool](/API_docs/types/Bool.html) | Optional|Whether authorization through Apple ID is allowed| +|google\_signin\_allowed|[Bool](/API_docs/types/Bool.html) | Optional|Whether authorization through Google ID is allowed| +|email\_pattern|[string](/API_docs/types/string.html) | Yes|[Pattern](https://core.telegram.org/api/pattern) of the email| +|length|[int](/API_docs/types/int.html) | Yes|Length of the sent verification code| +|reset\_available\_period|[int](/API_docs/types/int.html) | Optional|Clients should wait for the specified amount of seconds before allowing the user to invoke [auth.resetLoginEmail](../methods/auth.resetLoginEmail.html) (will be 0 for [Premium](https://core.telegram.org/api/premium) users).| +|reset\_pending\_date|[int](/API_docs/types/int.html) | Optional|An email reset was already requested, and will occur at the specified date.| + + + +### Type: [auth.SentCodeType](/API_docs/types/auth.SentCodeType.html) + + +### Example: + +``` +$auth_sentCodeTypeEmailCode = ['_' => 'auth.sentCodeTypeEmailCode', 'apple_signin_allowed' => Bool, 'google_signin_allowed' => Bool, 'email_pattern' => 'string', 'length' => int, 'reset_available_period' => int, 'reset_pending_date' => int]; +``` diff --git a/docs/API_docs/constructors/auth.sentCodeTypeFirebaseSms.md b/docs/API_docs/constructors/auth.sentCodeTypeFirebaseSms.md new file mode 100644 index 0000000000..c1758f2ddd --- /dev/null +++ b/docs/API_docs/constructors/auth.sentCodeTypeFirebaseSms.md @@ -0,0 +1,33 @@ +--- +title: "auth.sentCodeTypeFirebaseSms" +description: "An authentication code should be delivered via SMS after Firebase attestation, as described in the auth documentation »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_sentCodeTypeFirebaseSms.html +--- +# Constructor: auth.sentCodeTypeFirebaseSms +[Back to constructors index](/API_docs/constructors/index.html) + + + +An authentication code should be delivered via SMS after Firebase attestation, as described in the [auth documentation »](https://core.telegram.org/api/auth). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|nonce|[bytes](/API_docs/types/bytes.html) | Optional|On Android, the nonce to be used as described in the [auth documentation »](https://core.telegram.org/api/auth)| +|receipt|[string](/API_docs/types/string.html) | Optional|On iOS, must be compared with the `receipt` extracted from the received push notification.| +|push\_timeout|[int](/API_docs/types/int.html) | Optional|On iOS: if a push notification with the `ios_push_secret` isn't received within `push_timeout` seconds, the `next_type` authentication method must be used, with [auth.resendCode](../methods/auth.resendCode.html).| +|length|[int](/API_docs/types/int.html) | Yes|Length of the code that will be delivered.| + + + +### Type: [auth.SentCodeType](/API_docs/types/auth.SentCodeType.html) + + +### Example: + +``` +$auth_sentCodeTypeFirebaseSms = ['_' => 'auth.sentCodeTypeFirebaseSms', 'nonce' => 'bytes', 'receipt' => 'string', 'push_timeout' => int, 'length' => int]; +``` diff --git a/docs/API_docs/constructors/auth.sentCodeTypeFlashCall.md b/docs/API_docs/constructors/auth.sentCodeTypeFlashCall.md new file mode 100644 index 0000000000..401ad549e4 --- /dev/null +++ b/docs/API_docs/constructors/auth.sentCodeTypeFlashCall.md @@ -0,0 +1,30 @@ +--- +title: "auth.sentCodeTypeFlashCall" +description: "The code will be sent via a flash phone call, that will be closed immediately. The phone code will then be the phone number itself, just make sure that the phone number matches the specified pattern." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_sentCodeTypeFlashCall.html +--- +# Constructor: auth.sentCodeTypeFlashCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +The code will be sent via a flash phone call, that will be closed immediately. The phone code will then be the phone number itself, just make sure that the phone number matches the specified pattern. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|pattern|[string](/API_docs/types/string.html) | Yes|[pattern](https://core.telegram.org/api/pattern) to match| + + + +### Type: [auth.SentCodeType](/API_docs/types/auth.SentCodeType.html) + + +### Example: + +``` +$auth_sentCodeTypeFlashCall = ['_' => 'auth.sentCodeTypeFlashCall', 'pattern' => 'string']; +``` diff --git a/docs/API_docs/constructors/auth.sentCodeTypeFragmentSms.md b/docs/API_docs/constructors/auth.sentCodeTypeFragmentSms.md new file mode 100644 index 0000000000..4378e2d3be --- /dev/null +++ b/docs/API_docs/constructors/auth.sentCodeTypeFragmentSms.md @@ -0,0 +1,31 @@ +--- +title: "auth.sentCodeTypeFragmentSms" +description: "The code was delivered via fragment.com." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_sentCodeTypeFragmentSms.html +--- +# Constructor: auth.sentCodeTypeFragmentSms +[Back to constructors index](/API_docs/constructors/index.html) + + + +The code was delivered via [fragment.com](https://fragment.com). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|Open the specified URL to log into [fragment.com](https://fragment.com) with the wallet that owns the specified phone number and view the code.| +|length|[int](/API_docs/types/int.html) | Yes|Length of the delivered code.| + + + +### Type: [auth.SentCodeType](/API_docs/types/auth.SentCodeType.html) + + +### Example: + +``` +$auth_sentCodeTypeFragmentSms = ['_' => 'auth.sentCodeTypeFragmentSms', 'url' => 'string', 'length' => int]; +``` diff --git a/docs/API_docs/constructors/auth.sentCodeTypeMissedCall.md b/docs/API_docs/constructors/auth.sentCodeTypeMissedCall.md new file mode 100644 index 0000000000..5dcf2f81a3 --- /dev/null +++ b/docs/API_docs/constructors/auth.sentCodeTypeMissedCall.md @@ -0,0 +1,31 @@ +--- +title: "auth.sentCodeTypeMissedCall" +description: "The code will be sent via a flash phone call, that will be closed immediately. The last digits of the phone number that calls are the code that must be entered manually by the user." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_sentCodeTypeMissedCall.html +--- +# Constructor: auth.sentCodeTypeMissedCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +The code will be sent via a flash phone call, that will be closed immediately. The last digits of the phone number that calls are the code that must be entered manually by the user. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prefix|[string](/API_docs/types/string.html) | Yes|Prefix of the phone number from which the call will be made| +|length|[int](/API_docs/types/int.html) | Yes|Length of the verification code| + + + +### Type: [auth.SentCodeType](/API_docs/types/auth.SentCodeType.html) + + +### Example: + +``` +$auth_sentCodeTypeMissedCall = ['_' => 'auth.sentCodeTypeMissedCall', 'prefix' => 'string', 'length' => int]; +``` diff --git a/docs/API_docs/constructors/auth.sentCodeTypeSetUpEmailRequired.md b/docs/API_docs/constructors/auth.sentCodeTypeSetUpEmailRequired.md new file mode 100644 index 0000000000..3e45cb2e9a --- /dev/null +++ b/docs/API_docs/constructors/auth.sentCodeTypeSetUpEmailRequired.md @@ -0,0 +1,31 @@ +--- +title: "auth.sentCodeTypeSetUpEmailRequired" +description: "The user should add and verify an email address in order to login as described here »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_sentCodeTypeSetUpEmailRequired.html +--- +# Constructor: auth.sentCodeTypeSetUpEmailRequired +[Back to constructors index](/API_docs/constructors/index.html) + + + +The user should add and verify an email address in order to login as described [here »](https://core.telegram.org/api/auth#email-verification). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|apple\_signin\_allowed|[Bool](/API_docs/types/Bool.html) | Optional|Whether authorization through Apple ID is allowed| +|google\_signin\_allowed|[Bool](/API_docs/types/Bool.html) | Optional|Whether authorization through Google ID is allowed| + + + +### Type: [auth.SentCodeType](/API_docs/types/auth.SentCodeType.html) + + +### Example: + +``` +$auth_sentCodeTypeSetUpEmailRequired = ['_' => 'auth.sentCodeTypeSetUpEmailRequired', 'apple_signin_allowed' => Bool, 'google_signin_allowed' => Bool]; +``` diff --git a/docs/API_docs/constructors/auth.sentCodeTypeSms.md b/docs/API_docs/constructors/auth.sentCodeTypeSms.md new file mode 100644 index 0000000000..6d4d87b3bb --- /dev/null +++ b/docs/API_docs/constructors/auth.sentCodeTypeSms.md @@ -0,0 +1,30 @@ +--- +title: "auth.sentCodeTypeSms" +description: "The code was sent via SMS" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_sentCodeTypeSms.html +--- +# Constructor: auth.sentCodeTypeSms +[Back to constructors index](/API_docs/constructors/index.html) + + + +The code was sent via SMS + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|length|[int](/API_docs/types/int.html) | Yes|Length of the code in bytes| + + + +### Type: [auth.SentCodeType](/API_docs/types/auth.SentCodeType.html) + + +### Example: + +``` +$auth_sentCodeTypeSms = ['_' => 'auth.sentCodeTypeSms', 'length' => int]; +``` diff --git a/docs/API_docs/constructors/auth.sentCodeTypeSmsPhrase.md b/docs/API_docs/constructors/auth.sentCodeTypeSmsPhrase.md new file mode 100644 index 0000000000..f115d64f0b --- /dev/null +++ b/docs/API_docs/constructors/auth.sentCodeTypeSmsPhrase.md @@ -0,0 +1,28 @@ +--- +title: "auth.sentCodeTypeSmsPhrase" +description: "auth.sentCodeTypeSmsPhrase attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_sentCodeTypeSmsPhrase.html +--- +# Constructor: auth.sentCodeTypeSmsPhrase +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|beginning|[string](/API_docs/types/string.html) | Optional| + + + +### Type: [auth.SentCodeType](/API_docs/types/auth.SentCodeType.html) + + +### Example: + +``` +$auth_sentCodeTypeSmsPhrase = ['_' => 'auth.sentCodeTypeSmsPhrase', 'beginning' => 'string']; +``` diff --git a/docs/API_docs/constructors/auth.sentCodeTypeSmsWord.md b/docs/API_docs/constructors/auth.sentCodeTypeSmsWord.md new file mode 100644 index 0000000000..220c2bfc12 --- /dev/null +++ b/docs/API_docs/constructors/auth.sentCodeTypeSmsWord.md @@ -0,0 +1,28 @@ +--- +title: "auth.sentCodeTypeSmsWord" +description: "auth.sentCodeTypeSmsWord attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/auth_sentCodeTypeSmsWord.html +--- +# Constructor: auth.sentCodeTypeSmsWord +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|beginning|[string](/API_docs/types/string.html) | Optional| + + + +### Type: [auth.SentCodeType](/API_docs/types/auth.SentCodeType.html) + + +### Example: + +``` +$auth_sentCodeTypeSmsWord = ['_' => 'auth.sentCodeTypeSmsWord', 'beginning' => 'string']; +``` diff --git a/docs/API_docs/constructors/authorization.md b/docs/API_docs/constructors/authorization.md new file mode 100644 index 0000000000..d3c71d87a2 --- /dev/null +++ b/docs/API_docs/constructors/authorization.md @@ -0,0 +1,46 @@ +--- +title: "authorization" +description: "Logged-in session" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: authorization +[Back to constructors index](/API_docs/constructors/index.html) + + + +Logged-in session + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|current|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is the current session| +|official\_app|[Bool](/API_docs/types/Bool.html) | Optional|Whether the session is from an official app| +|password\_pending|[Bool](/API_docs/types/Bool.html) | Optional|Whether the session is still waiting for a 2FA password| +|encrypted\_requests\_disabled|[Bool](/API_docs/types/Bool.html) | Optional|Whether this session will accept encrypted chats| +|call\_requests\_disabled|[Bool](/API_docs/types/Bool.html) | Optional|Whether this session will accept phone calls| +|unconfirmed|[Bool](/API_docs/types/Bool.html) | Optional|Whether the session is [unconfirmed, see here »](https://core.telegram.org/api/auth#confirming-login) for more info.| +|hash|[long](/API_docs/types/long.html) | Yes|Identifier| +|device\_model|[string](/API_docs/types/string.html) | Yes|Device model| +|platform|[string](/API_docs/types/string.html) | Yes|Platform| +|system\_version|[string](/API_docs/types/string.html) | Yes|System version| +|api\_id|[int](/API_docs/types/int.html) | Yes|[API ID](https://core.telegram.org/api/obtaining_api_id)| +|app\_name|[string](/API_docs/types/string.html) | Yes|App name| +|app\_version|[string](/API_docs/types/string.html) | Yes|App version| +|date\_created|[int](/API_docs/types/int.html) | Yes|When was the session created| +|date\_active|[int](/API_docs/types/int.html) | Yes|When was the session last active| +|ip|[string](/API_docs/types/string.html) | Yes|Last known IP| +|country|[string](/API_docs/types/string.html) | Yes|Country determined from IP| +|region|[string](/API_docs/types/string.html) | Yes|Region determined from IP| + + + +### Type: [Authorization](/API_docs/types/Authorization.html) + + +### Example: + +``` +$authorization = ['_' => 'authorization', 'current' => Bool, 'official_app' => Bool, 'password_pending' => Bool, 'encrypted_requests_disabled' => Bool, 'call_requests_disabled' => Bool, 'unconfirmed' => Bool, 'hash' => long, 'device_model' => 'string', 'platform' => 'string', 'system_version' => 'string', 'api_id' => int, 'app_name' => 'string', 'app_version' => 'string', 'date_created' => int, 'date_active' => int, 'ip' => 'string', 'country' => 'string', 'region' => 'string']; +``` diff --git a/docs/API_docs/constructors/autoDownloadSettings.md b/docs/API_docs/constructors/autoDownloadSettings.md new file mode 100644 index 0000000000..6b7126744b --- /dev/null +++ b/docs/API_docs/constructors/autoDownloadSettings.md @@ -0,0 +1,39 @@ +--- +title: "autoDownloadSettings" +description: "Autodownload settings" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: autoDownloadSettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +Autodownload settings + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|disabled|[Bool](/API_docs/types/Bool.html) | Optional|Disable automatic media downloads?| +|video\_preload\_large|[Bool](/API_docs/types/Bool.html) | Optional|Whether to preload the first seconds of videos larger than the specified limit| +|audio\_preload\_next|[Bool](/API_docs/types/Bool.html) | Optional|Whether to preload the next audio track when you're listening to music| +|phonecalls\_less\_data|[Bool](/API_docs/types/Bool.html) | Optional|Whether to enable data saving mode in phone calls| +|stories\_preload|[Bool](/API_docs/types/Bool.html) | Optional|Whether to preload [stories](https://core.telegram.org/api/stories); in particular, the first [documentAttributeVideo](../constructors/documentAttributeVideo.html).`preload_prefix_size` bytes of story videos should be preloaded.| +|photo\_size\_max|[int](/API_docs/types/int.html) | Yes|Maximum size of photos to preload| +|video\_size\_max|[long](/API_docs/types/long.html) | Yes|Maximum size of videos to preload| +|file\_size\_max|[long](/API_docs/types/long.html) | Yes|Maximum size of other files to preload| +|video\_upload\_maxbitrate|[int](/API_docs/types/int.html) | Yes|Maximum suggested bitrate for **uploading** videos| +|small\_queue\_active\_operations\_max|[int](/API_docs/types/int.html) | Yes|A limit, specifying the maximum number of files that should be downloaded in parallel from the same DC, for files smaller than 20MB.| +|large\_queue\_active\_operations\_max|[int](/API_docs/types/int.html) | Yes|A limit, specifying the maximum number of files that should be downloaded in parallel from the same DC, for files bigger than 20MB.| + + + +### Type: [AutoDownloadSettings](/API_docs/types/AutoDownloadSettings.html) + + +### Example: + +``` +$autoDownloadSettings = ['_' => 'autoDownloadSettings', 'disabled' => Bool, 'video_preload_large' => Bool, 'audio_preload_next' => Bool, 'phonecalls_less_data' => Bool, 'stories_preload' => Bool, 'photo_size_max' => int, 'video_size_max' => long, 'file_size_max' => long, 'video_upload_maxbitrate' => int, 'small_queue_active_operations_max' => int, 'large_queue_active_operations_max' => int]; +``` diff --git a/docs/API_docs/constructors/autoSaveException.md b/docs/API_docs/constructors/autoSaveException.md new file mode 100644 index 0000000000..76e720e24d --- /dev/null +++ b/docs/API_docs/constructors/autoSaveException.md @@ -0,0 +1,30 @@ +--- +title: "autoSaveException" +description: "Peer-specific media autosave settings" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: autoSaveException +[Back to constructors index](/API_docs/constructors/index.html) + + + +Peer-specific media autosave settings + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|The peer| +|settings|[AutoSaveSettings](/API_docs/types/AutoSaveSettings.html) | Yes|Media autosave settings| + + + +### Type: [AutoSaveException](/API_docs/types/AutoSaveException.html) + + +### Example: + +``` +$autoSaveException = ['_' => 'autoSaveException', 'peer' => long, 'settings' => AutoSaveSettings]; +``` diff --git a/docs/API_docs/constructors/autoSaveSettings.md b/docs/API_docs/constructors/autoSaveSettings.md new file mode 100644 index 0000000000..d22b67b553 --- /dev/null +++ b/docs/API_docs/constructors/autoSaveSettings.md @@ -0,0 +1,31 @@ +--- +title: "autoSaveSettings" +description: "Media autosave settings" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: autoSaveSettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +Media autosave settings + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|photos|[Bool](/API_docs/types/Bool.html) | Optional|Whether photos should be autosaved to the gallery.| +|videos|[Bool](/API_docs/types/Bool.html) | Optional|Whether videos should be autosaved to the gallery.| +|video\_max\_size|[long](/API_docs/types/long.html) | Optional|If set, specifies a size limit for autosavable videos| + + + +### Type: [AutoSaveSettings](/API_docs/types/AutoSaveSettings.html) + + +### Example: + +``` +$autoSaveSettings = ['_' => 'autoSaveSettings', 'photos' => Bool, 'videos' => Bool, 'video_max_size' => long]; +``` diff --git a/docs/API_docs/constructors/availableReaction.md b/docs/API_docs/constructors/availableReaction.md new file mode 100644 index 0000000000..b49bdcce9d --- /dev/null +++ b/docs/API_docs/constructors/availableReaction.md @@ -0,0 +1,39 @@ +--- +title: "availableReaction" +description: "Animations associated with a message reaction" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: availableReaction +[Back to constructors index](/API_docs/constructors/index.html) + + + +Animations associated with a message reaction + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|inactive|[Bool](/API_docs/types/Bool.html) | Optional|If not set, the reaction can be added to new messages and enabled in chats.| +|premium|[Bool](/API_docs/types/Bool.html) | Optional|Whether this reaction can only be used by Telegram Premium users| +|reaction|[string](/API_docs/types/string.html) | Yes|Reaction emoji| +|title|[string](/API_docs/types/string.html) | Yes|Reaction description| +|static\_icon|[Document](/API_docs/types/Document.html) | Optional|Static icon for the reaction| +|appear\_animation|[Document](/API_docs/types/Document.html) | Optional|The animated sticker to show when the user opens the reaction dropdown| +|select\_animation|[Document](/API_docs/types/Document.html) | Optional|The animated sticker to show when the user hovers over the reaction| +|activate\_animation|[Document](/API_docs/types/Document.html) | Optional|The animated sticker to show when the reaction is chosen and activated| +|effect\_animation|[Document](/API_docs/types/Document.html) | Optional|The background effect (still an animated sticker) to play under the `activate_animation`, when the reaction is chosen and activated| +|around\_animation|[Document](/API_docs/types/Document.html) | Optional|The animation that plays around the button when you press an existing reaction (played together with `center_icon`).| +|center\_icon|[Document](/API_docs/types/Document.html) | Optional|The animation of the emoji inside the button when you press an existing reaction (played together with `around_animation`).| + + + +### Type: [AvailableReaction](/API_docs/types/AvailableReaction.html) + + +### Example: + +``` +$availableReaction = ['_' => 'availableReaction', 'inactive' => Bool, 'premium' => Bool, 'reaction' => 'string', 'title' => 'string', 'static_icon' => Document, 'appear_animation' => Document, 'select_animation' => Document, 'activate_animation' => Document, 'effect_animation' => Document, 'around_animation' => Document, 'center_icon' => Document]; +``` diff --git a/docs/API_docs/constructors/bankCardOpenUrl.md b/docs/API_docs/constructors/bankCardOpenUrl.md new file mode 100644 index 0000000000..a2c5068cd1 --- /dev/null +++ b/docs/API_docs/constructors/bankCardOpenUrl.md @@ -0,0 +1,30 @@ +--- +title: "bankCardOpenUrl" +description: "Credit card info URL provided by the bank" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: bankCardOpenUrl +[Back to constructors index](/API_docs/constructors/index.html) + + + +Credit card info URL provided by the bank + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|Info URL| +|name|[string](/API_docs/types/string.html) | Yes|Bank name| + + + +### Type: [BankCardOpenUrl](/API_docs/types/BankCardOpenUrl.html) + + +### Example: + +``` +$bankCardOpenUrl = ['_' => 'bankCardOpenUrl', 'url' => 'string', 'name' => 'string']; +``` diff --git a/docs/API_docs/constructors/baseThemeArctic.md b/docs/API_docs/constructors/baseThemeArctic.md new file mode 100644 index 0000000000..11bd29924f --- /dev/null +++ b/docs/API_docs/constructors/baseThemeArctic.md @@ -0,0 +1,24 @@ +--- +title: "baseThemeArctic" +description: "Arctic theme" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: baseThemeArctic +[Back to constructors index](/API_docs/constructors/index.html) + + + +Arctic theme + + + + +### Type: [BaseTheme](/API_docs/types/BaseTheme.html) + + +### Example: + +``` +$baseThemeArctic = ['_' => 'baseThemeArctic']; +``` diff --git a/docs/API_docs/constructors/baseThemeClassic.md b/docs/API_docs/constructors/baseThemeClassic.md new file mode 100644 index 0000000000..1e88d57bb2 --- /dev/null +++ b/docs/API_docs/constructors/baseThemeClassic.md @@ -0,0 +1,24 @@ +--- +title: "baseThemeClassic" +description: "Classic theme" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: baseThemeClassic +[Back to constructors index](/API_docs/constructors/index.html) + + + +Classic theme + + + + +### Type: [BaseTheme](/API_docs/types/BaseTheme.html) + + +### Example: + +``` +$baseThemeClassic = ['_' => 'baseThemeClassic']; +``` diff --git a/docs/API_docs/constructors/baseThemeDay.md b/docs/API_docs/constructors/baseThemeDay.md new file mode 100644 index 0000000000..f3b04e20d5 --- /dev/null +++ b/docs/API_docs/constructors/baseThemeDay.md @@ -0,0 +1,24 @@ +--- +title: "baseThemeDay" +description: "Day theme" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: baseThemeDay +[Back to constructors index](/API_docs/constructors/index.html) + + + +Day theme + + + + +### Type: [BaseTheme](/API_docs/types/BaseTheme.html) + + +### Example: + +``` +$baseThemeDay = ['_' => 'baseThemeDay']; +``` diff --git a/docs/API_docs/constructors/baseThemeNight.md b/docs/API_docs/constructors/baseThemeNight.md new file mode 100644 index 0000000000..695be826d5 --- /dev/null +++ b/docs/API_docs/constructors/baseThemeNight.md @@ -0,0 +1,24 @@ +--- +title: "baseThemeNight" +description: "Night theme" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: baseThemeNight +[Back to constructors index](/API_docs/constructors/index.html) + + + +Night theme + + + + +### Type: [BaseTheme](/API_docs/types/BaseTheme.html) + + +### Example: + +``` +$baseThemeNight = ['_' => 'baseThemeNight']; +``` diff --git a/docs/API_docs/constructors/baseThemeTinted.md b/docs/API_docs/constructors/baseThemeTinted.md new file mode 100644 index 0000000000..573099e486 --- /dev/null +++ b/docs/API_docs/constructors/baseThemeTinted.md @@ -0,0 +1,24 @@ +--- +title: "baseThemeTinted" +description: "Tinted theme" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: baseThemeTinted +[Back to constructors index](/API_docs/constructors/index.html) + + + +Tinted theme + + + + +### Type: [BaseTheme](/API_docs/types/BaseTheme.html) + + +### Example: + +``` +$baseThemeTinted = ['_' => 'baseThemeTinted']; +``` diff --git a/docs/API_docs/constructors/birthday.md b/docs/API_docs/constructors/birthday.md new file mode 100644 index 0000000000..47cfc54eef --- /dev/null +++ b/docs/API_docs/constructors/birthday.md @@ -0,0 +1,29 @@ +--- +title: "birthday" +description: "birthday attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: birthday +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|day|[int](/API_docs/types/int.html) | Yes| +|month|[int](/API_docs/types/int.html) | Yes| +|year|[int](/API_docs/types/int.html) | Optional| + + + +### Type: [Birthday](/API_docs/types/Birthday.html) + + +### Example: + +``` +$birthday = ['_' => 'birthday', 'day' => int, 'month' => int, 'year' => int]; +``` diff --git a/docs/API_docs/constructors/boolFalse.md b/docs/API_docs/constructors/boolFalse.md new file mode 100644 index 0000000000..a3fd4f1a87 --- /dev/null +++ b/docs/API_docs/constructors/boolFalse.md @@ -0,0 +1,10 @@ +--- +title: boolFalse +description: Represents a boolean with value equal to false +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# boolFalse +[Back to constructor index](index.html) + +Represents a boolean with value equal to `false`. diff --git a/docs/API_docs/constructors/boolTrue.md b/docs/API_docs/constructors/boolTrue.md new file mode 100644 index 0000000000..3e6866f9b0 --- /dev/null +++ b/docs/API_docs/constructors/boolTrue.md @@ -0,0 +1,10 @@ +--- +title: boolTrue +description: Represents a boolean with value equal to true +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# boolTrue +[Back to constructor index](index.html) + +Represents a boolean with value equal to `true`. diff --git a/docs/API_docs/constructors/boost.md b/docs/API_docs/constructors/boost.md new file mode 100644 index 0000000000..4fecb6ec65 --- /dev/null +++ b/docs/API_docs/constructors/boost.md @@ -0,0 +1,38 @@ +--- +title: "boost" +description: "Info about one or more boosts applied by a specific user." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: boost +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about one or more [boosts](https://core.telegram.org/api/boost) applied by a specific user. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|gift|[Bool](/API_docs/types/Bool.html) | Optional|Whether this boost was applied because the channel [directly gifted a subscription to the user](https://core.telegram.org/api/giveaways).| +|giveaway|[Bool](/API_docs/types/Bool.html) | Optional|Whether this boost was applied because the user was chosen in a [giveaway started by the channel](https://core.telegram.org/api/giveaways).| +|unclaimed|[Bool](/API_docs/types/Bool.html) | Optional|If set, the user hasn't yet invoked [payments.applyGiftCode](../methods/payments.applyGiftCode.html) to claim a subscription gifted [directly or in a giveaway by the channel](https://core.telegram.org/api/giveaways).| +|id|[string](/API_docs/types/string.html) | Yes|Unique ID for this set of boosts.| +|user\_id|[long](/API_docs/types/long.html) | Optional|ID of the user that applied the boost.| +|giveaway\_msg\_id|[int](/API_docs/types/int.html) | Optional|The message ID of the [giveaway](https://core.telegram.org/api/giveaways)| +|date|[int](/API_docs/types/int.html) | Yes|When was the boost applied| +|expires|[int](/API_docs/types/int.html) | Yes|When does the boost expire| +|used\_gift\_slug|[string](/API_docs/types/string.html) | Optional|The created Telegram Premium gift code, only set if either `gift` or `giveaway` are set AND it is either a gift code for the currently logged in user or if it was already claimed.| +|multiplier|[int](/API_docs/types/int.html) | Optional|If set, this boost counts as `multiplier` boosts, otherwise it counts as a single boost.| + + + +### Type: [Boost](/API_docs/types/Boost.html) + + +### Example: + +``` +$boost = ['_' => 'boost', 'gift' => Bool, 'giveaway' => Bool, 'unclaimed' => Bool, 'id' => 'string', 'user_id' => long, 'giveaway_msg_id' => int, 'date' => int, 'expires' => int, 'used_gift_slug' => 'string', 'multiplier' => int]; +``` diff --git a/docs/API_docs/constructors/botApp.md b/docs/API_docs/constructors/botApp.md new file mode 100644 index 0000000000..4805e5c18c --- /dev/null +++ b/docs/API_docs/constructors/botApp.md @@ -0,0 +1,36 @@ +--- +title: "botApp" +description: "Contains information about a direct link Mini App." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botApp +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains information about a [direct link Mini App](https://core.telegram.org/api/bots/webapps#direct-link-mini-apps). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|bot mini app ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|bot mini app access hash| +|short\_name|[string](/API_docs/types/string.html) | Yes|bot mini app short name, used to generate [Direct Mini App deep links](https://core.telegram.org/api/links#direct-mini-app-links).| +|title|[string](/API_docs/types/string.html) | Yes|bot mini app title.| +|description|[string](/API_docs/types/string.html) | Yes|bot mini app description.| +|photo|[Photo](/API_docs/types/Photo.html) | Optional|bot mini app photo.| +|document|[Document](/API_docs/types/Document.html) | Optional|bot mini app animation.| +|hash|[long](/API_docs/types/long.html) | Yes|Hash to pass to [messages.getBotApp](../methods/messages.getBotApp.html), to avoid refetching bot app info if it hasn't changed.| + + + +### Type: [BotApp](/API_docs/types/BotApp.html) + + +### Example: + +``` +$botApp = ['_' => 'botApp', 'id' => long, 'access_hash' => long, 'short_name' => 'string', 'title' => 'string', 'description' => 'string', 'photo' => Photo, 'document' => Document, 'hash' => long]; +``` diff --git a/docs/API_docs/constructors/botAppNotModified.md b/docs/API_docs/constructors/botAppNotModified.md new file mode 100644 index 0000000000..c4e8eda66b --- /dev/null +++ b/docs/API_docs/constructors/botAppNotModified.md @@ -0,0 +1,24 @@ +--- +title: "botAppNotModified" +description: "Bot app info hasn't changed." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botAppNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +Bot app info hasn't changed. + + + + +### Type: [BotApp](/API_docs/types/BotApp.html) + + +### Example: + +``` +$botAppNotModified = ['_' => 'botAppNotModified']; +``` diff --git a/docs/API_docs/constructors/botBusinessConnection.md b/docs/API_docs/constructors/botBusinessConnection.md new file mode 100644 index 0000000000..f96d035008 --- /dev/null +++ b/docs/API_docs/constructors/botBusinessConnection.md @@ -0,0 +1,32 @@ +--- +title: "botBusinessConnection" +description: "botBusinessConnection attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botBusinessConnection +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|can\_reply|[Bool](/API_docs/types/Bool.html) | Optional| +|disabled|[Bool](/API_docs/types/Bool.html) | Optional| +|connection\_id|[string](/API_docs/types/string.html) | Yes| +|user\_id|[long](/API_docs/types/long.html) | Yes| +|dc\_id|[int](/API_docs/types/int.html) | Yes| +|date|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [BotBusinessConnection](/API_docs/types/BotBusinessConnection.html) + + +### Example: + +``` +$botBusinessConnection = ['_' => 'botBusinessConnection', 'can_reply' => Bool, 'disabled' => Bool, 'connection_id' => 'string', 'user_id' => long, 'dc_id' => int, 'date' => int]; +``` diff --git a/docs/API_docs/constructors/botCommand.md b/docs/API_docs/constructors/botCommand.md new file mode 100644 index 0000000000..53ae68d7bb --- /dev/null +++ b/docs/API_docs/constructors/botCommand.md @@ -0,0 +1,30 @@ +--- +title: "botCommand" +description: "Describes a bot command that can be used in a chat" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botCommand +[Back to constructors index](/API_docs/constructors/index.html) + + + +Describes a bot command that can be used in a chat + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|command|[string](/API_docs/types/string.html) | Yes|`/command` name| +|description|[string](/API_docs/types/string.html) | Yes|Description of the command| + + + +### Type: [BotCommand](/API_docs/types/BotCommand.html) + + +### Example: + +``` +$botCommand = ['_' => 'botCommand', 'command' => 'string', 'description' => 'string']; +``` diff --git a/docs/API_docs/constructors/botCommandScopeChatAdmins.md b/docs/API_docs/constructors/botCommandScopeChatAdmins.md new file mode 100644 index 0000000000..64d5e5cc99 --- /dev/null +++ b/docs/API_docs/constructors/botCommandScopeChatAdmins.md @@ -0,0 +1,24 @@ +--- +title: "botCommandScopeChatAdmins" +description: "The specified bot commands will be valid only for chat administrators, in all groups and supergroups." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botCommandScopeChatAdmins +[Back to constructors index](/API_docs/constructors/index.html) + + + +The specified bot commands will be valid only for chat administrators, in all [groups and supergroups](https://core.telegram.org/api/channel). + + + + +### Type: [BotCommandScope](/API_docs/types/BotCommandScope.html) + + +### Example: + +``` +$botCommandScopeChatAdmins = ['_' => 'botCommandScopeChatAdmins']; +``` diff --git a/docs/API_docs/constructors/botCommandScopeChats.md b/docs/API_docs/constructors/botCommandScopeChats.md new file mode 100644 index 0000000000..da3e567431 --- /dev/null +++ b/docs/API_docs/constructors/botCommandScopeChats.md @@ -0,0 +1,24 @@ +--- +title: "botCommandScopeChats" +description: "The specified bot commands will be valid in all groups and supergroups." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botCommandScopeChats +[Back to constructors index](/API_docs/constructors/index.html) + + + +The specified bot commands will be valid in all [groups and supergroups](https://core.telegram.org/api/channel). + + + + +### Type: [BotCommandScope](/API_docs/types/BotCommandScope.html) + + +### Example: + +``` +$botCommandScopeChats = ['_' => 'botCommandScopeChats']; +``` diff --git a/docs/API_docs/constructors/botCommandScopeDefault.md b/docs/API_docs/constructors/botCommandScopeDefault.md new file mode 100644 index 0000000000..32a96ce701 --- /dev/null +++ b/docs/API_docs/constructors/botCommandScopeDefault.md @@ -0,0 +1,24 @@ +--- +title: "botCommandScopeDefault" +description: "The commands will be valid in all dialogs" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botCommandScopeDefault +[Back to constructors index](/API_docs/constructors/index.html) + + + +The commands will be valid in all dialogs + + + + +### Type: [BotCommandScope](/API_docs/types/BotCommandScope.html) + + +### Example: + +``` +$botCommandScopeDefault = ['_' => 'botCommandScopeDefault']; +``` diff --git a/docs/API_docs/constructors/botCommandScopePeer.md b/docs/API_docs/constructors/botCommandScopePeer.md new file mode 100644 index 0000000000..baa877fe91 --- /dev/null +++ b/docs/API_docs/constructors/botCommandScopePeer.md @@ -0,0 +1,29 @@ +--- +title: "botCommandScopePeer" +description: "The specified bot commands will be valid only in a specific dialog." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botCommandScopePeer +[Back to constructors index](/API_docs/constructors/index.html) + + + +The specified bot commands will be valid only in a specific dialog. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[InputPeer](/API_docs/types/InputPeer.html) | Optional|The dialog| + + + +### Type: [BotCommandScope](/API_docs/types/BotCommandScope.html) + + +### Example: + +``` +$botCommandScopePeer = ['_' => 'botCommandScopePeer', 'peer' => InputPeer]; +``` diff --git a/docs/API_docs/constructors/botCommandScopePeerAdmins.md b/docs/API_docs/constructors/botCommandScopePeerAdmins.md new file mode 100644 index 0000000000..277b4dafd1 --- /dev/null +++ b/docs/API_docs/constructors/botCommandScopePeerAdmins.md @@ -0,0 +1,29 @@ +--- +title: "botCommandScopePeerAdmins" +description: "The specified bot commands will be valid for all admins of the specified group or supergroup." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botCommandScopePeerAdmins +[Back to constructors index](/API_docs/constructors/index.html) + + + +The specified bot commands will be valid for all admins of the specified [group or supergroup](https://core.telegram.org/api/channel). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[InputPeer](/API_docs/types/InputPeer.html) | Optional|The chat| + + + +### Type: [BotCommandScope](/API_docs/types/BotCommandScope.html) + + +### Example: + +``` +$botCommandScopePeerAdmins = ['_' => 'botCommandScopePeerAdmins', 'peer' => InputPeer]; +``` diff --git a/docs/API_docs/constructors/botCommandScopePeerUser.md b/docs/API_docs/constructors/botCommandScopePeerUser.md new file mode 100644 index 0000000000..53c34b90e2 --- /dev/null +++ b/docs/API_docs/constructors/botCommandScopePeerUser.md @@ -0,0 +1,30 @@ +--- +title: "botCommandScopePeerUser" +description: "The specified bot commands will be valid only for a specific user in the specified group or supergroup." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botCommandScopePeerUser +[Back to constructors index](/API_docs/constructors/index.html) + + + +The specified bot commands will be valid only for a specific user in the specified [group or supergroup](https://core.telegram.org/api/channel). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[InputPeer](/API_docs/types/InputPeer.html) | Optional|The chat| +|user\_id|[InputUser](/API_docs/types/InputUser.html) | Optional|The user| + + + +### Type: [BotCommandScope](/API_docs/types/BotCommandScope.html) + + +### Example: + +``` +$botCommandScopePeerUser = ['_' => 'botCommandScopePeerUser', 'peer' => InputPeer, 'user_id' => InputUser]; +``` diff --git a/docs/API_docs/constructors/botCommandScopeUsers.md b/docs/API_docs/constructors/botCommandScopeUsers.md new file mode 100644 index 0000000000..be96ec2403 --- /dev/null +++ b/docs/API_docs/constructors/botCommandScopeUsers.md @@ -0,0 +1,24 @@ +--- +title: "botCommandScopeUsers" +description: "The specified bot commands will only be valid in all private chats with users." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botCommandScopeUsers +[Back to constructors index](/API_docs/constructors/index.html) + + + +The specified bot commands will only be valid in all private chats with users. + + + + +### Type: [BotCommandScope](/API_docs/types/BotCommandScope.html) + + +### Example: + +``` +$botCommandScopeUsers = ['_' => 'botCommandScopeUsers']; +``` diff --git a/docs/API_docs/constructors/botInfo.md b/docs/API_docs/constructors/botInfo.md new file mode 100644 index 0000000000..1785629482 --- /dev/null +++ b/docs/API_docs/constructors/botInfo.md @@ -0,0 +1,34 @@ +--- +title: "botInfo" +description: "Info about bots (available bot commands, etc)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botInfo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about bots (available bot commands, etc) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Optional|ID of the bot| +|description|[string](/API_docs/types/string.html) | Optional|Description of the bot| +|description\_photo|[Photo](/API_docs/types/Photo.html) | Optional|Description photo| +|description\_document|[Document](/API_docs/types/Document.html) | Optional|Description animation in MPEG4 format| +|commands|Array of [BotCommand](/API_docs/types/BotCommand.html) | Optional|Bot commands that can be used in the chat| +|menu\_button|[BotMenuButton](/API_docs/types/BotMenuButton.html) | Optional|Indicates the action to execute when pressing the in-UI menu button for bots| + + + +### Type: [BotInfo](/API_docs/types/BotInfo.html) + + +### Example: + +``` +$botInfo = ['_' => 'botInfo', 'user_id' => long, 'description' => 'string', 'description_photo' => Photo, 'description_document' => Document, 'commands' => [BotCommand, BotCommand], 'menu_button' => BotMenuButton]; +``` diff --git a/docs/API_docs/constructors/botInlineMediaResult.md b/docs/API_docs/constructors/botInlineMediaResult.md new file mode 100644 index 0000000000..927a2a135e --- /dev/null +++ b/docs/API_docs/constructors/botInlineMediaResult.md @@ -0,0 +1,35 @@ +--- +title: "botInlineMediaResult" +description: "Media result" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botInlineMediaResult +[Back to constructors index](/API_docs/constructors/index.html) + + + +Media result + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[string](/API_docs/types/string.html) | Yes|Result ID| +|type|[string](/API_docs/types/string.html) | Yes|Result type (see [bot API docs](https://core.telegram.org/bots/api#inlinequeryresult))| +|photo|[Photo](/API_docs/types/Photo.html) | Optional|If type is `photo`, the photo to send| +|document|[Document](/API_docs/types/Document.html) | Optional|If type is `document`, the document to send| +|title|[string](/API_docs/types/string.html) | Optional|Result title| +|description|[string](/API_docs/types/string.html) | Optional|Description| +|send\_message|[BotInlineMessage](/API_docs/types/BotInlineMessage.html) | Yes|Depending on the `type` and on the [constructor](../types/BotInlineMessage.html), contains the caption of the media or the content of the message to be sent **instead** of the media| + + + +### Type: [BotInlineResult](/API_docs/types/BotInlineResult.html) + + +### Example: + +``` +$botInlineMediaResult = ['_' => 'botInlineMediaResult', 'id' => 'string', 'type' => 'string', 'photo' => Photo, 'document' => Document, 'title' => 'string', 'description' => 'string', 'send_message' => BotInlineMessage]; +``` diff --git a/docs/API_docs/constructors/botInlineMessageMediaAuto.md b/docs/API_docs/constructors/botInlineMessageMediaAuto.md new file mode 100644 index 0000000000..e743226b8d --- /dev/null +++ b/docs/API_docs/constructors/botInlineMessageMediaAuto.md @@ -0,0 +1,93 @@ +--- +title: "botInlineMessageMediaAuto" +description: "Send whatever media is attached to the botInlineMediaResult" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botInlineMessageMediaAuto +[Back to constructors index](/API_docs/constructors/index.html) + + + +Send whatever media is attached to the [botInlineMediaResult](../constructors/botInlineMediaResult.html) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|invert\_media|[Bool](/API_docs/types/Bool.html) | Optional|If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.| +|message|[string](/API_docs/types/string.html) | Yes|Caption| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|[Message entities for styled text](https://core.telegram.org/api/entities)| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Optional|Inline keyboard| + + + +### Type: [BotInlineMessage](/API_docs/types/BotInlineMessage.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$botInlineMessageMediaAuto = ['_' => 'botInlineMessageMediaAuto', 'invert_media' => Bool, 'message' => 'string', 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'reply_markup' => ReplyMarkup]; +``` diff --git a/docs/API_docs/constructors/botInlineMessageMediaContact.md b/docs/API_docs/constructors/botInlineMessageMediaContact.md new file mode 100644 index 0000000000..ad42af4e95 --- /dev/null +++ b/docs/API_docs/constructors/botInlineMessageMediaContact.md @@ -0,0 +1,39 @@ +--- +title: "botInlineMessageMediaContact" +description: "Send a contact" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botInlineMessageMediaContact +[Back to constructors index](/API_docs/constructors/index.html) + + + +Send a contact + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|phone\_number|[string](/API_docs/types/string.html) | Yes|Phone number| +|first\_name|[string](/API_docs/types/string.html) | Yes|First name| +|last\_name|[string](/API_docs/types/string.html) | Yes|Last name| +|vcard|[string](/API_docs/types/string.html) | Yes|VCard info| +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Optional|Inline keyboard| + + + +### Type: [BotInlineMessage](/API_docs/types/BotInlineMessage.html) + + + +## Usage of reply_markup + +You can provide bot API reply_markup objects here. + + +### Example: + +``` +$botInlineMessageMediaContact = ['_' => 'botInlineMessageMediaContact', 'phone_number' => 'string', 'first_name' => 'string', 'last_name' => 'string', 'vcard' => 'string', 'reply_markup' => ReplyMarkup]; +``` diff --git a/docs/API_docs/constructors/botInlineMessageMediaGeo.md b/docs/API_docs/constructors/botInlineMessageMediaGeo.md new file mode 100644 index 0000000000..d28b8b8bc0 --- /dev/null +++ b/docs/API_docs/constructors/botInlineMessageMediaGeo.md @@ -0,0 +1,39 @@ +--- +title: "botInlineMessageMediaGeo" +description: "Send a geolocation" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botInlineMessageMediaGeo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Send a geolocation + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|geo|[GeoPoint](/API_docs/types/GeoPoint.html) | Optional|Geolocation| +|heading|[int](/API_docs/types/int.html) | Optional|For [live locations](https://core.telegram.org/api/live-location), a direction in which the location moves, in degrees; 1-360.| +|period|[int](/API_docs/types/int.html) | Optional|Validity period| +|proximity\_notification\_radius|[int](/API_docs/types/int.html) | Optional|For [live locations](https://core.telegram.org/api/live-location), a maximum distance to another chat member for proximity alerts, in meters (0-100000).| +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Optional|Inline keyboard| + + + +### Type: [BotInlineMessage](/API_docs/types/BotInlineMessage.html) + + + +## Usage of reply_markup + +You can provide bot API reply_markup objects here. + + +### Example: + +``` +$botInlineMessageMediaGeo = ['_' => 'botInlineMessageMediaGeo', 'geo' => GeoPoint, 'heading' => int, 'period' => int, 'proximity_notification_radius' => int, 'reply_markup' => ReplyMarkup]; +``` diff --git a/docs/API_docs/constructors/botInlineMessageMediaInvoice.md b/docs/API_docs/constructors/botInlineMessageMediaInvoice.md new file mode 100644 index 0000000000..59725522f9 --- /dev/null +++ b/docs/API_docs/constructors/botInlineMessageMediaInvoice.md @@ -0,0 +1,42 @@ +--- +title: "botInlineMessageMediaInvoice" +description: "Send an invoice" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botInlineMessageMediaInvoice +[Back to constructors index](/API_docs/constructors/index.html) + + + +Send an invoice + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|shipping\_address\_requested|[Bool](/API_docs/types/Bool.html) | Optional|Set this flag if you require the user's shipping address to complete the order| +|test|[Bool](/API_docs/types/Bool.html) | Optional|Test invoice| +|title|[string](/API_docs/types/string.html) | Yes|Product name, 1-32 characters| +|description|[string](/API_docs/types/string.html) | Yes|Product description, 1-255 characters| +|photo|[WebDocument](/API_docs/types/WebDocument.html) | Optional|Product photo| +|currency|[string](/API_docs/types/string.html) | Yes|Three-letter ISO 4217 [currency](https://core.telegram.org/bots/payments#supported-currencies) code| +|total\_amount|[long](/API_docs/types/long.html) | Yes|Total 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](https://core.telegram.org/bots/payments/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).| +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Optional|Inline keyboard| + + + +### Type: [BotInlineMessage](/API_docs/types/BotInlineMessage.html) + + + +## Usage of reply_markup + +You can provide bot API reply_markup objects here. + + +### Example: + +``` +$botInlineMessageMediaInvoice = ['_' => 'botInlineMessageMediaInvoice', 'shipping_address_requested' => Bool, 'test' => Bool, 'title' => 'string', 'description' => 'string', 'photo' => WebDocument, 'currency' => 'string', 'total_amount' => long, 'reply_markup' => ReplyMarkup]; +``` diff --git a/docs/API_docs/constructors/botInlineMessageMediaVenue.md b/docs/API_docs/constructors/botInlineMessageMediaVenue.md new file mode 100644 index 0000000000..71b37e9d4a --- /dev/null +++ b/docs/API_docs/constructors/botInlineMessageMediaVenue.md @@ -0,0 +1,41 @@ +--- +title: "botInlineMessageMediaVenue" +description: "Send a venue" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botInlineMessageMediaVenue +[Back to constructors index](/API_docs/constructors/index.html) + + + +Send a venue + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|geo|[GeoPoint](/API_docs/types/GeoPoint.html) | Optional|Geolocation of venue| +|title|[string](/API_docs/types/string.html) | Yes|Venue name| +|address|[string](/API_docs/types/string.html) | Yes|Address| +|provider|[string](/API_docs/types/string.html) | Yes|Venue provider: currently only "foursquare" and "gplaces" (Google Places) need to be supported| +|venue\_id|[string](/API_docs/types/string.html) | Yes|Venue ID in the provider's database| +|venue\_type|[string](/API_docs/types/string.html) | Yes|Venue type in the provider's database| +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Optional|Inline keyboard| + + + +### Type: [BotInlineMessage](/API_docs/types/BotInlineMessage.html) + + + +## Usage of reply_markup + +You can provide bot API reply_markup objects here. + + +### Example: + +``` +$botInlineMessageMediaVenue = ['_' => 'botInlineMessageMediaVenue', 'geo' => GeoPoint, 'title' => 'string', 'address' => 'string', 'provider' => 'string', 'venue_id' => 'string', 'venue_type' => 'string', 'reply_markup' => ReplyMarkup]; +``` diff --git a/docs/API_docs/constructors/botInlineMessageMediaWebPage.md b/docs/API_docs/constructors/botInlineMessageMediaWebPage.md new file mode 100644 index 0000000000..a9ba3ebb3b --- /dev/null +++ b/docs/API_docs/constructors/botInlineMessageMediaWebPage.md @@ -0,0 +1,98 @@ +--- +title: "botInlineMessageMediaWebPage" +description: "Specifies options that must be used to generate the link preview for the message, or even a standalone link preview without an attached message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botInlineMessageMediaWebPage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Specifies options that must be used to generate the link preview for the message, or even a standalone link preview without an attached message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|invert\_media|[Bool](/API_docs/types/Bool.html) | Optional|If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.| +|force\_large\_media|[Bool](/API_docs/types/Bool.html) | Optional|If set, specifies that a large media preview should be used.| +|force\_small\_media|[Bool](/API_docs/types/Bool.html) | Optional|If set, specifies that a small media preview should be used.| +|manual|[Bool](/API_docs/types/Bool.html) | Optional|If set, indicates that the URL used for the webpage preview was specified manually using [inputMediaWebPage](../constructors/inputMediaWebPage.html), and may not be related to any of the URLs specified in the message.| +|safe|[Bool](/API_docs/types/Bool.html) | Optional|If set, the link can be opened directly without user confirmation.| +|message|[string](/API_docs/types/string.html) | Yes|The message, can be empty.| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|[Message entities for styled text](https://core.telegram.org/api/entities)| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|url|[string](/API_docs/types/string.html) | Yes|The URL to use for the link preview.| +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Optional|Reply markup for sending bot buttons| + + + +### Type: [BotInlineMessage](/API_docs/types/BotInlineMessage.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$botInlineMessageMediaWebPage = ['_' => 'botInlineMessageMediaWebPage', 'invert_media' => Bool, 'force_large_media' => Bool, 'force_small_media' => Bool, 'manual' => Bool, 'safe' => Bool, 'message' => 'string', 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'url' => 'string', 'reply_markup' => ReplyMarkup]; +``` diff --git a/docs/API_docs/constructors/botInlineMessageText.md b/docs/API_docs/constructors/botInlineMessageText.md new file mode 100644 index 0000000000..7ea55cfa18 --- /dev/null +++ b/docs/API_docs/constructors/botInlineMessageText.md @@ -0,0 +1,94 @@ +--- +title: "botInlineMessageText" +description: "Send a simple text message" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botInlineMessageText +[Back to constructors index](/API_docs/constructors/index.html) + + + +Send a simple text message + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|no\_webpage|[Bool](/API_docs/types/Bool.html) | Optional|Disable webpage preview| +|invert\_media|[Bool](/API_docs/types/Bool.html) | Optional|If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.| +|message|[string](/API_docs/types/string.html) | Yes|The message| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|[Message entities for styled text](https://core.telegram.org/api/entities)| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Optional|Inline keyboard| + + + +### Type: [BotInlineMessage](/API_docs/types/BotInlineMessage.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$botInlineMessageText = ['_' => 'botInlineMessageText', 'no_webpage' => Bool, 'invert_media' => Bool, 'message' => 'string', 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'reply_markup' => ReplyMarkup]; +``` diff --git a/docs/API_docs/constructors/botInlineResult.md b/docs/API_docs/constructors/botInlineResult.md new file mode 100644 index 0000000000..e95d93f95d --- /dev/null +++ b/docs/API_docs/constructors/botInlineResult.md @@ -0,0 +1,36 @@ +--- +title: "botInlineResult" +description: "Generic result" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botInlineResult +[Back to constructors index](/API_docs/constructors/index.html) + + + +Generic result + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[string](/API_docs/types/string.html) | Yes|Result ID| +|type|[string](/API_docs/types/string.html) | Yes|Result type (see [bot API docs](https://core.telegram.org/bots/api#inlinequeryresult))| +|title|[string](/API_docs/types/string.html) | Optional|Result title| +|description|[string](/API_docs/types/string.html) | Optional|Result description| +|url|[string](/API_docs/types/string.html) | Optional|URL of article or webpage| +|thumb|[WebDocument](/API_docs/types/WebDocument.html) | Optional|Thumbnail for the result| +|content|[WebDocument](/API_docs/types/WebDocument.html) | Optional|Content of the result| +|send\_message|[BotInlineMessage](/API_docs/types/BotInlineMessage.html) | Yes|Message to send| + + + +### Type: [BotInlineResult](/API_docs/types/BotInlineResult.html) + + +### Example: + +``` +$botInlineResult = ['_' => 'botInlineResult', 'id' => 'string', 'type' => 'string', 'title' => 'string', 'description' => 'string', 'url' => 'string', 'thumb' => WebDocument, 'content' => WebDocument, 'send_message' => BotInlineMessage]; +``` diff --git a/docs/API_docs/constructors/botMenuButton.md b/docs/API_docs/constructors/botMenuButton.md new file mode 100644 index 0000000000..df45db1f8e --- /dev/null +++ b/docs/API_docs/constructors/botMenuButton.md @@ -0,0 +1,30 @@ +--- +title: "botMenuButton" +description: "Bot menu button that opens a web app when clicked." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botMenuButton +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Bot menu button](https://core.telegram.org/api/bots/menu) that opens a [web app](https://core.telegram.org/api/bots/webapps) when clicked. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[string](/API_docs/types/string.html) | Yes|Title to be displayed on the menu button instead of 'Menu'| +|url|[string](/API_docs/types/string.html) | Yes|URL of a [web app](https://core.telegram.org/api/bots/webapps) to open when the user clicks on the button| + + + +### Type: [BotMenuButton](/API_docs/types/BotMenuButton.html) + + +### Example: + +``` +$botMenuButton = ['_' => 'botMenuButton', 'text' => 'string', 'url' => 'string']; +``` diff --git a/docs/API_docs/constructors/botMenuButtonCommands.md b/docs/API_docs/constructors/botMenuButtonCommands.md new file mode 100644 index 0000000000..69f21dfd04 --- /dev/null +++ b/docs/API_docs/constructors/botMenuButtonCommands.md @@ -0,0 +1,24 @@ +--- +title: "botMenuButtonCommands" +description: "Bot menu button that opens the bot command list when clicked." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botMenuButtonCommands +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Bot menu button](https://core.telegram.org/api/bots/menu) that opens the bot command list when clicked. + + + + +### Type: [BotMenuButton](/API_docs/types/BotMenuButton.html) + + +### Example: + +``` +$botMenuButtonCommands = ['_' => 'botMenuButtonCommands']; +``` diff --git a/docs/API_docs/constructors/botMenuButtonDefault.md b/docs/API_docs/constructors/botMenuButtonDefault.md new file mode 100644 index 0000000000..3ceb4e873e --- /dev/null +++ b/docs/API_docs/constructors/botMenuButtonDefault.md @@ -0,0 +1,24 @@ +--- +title: "botMenuButtonDefault" +description: "Placeholder bot menu button never returned to users: see the docs for more info." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: botMenuButtonDefault +[Back to constructors index](/API_docs/constructors/index.html) + + + +Placeholder [bot menu button](https://core.telegram.org/api/bots/menu) never returned to users: see [the docs for more info](https://core.telegram.org/api/bots/menu). + + + + +### Type: [BotMenuButton](/API_docs/types/BotMenuButton.html) + + +### Example: + +``` +$botMenuButtonDefault = ['_' => 'botMenuButtonDefault']; +``` diff --git a/docs/API_docs/constructors/bots.botInfo.md b/docs/API_docs/constructors/bots.botInfo.md new file mode 100644 index 0000000000..f957085e68 --- /dev/null +++ b/docs/API_docs/constructors/bots.botInfo.md @@ -0,0 +1,32 @@ +--- +title: "bots.botInfo" +description: "Localized information about a bot." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/bots_botInfo.html +--- +# Constructor: bots.botInfo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Localized information about a bot. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|name|[string](/API_docs/types/string.html) | Yes|Bot name| +|about|[string](/API_docs/types/string.html) | Yes|Bot about text| +|description|[string](/API_docs/types/string.html) | Yes|Bot description| + + + +### Type: [bots.BotInfo](/API_docs/types/bots.BotInfo.html) + + +### Example: + +``` +$bots_botInfo = ['_' => 'bots.botInfo', 'name' => 'string', 'about' => 'string', 'description' => 'string']; +``` diff --git a/docs/API_docs/constructors/broadcastRevenueBalances.md b/docs/API_docs/constructors/broadcastRevenueBalances.md new file mode 100644 index 0000000000..79bb8f081e --- /dev/null +++ b/docs/API_docs/constructors/broadcastRevenueBalances.md @@ -0,0 +1,29 @@ +--- +title: "broadcastRevenueBalances" +description: "broadcastRevenueBalances attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: broadcastRevenueBalances +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|current\_balance|[long](/API_docs/types/long.html) | Yes| +|available\_balance|[long](/API_docs/types/long.html) | Yes| +|overall\_revenue|[long](/API_docs/types/long.html) | Yes| + + + +### Type: [BroadcastRevenueBalances](/API_docs/types/BroadcastRevenueBalances.html) + + +### Example: + +``` +$broadcastRevenueBalances = ['_' => 'broadcastRevenueBalances', 'current_balance' => long, 'available_balance' => long, 'overall_revenue' => long]; +``` diff --git a/docs/API_docs/constructors/broadcastRevenueTransactionProceeds.md b/docs/API_docs/constructors/broadcastRevenueTransactionProceeds.md new file mode 100644 index 0000000000..eec94a1de7 --- /dev/null +++ b/docs/API_docs/constructors/broadcastRevenueTransactionProceeds.md @@ -0,0 +1,29 @@ +--- +title: "broadcastRevenueTransactionProceeds" +description: "broadcastRevenueTransactionProceeds attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: broadcastRevenueTransactionProceeds +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|amount|[long](/API_docs/types/long.html) | Yes| +|from\_date|[int](/API_docs/types/int.html) | Yes| +|to\_date|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [BroadcastRevenueTransaction](/API_docs/types/BroadcastRevenueTransaction.html) + + +### Example: + +``` +$broadcastRevenueTransactionProceeds = ['_' => 'broadcastRevenueTransactionProceeds', 'amount' => long, 'from_date' => int, 'to_date' => int]; +``` diff --git a/docs/API_docs/constructors/broadcastRevenueTransactionRefund.md b/docs/API_docs/constructors/broadcastRevenueTransactionRefund.md new file mode 100644 index 0000000000..f37dd253a5 --- /dev/null +++ b/docs/API_docs/constructors/broadcastRevenueTransactionRefund.md @@ -0,0 +1,29 @@ +--- +title: "broadcastRevenueTransactionRefund" +description: "broadcastRevenueTransactionRefund attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: broadcastRevenueTransactionRefund +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|amount|[long](/API_docs/types/long.html) | Yes| +|date|[int](/API_docs/types/int.html) | Yes| +|provider|[string](/API_docs/types/string.html) | Yes| + + + +### Type: [BroadcastRevenueTransaction](/API_docs/types/BroadcastRevenueTransaction.html) + + +### Example: + +``` +$broadcastRevenueTransactionRefund = ['_' => 'broadcastRevenueTransactionRefund', 'amount' => long, 'date' => int, 'provider' => 'string']; +``` diff --git a/docs/API_docs/constructors/broadcastRevenueTransactionWithdrawal.md b/docs/API_docs/constructors/broadcastRevenueTransactionWithdrawal.md new file mode 100644 index 0000000000..0e79242b45 --- /dev/null +++ b/docs/API_docs/constructors/broadcastRevenueTransactionWithdrawal.md @@ -0,0 +1,33 @@ +--- +title: "broadcastRevenueTransactionWithdrawal" +description: "broadcastRevenueTransactionWithdrawal attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: broadcastRevenueTransactionWithdrawal +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|pending|[Bool](/API_docs/types/Bool.html) | Optional| +|failed|[Bool](/API_docs/types/Bool.html) | Optional| +|amount|[long](/API_docs/types/long.html) | Yes| +|date|[int](/API_docs/types/int.html) | Yes| +|provider|[string](/API_docs/types/string.html) | Yes| +|transaction\_date|[int](/API_docs/types/int.html) | Optional| +|transaction\_url|[string](/API_docs/types/string.html) | Optional| + + + +### Type: [BroadcastRevenueTransaction](/API_docs/types/BroadcastRevenueTransaction.html) + + +### Example: + +``` +$broadcastRevenueTransactionWithdrawal = ['_' => 'broadcastRevenueTransactionWithdrawal', 'pending' => Bool, 'failed' => Bool, 'amount' => long, 'date' => int, 'provider' => 'string', 'transaction_date' => int, 'transaction_url' => 'string']; +``` diff --git a/docs/API_docs/constructors/businessAwayMessage.md b/docs/API_docs/constructors/businessAwayMessage.md new file mode 100644 index 0000000000..6cf265cb33 --- /dev/null +++ b/docs/API_docs/constructors/businessAwayMessage.md @@ -0,0 +1,30 @@ +--- +title: "businessAwayMessage" +description: "businessAwayMessage attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: businessAwayMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|offline\_only|[Bool](/API_docs/types/Bool.html) | Optional| +|shortcut\_id|[int](/API_docs/types/int.html) | Yes| +|schedule|[BusinessAwayMessageSchedule](/API_docs/types/BusinessAwayMessageSchedule.html) | Yes| +|recipients|[BusinessRecipients](/API_docs/types/BusinessRecipients.html) | Yes| + + + +### Type: [BusinessAwayMessage](/API_docs/types/BusinessAwayMessage.html) + + +### Example: + +``` +$businessAwayMessage = ['_' => 'businessAwayMessage', 'offline_only' => Bool, 'shortcut_id' => int, 'schedule' => BusinessAwayMessageSchedule, 'recipients' => BusinessRecipients]; +``` diff --git a/docs/API_docs/constructors/businessAwayMessageScheduleAlways.md b/docs/API_docs/constructors/businessAwayMessageScheduleAlways.md new file mode 100644 index 0000000000..4b80b63d23 --- /dev/null +++ b/docs/API_docs/constructors/businessAwayMessageScheduleAlways.md @@ -0,0 +1,22 @@ +--- +title: "businessAwayMessageScheduleAlways" +description: "businessAwayMessageScheduleAlways attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: businessAwayMessageScheduleAlways +[Back to constructors index](/API_docs/constructors/index.html) + + + + + + +### Type: [BusinessAwayMessageSchedule](/API_docs/types/BusinessAwayMessageSchedule.html) + + +### Example: + +``` +$businessAwayMessageScheduleAlways = ['_' => 'businessAwayMessageScheduleAlways']; +``` diff --git a/docs/API_docs/constructors/businessAwayMessageScheduleCustom.md b/docs/API_docs/constructors/businessAwayMessageScheduleCustom.md new file mode 100644 index 0000000000..0ebed49fb1 --- /dev/null +++ b/docs/API_docs/constructors/businessAwayMessageScheduleCustom.md @@ -0,0 +1,28 @@ +--- +title: "businessAwayMessageScheduleCustom" +description: "businessAwayMessageScheduleCustom attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: businessAwayMessageScheduleCustom +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|start\_date|[int](/API_docs/types/int.html) | Yes| +|end\_date|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [BusinessAwayMessageSchedule](/API_docs/types/BusinessAwayMessageSchedule.html) + + +### Example: + +``` +$businessAwayMessageScheduleCustom = ['_' => 'businessAwayMessageScheduleCustom', 'start_date' => int, 'end_date' => int]; +``` diff --git a/docs/API_docs/constructors/businessAwayMessageScheduleOutsideWorkHours.md b/docs/API_docs/constructors/businessAwayMessageScheduleOutsideWorkHours.md new file mode 100644 index 0000000000..18cf9376ea --- /dev/null +++ b/docs/API_docs/constructors/businessAwayMessageScheduleOutsideWorkHours.md @@ -0,0 +1,22 @@ +--- +title: "businessAwayMessageScheduleOutsideWorkHours" +description: "businessAwayMessageScheduleOutsideWorkHours attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: businessAwayMessageScheduleOutsideWorkHours +[Back to constructors index](/API_docs/constructors/index.html) + + + + + + +### Type: [BusinessAwayMessageSchedule](/API_docs/types/BusinessAwayMessageSchedule.html) + + +### Example: + +``` +$businessAwayMessageScheduleOutsideWorkHours = ['_' => 'businessAwayMessageScheduleOutsideWorkHours']; +``` diff --git a/docs/API_docs/constructors/businessBotRecipients.md b/docs/API_docs/constructors/businessBotRecipients.md new file mode 100644 index 0000000000..0c6e84befd --- /dev/null +++ b/docs/API_docs/constructors/businessBotRecipients.md @@ -0,0 +1,33 @@ +--- +title: "businessBotRecipients" +description: "businessBotRecipients attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: businessBotRecipients +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|existing\_chats|[Bool](/API_docs/types/Bool.html) | Optional| +|new\_chats|[Bool](/API_docs/types/Bool.html) | Optional| +|contacts|[Bool](/API_docs/types/Bool.html) | Optional| +|non\_contacts|[Bool](/API_docs/types/Bool.html) | Optional| +|exclude\_selected|[Bool](/API_docs/types/Bool.html) | Optional| +|users|Array of [long](/API_docs/types/long.html) | Optional| +|exclude\_users|Array of [long](/API_docs/types/long.html) | Optional| + + + +### Type: [BusinessBotRecipients](/API_docs/types/BusinessBotRecipients.html) + + +### Example: + +``` +$businessBotRecipients = ['_' => 'businessBotRecipients', 'existing_chats' => Bool, 'new_chats' => Bool, 'contacts' => Bool, 'non_contacts' => Bool, 'exclude_selected' => Bool, 'users' => [long, long], 'exclude_users' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/businessChatLink.md b/docs/API_docs/constructors/businessChatLink.md new file mode 100644 index 0000000000..9bb5a872d1 --- /dev/null +++ b/docs/API_docs/constructors/businessChatLink.md @@ -0,0 +1,92 @@ +--- +title: "businessChatLink" +description: "businessChatLink attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: businessChatLink +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|link|[string](/API_docs/types/string.html) | Yes| +|message|[string](/API_docs/types/string.html) | Yes| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|title|[string](/API_docs/types/string.html) | Optional| +|views|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [BusinessChatLink](/API_docs/types/BusinessChatLink.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$businessChatLink = ['_' => 'businessChatLink', 'link' => 'string', 'message' => 'string', 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'title' => 'string', 'views' => int]; +``` diff --git a/docs/API_docs/constructors/businessGreetingMessage.md b/docs/API_docs/constructors/businessGreetingMessage.md new file mode 100644 index 0000000000..180ce9527d --- /dev/null +++ b/docs/API_docs/constructors/businessGreetingMessage.md @@ -0,0 +1,29 @@ +--- +title: "businessGreetingMessage" +description: "businessGreetingMessage attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: businessGreetingMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|shortcut\_id|[int](/API_docs/types/int.html) | Yes| +|recipients|[BusinessRecipients](/API_docs/types/BusinessRecipients.html) | Yes| +|no\_activity\_days|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [BusinessGreetingMessage](/API_docs/types/BusinessGreetingMessage.html) + + +### Example: + +``` +$businessGreetingMessage = ['_' => 'businessGreetingMessage', 'shortcut_id' => int, 'recipients' => BusinessRecipients, 'no_activity_days' => int]; +``` diff --git a/docs/API_docs/constructors/businessIntro.md b/docs/API_docs/constructors/businessIntro.md new file mode 100644 index 0000000000..4bafc4148c --- /dev/null +++ b/docs/API_docs/constructors/businessIntro.md @@ -0,0 +1,29 @@ +--- +title: "businessIntro" +description: "businessIntro attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: businessIntro +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|title|[string](/API_docs/types/string.html) | Yes| +|description|[string](/API_docs/types/string.html) | Yes| +|sticker|[Document](/API_docs/types/Document.html) | Optional| + + + +### Type: [BusinessIntro](/API_docs/types/BusinessIntro.html) + + +### Example: + +``` +$businessIntro = ['_' => 'businessIntro', 'title' => 'string', 'description' => 'string', 'sticker' => Document]; +``` diff --git a/docs/API_docs/constructors/businessLocation.md b/docs/API_docs/constructors/businessLocation.md new file mode 100644 index 0000000000..7dbc3e21cc --- /dev/null +++ b/docs/API_docs/constructors/businessLocation.md @@ -0,0 +1,28 @@ +--- +title: "businessLocation" +description: "businessLocation attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: businessLocation +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|geo\_point|[GeoPoint](/API_docs/types/GeoPoint.html) | Optional| +|address|[string](/API_docs/types/string.html) | Yes| + + + +### Type: [BusinessLocation](/API_docs/types/BusinessLocation.html) + + +### Example: + +``` +$businessLocation = ['_' => 'businessLocation', 'geo_point' => GeoPoint, 'address' => 'string']; +``` diff --git a/docs/API_docs/constructors/businessRecipients.md b/docs/API_docs/constructors/businessRecipients.md new file mode 100644 index 0000000000..0e49ace105 --- /dev/null +++ b/docs/API_docs/constructors/businessRecipients.md @@ -0,0 +1,32 @@ +--- +title: "businessRecipients" +description: "businessRecipients attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: businessRecipients +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|existing\_chats|[Bool](/API_docs/types/Bool.html) | Optional| +|new\_chats|[Bool](/API_docs/types/Bool.html) | Optional| +|contacts|[Bool](/API_docs/types/Bool.html) | Optional| +|non\_contacts|[Bool](/API_docs/types/Bool.html) | Optional| +|exclude\_selected|[Bool](/API_docs/types/Bool.html) | Optional| +|users|Array of [long](/API_docs/types/long.html) | Optional| + + + +### Type: [BusinessRecipients](/API_docs/types/BusinessRecipients.html) + + +### Example: + +``` +$businessRecipients = ['_' => 'businessRecipients', 'existing_chats' => Bool, 'new_chats' => Bool, 'contacts' => Bool, 'non_contacts' => Bool, 'exclude_selected' => Bool, 'users' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/businessWeeklyOpen.md b/docs/API_docs/constructors/businessWeeklyOpen.md new file mode 100644 index 0000000000..f486e0f4fa --- /dev/null +++ b/docs/API_docs/constructors/businessWeeklyOpen.md @@ -0,0 +1,28 @@ +--- +title: "businessWeeklyOpen" +description: "businessWeeklyOpen attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: businessWeeklyOpen +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|start\_minute|[int](/API_docs/types/int.html) | Yes| +|end\_minute|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [BusinessWeeklyOpen](/API_docs/types/BusinessWeeklyOpen.html) + + +### Example: + +``` +$businessWeeklyOpen = ['_' => 'businessWeeklyOpen', 'start_minute' => int, 'end_minute' => int]; +``` diff --git a/docs/API_docs/constructors/businessWorkHours.md b/docs/API_docs/constructors/businessWorkHours.md new file mode 100644 index 0000000000..4e1c5abf40 --- /dev/null +++ b/docs/API_docs/constructors/businessWorkHours.md @@ -0,0 +1,29 @@ +--- +title: "businessWorkHours" +description: "businessWorkHours attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: businessWorkHours +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|open\_now|[Bool](/API_docs/types/Bool.html) | Optional| +|timezone\_id|[string](/API_docs/types/string.html) | Yes| +|weekly\_open|Array of [BusinessWeeklyOpen](/API_docs/types/BusinessWeeklyOpen.html) | Yes| + + + +### Type: [BusinessWorkHours](/API_docs/types/BusinessWorkHours.html) + + +### Example: + +``` +$businessWorkHours = ['_' => 'businessWorkHours', 'open_now' => Bool, 'timezone_id' => 'string', 'weekly_open' => [BusinessWeeklyOpen, BusinessWeeklyOpen]]; +``` diff --git a/docs/API_docs/constructors/cdnConfig.md b/docs/API_docs/constructors/cdnConfig.md new file mode 100644 index 0000000000..e500ac21e5 --- /dev/null +++ b/docs/API_docs/constructors/cdnConfig.md @@ -0,0 +1,29 @@ +--- +title: "cdnConfig" +description: "Configuration for CDN file downloads." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: cdnConfig +[Back to constructors index](/API_docs/constructors/index.html) + + + +Configuration for [CDN](https://core.telegram.org/cdn) file downloads. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|public\_keys|Array of [CdnPublicKey](/API_docs/types/CdnPublicKey.html) | Yes|Vector of public keys to use **only** during handshakes to [CDN](https://core.telegram.org/cdn) DCs.| + + + +### Type: [CdnConfig](/API_docs/types/CdnConfig.html) + + +### Example: + +``` +$cdnConfig = ['_' => 'cdnConfig', 'public_keys' => [CdnPublicKey, CdnPublicKey]]; +``` diff --git a/docs/API_docs/constructors/cdnPublicKey.md b/docs/API_docs/constructors/cdnPublicKey.md new file mode 100644 index 0000000000..45faad0a18 --- /dev/null +++ b/docs/API_docs/constructors/cdnPublicKey.md @@ -0,0 +1,30 @@ +--- +title: "cdnPublicKey" +description: "Public key to use only during handshakes to CDN DCs." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: cdnPublicKey +[Back to constructors index](/API_docs/constructors/index.html) + + + +Public key to use **only** during handshakes to [CDN](https://core.telegram.org/cdn) DCs. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|dc\_id|[int](/API_docs/types/int.html) | Yes|[CDN DC](https://core.telegram.org/cdn) ID| +|public\_key|[string](/API_docs/types/string.html) | Yes|RSA public key| + + + +### Type: [CdnPublicKey](/API_docs/types/CdnPublicKey.html) + + +### Example: + +``` +$cdnPublicKey = ['_' => 'cdnPublicKey', 'dc_id' => int, 'public_key' => 'string']; +``` diff --git a/docs/API_docs/constructors/channel.md b/docs/API_docs/constructors/channel.md new file mode 100644 index 0000000000..54f4a9f02b --- /dev/null +++ b/docs/API_docs/constructors/channel.md @@ -0,0 +1,68 @@ +--- +title: "channel" +description: "Channel/supergroup info" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channel +[Back to constructors index](/API_docs/constructors/index.html) + + + +Channel/supergroup info + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|creator|[Bool](/API_docs/types/Bool.html) | Optional|Whether the current user is the creator of this channel| +|left|[Bool](/API_docs/types/Bool.html) | Optional|Whether the current user has left or is not a member of this channel| +|broadcast|[Bool](/API_docs/types/Bool.html) | Optional|Is this a channel?| +|verified|[Bool](/API_docs/types/Bool.html) | Optional|Is this channel verified by telegram?| +|megagroup|[Bool](/API_docs/types/Bool.html) | Optional|Is this a supergroup?| +|restricted|[Bool](/API_docs/types/Bool.html) | Optional|Whether viewing/writing in this channel for a reason (see `restriction_reason`| +|signatures|[Bool](/API_docs/types/Bool.html) | Optional|Whether signatures are enabled (channels)| +|min|[Bool](/API_docs/types/Bool.html) | Optional|See [min](https://core.telegram.org/api/min)| +|scam|[Bool](/API_docs/types/Bool.html) | Optional|This channel/supergroup is probably a scam| +|has\_link|[Bool](/API_docs/types/Bool.html) | Optional|Whether this channel has a private join link| +|has\_geo|[Bool](/API_docs/types/Bool.html) | Optional|Whether this chanel has a geoposition| +|slowmode\_enabled|[Bool](/API_docs/types/Bool.html) | Optional|Whether slow mode is enabled for groups to prevent flood in chat| +|call\_active|[Bool](/API_docs/types/Bool.html) | Optional|Whether a group call or livestream is currently active| +|call\_not\_empty|[Bool](/API_docs/types/Bool.html) | Optional|Whether there's anyone in the group call or livestream| +|fake|[Bool](/API_docs/types/Bool.html) | Optional|If set, this [supergroup/channel](https://core.telegram.org/api/channel) was reported by many users as a fake or scam: be careful when interacting with it.| +|gigagroup|[Bool](/API_docs/types/Bool.html) | Optional|Whether this [supergroup](https://core.telegram.org/api/channel) is a gigagroup| +|noforwards|[Bool](/API_docs/types/Bool.html) | Optional|Whether this channel or group is [protected](https://telegram.org/blog/protected-content-delete-by-date-and-more), thus does not allow forwarding messages from it| +|join\_to\_send|[Bool](/API_docs/types/Bool.html) | Optional|Whether a user needs to join the supergroup before they can send messages: can be false only for [discussion groups »](https://core.telegram.org/api/discussion), toggle using [channels.toggleJoinToSend](../methods/channels.toggleJoinToSend.html)| +|join\_request|[Bool](/API_docs/types/Bool.html) | Optional|Whether a user's join request will have to be [approved by administrators](https://core.telegram.org/api/invites#join-requests), toggle using [channels.toggleJoinToSend](../methods/channels.toggleJoinRequest.html)| +|forum|[Bool](/API_docs/types/Bool.html) | Optional|Whether this supergroup is a [forum](https://core.telegram.org/api/forum)| +|stories\_hidden|[Bool](/API_docs/types/Bool.html) | Optional| +|stories\_hidden\_min|[Bool](/API_docs/types/Bool.html) | Optional| +|stories\_unavailable|[Bool](/API_docs/types/Bool.html) | Optional| +|id|[long](/API_docs/types/long.html) | Yes|ID of the channel| +|access\_hash|[long](/API_docs/types/long.html) | Optional|Access hash| +|title|[string](/API_docs/types/string.html) | Yes|Title| +|username|[string](/API_docs/types/string.html) | Optional|Username| +|photo|[ChatPhoto](/API_docs/types/ChatPhoto.html) | Optional|Profile photo| +|date|[int](/API_docs/types/int.html) | Yes|Date when the user joined the supergroup/channel, or if the user isn't a member, its creation date| +|restriction\_reason|Array of [RestrictionReason](/API_docs/types/RestrictionReason.html) | Optional|Contains the reason why access to this channel must be restricted.| +|admin\_rights|[ChatAdminRights](/API_docs/types/ChatAdminRights.html) | Optional|Admin rights of the user in this channel (see [rights](https://core.telegram.org/api/rights))| +|banned\_rights|[ChatBannedRights](/API_docs/types/ChatBannedRights.html) | Optional|Banned rights of the user in this channel (see [rights](https://core.telegram.org/api/rights))| +|default\_banned\_rights|[ChatBannedRights](/API_docs/types/ChatBannedRights.html) | Optional|Default chat rights (see [rights](https://core.telegram.org/api/rights))| +|participants\_count|[int](/API_docs/types/int.html) | Optional|Participant count| +|usernames|Array of [Username](/API_docs/types/Username.html) | Optional| +|stories\_max\_id|[int](/API_docs/types/int.html) | Optional| +|color|[PeerColor](/API_docs/types/PeerColor.html) | Optional| +|profile\_color|[PeerColor](/API_docs/types/PeerColor.html) | Optional| +|emoji\_status|[EmojiStatus](/API_docs/types/EmojiStatus.html) | Optional| +|level|[int](/API_docs/types/int.html) | Optional| + + + +### Type: [Chat](/API_docs/types/Chat.html) + + +### Example: + +``` +$channel = ['_' => 'channel', 'creator' => Bool, 'left' => Bool, 'broadcast' => Bool, 'verified' => Bool, 'megagroup' => Bool, 'restricted' => Bool, 'signatures' => Bool, 'min' => Bool, 'scam' => Bool, 'has_link' => Bool, 'has_geo' => Bool, 'slowmode_enabled' => Bool, 'call_active' => Bool, 'call_not_empty' => Bool, 'fake' => Bool, 'gigagroup' => Bool, 'noforwards' => Bool, 'join_to_send' => Bool, 'join_request' => Bool, 'forum' => Bool, 'stories_hidden' => Bool, 'stories_hidden_min' => Bool, 'stories_unavailable' => Bool, 'id' => long, 'access_hash' => long, 'title' => 'string', 'username' => 'string', 'photo' => ChatPhoto, 'date' => int, 'restriction_reason' => [RestrictionReason, RestrictionReason], 'admin_rights' => ChatAdminRights, 'banned_rights' => ChatBannedRights, 'default_banned_rights' => ChatBannedRights, 'participants_count' => int, 'usernames' => [Username, Username], 'stories_max_id' => int, 'color' => PeerColor, 'profile_color' => PeerColor, 'emoji_status' => EmojiStatus, 'level' => int]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEvent.md b/docs/API_docs/constructors/channelAdminLogEvent.md new file mode 100644 index 0000000000..bf150b488f --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEvent.md @@ -0,0 +1,32 @@ +--- +title: "channelAdminLogEvent" +description: "Admin log event" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEvent +[Back to constructors index](/API_docs/constructors/index.html) + + + +Admin log event + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Event ID| +|date|[int](/API_docs/types/int.html) | Yes|Date| +|user\_id|[long](/API_docs/types/long.html) | Yes|User ID| +|action|[ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) | Yes|Action| + + + +### Type: [ChannelAdminLogEvent](/API_docs/types/ChannelAdminLogEvent.html) + + +### Example: + +``` +$channelAdminLogEvent = ['_' => 'channelAdminLogEvent', 'id' => long, 'date' => int, 'user_id' => long, 'action' => ChannelAdminLogEventAction]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionChangeAbout.md b/docs/API_docs/constructors/channelAdminLogEventActionChangeAbout.md new file mode 100644 index 0000000000..8a555fccc8 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionChangeAbout.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionChangeAbout" +description: "The description was changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionChangeAbout +[Back to constructors index](/API_docs/constructors/index.html) + + + +The description was changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_value|[string](/API_docs/types/string.html) | Yes|Previous description| +|new\_value|[string](/API_docs/types/string.html) | Yes|New description| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionChangeAbout = ['_' => 'channelAdminLogEventActionChangeAbout', 'prev_value' => 'string', 'new_value' => 'string']; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionChangeAvailableReactions.md b/docs/API_docs/constructors/channelAdminLogEventActionChangeAvailableReactions.md new file mode 100644 index 0000000000..ed18961078 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionChangeAvailableReactions.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionChangeAvailableReactions" +description: "The set of allowed message reactions » for this channel has changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionChangeAvailableReactions +[Back to constructors index](/API_docs/constructors/index.html) + + + +The set of allowed [message reactions »](https://core.telegram.org/api/reactions) for this channel has changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_value|[ChatReactions](/API_docs/types/ChatReactions.html) | Yes|Previously allowed reaction emojis| +|new\_value|[ChatReactions](/API_docs/types/ChatReactions.html) | Yes|New allowed reaction emojis| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionChangeAvailableReactions = ['_' => 'channelAdminLogEventActionChangeAvailableReactions', 'prev_value' => ChatReactions, 'new_value' => ChatReactions]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionChangeEmojiStatus.md b/docs/API_docs/constructors/channelAdminLogEventActionChangeEmojiStatus.md new file mode 100644 index 0000000000..7bf43342d0 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionChangeEmojiStatus.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionChangeEmojiStatus" +description: "The emoji status was changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionChangeEmojiStatus +[Back to constructors index](/API_docs/constructors/index.html) + + + +The [emoji status](https://core.telegram.org/api/emoji-status) was changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_value|[EmojiStatus](/API_docs/types/EmojiStatus.html) | Optional|Previous emoji status| +|new\_value|[EmojiStatus](/API_docs/types/EmojiStatus.html) | Optional|New emoji status| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionChangeEmojiStatus = ['_' => 'channelAdminLogEventActionChangeEmojiStatus', 'prev_value' => EmojiStatus, 'new_value' => EmojiStatus]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionChangeEmojiStickerSet.md b/docs/API_docs/constructors/channelAdminLogEventActionChangeEmojiStickerSet.md new file mode 100644 index 0000000000..145a4186e4 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionChangeEmojiStickerSet.md @@ -0,0 +1,28 @@ +--- +title: "channelAdminLogEventActionChangeEmojiStickerSet" +description: "channelAdminLogEventActionChangeEmojiStickerSet attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionChangeEmojiStickerSet +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|prev\_stickerset|[InputStickerSet](/API_docs/types/InputStickerSet.html) | Optional| +|new\_stickerset|[InputStickerSet](/API_docs/types/InputStickerSet.html) | Optional| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionChangeEmojiStickerSet = ['_' => 'channelAdminLogEventActionChangeEmojiStickerSet', 'prev_stickerset' => InputStickerSet, 'new_stickerset' => InputStickerSet]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionChangeHistoryTTL.md b/docs/API_docs/constructors/channelAdminLogEventActionChangeHistoryTTL.md new file mode 100644 index 0000000000..db342eb913 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionChangeHistoryTTL.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionChangeHistoryTTL" +description: "The Time-To-Live of messages in this chat was changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionChangeHistoryTTL +[Back to constructors index](/API_docs/constructors/index.html) + + + +The Time-To-Live of messages in this chat was changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_value|[int](/API_docs/types/int.html) | Yes|Previous value| +|new\_value|[int](/API_docs/types/int.html) | Yes|New value| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionChangeHistoryTTL = ['_' => 'channelAdminLogEventActionChangeHistoryTTL', 'prev_value' => int, 'new_value' => int]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionChangeLinkedChat.md b/docs/API_docs/constructors/channelAdminLogEventActionChangeLinkedChat.md new file mode 100644 index 0000000000..223463d354 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionChangeLinkedChat.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionChangeLinkedChat" +description: "The linked chat was changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionChangeLinkedChat +[Back to constructors index](/API_docs/constructors/index.html) + + + +The linked chat was changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_value|[long](/API_docs/types/long.html) | Yes|Previous linked chat| +|new\_value|[long](/API_docs/types/long.html) | Yes|New linked chat| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionChangeLinkedChat = ['_' => 'channelAdminLogEventActionChangeLinkedChat', 'prev_value' => long, 'new_value' => long]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionChangeLocation.md b/docs/API_docs/constructors/channelAdminLogEventActionChangeLocation.md new file mode 100644 index 0000000000..68a3819ae8 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionChangeLocation.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionChangeLocation" +description: "The geogroup location was changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionChangeLocation +[Back to constructors index](/API_docs/constructors/index.html) + + + +The geogroup location was changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_value|[ChannelLocation](/API_docs/types/ChannelLocation.html) | Optional|Previous location| +|new\_value|[ChannelLocation](/API_docs/types/ChannelLocation.html) | Optional|New location| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionChangeLocation = ['_' => 'channelAdminLogEventActionChangeLocation', 'prev_value' => ChannelLocation, 'new_value' => ChannelLocation]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionChangePeerColor.md b/docs/API_docs/constructors/channelAdminLogEventActionChangePeerColor.md new file mode 100644 index 0000000000..01696b39e7 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionChangePeerColor.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionChangePeerColor" +description: "The message accent color was changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionChangePeerColor +[Back to constructors index](/API_docs/constructors/index.html) + + + +The [message accent color](https://core.telegram.org/api/colors) was changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_value|[PeerColor](/API_docs/types/PeerColor.html) | Yes|Previous accent palette| +|new\_value|[PeerColor](/API_docs/types/PeerColor.html) | Yes|New accent palette| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionChangePeerColor = ['_' => 'channelAdminLogEventActionChangePeerColor', 'prev_value' => PeerColor, 'new_value' => PeerColor]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionChangePhoto.md b/docs/API_docs/constructors/channelAdminLogEventActionChangePhoto.md new file mode 100644 index 0000000000..f6b7f0b07e --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionChangePhoto.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionChangePhoto" +description: "The channel/supergroup's picture was changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionChangePhoto +[Back to constructors index](/API_docs/constructors/index.html) + + + +The channel/supergroup's picture was changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_photo|[Photo](/API_docs/types/Photo.html) | Optional|Previous picture| +|new\_photo|[Photo](/API_docs/types/Photo.html) | Optional|New picture| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionChangePhoto = ['_' => 'channelAdminLogEventActionChangePhoto', 'prev_photo' => Photo, 'new_photo' => Photo]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionChangeProfilePeerColor.md b/docs/API_docs/constructors/channelAdminLogEventActionChangeProfilePeerColor.md new file mode 100644 index 0000000000..1e77a6fb6e --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionChangeProfilePeerColor.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionChangeProfilePeerColor" +description: "The profile accent color was changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionChangeProfilePeerColor +[Back to constructors index](/API_docs/constructors/index.html) + + + +The [profile accent color](https://core.telegram.org/api/colors) was changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_value|[PeerColor](/API_docs/types/PeerColor.html) | Yes|Previous accent palette| +|new\_value|[PeerColor](/API_docs/types/PeerColor.html) | Yes|New accent palette| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionChangeProfilePeerColor = ['_' => 'channelAdminLogEventActionChangeProfilePeerColor', 'prev_value' => PeerColor, 'new_value' => PeerColor]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionChangeStickerSet.md b/docs/API_docs/constructors/channelAdminLogEventActionChangeStickerSet.md new file mode 100644 index 0000000000..b9415923a4 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionChangeStickerSet.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionChangeStickerSet" +description: "The supergroup's stickerset was changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionChangeStickerSet +[Back to constructors index](/API_docs/constructors/index.html) + + + +The supergroup's stickerset was changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_stickerset|[InputStickerSet](/API_docs/types/InputStickerSet.html) | Optional|Previous stickerset| +|new\_stickerset|[InputStickerSet](/API_docs/types/InputStickerSet.html) | Optional|New stickerset| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionChangeStickerSet = ['_' => 'channelAdminLogEventActionChangeStickerSet', 'prev_stickerset' => InputStickerSet, 'new_stickerset' => InputStickerSet]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionChangeTitle.md b/docs/API_docs/constructors/channelAdminLogEventActionChangeTitle.md new file mode 100644 index 0000000000..f8a2816203 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionChangeTitle.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionChangeTitle" +description: "Channel/supergroup title was changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionChangeTitle +[Back to constructors index](/API_docs/constructors/index.html) + + + +Channel/supergroup title was changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_value|[string](/API_docs/types/string.html) | Yes|Previous title| +|new\_value|[string](/API_docs/types/string.html) | Yes|New title| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionChangeTitle = ['_' => 'channelAdminLogEventActionChangeTitle', 'prev_value' => 'string', 'new_value' => 'string']; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionChangeUsername.md b/docs/API_docs/constructors/channelAdminLogEventActionChangeUsername.md new file mode 100644 index 0000000000..3ed3d3c8ec --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionChangeUsername.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionChangeUsername" +description: "Channel/supergroup username was changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionChangeUsername +[Back to constructors index](/API_docs/constructors/index.html) + + + +Channel/supergroup username was changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_value|[string](/API_docs/types/string.html) | Yes|Old username| +|new\_value|[string](/API_docs/types/string.html) | Yes|New username| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionChangeUsername = ['_' => 'channelAdminLogEventActionChangeUsername', 'prev_value' => 'string', 'new_value' => 'string']; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionChangeUsernames.md b/docs/API_docs/constructors/channelAdminLogEventActionChangeUsernames.md new file mode 100644 index 0000000000..f3b39651be --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionChangeUsernames.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionChangeUsernames" +description: "The list of usernames associated with the channel was changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionChangeUsernames +[Back to constructors index](/API_docs/constructors/index.html) + + + +The list of usernames associated with the channel was changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_value|Array of [string](/API_docs/types/string.html) | Yes|Previous set of usernames| +|new\_value|Array of [string](/API_docs/types/string.html) | Yes|New set of usernames| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionChangeUsernames = ['_' => 'channelAdminLogEventActionChangeUsernames', 'prev_value' => ['string', 'string'], 'new_value' => ['string', 'string']]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionChangeWallpaper.md b/docs/API_docs/constructors/channelAdminLogEventActionChangeWallpaper.md new file mode 100644 index 0000000000..9663c599db --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionChangeWallpaper.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionChangeWallpaper" +description: "The wallpaper was changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionChangeWallpaper +[Back to constructors index](/API_docs/constructors/index.html) + + + +The [wallpaper](https://core.telegram.org/api/wallpapers) was changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_value|[WallPaper](/API_docs/types/WallPaper.html) | Yes|Previous wallpaper| +|new\_value|[WallPaper](/API_docs/types/WallPaper.html) | Yes|New wallpaper| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionChangeWallpaper = ['_' => 'channelAdminLogEventActionChangeWallpaper', 'prev_value' => WallPaper, 'new_value' => WallPaper]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionCreateTopic.md b/docs/API_docs/constructors/channelAdminLogEventActionCreateTopic.md new file mode 100644 index 0000000000..54faaf2f55 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionCreateTopic.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionCreateTopic" +description: "A forum topic was created" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionCreateTopic +[Back to constructors index](/API_docs/constructors/index.html) + + + +A [forum topic](https://core.telegram.org/api/forum#forum-topics) was created + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|topic|[ForumTopic](/API_docs/types/ForumTopic.html) | Yes|The [forum topic](https://core.telegram.org/api/forum#forum-topics) that was created| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionCreateTopic = ['_' => 'channelAdminLogEventActionCreateTopic', 'topic' => ForumTopic]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionDefaultBannedRights.md b/docs/API_docs/constructors/channelAdminLogEventActionDefaultBannedRights.md new file mode 100644 index 0000000000..b1e7e4a572 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionDefaultBannedRights.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionDefaultBannedRights" +description: "The default banned rights were modified" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionDefaultBannedRights +[Back to constructors index](/API_docs/constructors/index.html) + + + +The default banned rights were modified + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_banned\_rights|[ChatBannedRights](/API_docs/types/ChatBannedRights.html) | Yes|Previous global [banned rights](https://core.telegram.org/api/rights)| +|new\_banned\_rights|[ChatBannedRights](/API_docs/types/ChatBannedRights.html) | Yes|New global [banned rights](https://core.telegram.org/api/rights).| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionDefaultBannedRights = ['_' => 'channelAdminLogEventActionDefaultBannedRights', 'prev_banned_rights' => ChatBannedRights, 'new_banned_rights' => ChatBannedRights]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionDeleteMessage.md b/docs/API_docs/constructors/channelAdminLogEventActionDeleteMessage.md new file mode 100644 index 0000000000..0c31a06577 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionDeleteMessage.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionDeleteMessage" +description: "A message was deleted" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionDeleteMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +A message was deleted + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|message|[Message](/API_docs/types/Message.html) | Optional|The message that was deleted| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionDeleteMessage = ['_' => 'channelAdminLogEventActionDeleteMessage', 'message' => Message]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionDeleteTopic.md b/docs/API_docs/constructors/channelAdminLogEventActionDeleteTopic.md new file mode 100644 index 0000000000..2bd2e6f01a --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionDeleteTopic.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionDeleteTopic" +description: "A forum topic was deleted" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionDeleteTopic +[Back to constructors index](/API_docs/constructors/index.html) + + + +A [forum topic](https://core.telegram.org/api/forum#forum-topics) was deleted + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|topic|[ForumTopic](/API_docs/types/ForumTopic.html) | Yes|The [forum topic](https://core.telegram.org/api/forum#forum-topics) that was deleted| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionDeleteTopic = ['_' => 'channelAdminLogEventActionDeleteTopic', 'topic' => ForumTopic]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionDiscardGroupCall.md b/docs/API_docs/constructors/channelAdminLogEventActionDiscardGroupCall.md new file mode 100644 index 0000000000..120a715e17 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionDiscardGroupCall.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionDiscardGroupCall" +description: "A group call was terminated" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionDiscardGroupCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +A group call was terminated + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | Yes|The group call that was terminated| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionDiscardGroupCall = ['_' => 'channelAdminLogEventActionDiscardGroupCall', 'call' => InputGroupCall]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionEditMessage.md b/docs/API_docs/constructors/channelAdminLogEventActionEditMessage.md new file mode 100644 index 0000000000..6c18cf4384 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionEditMessage.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionEditMessage" +description: "A message was edited" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionEditMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +A message was edited + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_message|[Message](/API_docs/types/Message.html) | Optional|Old message| +|new\_message|[Message](/API_docs/types/Message.html) | Optional|New message| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionEditMessage = ['_' => 'channelAdminLogEventActionEditMessage', 'prev_message' => Message, 'new_message' => Message]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionEditTopic.md b/docs/API_docs/constructors/channelAdminLogEventActionEditTopic.md new file mode 100644 index 0000000000..8894437284 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionEditTopic.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionEditTopic" +description: "A forum topic was edited" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionEditTopic +[Back to constructors index](/API_docs/constructors/index.html) + + + +A [forum topic](https://core.telegram.org/api/forum#forum-topics) was edited + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_topic|[ForumTopic](/API_docs/types/ForumTopic.html) | Yes|Previous topic information| +|new\_topic|[ForumTopic](/API_docs/types/ForumTopic.html) | Yes|New topic information| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionEditTopic = ['_' => 'channelAdminLogEventActionEditTopic', 'prev_topic' => ForumTopic, 'new_topic' => ForumTopic]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionExportedInviteDelete.md b/docs/API_docs/constructors/channelAdminLogEventActionExportedInviteDelete.md new file mode 100644 index 0000000000..41afb0a65d --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionExportedInviteDelete.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionExportedInviteDelete" +description: "A chat invite was deleted" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionExportedInviteDelete +[Back to constructors index](/API_docs/constructors/index.html) + + + +A chat invite was deleted + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|invite|[ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) | Yes|The deleted chat invite| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionExportedInviteDelete = ['_' => 'channelAdminLogEventActionExportedInviteDelete', 'invite' => ExportedChatInvite]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionExportedInviteEdit.md b/docs/API_docs/constructors/channelAdminLogEventActionExportedInviteEdit.md new file mode 100644 index 0000000000..150077220b --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionExportedInviteEdit.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionExportedInviteEdit" +description: "A chat invite was edited" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionExportedInviteEdit +[Back to constructors index](/API_docs/constructors/index.html) + + + +A chat invite was edited + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_invite|[ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) | Yes|Previous chat invite information| +|new\_invite|[ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) | Yes|New chat invite information| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionExportedInviteEdit = ['_' => 'channelAdminLogEventActionExportedInviteEdit', 'prev_invite' => ExportedChatInvite, 'new_invite' => ExportedChatInvite]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionExportedInviteRevoke.md b/docs/API_docs/constructors/channelAdminLogEventActionExportedInviteRevoke.md new file mode 100644 index 0000000000..39ce179393 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionExportedInviteRevoke.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionExportedInviteRevoke" +description: "A specific invite link was revoked" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionExportedInviteRevoke +[Back to constructors index](/API_docs/constructors/index.html) + + + +A specific invite link was revoked + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|invite|[ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) | Yes|The invite link that was revoked| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionExportedInviteRevoke = ['_' => 'channelAdminLogEventActionExportedInviteRevoke', 'invite' => ExportedChatInvite]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionParticipantInvite.md b/docs/API_docs/constructors/channelAdminLogEventActionParticipantInvite.md new file mode 100644 index 0000000000..40c7b5ced5 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionParticipantInvite.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionParticipantInvite" +description: "A user was invited to the group" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionParticipantInvite +[Back to constructors index](/API_docs/constructors/index.html) + + + +A user was invited to the group + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|participant|[ChannelParticipant](/API_docs/types/ChannelParticipant.html) | Yes|The user that was invited| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionParticipantInvite = ['_' => 'channelAdminLogEventActionParticipantInvite', 'participant' => ChannelParticipant]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionParticipantJoin.md b/docs/API_docs/constructors/channelAdminLogEventActionParticipantJoin.md new file mode 100644 index 0000000000..603a5b1ea2 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionParticipantJoin.md @@ -0,0 +1,24 @@ +--- +title: "channelAdminLogEventActionParticipantJoin" +description: "A user has joined the group (in the case of big groups, info of the user that has joined isn't shown)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionParticipantJoin +[Back to constructors index](/API_docs/constructors/index.html) + + + +A user has joined the group (in the case of big groups, info of the user that has joined isn't shown) + + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionParticipantJoin = ['_' => 'channelAdminLogEventActionParticipantJoin']; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionParticipantJoinByInvite.md b/docs/API_docs/constructors/channelAdminLogEventActionParticipantJoinByInvite.md new file mode 100644 index 0000000000..0746ab6148 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionParticipantJoinByInvite.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionParticipantJoinByInvite" +description: "A user joined the supergroup/channel using a specific invite link" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionParticipantJoinByInvite +[Back to constructors index](/API_docs/constructors/index.html) + + + +A user joined the [supergroup/channel](https://core.telegram.org/api/channel) using a specific invite link + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|via\_chatlist|[Bool](/API_docs/types/Bool.html) | Optional|The participant joined by importing a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links).| +|invite|[ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) | Yes|The invite link used to join the [supergroup/channel](https://core.telegram.org/api/channel)| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionParticipantJoinByInvite = ['_' => 'channelAdminLogEventActionParticipantJoinByInvite', 'via_chatlist' => Bool, 'invite' => ExportedChatInvite]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionParticipantJoinByRequest.md b/docs/API_docs/constructors/channelAdminLogEventActionParticipantJoinByRequest.md new file mode 100644 index 0000000000..082eb16be8 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionParticipantJoinByRequest.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionParticipantJoinByRequest" +description: "A new member was accepted to the chat by an admin" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionParticipantJoinByRequest +[Back to constructors index](/API_docs/constructors/index.html) + + + +A new member was accepted to the chat by an admin + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|invite|[ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) | Yes|The invite link that was used to join the chat| +|approved\_by|[long](/API_docs/types/long.html) | Yes|ID of the admin that approved the invite| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionParticipantJoinByRequest = ['_' => 'channelAdminLogEventActionParticipantJoinByRequest', 'invite' => ExportedChatInvite, 'approved_by' => long]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionParticipantLeave.md b/docs/API_docs/constructors/channelAdminLogEventActionParticipantLeave.md new file mode 100644 index 0000000000..a88532845f --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionParticipantLeave.md @@ -0,0 +1,24 @@ +--- +title: "channelAdminLogEventActionParticipantLeave" +description: "A user left the channel/supergroup (in the case of big groups, info of the user that has joined isn't shown)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionParticipantLeave +[Back to constructors index](/API_docs/constructors/index.html) + + + +A user left the channel/supergroup (in the case of big groups, info of the user that has joined isn't shown) + + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionParticipantLeave = ['_' => 'channelAdminLogEventActionParticipantLeave']; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionParticipantMute.md b/docs/API_docs/constructors/channelAdminLogEventActionParticipantMute.md new file mode 100644 index 0000000000..052c2359e4 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionParticipantMute.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionParticipantMute" +description: "A group call participant was muted" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionParticipantMute +[Back to constructors index](/API_docs/constructors/index.html) + + + +A group call participant was muted + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|participant|[GroupCallParticipant](/API_docs/types/GroupCallParticipant.html) | Yes|The participant that was muted| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionParticipantMute = ['_' => 'channelAdminLogEventActionParticipantMute', 'participant' => GroupCallParticipant]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionParticipantToggleAdmin.md b/docs/API_docs/constructors/channelAdminLogEventActionParticipantToggleAdmin.md new file mode 100644 index 0000000000..57a62851cb --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionParticipantToggleAdmin.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionParticipantToggleAdmin" +description: "The admin rights of a user were changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionParticipantToggleAdmin +[Back to constructors index](/API_docs/constructors/index.html) + + + +The admin [rights](https://core.telegram.org/api/rights) of a user were changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_participant|[ChannelParticipant](/API_docs/types/ChannelParticipant.html) | Yes|Previous admin rights| +|new\_participant|[ChannelParticipant](/API_docs/types/ChannelParticipant.html) | Yes|New admin rights| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionParticipantToggleAdmin = ['_' => 'channelAdminLogEventActionParticipantToggleAdmin', 'prev_participant' => ChannelParticipant, 'new_participant' => ChannelParticipant]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionParticipantToggleBan.md b/docs/API_docs/constructors/channelAdminLogEventActionParticipantToggleBan.md new file mode 100644 index 0000000000..2900e7e74d --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionParticipantToggleBan.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionParticipantToggleBan" +description: "The banned rights of a user were changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionParticipantToggleBan +[Back to constructors index](/API_docs/constructors/index.html) + + + +The banned [rights](https://core.telegram.org/api/rights) of a user were changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_participant|[ChannelParticipant](/API_docs/types/ChannelParticipant.html) | Yes|Old banned rights of user| +|new\_participant|[ChannelParticipant](/API_docs/types/ChannelParticipant.html) | Yes|New banned rights of user| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionParticipantToggleBan = ['_' => 'channelAdminLogEventActionParticipantToggleBan', 'prev_participant' => ChannelParticipant, 'new_participant' => ChannelParticipant]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionParticipantUnmute.md b/docs/API_docs/constructors/channelAdminLogEventActionParticipantUnmute.md new file mode 100644 index 0000000000..a14d3ff553 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionParticipantUnmute.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionParticipantUnmute" +description: "A group call participant was unmuted" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionParticipantUnmute +[Back to constructors index](/API_docs/constructors/index.html) + + + +A group call participant was unmuted + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|participant|[GroupCallParticipant](/API_docs/types/GroupCallParticipant.html) | Yes|The participant that was unmuted| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionParticipantUnmute = ['_' => 'channelAdminLogEventActionParticipantUnmute', 'participant' => GroupCallParticipant]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionParticipantVolume.md b/docs/API_docs/constructors/channelAdminLogEventActionParticipantVolume.md new file mode 100644 index 0000000000..48a7a8224b --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionParticipantVolume.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionParticipantVolume" +description: "channelAdminLogEvent.user_id has set the volume of participant.peer to participant.volume" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionParticipantVolume +[Back to constructors index](/API_docs/constructors/index.html) + + + +channelAdminLogEvent.user\_id has set the volume of participant.peer to participant.volume + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|participant|[GroupCallParticipant](/API_docs/types/GroupCallParticipant.html) | Yes|The participant whose volume was changed| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionParticipantVolume = ['_' => 'channelAdminLogEventActionParticipantVolume', 'participant' => GroupCallParticipant]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionPinTopic.md b/docs/API_docs/constructors/channelAdminLogEventActionPinTopic.md new file mode 100644 index 0000000000..2373f2a832 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionPinTopic.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionPinTopic" +description: "A forum topic was pinned or unpinned" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionPinTopic +[Back to constructors index](/API_docs/constructors/index.html) + + + +A [forum topic](https://core.telegram.org/api/forum#forum-topics) was pinned or unpinned + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_topic|[ForumTopic](/API_docs/types/ForumTopic.html) | Optional|Previous topic information| +|new\_topic|[ForumTopic](/API_docs/types/ForumTopic.html) | Optional|New topic information| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionPinTopic = ['_' => 'channelAdminLogEventActionPinTopic', 'prev_topic' => ForumTopic, 'new_topic' => ForumTopic]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionSendMessage.md b/docs/API_docs/constructors/channelAdminLogEventActionSendMessage.md new file mode 100644 index 0000000000..3020d81f2e --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionSendMessage.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionSendMessage" +description: "A message was posted in a channel" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionSendMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +A message was posted in a channel + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|message|[Message](/API_docs/types/Message.html) | Optional|The message that was sent| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionSendMessage = ['_' => 'channelAdminLogEventActionSendMessage', 'message' => Message]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionStartGroupCall.md b/docs/API_docs/constructors/channelAdminLogEventActionStartGroupCall.md new file mode 100644 index 0000000000..d42874434e --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionStartGroupCall.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionStartGroupCall" +description: "A group call was started" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionStartGroupCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +A group call was started + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | Yes|Group call| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionStartGroupCall = ['_' => 'channelAdminLogEventActionStartGroupCall', 'call' => InputGroupCall]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionStopPoll.md b/docs/API_docs/constructors/channelAdminLogEventActionStopPoll.md new file mode 100644 index 0000000000..f1e674f2bc --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionStopPoll.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionStopPoll" +description: "A poll was stopped" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionStopPoll +[Back to constructors index](/API_docs/constructors/index.html) + + + +A poll was stopped + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|message|[Message](/API_docs/types/Message.html) | Optional|The poll that was stopped| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionStopPoll = ['_' => 'channelAdminLogEventActionStopPoll', 'message' => Message]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionToggleAntiSpam.md b/docs/API_docs/constructors/channelAdminLogEventActionToggleAntiSpam.md new file mode 100644 index 0000000000..c247d31cd9 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionToggleAntiSpam.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionToggleAntiSpam" +description: "Native antispam functionality was enabled or disabled." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionToggleAntiSpam +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Native antispam](https://core.telegram.org/api/antispam) functionality was enabled or disabled. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|new\_value|[Bool](/API_docs/types/Bool.html) | Yes|Whether antispam functionality was enabled or disabled.| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionToggleAntiSpam = ['_' => 'channelAdminLogEventActionToggleAntiSpam', 'new_value' => Bool]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionToggleForum.md b/docs/API_docs/constructors/channelAdminLogEventActionToggleForum.md new file mode 100644 index 0000000000..43c3d2ef5f --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionToggleForum.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionToggleForum" +description: "Forum functionality was enabled or disabled." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionToggleForum +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Forum](https://core.telegram.org/api/forum) functionality was enabled or disabled. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|new\_value|[Bool](/API_docs/types/Bool.html) | Yes|Whether [forum](https://core.telegram.org/api/forum) functionality was enabled or disabled.| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionToggleForum = ['_' => 'channelAdminLogEventActionToggleForum', 'new_value' => Bool]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionToggleGroupCallSetting.md b/docs/API_docs/constructors/channelAdminLogEventActionToggleGroupCallSetting.md new file mode 100644 index 0000000000..b13007a058 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionToggleGroupCallSetting.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionToggleGroupCallSetting" +description: "Group call settings were changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionToggleGroupCallSetting +[Back to constructors index](/API_docs/constructors/index.html) + + + +Group call settings were changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|join\_muted|[Bool](/API_docs/types/Bool.html) | Yes|Whether all users are muted by default upon joining| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionToggleGroupCallSetting = ['_' => 'channelAdminLogEventActionToggleGroupCallSetting', 'join_muted' => Bool]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionToggleInvites.md b/docs/API_docs/constructors/channelAdminLogEventActionToggleInvites.md new file mode 100644 index 0000000000..26db2ac7de --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionToggleInvites.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionToggleInvites" +description: "Invites were enabled/disabled" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionToggleInvites +[Back to constructors index](/API_docs/constructors/index.html) + + + +Invites were enabled/disabled + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|new\_value|[Bool](/API_docs/types/Bool.html) | Yes|New value| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionToggleInvites = ['_' => 'channelAdminLogEventActionToggleInvites', 'new_value' => Bool]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionToggleNoForwards.md b/docs/API_docs/constructors/channelAdminLogEventActionToggleNoForwards.md new file mode 100644 index 0000000000..96819a7575 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionToggleNoForwards.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionToggleNoForwards" +description: "Forwards were enabled or disabled" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionToggleNoForwards +[Back to constructors index](/API_docs/constructors/index.html) + + + +Forwards were enabled or disabled + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|new\_value|[Bool](/API_docs/types/Bool.html) | Yes|Old value| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionToggleNoForwards = ['_' => 'channelAdminLogEventActionToggleNoForwards', 'new_value' => Bool]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionTogglePreHistoryHidden.md b/docs/API_docs/constructors/channelAdminLogEventActionTogglePreHistoryHidden.md new file mode 100644 index 0000000000..4c7e88f9e0 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionTogglePreHistoryHidden.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionTogglePreHistoryHidden" +description: "The hidden prehistory setting was changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionTogglePreHistoryHidden +[Back to constructors index](/API_docs/constructors/index.html) + + + +The hidden prehistory setting was [changed](../methods/channels.togglePreHistoryHidden.html) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|new\_value|[Bool](/API_docs/types/Bool.html) | Yes|New value| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionTogglePreHistoryHidden = ['_' => 'channelAdminLogEventActionTogglePreHistoryHidden', 'new_value' => Bool]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionToggleSignatures.md b/docs/API_docs/constructors/channelAdminLogEventActionToggleSignatures.md new file mode 100644 index 0000000000..4caac5d2a3 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionToggleSignatures.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionToggleSignatures" +description: "Channel signatures were enabled/disabled" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionToggleSignatures +[Back to constructors index](/API_docs/constructors/index.html) + + + +Channel signatures were enabled/disabled + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|new\_value|[Bool](/API_docs/types/Bool.html) | Yes|New value| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionToggleSignatures = ['_' => 'channelAdminLogEventActionToggleSignatures', 'new_value' => Bool]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionToggleSlowMode.md b/docs/API_docs/constructors/channelAdminLogEventActionToggleSlowMode.md new file mode 100644 index 0000000000..7a7e8fb20d --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionToggleSlowMode.md @@ -0,0 +1,30 @@ +--- +title: "channelAdminLogEventActionToggleSlowMode" +description: "Slow mode setting for supergroups was changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionToggleSlowMode +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Slow mode setting for supergroups was changed](../methods/channels.toggleSlowMode.html) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|prev\_value|[int](/API_docs/types/int.html) | Yes|Previous slow mode value| +|new\_value|[int](/API_docs/types/int.html) | Yes|New slow mode value| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionToggleSlowMode = ['_' => 'channelAdminLogEventActionToggleSlowMode', 'prev_value' => int, 'new_value' => int]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventActionUpdatePinned.md b/docs/API_docs/constructors/channelAdminLogEventActionUpdatePinned.md new file mode 100644 index 0000000000..b743414f16 --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventActionUpdatePinned.md @@ -0,0 +1,29 @@ +--- +title: "channelAdminLogEventActionUpdatePinned" +description: "A message was pinned" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventActionUpdatePinned +[Back to constructors index](/API_docs/constructors/index.html) + + + +A message was pinned + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|message|[Message](/API_docs/types/Message.html) | Optional|The message that was pinned| + + + +### Type: [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + + +### Example: + +``` +$channelAdminLogEventActionUpdatePinned = ['_' => 'channelAdminLogEventActionUpdatePinned', 'message' => Message]; +``` diff --git a/docs/API_docs/constructors/channelAdminLogEventsFilter.md b/docs/API_docs/constructors/channelAdminLogEventsFilter.md new file mode 100644 index 0000000000..09c671551c --- /dev/null +++ b/docs/API_docs/constructors/channelAdminLogEventsFilter.md @@ -0,0 +1,46 @@ +--- +title: "channelAdminLogEventsFilter" +description: "Filter only certain admin log events" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelAdminLogEventsFilter +[Back to constructors index](/API_docs/constructors/index.html) + + + +Filter only certain admin log events + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|join|[Bool](/API_docs/types/Bool.html) | Optional|[Join events](../constructors/channelAdminLogEventActionParticipantJoin.html), including [joins using invite links](../constructors/channelAdminLogEventActionParticipantJoinByInvite.html) and [join requests](../constructors/channelAdminLogEventActionParticipantJoinByRequest.html).| +|leave|[Bool](/API_docs/types/Bool.html) | Optional|[Leave events](../constructors/channelAdminLogEventActionParticipantLeave.html)| +|invite|[Bool](/API_docs/types/Bool.html) | Optional|[Invite events](../constructors/channelAdminLogEventActionParticipantInvite.html)| +|ban|[Bool](/API_docs/types/Bool.html) | Optional|[Ban events](../constructors/channelAdminLogEventActionParticipantToggleBan.html)| +|unban|[Bool](/API_docs/types/Bool.html) | Optional|[Unban events](../constructors/channelAdminLogEventActionParticipantToggleBan.html)| +|kick|[Bool](/API_docs/types/Bool.html) | Optional|[Kick events](../constructors/channelAdminLogEventActionParticipantToggleBan.html)| +|unkick|[Bool](/API_docs/types/Bool.html) | Optional|[Unkick events](../constructors/channelAdminLogEventActionParticipantToggleBan.html)| +|promote|[Bool](/API_docs/types/Bool.html) | Optional|[Admin promotion events](../constructors/channelAdminLogEventActionParticipantToggleAdmin.html)| +|demote|[Bool](/API_docs/types/Bool.html) | Optional|[Admin demotion events](../constructors/channelAdminLogEventActionParticipantToggleAdmin.html)| +|info|[Bool](/API_docs/types/Bool.html) | Optional|Info change events (when [about](../constructors/channelAdminLogEventActionChangeAbout.html), [linked chat](../constructors/channelAdminLogEventActionChangeLinkedChat.html), [location](../constructors/channelAdminLogEventActionChangeLocation.html), [photo](../constructors/channelAdminLogEventActionChangePhoto.html), [stickerset](../constructors/channelAdminLogEventActionChangeStickerSet.html), [title](../constructors/channelAdminLogEventActionChangeTitle.html) or [username](../constructors/channelAdminLogEventActionChangeUsername.html), [slowmode](../constructors/channelAdminLogEventActionToggleSlowMode.html), [history TTL](../constructors/channelAdminLogEventActionChangeHistoryTTL.html) settings of a channel gets modified)| +|settings|[Bool](/API_docs/types/Bool.html) | Optional|Settings change events ([invites](../constructors/channelAdminLogEventActionToggleInvites.html), [hidden prehistory](../constructors/channelAdminLogEventActionTogglePreHistoryHidden.html), [signatures](../constructors/channelAdminLogEventActionToggleSignatures.html), [default banned rights](../constructors/channelAdminLogEventActionDefaultBannedRights.html), [forum toggle events](../constructors/channelAdminLogEventActionToggleForum.html))| +|pinned|[Bool](/API_docs/types/Bool.html) | Optional|[Message pin events](../constructors/channelAdminLogEventActionUpdatePinned.html)| +|edit|[Bool](/API_docs/types/Bool.html) | Optional|[Message edit events](../constructors/channelAdminLogEventActionEditMessage.html)| +|delete|[Bool](/API_docs/types/Bool.html) | Optional|[Message deletion events](../constructors/channelAdminLogEventActionDeleteMessage.html)| +|group\_call|[Bool](/API_docs/types/Bool.html) | Optional|Group call events| +|invites|[Bool](/API_docs/types/Bool.html) | Optional|Invite events| +|send|[Bool](/API_docs/types/Bool.html) | Optional|A message was posted in a channel| +|forums|[Bool](/API_docs/types/Bool.html) | Optional|[Forum](https://core.telegram.org/api/forum)-related events| + + + +### Type: [ChannelAdminLogEventsFilter](/API_docs/types/ChannelAdminLogEventsFilter.html) + + +### Example: + +``` +$channelAdminLogEventsFilter = ['_' => 'channelAdminLogEventsFilter', 'join' => Bool, 'leave' => Bool, 'invite' => Bool, 'ban' => Bool, 'unban' => Bool, 'kick' => Bool, 'unkick' => Bool, 'promote' => Bool, 'demote' => Bool, 'info' => Bool, 'settings' => Bool, 'pinned' => Bool, 'edit' => Bool, 'delete' => Bool, 'group_call' => Bool, 'invites' => Bool, 'send' => Bool, 'forums' => Bool]; +``` diff --git a/docs/API_docs/constructors/channelForbidden.md b/docs/API_docs/constructors/channelForbidden.md new file mode 100644 index 0000000000..884df81510 --- /dev/null +++ b/docs/API_docs/constructors/channelForbidden.md @@ -0,0 +1,34 @@ +--- +title: "channelForbidden" +description: "Indicates a channel/supergroup we can't access because we were banned, or for some other reason." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelForbidden +[Back to constructors index](/API_docs/constructors/index.html) + + + +Indicates a channel/supergroup we can't access because we were banned, or for some other reason. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|broadcast|[Bool](/API_docs/types/Bool.html) | Optional|Is this a channel| +|megagroup|[Bool](/API_docs/types/Bool.html) | Optional|Is this a supergroup| +|id|[long](/API_docs/types/long.html) | Yes|Channel ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash| +|title|[string](/API_docs/types/string.html) | Yes|Title| +|until\_date|[int](/API_docs/types/int.html) | Optional|The ban is valid until the specified date| + + + +### Type: [Chat](/API_docs/types/Chat.html) + + +### Example: + +``` +$channelForbidden = ['_' => 'channelForbidden', 'broadcast' => Bool, 'megagroup' => Bool, 'id' => long, 'access_hash' => long, 'title' => 'string', 'until_date' => int]; +``` diff --git a/docs/API_docs/constructors/channelFull.md b/docs/API_docs/constructors/channelFull.md new file mode 100644 index 0000000000..76e36e1a4e --- /dev/null +++ b/docs/API_docs/constructors/channelFull.md @@ -0,0 +1,85 @@ +--- +title: "channelFull" +description: "Full info about a channel, supergroup or gigagroup." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelFull +[Back to constructors index](/API_docs/constructors/index.html) + + + +Full info about a [channel](https://core.telegram.org/api/channel#channels), [supergroup](https://core.telegram.org/api/channel#supergroups) or [gigagroup](https://core.telegram.org/api/channel#gigagroups). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|can\_view\_participants|[Bool](/API_docs/types/Bool.html) | Optional|Can we view the participant list?| +|can\_set\_username|[Bool](/API_docs/types/Bool.html) | Optional|Can we set the channel's username?| +|can\_set\_stickers|[Bool](/API_docs/types/Bool.html) | Optional|Can we [associate](../methods/channels.setStickers.html) a stickerpack to the supergroup?| +|hidden\_prehistory|[Bool](/API_docs/types/Bool.html) | Optional|Is the history before we joined hidden to us?| +|can\_set\_location|[Bool](/API_docs/types/Bool.html) | Optional|Can we set the geolocation of this group (for geogroups)| +|has\_scheduled|[Bool](/API_docs/types/Bool.html) | Optional|Whether scheduled messages are available| +|can\_view\_stats|[Bool](/API_docs/types/Bool.html) | Optional|Can the user view [channel/supergroup statistics](https://core.telegram.org/api/stats)| +|blocked|[Bool](/API_docs/types/Bool.html) | Optional|Whether any anonymous admin of this supergroup was blocked: if set, you won't receive messages from anonymous group admins in [discussion replies via @replies](https://core.telegram.org/api/discussion)| +|can\_delete\_channel|[Bool](/API_docs/types/Bool.html) | Optional| +|antispam|[Bool](/API_docs/types/Bool.html) | Optional| +|participants\_hidden|[Bool](/API_docs/types/Bool.html) | Optional| +|translations\_disabled|[Bool](/API_docs/types/Bool.html) | Optional| +|stories\_pinned\_available|[Bool](/API_docs/types/Bool.html) | Optional| +|view\_forum\_as\_messages|[Bool](/API_docs/types/Bool.html) | Optional| +|restricted\_sponsored|[Bool](/API_docs/types/Bool.html) | Optional| +|can\_view\_revenue|[Bool](/API_docs/types/Bool.html) | Optional| +|id|[long](/API_docs/types/long.html) | Yes|ID of the channel| +|about|[string](/API_docs/types/string.html) | Yes|Info about the channel| +|participants\_count|[int](/API_docs/types/int.html) | Optional|Number of participants of the channel| +|admins\_count|[int](/API_docs/types/int.html) | Optional|Number of channel admins| +|kicked\_count|[int](/API_docs/types/int.html) | Optional|Number of users [kicked](https://core.telegram.org/api/rights) from the channel| +|banned\_count|[int](/API_docs/types/int.html) | Optional|Number of users [banned](https://core.telegram.org/api/rights) from the channel| +|online\_count|[int](/API_docs/types/int.html) | Optional|Number of users currently online| +|read\_inbox\_max\_id|[int](/API_docs/types/int.html) | Yes|Position up to which all incoming messages are read.| +|read\_outbox\_max\_id|[int](/API_docs/types/int.html) | Yes|Position up to which all outgoing messages are read.| +|unread\_count|[int](/API_docs/types/int.html) | Yes|Count of unread messages| +|chat\_photo|[Photo](/API_docs/types/Photo.html) | Optional|Channel picture| +|notify\_settings|[PeerNotifySettings](/API_docs/types/PeerNotifySettings.html) | Yes|Notification settings| +|exported\_invite|[ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) | Optional|Invite link| +|bot\_info|Array of [BotInfo](/API_docs/types/BotInfo.html) | Yes|Info about bots in the channel/supergroup| +|migrated\_from\_chat\_id|[long](/API_docs/types/long.html) | Optional|The chat ID from which this group was [migrated](https://core.telegram.org/api/channel)| +|migrated\_from\_max\_id|[int](/API_docs/types/int.html) | Optional|The message ID in the original chat at which this group was [migrated](https://core.telegram.org/api/channel)| +|pinned\_msg\_id|[int](/API_docs/types/int.html) | Optional|Message ID of the last [pinned message](https://core.telegram.org/api/pin)| +|stickerset|[StickerSet](/API_docs/types/StickerSet.html) | Optional|Associated stickerset| +|available\_min\_id|[int](/API_docs/types/int.html) | Optional|Identifier of a maximum unavailable message in a channel due to hidden history.| +|folder\_id|[int](/API_docs/types/int.html) | Optional|[Peer folder ID, for more info click here](https://core.telegram.org/api/folders#peer-folders)| +|linked\_chat\_id|[long](/API_docs/types/long.html) | Optional|ID of the linked [discussion chat](https://core.telegram.org/api/discussion) for channels| +|location|[ChannelLocation](/API_docs/types/ChannelLocation.html) | Optional|Location of the geogroup| +|slowmode\_seconds|[int](/API_docs/types/int.html) | Optional|If specified, users in supergroups will only be able to send one message every `slowmode_seconds` seconds| +|slowmode\_next\_send\_date|[int](/API_docs/types/int.html) | Optional|Indicates when the user will be allowed to send another message in the supergroup (unixtime)| +|stats\_dc|[int](/API_docs/types/int.html) | Optional|If set, specifies the DC to use for fetching channel statistics| +|pts|[int](/API_docs/types/int.html) | Yes|Latest [PTS](https://core.telegram.org/api/updates) for this channel| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | Optional|Livestream or group call information| +|ttl\_period|[int](/API_docs/types/int.html) | Optional|Time-To-Live of messages in this channel or supergroup| +|pending\_suggestions|Array of [string](/API_docs/types/string.html) | Optional|A list of [suggested actions](https://core.telegram.org/api/config#suggestions) for the supergroup admin, [see here for more info »](https://core.telegram.org/api/config#suggestions).| +|groupcall\_default\_join\_as|[Peer](/API_docs/types/Peer.html) | Optional|When using [phone.getGroupCallJoinAs](../methods/phone.getGroupCallJoinAs.html) to get a list of peers that can be used to join a group call, this field indicates the peer that should be selected by default.| +|theme\_emoticon|[string](/API_docs/types/string.html) | Optional|Emoji representing a specific chat theme| +|requests\_pending|[int](/API_docs/types/int.html) | Optional|Pending [join requests »](https://core.telegram.org/api/invites#join-requests)| +|recent\_requesters|Array of [long](/API_docs/types/long.html) | Optional|IDs of users who requested to join recently| +|default\_send\_as|[Peer](/API_docs/types/Peer.html) | Optional|Default peer used for sending messages to this channel| +|available\_reactions|[ChatReactions](/API_docs/types/ChatReactions.html) | Optional|Allowed [message reactions »](https://core.telegram.org/api/reactions)| +|reactions\_limit|[int](/API_docs/types/int.html) | Optional| +|stories|[PeerStories](/API_docs/types/PeerStories.html) | Optional| +|wallpaper|[WallPaper](/API_docs/types/WallPaper.html) | Optional| +|boosts\_applied|[int](/API_docs/types/int.html) | Optional| +|boosts\_unrestrict|[int](/API_docs/types/int.html) | Optional| +|emojiset|[StickerSet](/API_docs/types/StickerSet.html) | Optional| + + + +### Type: [ChatFull](/API_docs/types/ChatFull.html) + + +### Example: + +``` +$channelFull = ['_' => 'channelFull', 'can_view_participants' => Bool, 'can_set_username' => Bool, 'can_set_stickers' => Bool, 'hidden_prehistory' => Bool, 'can_set_location' => Bool, 'has_scheduled' => Bool, 'can_view_stats' => Bool, 'blocked' => Bool, 'can_delete_channel' => Bool, 'antispam' => Bool, 'participants_hidden' => Bool, 'translations_disabled' => Bool, 'stories_pinned_available' => Bool, 'view_forum_as_messages' => Bool, 'restricted_sponsored' => Bool, 'can_view_revenue' => Bool, 'id' => long, 'about' => 'string', 'participants_count' => int, 'admins_count' => int, 'kicked_count' => int, 'banned_count' => int, 'online_count' => 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' => [BotInfo, BotInfo], 'migrated_from_chat_id' => long, 'migrated_from_max_id' => int, 'pinned_msg_id' => int, 'stickerset' => StickerSet, 'available_min_id' => int, 'folder_id' => int, 'linked_chat_id' => long, 'location' => ChannelLocation, 'slowmode_seconds' => int, 'slowmode_next_send_date' => int, 'stats_dc' => int, 'pts' => int, 'call' => InputGroupCall, 'ttl_period' => int, 'pending_suggestions' => ['string', 'string'], 'groupcall_default_join_as' => Peer, 'theme_emoticon' => 'string', 'requests_pending' => int, 'recent_requesters' => [long, long], 'default_send_as' => Peer, 'available_reactions' => ChatReactions, 'reactions_limit' => int, 'stories' => PeerStories, 'wallpaper' => WallPaper, 'boosts_applied' => int, 'boosts_unrestrict' => int, 'emojiset' => StickerSet]; +``` diff --git a/docs/API_docs/constructors/channelLocation.md b/docs/API_docs/constructors/channelLocation.md new file mode 100644 index 0000000000..0bbbebff25 --- /dev/null +++ b/docs/API_docs/constructors/channelLocation.md @@ -0,0 +1,30 @@ +--- +title: "channelLocation" +description: "Geographical location of supergroup (geogroups)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelLocation +[Back to constructors index](/API_docs/constructors/index.html) + + + +Geographical location of supergroup (geogroups) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|geo\_point|[GeoPoint](/API_docs/types/GeoPoint.html) | Optional|Geographical location of supergroup| +|address|[string](/API_docs/types/string.html) | Yes|Textual description of the address| + + + +### Type: [ChannelLocation](/API_docs/types/ChannelLocation.html) + + +### Example: + +``` +$channelLocation = ['_' => 'channelLocation', 'geo_point' => GeoPoint, 'address' => 'string']; +``` diff --git a/docs/API_docs/constructors/channelLocationEmpty.md b/docs/API_docs/constructors/channelLocationEmpty.md new file mode 100644 index 0000000000..591e9a5ce8 --- /dev/null +++ b/docs/API_docs/constructors/channelLocationEmpty.md @@ -0,0 +1,24 @@ +--- +title: "channelLocationEmpty" +description: "No location (normal supergroup)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelLocationEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +No location (normal supergroup) + + + + +### Type: [ChannelLocation](/API_docs/types/ChannelLocation.html) + + +### Example: + +``` +$channelLocationEmpty = ['_' => 'channelLocationEmpty']; +``` diff --git a/docs/API_docs/constructors/channelMessagesFilter.md b/docs/API_docs/constructors/channelMessagesFilter.md new file mode 100644 index 0000000000..54e9c35d12 --- /dev/null +++ b/docs/API_docs/constructors/channelMessagesFilter.md @@ -0,0 +1,30 @@ +--- +title: "channelMessagesFilter" +description: "Filter for getting only certain types of channel messages" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelMessagesFilter +[Back to constructors index](/API_docs/constructors/index.html) + + + +Filter for getting only certain types of channel messages + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|exclude\_new\_messages|[Bool](/API_docs/types/Bool.html) | Optional|Whether to exclude new messages from the search| +|ranges|Array of [MessageRange](/API_docs/types/MessageRange.html) | Yes|A range of messages to fetch| + + + +### Type: [ChannelMessagesFilter](/API_docs/types/ChannelMessagesFilter.html) + + +### Example: + +``` +$channelMessagesFilter = ['_' => 'channelMessagesFilter', 'exclude_new_messages' => Bool, 'ranges' => [MessageRange, MessageRange]]; +``` diff --git a/docs/API_docs/constructors/channelMessagesFilterEmpty.md b/docs/API_docs/constructors/channelMessagesFilterEmpty.md new file mode 100644 index 0000000000..d5c9293388 --- /dev/null +++ b/docs/API_docs/constructors/channelMessagesFilterEmpty.md @@ -0,0 +1,24 @@ +--- +title: "channelMessagesFilterEmpty" +description: "No filter" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelMessagesFilterEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +No filter + + + + +### Type: [ChannelMessagesFilter](/API_docs/types/ChannelMessagesFilter.html) + + +### Example: + +``` +$channelMessagesFilterEmpty = ['_' => 'channelMessagesFilterEmpty']; +``` diff --git a/docs/API_docs/constructors/channelParticipant.md b/docs/API_docs/constructors/channelParticipant.md new file mode 100644 index 0000000000..cc67f4a805 --- /dev/null +++ b/docs/API_docs/constructors/channelParticipant.md @@ -0,0 +1,30 @@ +--- +title: "channelParticipant" +description: "Channel/supergroup participant" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelParticipant +[Back to constructors index](/API_docs/constructors/index.html) + + + +Channel/supergroup participant + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|Participant user ID| +|date|[int](/API_docs/types/int.html) | Yes|Date joined| + + + +### Type: [ChannelParticipant](/API_docs/types/ChannelParticipant.html) + + +### Example: + +``` +$channelParticipant = ['_' => 'channelParticipant', 'user_id' => long, 'date' => int]; +``` diff --git a/docs/API_docs/constructors/channelParticipantAdmin.md b/docs/API_docs/constructors/channelParticipantAdmin.md new file mode 100644 index 0000000000..c63bee14f8 --- /dev/null +++ b/docs/API_docs/constructors/channelParticipantAdmin.md @@ -0,0 +1,36 @@ +--- +title: "channelParticipantAdmin" +description: "Admin" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelParticipantAdmin +[Back to constructors index](/API_docs/constructors/index.html) + + + +Admin + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|can\_edit|[Bool](/API_docs/types/Bool.html) | Optional|Can this admin promote other admins with the same permissions?| +|self|[Bool](/API_docs/types/Bool.html) | Optional|Is this the current user| +|user\_id|[long](/API_docs/types/long.html) | Yes|Admin user ID| +|inviter\_id|[long](/API_docs/types/long.html) | Optional|User that invited the admin to the channel/group| +|promoted\_by|[long](/API_docs/types/long.html) | Yes|User that promoted the user to admin| +|date|[int](/API_docs/types/int.html) | Yes|When did the user join| +|admin\_rights|[ChatAdminRights](/API_docs/types/ChatAdminRights.html) | Yes|Admin [rights](https://core.telegram.org/api/rights)| +|rank|[string](/API_docs/types/string.html) | Optional|The role (rank) of the admin in the group: just an arbitrary string, `admin` by default| + + + +### Type: [ChannelParticipant](/API_docs/types/ChannelParticipant.html) + + +### Example: + +``` +$channelParticipantAdmin = ['_' => 'channelParticipantAdmin', 'can_edit' => Bool, 'self' => Bool, 'user_id' => long, 'inviter_id' => long, 'promoted_by' => long, 'date' => int, 'admin_rights' => ChatAdminRights, 'rank' => 'string']; +``` diff --git a/docs/API_docs/constructors/channelParticipantBanned.md b/docs/API_docs/constructors/channelParticipantBanned.md new file mode 100644 index 0000000000..cab810967d --- /dev/null +++ b/docs/API_docs/constructors/channelParticipantBanned.md @@ -0,0 +1,33 @@ +--- +title: "channelParticipantBanned" +description: "Banned/kicked user" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelParticipantBanned +[Back to constructors index](/API_docs/constructors/index.html) + + + +Banned/kicked user + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|left|[Bool](/API_docs/types/Bool.html) | Optional|Whether the user has left the group| +|peer|[long](/API_docs/types/long.html) | Yes|The banned peer| +|kicked\_by|[long](/API_docs/types/long.html) | Yes|User was kicked by the specified admin| +|date|[int](/API_docs/types/int.html) | Yes|When did the user join the group| +|banned\_rights|[ChatBannedRights](/API_docs/types/ChatBannedRights.html) | Yes|Banned [rights](https://core.telegram.org/api/rights)| + + + +### Type: [ChannelParticipant](/API_docs/types/ChannelParticipant.html) + + +### Example: + +``` +$channelParticipantBanned = ['_' => 'channelParticipantBanned', 'left' => Bool, 'peer' => long, 'kicked_by' => long, 'date' => int, 'banned_rights' => ChatBannedRights]; +``` diff --git a/docs/API_docs/constructors/channelParticipantCreator.md b/docs/API_docs/constructors/channelParticipantCreator.md new file mode 100644 index 0000000000..40b4d7b101 --- /dev/null +++ b/docs/API_docs/constructors/channelParticipantCreator.md @@ -0,0 +1,31 @@ +--- +title: "channelParticipantCreator" +description: "Channel/supergroup creator" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelParticipantCreator +[Back to constructors index](/API_docs/constructors/index.html) + + + +Channel/supergroup creator + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|User ID| +|admin\_rights|[ChatAdminRights](/API_docs/types/ChatAdminRights.html) | Yes|Creator admin rights| +|rank|[string](/API_docs/types/string.html) | Optional|The role (rank) of the group creator in the group: just an arbitrary string, `admin` by default| + + + +### Type: [ChannelParticipant](/API_docs/types/ChannelParticipant.html) + + +### Example: + +``` +$channelParticipantCreator = ['_' => 'channelParticipantCreator', 'user_id' => long, 'admin_rights' => ChatAdminRights, 'rank' => 'string']; +``` diff --git a/docs/API_docs/constructors/channelParticipantLeft.md b/docs/API_docs/constructors/channelParticipantLeft.md new file mode 100644 index 0000000000..0e6f3959c0 --- /dev/null +++ b/docs/API_docs/constructors/channelParticipantLeft.md @@ -0,0 +1,29 @@ +--- +title: "channelParticipantLeft" +description: "A participant that left the channel/supergroup" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelParticipantLeft +[Back to constructors index](/API_docs/constructors/index.html) + + + +A participant that left the channel/supergroup + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|The peer that left| + + + +### Type: [ChannelParticipant](/API_docs/types/ChannelParticipant.html) + + +### Example: + +``` +$channelParticipantLeft = ['_' => 'channelParticipantLeft', 'peer' => long]; +``` diff --git a/docs/API_docs/constructors/channelParticipantSelf.md b/docs/API_docs/constructors/channelParticipantSelf.md new file mode 100644 index 0000000000..440ce5dac2 --- /dev/null +++ b/docs/API_docs/constructors/channelParticipantSelf.md @@ -0,0 +1,32 @@ +--- +title: "channelParticipantSelf" +description: "Myself" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelParticipantSelf +[Back to constructors index](/API_docs/constructors/index.html) + + + +Myself + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|via\_request|[Bool](/API_docs/types/Bool.html) | Optional|Whether I joined upon specific approval of an admin| +|user\_id|[long](/API_docs/types/long.html) | Yes|User ID| +|inviter\_id|[long](/API_docs/types/long.html) | Yes|User that invited me to the channel/supergroup| +|date|[int](/API_docs/types/int.html) | Yes|When did I join the channel/supergroup| + + + +### Type: [ChannelParticipant](/API_docs/types/ChannelParticipant.html) + + +### Example: + +``` +$channelParticipantSelf = ['_' => 'channelParticipantSelf', 'via_request' => Bool, 'user_id' => long, 'inviter_id' => long, 'date' => int]; +``` diff --git a/docs/API_docs/constructors/channelParticipantsAdmins.md b/docs/API_docs/constructors/channelParticipantsAdmins.md new file mode 100644 index 0000000000..dd5f98b234 --- /dev/null +++ b/docs/API_docs/constructors/channelParticipantsAdmins.md @@ -0,0 +1,24 @@ +--- +title: "channelParticipantsAdmins" +description: "Fetch only admin participants" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelParticipantsAdmins +[Back to constructors index](/API_docs/constructors/index.html) + + + +Fetch only admin participants + + + + +### Type: [ChannelParticipantsFilter](/API_docs/types/ChannelParticipantsFilter.html) + + +### Example: + +``` +$channelParticipantsAdmins = ['_' => 'channelParticipantsAdmins']; +``` diff --git a/docs/API_docs/constructors/channelParticipantsBanned.md b/docs/API_docs/constructors/channelParticipantsBanned.md new file mode 100644 index 0000000000..1b9370b0f0 --- /dev/null +++ b/docs/API_docs/constructors/channelParticipantsBanned.md @@ -0,0 +1,29 @@ +--- +title: "channelParticipantsBanned" +description: "Fetch only banned participants" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelParticipantsBanned +[Back to constructors index](/API_docs/constructors/index.html) + + + +Fetch only banned participants + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|q|[string](/API_docs/types/string.html) | Yes|Optional filter for searching banned participants by name (otherwise empty)| + + + +### Type: [ChannelParticipantsFilter](/API_docs/types/ChannelParticipantsFilter.html) + + +### Example: + +``` +$channelParticipantsBanned = ['_' => 'channelParticipantsBanned', 'q' => 'string']; +``` diff --git a/docs/API_docs/constructors/channelParticipantsBots.md b/docs/API_docs/constructors/channelParticipantsBots.md new file mode 100644 index 0000000000..e59f2ee9f9 --- /dev/null +++ b/docs/API_docs/constructors/channelParticipantsBots.md @@ -0,0 +1,24 @@ +--- +title: "channelParticipantsBots" +description: "Fetch only bot participants" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelParticipantsBots +[Back to constructors index](/API_docs/constructors/index.html) + + + +Fetch only bot participants + + + + +### Type: [ChannelParticipantsFilter](/API_docs/types/ChannelParticipantsFilter.html) + + +### Example: + +``` +$channelParticipantsBots = ['_' => 'channelParticipantsBots']; +``` diff --git a/docs/API_docs/constructors/channelParticipantsContacts.md b/docs/API_docs/constructors/channelParticipantsContacts.md new file mode 100644 index 0000000000..044420d5fb --- /dev/null +++ b/docs/API_docs/constructors/channelParticipantsContacts.md @@ -0,0 +1,29 @@ +--- +title: "channelParticipantsContacts" +description: "Fetch only participants that are also contacts" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelParticipantsContacts +[Back to constructors index](/API_docs/constructors/index.html) + + + +Fetch only participants that are also contacts + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|q|[string](/API_docs/types/string.html) | Yes|Optional search query for searching contact participants by name| + + + +### Type: [ChannelParticipantsFilter](/API_docs/types/ChannelParticipantsFilter.html) + + +### Example: + +``` +$channelParticipantsContacts = ['_' => 'channelParticipantsContacts', 'q' => 'string']; +``` diff --git a/docs/API_docs/constructors/channelParticipantsKicked.md b/docs/API_docs/constructors/channelParticipantsKicked.md new file mode 100644 index 0000000000..4f2e2c0b11 --- /dev/null +++ b/docs/API_docs/constructors/channelParticipantsKicked.md @@ -0,0 +1,29 @@ +--- +title: "channelParticipantsKicked" +description: "Fetch only kicked participants" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelParticipantsKicked +[Back to constructors index](/API_docs/constructors/index.html) + + + +Fetch only kicked participants + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|q|[string](/API_docs/types/string.html) | Yes|Optional filter for searching kicked participants by name (otherwise empty)| + + + +### Type: [ChannelParticipantsFilter](/API_docs/types/ChannelParticipantsFilter.html) + + +### Example: + +``` +$channelParticipantsKicked = ['_' => 'channelParticipantsKicked', 'q' => 'string']; +``` diff --git a/docs/API_docs/constructors/channelParticipantsMentions.md b/docs/API_docs/constructors/channelParticipantsMentions.md new file mode 100644 index 0000000000..2e3f5cdffe --- /dev/null +++ b/docs/API_docs/constructors/channelParticipantsMentions.md @@ -0,0 +1,31 @@ +--- +title: "channelParticipantsMentions" +description: "This filter is used when looking for supergroup members to mention." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelParticipantsMentions +[Back to constructors index](/API_docs/constructors/index.html) + + + +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](https://core.telegram.org/api/threads) through the [comment section](https://core.telegram.org/api/threads#channel-comments) of a channel. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|q|[string](/API_docs/types/string.html) | Optional|Filter by user name or username| +|top\_msg\_id|[int](/API_docs/types/int.html) | Optional|Look only for users that posted in this [thread](https://core.telegram.org/api/threads)| + + + +### Type: [ChannelParticipantsFilter](/API_docs/types/ChannelParticipantsFilter.html) + + +### Example: + +``` +$channelParticipantsMentions = ['_' => 'channelParticipantsMentions', 'q' => 'string', 'top_msg_id' => int]; +``` diff --git a/docs/API_docs/constructors/channelParticipantsRecent.md b/docs/API_docs/constructors/channelParticipantsRecent.md new file mode 100644 index 0000000000..1f229d0eb1 --- /dev/null +++ b/docs/API_docs/constructors/channelParticipantsRecent.md @@ -0,0 +1,24 @@ +--- +title: "channelParticipantsRecent" +description: "Fetch only recent participants" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelParticipantsRecent +[Back to constructors index](/API_docs/constructors/index.html) + + + +Fetch only recent participants + + + + +### Type: [ChannelParticipantsFilter](/API_docs/types/ChannelParticipantsFilter.html) + + +### Example: + +``` +$channelParticipantsRecent = ['_' => 'channelParticipantsRecent']; +``` diff --git a/docs/API_docs/constructors/channelParticipantsSearch.md b/docs/API_docs/constructors/channelParticipantsSearch.md new file mode 100644 index 0000000000..68c14d50d6 --- /dev/null +++ b/docs/API_docs/constructors/channelParticipantsSearch.md @@ -0,0 +1,29 @@ +--- +title: "channelParticipantsSearch" +description: "Query participants by name" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: channelParticipantsSearch +[Back to constructors index](/API_docs/constructors/index.html) + + + +Query participants by name + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|q|[string](/API_docs/types/string.html) | Yes|Search query| + + + +### Type: [ChannelParticipantsFilter](/API_docs/types/ChannelParticipantsFilter.html) + + +### Example: + +``` +$channelParticipantsSearch = ['_' => 'channelParticipantsSearch', 'q' => 'string']; +``` diff --git a/docs/API_docs/constructors/channels.adminLogResults.md b/docs/API_docs/constructors/channels.adminLogResults.md new file mode 100644 index 0000000000..e7d8ab6bb3 --- /dev/null +++ b/docs/API_docs/constructors/channels.adminLogResults.md @@ -0,0 +1,32 @@ +--- +title: "channels.adminLogResults" +description: "Admin log events" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/channels_adminLogResults.html +--- +# Constructor: channels.adminLogResults +[Back to constructors index](/API_docs/constructors/index.html) + + + +Admin log events + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|events|Array of [ChannelAdminLogEvent](/API_docs/types/ChannelAdminLogEvent.html) | Yes|Admin log events| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Chats mentioned in events| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users mentioned in events| + + + +### Type: [channels.AdminLogResults](/API_docs/types/channels.AdminLogResults.html) + + +### Example: + +``` +$channels_adminLogResults = ['_' => 'channels.adminLogResults', 'events' => [ChannelAdminLogEvent, ChannelAdminLogEvent], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/channels.channelParticipant.md b/docs/API_docs/constructors/channels.channelParticipant.md new file mode 100644 index 0000000000..7aed2416a3 --- /dev/null +++ b/docs/API_docs/constructors/channels.channelParticipant.md @@ -0,0 +1,32 @@ +--- +title: "channels.channelParticipant" +description: "Represents a channel participant" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/channels_channelParticipant.html +--- +# Constructor: channels.channelParticipant +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a channel participant + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|participant|[ChannelParticipant](/API_docs/types/ChannelParticipant.html) | Yes|The channel participant| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Mentioned chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users| + + + +### Type: [channels.ChannelParticipant](/API_docs/types/channels.ChannelParticipant.html) + + +### Example: + +``` +$channels_channelParticipant = ['_' => 'channels.channelParticipant', 'participant' => ChannelParticipant, 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/channels.channelParticipants.md b/docs/API_docs/constructors/channels.channelParticipants.md new file mode 100644 index 0000000000..cd3170afec --- /dev/null +++ b/docs/API_docs/constructors/channels.channelParticipants.md @@ -0,0 +1,33 @@ +--- +title: "channels.channelParticipants" +description: "Represents multiple channel participants" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/channels_channelParticipants.html +--- +# Constructor: channels.channelParticipants +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents multiple channel participants + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Total number of participants that correspond to the given query| +|participants|Array of [ChannelParticipant](/API_docs/types/ChannelParticipant.html) | Yes|Participants| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Mentioned chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users mentioned in participant info| + + + +### Type: [channels.ChannelParticipants](/API_docs/types/channels.ChannelParticipants.html) + + +### Example: + +``` +$channels_channelParticipants = ['_' => 'channels.channelParticipants', 'count' => int, 'participants' => [ChannelParticipant, ChannelParticipant], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/channels.channelParticipantsNotModified.md b/docs/API_docs/constructors/channels.channelParticipantsNotModified.md new file mode 100644 index 0000000000..06d4360ca4 --- /dev/null +++ b/docs/API_docs/constructors/channels.channelParticipantsNotModified.md @@ -0,0 +1,25 @@ +--- +title: "channels.channelParticipantsNotModified" +description: "No new participant info could be found" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/channels_channelParticipantsNotModified.html +--- +# Constructor: channels.channelParticipantsNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +No new participant info could be found + + + + +### Type: [channels.ChannelParticipants](/API_docs/types/channels.ChannelParticipants.html) + + +### Example: + +``` +$channels_channelParticipantsNotModified = ['_' => 'channels.channelParticipantsNotModified']; +``` diff --git a/docs/API_docs/constructors/channels.sendAsPeers.md b/docs/API_docs/constructors/channels.sendAsPeers.md new file mode 100644 index 0000000000..42085cdc64 --- /dev/null +++ b/docs/API_docs/constructors/channels.sendAsPeers.md @@ -0,0 +1,32 @@ +--- +title: "channels.sendAsPeers" +description: "A list of peers that can be used to send messages in a specific group" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/channels_sendAsPeers.html +--- +# Constructor: channels.sendAsPeers +[Back to constructors index](/API_docs/constructors/index.html) + + + +A list of peers that can be used to send messages in a specific group + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peers|Array of [SendAsPeer](/API_docs/types/SendAsPeer.html) | Yes|Peers that can be used to send messages to the group| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Mentioned chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| + + + +### Type: [channels.SendAsPeers](/API_docs/types/channels.SendAsPeers.html) + + +### Example: + +``` +$channels_sendAsPeers = ['_' => 'channels.sendAsPeers', 'peers' => [SendAsPeer, SendAsPeer], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/channels.sponsoredMessageReportResultAdsHidden.md b/docs/API_docs/constructors/channels.sponsoredMessageReportResultAdsHidden.md new file mode 100644 index 0000000000..4c8255ae8d --- /dev/null +++ b/docs/API_docs/constructors/channels.sponsoredMessageReportResultAdsHidden.md @@ -0,0 +1,23 @@ +--- +title: "channels.sponsoredMessageReportResultAdsHidden" +description: "channels.sponsoredMessageReportResultAdsHidden attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/channels_sponsoredMessageReportResultAdsHidden.html +--- +# Constructor: channels.sponsoredMessageReportResultAdsHidden +[Back to constructors index](/API_docs/constructors/index.html) + + + + + + +### Type: [channels.SponsoredMessageReportResult](/API_docs/types/channels.SponsoredMessageReportResult.html) + + +### Example: + +``` +$channels_sponsoredMessageReportResultAdsHidden = ['_' => 'channels.sponsoredMessageReportResultAdsHidden']; +``` diff --git a/docs/API_docs/constructors/channels.sponsoredMessageReportResultChooseOption.md b/docs/API_docs/constructors/channels.sponsoredMessageReportResultChooseOption.md new file mode 100644 index 0000000000..b39d0c14e3 --- /dev/null +++ b/docs/API_docs/constructors/channels.sponsoredMessageReportResultChooseOption.md @@ -0,0 +1,29 @@ +--- +title: "channels.sponsoredMessageReportResultChooseOption" +description: "channels.sponsoredMessageReportResultChooseOption attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/channels_sponsoredMessageReportResultChooseOption.html +--- +# Constructor: channels.sponsoredMessageReportResultChooseOption +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|title|[string](/API_docs/types/string.html) | Yes| +|options|Array of [SponsoredMessageReportOption](/API_docs/types/SponsoredMessageReportOption.html) | Yes| + + + +### Type: [channels.SponsoredMessageReportResult](/API_docs/types/channels.SponsoredMessageReportResult.html) + + +### Example: + +``` +$channels_sponsoredMessageReportResultChooseOption = ['_' => 'channels.sponsoredMessageReportResultChooseOption', 'title' => 'string', 'options' => [SponsoredMessageReportOption, SponsoredMessageReportOption]]; +``` diff --git a/docs/API_docs/constructors/channels.sponsoredMessageReportResultReported.md b/docs/API_docs/constructors/channels.sponsoredMessageReportResultReported.md new file mode 100644 index 0000000000..66be9a2fa0 --- /dev/null +++ b/docs/API_docs/constructors/channels.sponsoredMessageReportResultReported.md @@ -0,0 +1,23 @@ +--- +title: "channels.sponsoredMessageReportResultReported" +description: "channels.sponsoredMessageReportResultReported attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/channels_sponsoredMessageReportResultReported.html +--- +# Constructor: channels.sponsoredMessageReportResultReported +[Back to constructors index](/API_docs/constructors/index.html) + + + + + + +### Type: [channels.SponsoredMessageReportResult](/API_docs/types/channels.SponsoredMessageReportResult.html) + + +### Example: + +``` +$channels_sponsoredMessageReportResultReported = ['_' => 'channels.sponsoredMessageReportResultReported']; +``` diff --git a/docs/API_docs/constructors/chat.md b/docs/API_docs/constructors/chat.md new file mode 100644 index 0000000000..7bb98108a9 --- /dev/null +++ b/docs/API_docs/constructors/chat.md @@ -0,0 +1,43 @@ +--- +title: "chat" +description: "Info about a group" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chat +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about a group + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|creator|[Bool](/API_docs/types/Bool.html) | Optional|Whether the current user is the creator of the group| +|left|[Bool](/API_docs/types/Bool.html) | Optional|Whether the current user has left the group| +|deactivated|[Bool](/API_docs/types/Bool.html) | Optional|Whether the group was [migrated](https://core.telegram.org/api/channel)| +|call\_active|[Bool](/API_docs/types/Bool.html) | Optional|Whether a group call is currently active| +|call\_not\_empty|[Bool](/API_docs/types/Bool.html) | Optional|Whether there's anyone in the group call| +|noforwards|[Bool](/API_docs/types/Bool.html) | Optional|Whether this group is [protected](https://telegram.org/blog/protected-content-delete-by-date-and-more), thus does not allow forwarding messages from it| +|id|[long](/API_docs/types/long.html) | Yes|ID of the group| +|title|[string](/API_docs/types/string.html) | Yes|Title| +|photo|[ChatPhoto](/API_docs/types/ChatPhoto.html) | Optional|Chat photo| +|participants\_count|[int](/API_docs/types/int.html) | Yes|Participant count| +|date|[int](/API_docs/types/int.html) | Yes|Date of creation of the group| +|version|[int](/API_docs/types/int.html) | Yes|Used in basic groups to reorder updates and make sure that all of them were received.| +|migrated\_to|[InputChannel](/API_docs/types/InputChannel.html) | Optional|Means this chat was [upgraded](https://core.telegram.org/api/channel) to a supergroup| +|admin\_rights|[ChatAdminRights](/API_docs/types/ChatAdminRights.html) | Optional|[Admin rights](https://core.telegram.org/api/rights) of the user in the group| +|default\_banned\_rights|[ChatBannedRights](/API_docs/types/ChatBannedRights.html) | Optional|[Default banned rights](https://core.telegram.org/api/rights) of all users in the group| + + + +### Type: [Chat](/API_docs/types/Chat.html) + + +### Example: + +``` +$chat = ['_' => 'chat', 'creator' => Bool, 'left' => Bool, 'deactivated' => Bool, 'call_active' => Bool, 'call_not_empty' => Bool, 'noforwards' => Bool, 'id' => long, 'title' => 'string', 'photo' => ChatPhoto, 'participants_count' => int, 'date' => int, 'version' => int, 'migrated_to' => InputChannel, 'admin_rights' => ChatAdminRights, 'default_banned_rights' => ChatBannedRights]; +``` diff --git a/docs/API_docs/constructors/chatAdminRights.md b/docs/API_docs/constructors/chatAdminRights.md new file mode 100644 index 0000000000..e18f4beb00 --- /dev/null +++ b/docs/API_docs/constructors/chatAdminRights.md @@ -0,0 +1,43 @@ +--- +title: "chatAdminRights" +description: "Represents the rights of an admin in a channel/supergroup." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatAdminRights +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents the rights of an admin in a [channel/supergroup](https://core.telegram.org/api/channel). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|change\_info|[Bool](/API_docs/types/Bool.html) | Optional|If set, allows the admin to modify the description of the [channel/supergroup](https://core.telegram.org/api/channel)| +|post\_messages|[Bool](/API_docs/types/Bool.html) | Optional|If set, allows the admin to post messages in the [channel](https://core.telegram.org/api/channel)| +|edit\_messages|[Bool](/API_docs/types/Bool.html) | Optional|If set, allows the admin to also edit messages from other admins in the [channel](https://core.telegram.org/api/channel)| +|delete\_messages|[Bool](/API_docs/types/Bool.html) | Optional|If set, allows the admin to also delete messages from other admins in the [channel](https://core.telegram.org/api/channel)| +|ban\_users|[Bool](/API_docs/types/Bool.html) | Optional|If set, allows the admin to ban users from the [channel/supergroup](https://core.telegram.org/api/channel)| +|invite\_users|[Bool](/API_docs/types/Bool.html) | Optional|If set, allows the admin to invite users in the [channel/supergroup](https://core.telegram.org/api/channel)| +|pin\_messages|[Bool](/API_docs/types/Bool.html) | Optional|If set, allows the admin to pin messages in the [channel/supergroup](https://core.telegram.org/api/channel)| +|add\_admins|[Bool](/API_docs/types/Bool.html) | Optional|If set, allows the admin to add other admins with the same (or more limited) permissions in the [channel/supergroup](https://core.telegram.org/api/channel)| +|anonymous|[Bool](/API_docs/types/Bool.html) | Optional|Whether this admin is anonymous| +|manage\_call|[Bool](/API_docs/types/Bool.html) | Optional|If set, allows the admin to change group call/livestream settings| +|other|[Bool](/API_docs/types/Bool.html) | Optional|Set this flag if none of the other flags are set, but you still want the user to be an admin: if this or any of the other flags are set, the admin can get the chat [admin log](https://core.telegram.org/api/recent-actions), get [chat statistics](https://core.telegram.org/api/stats), get [message statistics in channels](https://core.telegram.org/api/stats), get channel members, see anonymous administrators in supergroups and ignore slow mode.| +|manage\_topics|[Bool](/API_docs/types/Bool.html) | Optional|If set, allows the admin to create, delete or modify [forum topics »](https://core.telegram.org/api/forum#forum-topics).| +|post\_stories|[Bool](/API_docs/types/Bool.html) | Optional|If set, allows the admin to post [stories](https://core.telegram.org/api/stories) as the [channel](https://core.telegram.org/api/channel).| +|edit\_stories|[Bool](/API_docs/types/Bool.html) | Optional|If set, allows the admin to edit [stories](https://core.telegram.org/api/stories) posted by the other admins of the [channel](https://core.telegram.org/api/channel).| +|delete\_stories|[Bool](/API_docs/types/Bool.html) | Optional|If set, allows the admin to delete [stories](https://core.telegram.org/api/stories) posted by the other admins of the [channel](https://core.telegram.org/api/channel).| + + + +### Type: [ChatAdminRights](/API_docs/types/ChatAdminRights.html) + + +### Example: + +``` +$chatAdminRights = ['_' => 'chatAdminRights', 'change_info' => Bool, 'post_messages' => Bool, 'edit_messages' => Bool, 'delete_messages' => Bool, 'ban_users' => Bool, 'invite_users' => Bool, 'pin_messages' => Bool, 'add_admins' => Bool, 'anonymous' => Bool, 'manage_call' => Bool, 'other' => Bool, 'manage_topics' => Bool, 'post_stories' => Bool, 'edit_stories' => Bool, 'delete_stories' => Bool]; +``` diff --git a/docs/API_docs/constructors/chatAdminWithInvites.md b/docs/API_docs/constructors/chatAdminWithInvites.md new file mode 100644 index 0000000000..a5cc67f7eb --- /dev/null +++ b/docs/API_docs/constructors/chatAdminWithInvites.md @@ -0,0 +1,31 @@ +--- +title: "chatAdminWithInvites" +description: "Info about chat invites generated by admins." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatAdminWithInvites +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about chat invites generated by admins. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|admin\_id|[long](/API_docs/types/long.html) | Yes|The admin| +|invites\_count|[int](/API_docs/types/int.html) | Yes|Number of invites generated by the admin| +|revoked\_invites\_count|[int](/API_docs/types/int.html) | Yes|Number of revoked invites| + + + +### Type: [ChatAdminWithInvites](/API_docs/types/ChatAdminWithInvites.html) + + +### Example: + +``` +$chatAdminWithInvites = ['_' => 'chatAdminWithInvites', 'admin_id' => long, 'invites_count' => int, 'revoked_invites_count' => int]; +``` diff --git a/docs/API_docs/constructors/chatBannedRights.md b/docs/API_docs/constructors/chatBannedRights.md new file mode 100644 index 0000000000..8b3b7e658a --- /dev/null +++ b/docs/API_docs/constructors/chatBannedRights.md @@ -0,0 +1,49 @@ +--- +title: "chatBannedRights" +description: "Represents the rights of a normal user in a supergroup/channel/chat. In this case, the flags are inverted: if set, a flag does not allow a user to do X." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatBannedRights +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents the rights of a normal user in a [supergroup/channel/chat](https://core.telegram.org/api/channel). In this case, the flags are inverted: if set, a flag **does not allow** a user to do X. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|view\_messages|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow a user to view messages in a [supergroup/channel/chat](https://core.telegram.org/api/channel)| +|send\_messages|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow a user to send messages in a [supergroup/chat](https://core.telegram.org/api/channel)| +|send\_media|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow a user to send any media in a [supergroup/chat](https://core.telegram.org/api/channel)| +|send\_stickers|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow a user to send stickers in a [supergroup/chat](https://core.telegram.org/api/channel)| +|send\_gifs|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow a user to send gifs in a [supergroup/chat](https://core.telegram.org/api/channel)| +|send\_games|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow a user to send games in a [supergroup/chat](https://core.telegram.org/api/channel)| +|send\_inline|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow a user to use inline bots in a [supergroup/chat](https://core.telegram.org/api/channel).| +|embed\_links|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow a user to embed links in the messages of a [supergroup/chat](https://core.telegram.org/api/channel)| +|send\_polls|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow a user to send polls in a [supergroup/chat](https://core.telegram.org/api/channel)| +|change\_info|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow any user to change the description of a [supergroup/chat](https://core.telegram.org/api/channel)| +|invite\_users|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow any user to invite users in a [supergroup/chat](https://core.telegram.org/api/channel)| +|pin\_messages|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow any user to pin messages in a [supergroup/chat](https://core.telegram.org/api/channel)| +|manage\_topics|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow any user to create, delete or modify [forum topics »](https://core.telegram.org/api/forum#forum-topics).| +|send\_photos|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow a user to send photos in a [supergroup/chat](https://core.telegram.org/api/channel).| +|send\_videos|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow a user to send videos in a [supergroup/chat](https://core.telegram.org/api/channel).| +|send\_roundvideos|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow a user to send round videos in a [supergroup/chat](https://core.telegram.org/api/channel).| +|send\_audios|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow a user to send audio files in a [supergroup/chat](https://core.telegram.org/api/channel).| +|send\_voices|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow a user to send voice messages in a [supergroup/chat](https://core.telegram.org/api/channel).| +|send\_docs|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow a user to send documents in a [supergroup/chat](https://core.telegram.org/api/channel).| +|send\_plain|[Bool](/API_docs/types/Bool.html) | Optional|If set, does not allow a user to send text messages in a [supergroup/chat](https://core.telegram.org/api/channel).| +|until\_date|[int](/API_docs/types/int.html) | Yes|Validity of said permissions (it is considered forever any value less then 30 seconds or more then 366 days).| + + + +### Type: [ChatBannedRights](/API_docs/types/ChatBannedRights.html) + + +### Example: + +``` +$chatBannedRights = ['_' => 'chatBannedRights', 'view_messages' => Bool, 'send_messages' => Bool, 'send_media' => Bool, 'send_stickers' => Bool, 'send_gifs' => Bool, 'send_games' => Bool, 'send_inline' => Bool, 'embed_links' => Bool, 'send_polls' => Bool, 'change_info' => Bool, 'invite_users' => Bool, 'pin_messages' => Bool, 'manage_topics' => Bool, 'send_photos' => Bool, 'send_videos' => Bool, 'send_roundvideos' => Bool, 'send_audios' => Bool, 'send_voices' => Bool, 'send_docs' => Bool, 'send_plain' => Bool, 'until_date' => int]; +``` diff --git a/docs/API_docs/constructors/chatEmpty.md b/docs/API_docs/constructors/chatEmpty.md new file mode 100644 index 0000000000..59a91acb2c --- /dev/null +++ b/docs/API_docs/constructors/chatEmpty.md @@ -0,0 +1,29 @@ +--- +title: "chatEmpty" +description: "Empty constructor, group doesn't exist" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor, group doesn't exist + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Group identifier| + + + +### Type: [Chat](/API_docs/types/Chat.html) + + +### Example: + +``` +$chatEmpty = ['_' => 'chatEmpty', 'id' => long]; +``` diff --git a/docs/API_docs/constructors/chatForbidden.md b/docs/API_docs/constructors/chatForbidden.md new file mode 100644 index 0000000000..3e17f50b96 --- /dev/null +++ b/docs/API_docs/constructors/chatForbidden.md @@ -0,0 +1,30 @@ +--- +title: "chatForbidden" +description: "A group to which the user has no access. E.g., because the user was kicked from the group." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatForbidden +[Back to constructors index](/API_docs/constructors/index.html) + + + +A group to which the user has no access. E.g., because the user was kicked from the group. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|User identifier| +|title|[string](/API_docs/types/string.html) | Yes|Group name| + + + +### Type: [Chat](/API_docs/types/Chat.html) + + +### Example: + +``` +$chatForbidden = ['_' => 'chatForbidden', 'id' => long, 'title' => 'string']; +``` diff --git a/docs/API_docs/constructors/chatFull.md b/docs/API_docs/constructors/chatFull.md new file mode 100644 index 0000000000..4497f962c3 --- /dev/null +++ b/docs/API_docs/constructors/chatFull.md @@ -0,0 +1,48 @@ +--- +title: "chatFull" +description: "Full info about a basic group." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatFull +[Back to constructors index](/API_docs/constructors/index.html) + + + +Full info about a [basic group](https://core.telegram.org/api/channel#basic-groups). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|can\_set\_username|[Bool](/API_docs/types/Bool.html) | Optional|Can we change the username of this chat| +|has\_scheduled|[Bool](/API_docs/types/Bool.html) | Optional|Whether [scheduled messages](https://core.telegram.org/api/scheduled-messages) are available| +|translations\_disabled|[Bool](/API_docs/types/Bool.html) | Optional|Whether the [real-time chat translation popup](https://core.telegram.org/api/translation) should be hidden.| +|id|[long](/API_docs/types/long.html) | Yes|ID of the chat| +|about|[string](/API_docs/types/string.html) | Yes|About string for this chat| +|participants|[ChatParticipants](/API_docs/types/ChatParticipants.html) | Yes|Participant list| +|chat\_photo|[Photo](/API_docs/types/Photo.html) | Optional|Chat photo| +|notify\_settings|[PeerNotifySettings](/API_docs/types/PeerNotifySettings.html) | Yes|Notification settings| +|exported\_invite|[ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) | Optional|Chat invite| +|bot\_info|Array of [BotInfo](/API_docs/types/BotInfo.html) | Optional|Info about bots that are in this chat| +|pinned\_msg\_id|[int](/API_docs/types/int.html) | Optional|Message ID of the last [pinned message](https://core.telegram.org/api/pin)| +|folder\_id|[int](/API_docs/types/int.html) | Optional|[Peer folder ID, for more info click here](https://core.telegram.org/api/folders#peer-folders)| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | Optional|Group call information| +|ttl\_period|[int](/API_docs/types/int.html) | Optional|Time-To-Live of messages sent by the current user to this chat| +|groupcall\_default\_join\_as|[Peer](/API_docs/types/Peer.html) | Optional|When using [phone.getGroupCallJoinAs](../methods/phone.getGroupCallJoinAs.html) to get a list of peers that can be used to join a group call, this field indicates the peer that should be selected by default.| +|theme\_emoticon|[string](/API_docs/types/string.html) | Optional|Emoji representing a specific chat theme| +|requests\_pending|[int](/API_docs/types/int.html) | Optional|Pending [join requests »](https://core.telegram.org/api/invites#join-requests)| +|recent\_requesters|Array of [long](/API_docs/types/long.html) | Optional|IDs of users who requested to join recently| +|available\_reactions|[ChatReactions](/API_docs/types/ChatReactions.html) | Optional|Allowed [message reactions »](https://core.telegram.org/api/reactions)| +|reactions\_limit|[int](/API_docs/types/int.html) | Optional| + + + +### Type: [ChatFull](/API_docs/types/ChatFull.html) + + +### Example: + +``` +$chatFull = ['_' => 'chatFull', 'can_set_username' => Bool, 'has_scheduled' => Bool, 'translations_disabled' => Bool, 'id' => long, 'about' => 'string', 'participants' => ChatParticipants, 'chat_photo' => Photo, 'notify_settings' => PeerNotifySettings, 'exported_invite' => ExportedChatInvite, 'bot_info' => [BotInfo, BotInfo], 'pinned_msg_id' => int, 'folder_id' => int, 'call' => InputGroupCall, 'ttl_period' => int, 'groupcall_default_join_as' => Peer, 'theme_emoticon' => 'string', 'requests_pending' => int, 'recent_requesters' => [long, long], 'available_reactions' => ChatReactions, 'reactions_limit' => int]; +``` diff --git a/docs/API_docs/constructors/chatInvite.md b/docs/API_docs/constructors/chatInvite.md new file mode 100644 index 0000000000..9772d58e19 --- /dev/null +++ b/docs/API_docs/constructors/chatInvite.md @@ -0,0 +1,42 @@ +--- +title: "chatInvite" +description: "Chat invite info" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatInvite +[Back to constructors index](/API_docs/constructors/index.html) + + + +Chat invite info + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a [channel/supergroup](https://core.telegram.org/api/channel) or a [normal group](https://core.telegram.org/api/channel)| +|broadcast|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a [channel](https://core.telegram.org/api/channel)| +|public|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a public [channel/supergroup](https://core.telegram.org/api/channel)| +|megagroup|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a [supergroup](https://core.telegram.org/api/channel)| +|request\_needed|[Bool](/API_docs/types/Bool.html) | Optional|Whether the [join request »](https://core.telegram.org/api/invites#join-requests) must be first approved by an administrator| +|verified|[Bool](/API_docs/types/Bool.html) | Optional|Is this chat or channel verified by Telegram?| +|scam|[Bool](/API_docs/types/Bool.html) | Optional|This chat is probably a scam| +|fake|[Bool](/API_docs/types/Bool.html) | Optional|If set, this chat was reported by many users as a fake or scam: be careful when interacting with it.| +|title|[string](/API_docs/types/string.html) | Yes|Chat/supergroup/channel title| +|about|[string](/API_docs/types/string.html) | Optional|Description of the group of channel| +|photo|[Photo](/API_docs/types/Photo.html) | Optional|Chat/supergroup/channel photo| +|participants\_count|[int](/API_docs/types/int.html) | Yes|Participant count| +|participants|Array of [User](/API_docs/types/User.html) | Optional|A few of the participants that are in the group| +|color|[int](/API_docs/types/int.html) | Yes|[Profile color palette ID](https://core.telegram.org/api/colors)| + + + +### Type: [ChatInvite](/API_docs/types/ChatInvite.html) + + +### Example: + +``` +$chatInvite = ['_' => 'chatInvite', 'channel' => Bool, 'broadcast' => Bool, 'public' => Bool, 'megagroup' => Bool, 'request_needed' => Bool, 'verified' => Bool, 'scam' => Bool, 'fake' => Bool, 'title' => 'string', 'about' => 'string', 'photo' => Photo, 'participants_count' => int, 'participants' => [User, User], 'color' => int]; +``` diff --git a/docs/API_docs/constructors/chatInviteAlready.md b/docs/API_docs/constructors/chatInviteAlready.md new file mode 100644 index 0000000000..0f9fc50918 --- /dev/null +++ b/docs/API_docs/constructors/chatInviteAlready.md @@ -0,0 +1,29 @@ +--- +title: "chatInviteAlready" +description: "The user has already joined this chat" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatInviteAlready +[Back to constructors index](/API_docs/constructors/index.html) + + + +The user has already joined this chat + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chat|[Chat](/API_docs/types/Chat.html) | Optional|The chat connected to the invite| + + + +### Type: [ChatInvite](/API_docs/types/ChatInvite.html) + + +### Example: + +``` +$chatInviteAlready = ['_' => 'chatInviteAlready', 'chat' => Chat]; +``` diff --git a/docs/API_docs/constructors/chatInviteExported.md b/docs/API_docs/constructors/chatInviteExported.md new file mode 100644 index 0000000000..89e83d2b9e --- /dev/null +++ b/docs/API_docs/constructors/chatInviteExported.md @@ -0,0 +1,40 @@ +--- +title: "chatInviteExported" +description: "Exported chat invite" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatInviteExported +[Back to constructors index](/API_docs/constructors/index.html) + + + +Exported chat invite + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|revoked|[Bool](/API_docs/types/Bool.html) | Optional|Whether this chat invite was revoked| +|permanent|[Bool](/API_docs/types/Bool.html) | Optional|Whether this chat invite has no expiration| +|request\_needed|[Bool](/API_docs/types/Bool.html) | Optional|Whether users importing this invite link will have to be approved to join the channel or group| +|link|[string](/API_docs/types/string.html) | Yes|Chat invitation link| +|admin\_id|[long](/API_docs/types/long.html) | Yes|ID of the admin that created this chat invite| +|date|[int](/API_docs/types/int.html) | Yes|When was this chat invite created| +|start\_date|[int](/API_docs/types/int.html) | Optional|When was this chat invite last modified| +|expire\_date|[int](/API_docs/types/int.html) | Optional|When does this chat invite expire| +|usage\_limit|[int](/API_docs/types/int.html) | Optional|Maximum number of users that can join using this link| +|usage|[int](/API_docs/types/int.html) | Optional|How many users joined using this link| +|requested|[int](/API_docs/types/int.html) | Optional|Number of users that have already used this link to join| +|title|[string](/API_docs/types/string.html) | Optional|Custom description for the invite link, visible only to admins| + + + +### Type: [ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) + + +### Example: + +``` +$chatInviteExported = ['_' => 'chatInviteExported', 'revoked' => Bool, 'permanent' => Bool, 'request_needed' => Bool, 'link' => 'string', 'admin_id' => long, 'date' => int, 'start_date' => int, 'expire_date' => int, 'usage_limit' => int, 'usage' => int, 'requested' => int, 'title' => 'string']; +``` diff --git a/docs/API_docs/constructors/chatInviteImporter.md b/docs/API_docs/constructors/chatInviteImporter.md new file mode 100644 index 0000000000..b9aba3b846 --- /dev/null +++ b/docs/API_docs/constructors/chatInviteImporter.md @@ -0,0 +1,34 @@ +--- +title: "chatInviteImporter" +description: "When and which user joined the chat using a chat invite" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatInviteImporter +[Back to constructors index](/API_docs/constructors/index.html) + + + +When and which user joined the chat using a chat invite + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|requested|[Bool](/API_docs/types/Bool.html) | Optional|Whether this user currently has a pending [join request »](https://core.telegram.org/api/invites#join-requests)| +|via\_chatlist|[Bool](/API_docs/types/Bool.html) | Optional|The participant joined by importing a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links).| +|user\_id|[long](/API_docs/types/long.html) | Yes|The user| +|date|[int](/API_docs/types/int.html) | Yes|When did the user join| +|about|[string](/API_docs/types/string.html) | Optional|For users with pending requests, contains bio of the user that requested to join| +|approved\_by|[long](/API_docs/types/long.html) | Optional|The administrator that approved the [join request »](https://core.telegram.org/api/invites#join-requests) of the user| + + + +### Type: [ChatInviteImporter](/API_docs/types/ChatInviteImporter.html) + + +### Example: + +``` +$chatInviteImporter = ['_' => 'chatInviteImporter', 'requested' => Bool, 'via_chatlist' => Bool, 'user_id' => long, 'date' => int, 'about' => 'string', 'approved_by' => long]; +``` diff --git a/docs/API_docs/constructors/chatInvitePeek.md b/docs/API_docs/constructors/chatInvitePeek.md new file mode 100644 index 0000000000..ab89bb9748 --- /dev/null +++ b/docs/API_docs/constructors/chatInvitePeek.md @@ -0,0 +1,30 @@ +--- +title: "chatInvitePeek" +description: "A chat invitation that also allows peeking into the group to read messages without joining it." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatInvitePeek +[Back to constructors index](/API_docs/constructors/index.html) + + + +A chat invitation that also allows peeking into the group to read messages without joining it. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chat|[Chat](/API_docs/types/Chat.html) | Optional|Chat information| +|expires|[int](/API_docs/types/int.html) | Yes|Read-only anonymous access to this group will be revoked at this date| + + + +### Type: [ChatInvite](/API_docs/types/ChatInvite.html) + + +### Example: + +``` +$chatInvitePeek = ['_' => 'chatInvitePeek', 'chat' => Chat, 'expires' => int]; +``` diff --git a/docs/API_docs/constructors/chatInvitePublicJoinRequests.md b/docs/API_docs/constructors/chatInvitePublicJoinRequests.md new file mode 100644 index 0000000000..44801f7c98 --- /dev/null +++ b/docs/API_docs/constructors/chatInvitePublicJoinRequests.md @@ -0,0 +1,24 @@ +--- +title: "chatInvitePublicJoinRequests" +description: "Used in updates and in the channel log to indicate when a user is requesting to join or has joined a discussion group" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatInvitePublicJoinRequests +[Back to constructors index](/API_docs/constructors/index.html) + + + +Used in updates and in the channel log to indicate when a user is requesting to join or has joined a [discussion group](https://core.telegram.org/api/discussion#requiring-users-to-join-the-group) + + + + +### Type: [ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) + + +### Example: + +``` +$chatInvitePublicJoinRequests = ['_' => 'chatInvitePublicJoinRequests']; +``` diff --git a/docs/API_docs/constructors/chatOnlines.md b/docs/API_docs/constructors/chatOnlines.md new file mode 100644 index 0000000000..dd734953ae --- /dev/null +++ b/docs/API_docs/constructors/chatOnlines.md @@ -0,0 +1,29 @@ +--- +title: "chatOnlines" +description: "Number of online users in a chat" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatOnlines +[Back to constructors index](/API_docs/constructors/index.html) + + + +Number of online users in a chat + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|onlines|[int](/API_docs/types/int.html) | Yes|Number of online users| + + + +### Type: [ChatOnlines](/API_docs/types/ChatOnlines.html) + + +### Example: + +``` +$chatOnlines = ['_' => 'chatOnlines', 'onlines' => int]; +``` diff --git a/docs/API_docs/constructors/chatParticipant.md b/docs/API_docs/constructors/chatParticipant.md new file mode 100644 index 0000000000..d9d9e3b561 --- /dev/null +++ b/docs/API_docs/constructors/chatParticipant.md @@ -0,0 +1,31 @@ +--- +title: "chatParticipant" +description: "Group member." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatParticipant +[Back to constructors index](/API_docs/constructors/index.html) + + + +Group member. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|Member user ID| +|inviter\_id|[long](/API_docs/types/long.html) | Yes|ID of the user that added the member to the group| +|date|[int](/API_docs/types/int.html) | Yes|Date added to the group| + + + +### Type: [ChatParticipant](/API_docs/types/ChatParticipant.html) + + +### Example: + +``` +$chatParticipant = ['_' => 'chatParticipant', 'user_id' => long, 'inviter_id' => long, 'date' => int]; +``` diff --git a/docs/API_docs/constructors/chatParticipantAdmin.md b/docs/API_docs/constructors/chatParticipantAdmin.md new file mode 100644 index 0000000000..7219deaa01 --- /dev/null +++ b/docs/API_docs/constructors/chatParticipantAdmin.md @@ -0,0 +1,31 @@ +--- +title: "chatParticipantAdmin" +description: "Chat admin" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatParticipantAdmin +[Back to constructors index](/API_docs/constructors/index.html) + + + +Chat admin + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|ID of a group member that is admin| +|inviter\_id|[long](/API_docs/types/long.html) | Yes|ID of the user that added the member to the group| +|date|[int](/API_docs/types/int.html) | Yes|Date when the user was added| + + + +### Type: [ChatParticipant](/API_docs/types/ChatParticipant.html) + + +### Example: + +``` +$chatParticipantAdmin = ['_' => 'chatParticipantAdmin', 'user_id' => long, 'inviter_id' => long, 'date' => int]; +``` diff --git a/docs/API_docs/constructors/chatParticipantCreator.md b/docs/API_docs/constructors/chatParticipantCreator.md new file mode 100644 index 0000000000..b60e0f7f61 --- /dev/null +++ b/docs/API_docs/constructors/chatParticipantCreator.md @@ -0,0 +1,29 @@ +--- +title: "chatParticipantCreator" +description: "Represents the creator of the group" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatParticipantCreator +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents the creator of the group + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|ID of the user that created the group| + + + +### Type: [ChatParticipant](/API_docs/types/ChatParticipant.html) + + +### Example: + +``` +$chatParticipantCreator = ['_' => 'chatParticipantCreator', 'user_id' => long]; +``` diff --git a/docs/API_docs/constructors/chatParticipants.md b/docs/API_docs/constructors/chatParticipants.md new file mode 100644 index 0000000000..664e7c4d60 --- /dev/null +++ b/docs/API_docs/constructors/chatParticipants.md @@ -0,0 +1,31 @@ +--- +title: "chatParticipants" +description: "Group members." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatParticipants +[Back to constructors index](/API_docs/constructors/index.html) + + + +Group members. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chat\_id|[long](/API_docs/types/long.html) | Yes|Group identifier| +|participants|Array of [ChatParticipant](/API_docs/types/ChatParticipant.html) | Yes|List of group members| +|version|[int](/API_docs/types/int.html) | Yes|Group version number| + + + +### Type: [ChatParticipants](/API_docs/types/ChatParticipants.html) + + +### Example: + +``` +$chatParticipants = ['_' => 'chatParticipants', 'chat_id' => long, 'participants' => [ChatParticipant, ChatParticipant], 'version' => int]; +``` diff --git a/docs/API_docs/constructors/chatParticipantsForbidden.md b/docs/API_docs/constructors/chatParticipantsForbidden.md new file mode 100644 index 0000000000..fde2f7a14a --- /dev/null +++ b/docs/API_docs/constructors/chatParticipantsForbidden.md @@ -0,0 +1,30 @@ +--- +title: "chatParticipantsForbidden" +description: "Info on members is unavailable" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatParticipantsForbidden +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info on members is unavailable + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chat\_id|[long](/API_docs/types/long.html) | Yes|Group ID| +|self\_participant|[ChatParticipant](/API_docs/types/ChatParticipant.html) | Optional|Info about the group membership of the current user| + + + +### Type: [ChatParticipants](/API_docs/types/ChatParticipants.html) + + +### Example: + +``` +$chatParticipantsForbidden = ['_' => 'chatParticipantsForbidden', 'chat_id' => long, 'self_participant' => ChatParticipant]; +``` diff --git a/docs/API_docs/constructors/chatPhoto.md b/docs/API_docs/constructors/chatPhoto.md new file mode 100644 index 0000000000..e1880dca31 --- /dev/null +++ b/docs/API_docs/constructors/chatPhoto.md @@ -0,0 +1,32 @@ +--- +title: "chatPhoto" +description: "Group profile photo." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatPhoto +[Back to constructors index](/API_docs/constructors/index.html) + + + +Group profile photo. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|has\_video|[Bool](/API_docs/types/Bool.html) | Optional|Whether the user has an animated profile picture| +|photo\_id|[long](/API_docs/types/long.html) | Yes|Photo ID| +|stripped\_thumb|[bytes](/API_docs/types/bytes.html) | Optional|[Stripped thumbnail](https://core.telegram.org/api/files#stripped-thumbnails)| +|dc\_id|[int](/API_docs/types/int.html) | Yes|DC where this photo is stored| + + + +### Type: [ChatPhoto](/API_docs/types/ChatPhoto.html) + + +### Example: + +``` +$chatPhoto = ['_' => 'chatPhoto', 'has_video' => Bool, 'photo_id' => long, 'stripped_thumb' => 'bytes', 'dc_id' => int]; +``` diff --git a/docs/API_docs/constructors/chatPhotoEmpty.md b/docs/API_docs/constructors/chatPhotoEmpty.md new file mode 100644 index 0000000000..03bf5994c6 --- /dev/null +++ b/docs/API_docs/constructors/chatPhotoEmpty.md @@ -0,0 +1,24 @@ +--- +title: "chatPhotoEmpty" +description: "Group photo is not set." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatPhotoEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Group photo is not set. + + + + +### Type: [ChatPhoto](/API_docs/types/ChatPhoto.html) + + +### Example: + +``` +$chatPhotoEmpty = ['_' => 'chatPhotoEmpty']; +``` diff --git a/docs/API_docs/constructors/chatReactionsAll.md b/docs/API_docs/constructors/chatReactionsAll.md new file mode 100644 index 0000000000..35764922e4 --- /dev/null +++ b/docs/API_docs/constructors/chatReactionsAll.md @@ -0,0 +1,29 @@ +--- +title: "chatReactionsAll" +description: "All reactions or all non-custom reactions are allowed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatReactionsAll +[Back to constructors index](/API_docs/constructors/index.html) + + + +All reactions or all non-custom reactions are allowed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|allow\_custom|[Bool](/API_docs/types/Bool.html) | Optional|Whether to allow custom reactions| + + + +### Type: [ChatReactions](/API_docs/types/ChatReactions.html) + + +### Example: + +``` +$chatReactionsAll = ['_' => 'chatReactionsAll', 'allow_custom' => Bool]; +``` diff --git a/docs/API_docs/constructors/chatReactionsNone.md b/docs/API_docs/constructors/chatReactionsNone.md new file mode 100644 index 0000000000..7dd57ce0bb --- /dev/null +++ b/docs/API_docs/constructors/chatReactionsNone.md @@ -0,0 +1,24 @@ +--- +title: "chatReactionsNone" +description: "No reactions are allowed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatReactionsNone +[Back to constructors index](/API_docs/constructors/index.html) + + + +No reactions are allowed + + + + +### Type: [ChatReactions](/API_docs/types/ChatReactions.html) + + +### Example: + +``` +$chatReactionsNone = ['_' => 'chatReactionsNone']; +``` diff --git a/docs/API_docs/constructors/chatReactionsSome.md b/docs/API_docs/constructors/chatReactionsSome.md new file mode 100644 index 0000000000..264f7c614e --- /dev/null +++ b/docs/API_docs/constructors/chatReactionsSome.md @@ -0,0 +1,29 @@ +--- +title: "chatReactionsSome" +description: "Some reactions are allowed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: chatReactionsSome +[Back to constructors index](/API_docs/constructors/index.html) + + + +Some reactions are allowed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|reactions|Array of [Reaction](/API_docs/types/Reaction.html) | Yes|Allowed set of reactions: the [reactions\_in\_chat\_max](https://core.telegram.org/api/config#reactions-in-chat-max) configuration field indicates the maximum number of reactions that can be specified in this field.| + + + +### Type: [ChatReactions](/API_docs/types/ChatReactions.html) + + +### Example: + +``` +$chatReactionsSome = ['_' => 'chatReactionsSome', 'reactions' => [Reaction, Reaction]]; +``` diff --git a/docs/API_docs/constructors/chatlists.chatlistInvite.md b/docs/API_docs/constructors/chatlists.chatlistInvite.md new file mode 100644 index 0000000000..b52366d0c4 --- /dev/null +++ b/docs/API_docs/constructors/chatlists.chatlistInvite.md @@ -0,0 +1,34 @@ +--- +title: "chatlists.chatlistInvite" +description: "Info about a chat folder deep link »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/chatlists_chatlistInvite.html +--- +# Constructor: chatlists.chatlistInvite +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|title|[string](/API_docs/types/string.html) | Yes|Name of the link| +|emoticon|[string](/API_docs/types/string.html) | Optional|Emoji to use as icon for the folder.| +|peers|Array of [Peer](/API_docs/types/Peer.html) | Yes|Supergroups and channels to join| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Related chat information| +|users|Array of [User](/API_docs/types/User.html) | Yes|Related user information| + + + +### Type: [chatlists.ChatlistInvite](/API_docs/types/chatlists.ChatlistInvite.html) + + +### Example: + +``` +$chatlists_chatlistInvite = ['_' => 'chatlists.chatlistInvite', 'title' => 'string', 'emoticon' => 'string', 'peers' => [Peer, Peer], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/chatlists.chatlistInviteAlready.md b/docs/API_docs/constructors/chatlists.chatlistInviteAlready.md new file mode 100644 index 0000000000..6450f2f4e4 --- /dev/null +++ b/docs/API_docs/constructors/chatlists.chatlistInviteAlready.md @@ -0,0 +1,34 @@ +--- +title: "chatlists.chatlistInviteAlready" +description: "Updated info about a chat folder deep link » we already imported." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/chatlists_chatlistInviteAlready.html +--- +# Constructor: chatlists.chatlistInviteAlready +[Back to constructors index](/API_docs/constructors/index.html) + + + +Updated info about a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links) we already imported. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|filter\_id|[int](/API_docs/types/int.html) | Yes|ID of the imported folder| +|missing\_peers|Array of [Peer](/API_docs/types/Peer.html) | Yes|New peers to be imported| +|already\_peers|Array of [Peer](/API_docs/types/Peer.html) | Yes|Peers that were already imported| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Related chat information| +|users|Array of [User](/API_docs/types/User.html) | Yes|Related user information| + + + +### Type: [chatlists.ChatlistInvite](/API_docs/types/chatlists.ChatlistInvite.html) + + +### Example: + +``` +$chatlists_chatlistInviteAlready = ['_' => 'chatlists.chatlistInviteAlready', 'filter_id' => int, 'missing_peers' => [Peer, Peer], 'already_peers' => [Peer, Peer], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/chatlists.chatlistUpdates.md b/docs/API_docs/constructors/chatlists.chatlistUpdates.md new file mode 100644 index 0000000000..21a4879b19 --- /dev/null +++ b/docs/API_docs/constructors/chatlists.chatlistUpdates.md @@ -0,0 +1,32 @@ +--- +title: "chatlists.chatlistUpdates" +description: "Updated information about a chat folder deep link »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/chatlists_chatlistUpdates.html +--- +# Constructor: chatlists.chatlistUpdates +[Back to constructors index](/API_docs/constructors/index.html) + + + +Updated information about a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|missing\_peers|Array of [Peer](/API_docs/types/Peer.html) | Yes|New peers to join| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Related chat information| +|users|Array of [User](/API_docs/types/User.html) | Yes|Related user information| + + + +### Type: [chatlists.ChatlistUpdates](/API_docs/types/chatlists.ChatlistUpdates.html) + + +### Example: + +``` +$chatlists_chatlistUpdates = ['_' => 'chatlists.chatlistUpdates', 'missing_peers' => [Peer, Peer], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/chatlists.exportedChatlistInvite.md b/docs/API_docs/constructors/chatlists.exportedChatlistInvite.md new file mode 100644 index 0000000000..83ce6971a2 --- /dev/null +++ b/docs/API_docs/constructors/chatlists.exportedChatlistInvite.md @@ -0,0 +1,31 @@ +--- +title: "chatlists.exportedChatlistInvite" +description: "Info about an exported chat folder deep link »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/chatlists_exportedChatlistInvite.html +--- +# Constructor: chatlists.exportedChatlistInvite +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about an exported [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|filter|[DialogFilter](/API_docs/types/DialogFilter.html) | Yes|Folder ID| +|invite|[ExportedChatlistInvite](/API_docs/types/ExportedChatlistInvite.html) | Yes|The exported [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links).| + + + +### Type: [chatlists.ExportedChatlistInvite](/API_docs/types/chatlists.ExportedChatlistInvite.html) + + +### Example: + +``` +$chatlists_exportedChatlistInvite = ['_' => 'chatlists.exportedChatlistInvite', 'filter' => DialogFilter, 'invite' => ExportedChatlistInvite]; +``` diff --git a/docs/API_docs/constructors/chatlists.exportedInvites.md b/docs/API_docs/constructors/chatlists.exportedInvites.md new file mode 100644 index 0000000000..0ddd0fdf83 --- /dev/null +++ b/docs/API_docs/constructors/chatlists.exportedInvites.md @@ -0,0 +1,32 @@ +--- +title: "chatlists.exportedInvites" +description: "Info about multiple chat folder deep links »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/chatlists_exportedInvites.html +--- +# Constructor: chatlists.exportedInvites +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about multiple [chat folder deep links »](https://core.telegram.org/api/links#chat-folder-links). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|invites|Array of [ExportedChatlistInvite](/API_docs/types/ExportedChatlistInvite.html) | Yes|The [chat folder deep links »](https://core.telegram.org/api/links#chat-folder-links).| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Related chat information| +|users|Array of [User](/API_docs/types/User.html) | Yes|Related user information| + + + +### Type: [chatlists.ExportedInvites](/API_docs/types/chatlists.ExportedInvites.html) + + +### Example: + +``` +$chatlists_exportedInvites = ['_' => 'chatlists.exportedInvites', 'invites' => [ExportedChatlistInvite, ExportedChatlistInvite], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/codeSettings.md b/docs/API_docs/constructors/codeSettings.md new file mode 100644 index 0000000000..4df2de6eef --- /dev/null +++ b/docs/API_docs/constructors/codeSettings.md @@ -0,0 +1,39 @@ +--- +title: "codeSettings" +description: "Settings used by telegram servers for sending the confirm code." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: codeSettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +Settings used by telegram servers for sending the confirm code. + +Example implementations: [telegram for android](https://github.com/DrKLO/Telegram/blob/master/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java), [tdlib](https://github.com/tdlib/td/tree/master/td/telegram/SendCodeHelper.cpp). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|allow\_flashcall|[Bool](/API_docs/types/Bool.html) | Optional|Whether to allow phone verification via [phone calls](https://core.telegram.org/api/auth).| +|current\_number|[Bool](/API_docs/types/Bool.html) | Optional|Pass true if the phone number is used on the current device. Ignored if allow\_flashcall is not set.| +|allow\_app\_hash|[Bool](/API_docs/types/Bool.html) | Optional|If a token that will be included in eventually sent SMSs is required: required in newer versions of android, to use the [android SMS receiver APIs](https://developers.google.com/identity/sms-retriever/overview)| +|allow\_missed\_call|[Bool](/API_docs/types/Bool.html) | Optional|Whether this device supports receiving the code using the [auth.codeTypeMissedCall](../constructors/auth.codeTypeMissedCall.html) method| +|allow\_firebase|[Bool](/API_docs/types/Bool.html) | Optional|Whether Firebase auth is supported| +|unknown\_number|[Bool](/API_docs/types/Bool.html) | Optional| +|logout\_tokens|Array of [bytes](/API_docs/types/bytes.html) | Optional|Previously stored future auth tokens, see [the documentation for more info »](https://core.telegram.org/api/auth#future-auth-tokens)| +|token|[string](/API_docs/types/string.html) | Optional|Used only by official iOS apps for Firebase auth: device token for apple push.| +|app\_sandbox|[Bool](/API_docs/types/Bool.html) | Optional|Used only by official iOS apps for firebase auth: whether a sandbox-certificate will be used during transmission of the push notification.| + + + +### Type: [CodeSettings](/API_docs/types/CodeSettings.html) + + +### Example: + +``` +$codeSettings = ['_' => 'codeSettings', 'allow_flashcall' => Bool, 'current_number' => Bool, 'allow_app_hash' => Bool, 'allow_missed_call' => Bool, 'allow_firebase' => Bool, 'unknown_number' => Bool, 'logout_tokens' => ['bytes', 'bytes'], 'token' => 'string', 'app_sandbox' => Bool]; +``` diff --git a/docs/API_docs/constructors/config.md b/docs/API_docs/constructors/config.md new file mode 100644 index 0000000000..4b9c646408 --- /dev/null +++ b/docs/API_docs/constructors/config.md @@ -0,0 +1,75 @@ +--- +title: "config" +description: "Current configuration" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: config +[Back to constructors index](/API_docs/constructors/index.html) + + + +Current configuration + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|default\_p2p\_contacts|[Bool](/API_docs/types/Bool.html) | Optional|Whether the client should use P2P by default for phone calls with contacts| +|preload\_featured\_stickers|[Bool](/API_docs/types/Bool.html) | Optional|Whether the client should preload featured stickers| +|revoke\_pm\_inbox|[Bool](/API_docs/types/Bool.html) | Optional|Whether incoming private messages can be deleted for both participants| +|blocked\_mode|[Bool](/API_docs/types/Bool.html) | Optional|Indicates that telegram is *probably* censored by governments/ISPs in the current region| +|force\_try\_ipv6|[Bool](/API_docs/types/Bool.html) | Optional|Whether to forcefully connect using IPv6 [dcOptions](../types/DcOption.html), even if the client knows that IPv4 is available.| +|date|[int](/API_docs/types/int.html) | Yes|Current date at the server| +|expires|[int](/API_docs/types/int.html) | Yes|Expiration date of this config: when it expires it'll have to be refetched using [help.getConfig](../methods/help.getConfig.html)| +|test\_mode|[Bool](/API_docs/types/Bool.html) | Yes|Whether we're connected to the test DCs| +|this\_dc|[int](/API_docs/types/int.html) | Yes|ID of the DC that returned the reply| +|dc\_options|Array of [DcOption](/API_docs/types/DcOption.html) | Yes|DC IP list| +|dc\_txt\_domain\_name|[string](/API_docs/types/string.html) | Yes|Domain name for fetching encrypted DC list from DNS TXT record| +|chat\_size\_max|[int](/API_docs/types/int.html) | Yes|Maximum member count for normal [groups](https://core.telegram.org/api/channel)| +|megagroup\_size\_max|[int](/API_docs/types/int.html) | Yes|Maximum member count for [supergroups](https://core.telegram.org/api/channel)| +|forwarded\_count\_max|[int](/API_docs/types/int.html) | Yes|Maximum number of messages that can be forwarded at once using [messages.forwardMessages](../methods/messages.forwardMessages.html).| +|online\_update\_period\_ms|[int](/API_docs/types/int.html) | Yes|The client should [update its online status](../methods/account.updateStatus.html) every N milliseconds| +|offline\_blur\_timeout\_ms|[int](/API_docs/types/int.html) | Yes|Delay before offline status needs to be sent to the server| +|offline\_idle\_timeout\_ms|[int](/API_docs/types/int.html) | Yes|Time without any user activity after which it should be treated offline| +|online\_cloud\_timeout\_ms|[int](/API_docs/types/int.html) | Yes|If we are offline, but were online from some other client in last `online_cloud_timeout_ms` milliseconds after we had gone offline, then delay offline notification for `notify_cloud_delay_ms` milliseconds.| +|notify\_cloud\_delay\_ms|[int](/API_docs/types/int.html) | Yes|If we are offline, but online from some other client then delay sending the offline notification for `notify_cloud_delay_ms` milliseconds.| +|notify\_default\_delay\_ms|[int](/API_docs/types/int.html) | Yes|If some other client is online, then delay notification for `notification_default_delay_ms` milliseconds| +|push\_chat\_period\_ms|[int](/API_docs/types/int.html) | Yes|Not for client use| +|push\_chat\_limit|[int](/API_docs/types/int.html) | Yes|Not for client use| +|edit\_time\_limit|[int](/API_docs/types/int.html) | Yes|Only messages with age smaller than the one specified can be edited| +|revoke\_time\_limit|[int](/API_docs/types/int.html) | Yes|Only channel/supergroup messages with age smaller than the specified can be deleted| +|revoke\_pm\_time\_limit|[int](/API_docs/types/int.html) | Yes|Only private messages with age smaller than the specified can be deleted| +|rating\_e\_decay|[int](/API_docs/types/int.html) | Yes|Exponential decay rate for computing [top peer rating](https://core.telegram.org/api/top-rating)| +|stickers\_recent\_limit|[int](/API_docs/types/int.html) | Yes|Maximum number of recent stickers| +|channels\_read\_media\_period|[int](/API_docs/types/int.html) | Yes|Indicates that round videos (video notes) and voice messages sent in channels and older than the specified period must be marked as read| +|tmp\_sessions|[int](/API_docs/types/int.html) | Optional|Temporary [passport](https://core.telegram.org/passport) sessions| +|call\_receive\_timeout\_ms|[int](/API_docs/types/int.html) | Yes|Maximum allowed outgoing ring time in VoIP calls: if the user we're calling doesn't reply within the specified time (in milliseconds), we should hang up the call| +|call\_ring\_timeout\_ms|[int](/API_docs/types/int.html) | Yes|Maximum allowed incoming ring time in VoIP calls: if the current user doesn't reply within the specified time (in milliseconds), the call will be automatically refused| +|call\_connect\_timeout\_ms|[int](/API_docs/types/int.html) | Yes|VoIP connection timeout: if the instance of libtgvoip on the other side of the call doesn't connect to our instance of libtgvoip within the specified time (in milliseconds), the call must be aborted| +|call\_packet\_timeout\_ms|[int](/API_docs/types/int.html) | Yes|If during a VoIP call a packet isn't received for the specified period of time, the call must be aborted| +|me\_url\_prefix|[string](/API_docs/types/string.html) | Yes|The domain to use to parse [deep links »](https://core.telegram.org/api/links).| +|autoupdate\_url\_prefix|[string](/API_docs/types/string.html) | Optional|URL to use to auto-update the current app| +|gif\_search\_username|[string](/API_docs/types/string.html) | Optional|Username of the bot to use to search for GIFs| +|venue\_search\_username|[string](/API_docs/types/string.html) | Optional|Username of the bot to use to search for venues| +|img\_search\_username|[string](/API_docs/types/string.html) | Optional|Username of the bot to use for image search| +|static\_maps\_provider|[string](/API_docs/types/string.html) | Optional|ID of the map provider to use for venues| +|caption\_length\_max|[int](/API_docs/types/int.html) | Yes|Maximum length of caption (length in utf8 codepoints)| +|message\_length\_max|[int](/API_docs/types/int.html) | Yes|Maximum length of messages (length in utf8 codepoints)| +|webfile\_dc\_id|[int](/API_docs/types/int.html) | Yes|DC ID to use to download [webfiles](https://core.telegram.org/api/files#downloading-webfiles)| +|suggested\_lang\_code|[string](/API_docs/types/string.html) | Optional|Suggested language code| +|lang\_pack\_version|[int](/API_docs/types/int.html) | Optional|Language pack version| +|base\_lang\_pack\_version|[int](/API_docs/types/int.html) | Optional|Basic language pack version| +|reactions\_default|[Reaction](/API_docs/types/Reaction.html) | Optional|Default [message reaction](https://core.telegram.org/api/reactions)| +|autologin\_token|[string](/API_docs/types/string.html) | Optional|Autologin token, [click here for more info on URL authorization »](https://core.telegram.org/api/url-authorization#link-url-authorization).| + + + +### Type: [Config](/API_docs/types/Config.html) + + +### Example: + +``` +$config = ['_' => 'config', 'default_p2p_contacts' => Bool, 'preload_featured_stickers' => Bool, 'revoke_pm_inbox' => Bool, 'blocked_mode' => Bool, 'force_try_ipv6' => Bool, 'date' => int, 'expires' => int, 'test_mode' => Bool, 'this_dc' => int, 'dc_options' => [DcOption, 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, 'edit_time_limit' => int, 'revoke_time_limit' => int, 'revoke_pm_time_limit' => int, 'rating_e_decay' => int, 'stickers_recent_limit' => int, 'channels_read_media_period' => int, 'tmp_sessions' => 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' => 'string', 'gif_search_username' => 'string', 'venue_search_username' => 'string', 'img_search_username' => 'string', 'static_maps_provider' => 'string', 'caption_length_max' => int, 'message_length_max' => int, 'webfile_dc_id' => int, 'suggested_lang_code' => 'string', 'lang_pack_version' => int, 'base_lang_pack_version' => int, 'reactions_default' => Reaction, 'autologin_token' => 'string']; +``` diff --git a/docs/API_docs/constructors/connectedBot.md b/docs/API_docs/constructors/connectedBot.md new file mode 100644 index 0000000000..e5d964f88d --- /dev/null +++ b/docs/API_docs/constructors/connectedBot.md @@ -0,0 +1,29 @@ +--- +title: "connectedBot" +description: "connectedBot attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: connectedBot +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|can\_reply|[Bool](/API_docs/types/Bool.html) | Optional| +|bot\_id|[long](/API_docs/types/long.html) | Yes| +|recipients|[BusinessBotRecipients](/API_docs/types/BusinessBotRecipients.html) | Yes| + + + +### Type: [ConnectedBot](/API_docs/types/ConnectedBot.html) + + +### Example: + +``` +$connectedBot = ['_' => 'connectedBot', 'can_reply' => Bool, 'bot_id' => long, 'recipients' => BusinessBotRecipients]; +``` diff --git a/docs/API_docs/constructors/contact.md b/docs/API_docs/constructors/contact.md new file mode 100644 index 0000000000..b802e3d508 --- /dev/null +++ b/docs/API_docs/constructors/contact.md @@ -0,0 +1,30 @@ +--- +title: "contact" +description: "A contact of the current user that is registered in the system." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: contact +[Back to constructors index](/API_docs/constructors/index.html) + + + +A contact of the current user that is registered in the system. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|User identifier| +|mutual|[Bool](/API_docs/types/Bool.html) | Yes|Current user is in the user's contact list| + + + +### Type: [Contact](/API_docs/types/Contact.html) + + +### Example: + +``` +$contact = ['_' => 'contact', 'user_id' => long, 'mutual' => Bool]; +``` diff --git a/docs/API_docs/constructors/contactBirthday.md b/docs/API_docs/constructors/contactBirthday.md new file mode 100644 index 0000000000..129c383b09 --- /dev/null +++ b/docs/API_docs/constructors/contactBirthday.md @@ -0,0 +1,28 @@ +--- +title: "contactBirthday" +description: "contactBirthday attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: contactBirthday +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|contact\_id|[long](/API_docs/types/long.html) | Yes| +|birthday|[Birthday](/API_docs/types/Birthday.html) | Yes| + + + +### Type: [ContactBirthday](/API_docs/types/ContactBirthday.html) + + +### Example: + +``` +$contactBirthday = ['_' => 'contactBirthday', 'contact_id' => long, 'birthday' => Birthday]; +``` diff --git a/docs/API_docs/constructors/contactStatus.md b/docs/API_docs/constructors/contactStatus.md new file mode 100644 index 0000000000..fbac9eb8cf --- /dev/null +++ b/docs/API_docs/constructors/contactStatus.md @@ -0,0 +1,30 @@ +--- +title: "contactStatus" +description: "Contact status: online / offline." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: contactStatus +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contact status: online / offline. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|User identifier| +|status|[UserStatus](/API_docs/types/UserStatus.html) | Optional|Online status| + + + +### Type: [ContactStatus](/API_docs/types/ContactStatus.html) + + +### Example: + +``` +$contactStatus = ['_' => 'contactStatus', 'user_id' => long, 'status' => UserStatus]; +``` diff --git a/docs/API_docs/constructors/contacts.blocked.md b/docs/API_docs/constructors/contacts.blocked.md new file mode 100644 index 0000000000..813a4f990a --- /dev/null +++ b/docs/API_docs/constructors/contacts.blocked.md @@ -0,0 +1,32 @@ +--- +title: "contacts.blocked" +description: "Full list of blocked users." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/contacts_blocked.html +--- +# Constructor: contacts.blocked +[Back to constructors index](/API_docs/constructors/index.html) + + + +Full list of blocked users. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|blocked|Array of [PeerBlocked](/API_docs/types/PeerBlocked.html) | Yes|List of blocked users| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Blocked chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|List of users| + + + +### Type: [contacts.Blocked](/API_docs/types/contacts.Blocked.html) + + +### Example: + +``` +$contacts_blocked = ['_' => 'contacts.blocked', 'blocked' => [PeerBlocked, PeerBlocked], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/contacts.blockedSlice.md b/docs/API_docs/constructors/contacts.blockedSlice.md new file mode 100644 index 0000000000..9c2f852249 --- /dev/null +++ b/docs/API_docs/constructors/contacts.blockedSlice.md @@ -0,0 +1,33 @@ +--- +title: "contacts.blockedSlice" +description: "Incomplete list of blocked users." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/contacts_blockedSlice.html +--- +# Constructor: contacts.blockedSlice +[Back to constructors index](/API_docs/constructors/index.html) + + + +Incomplete list of blocked users. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Total number of elements in the list| +|blocked|Array of [PeerBlocked](/API_docs/types/PeerBlocked.html) | Yes|List of blocked users| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Blocked chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|List of users| + + + +### Type: [contacts.Blocked](/API_docs/types/contacts.Blocked.html) + + +### Example: + +``` +$contacts_blockedSlice = ['_' => 'contacts.blockedSlice', 'count' => int, 'blocked' => [PeerBlocked, PeerBlocked], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/contacts.contactBirthdays.md b/docs/API_docs/constructors/contacts.contactBirthdays.md new file mode 100644 index 0000000000..3e7b50beb2 --- /dev/null +++ b/docs/API_docs/constructors/contacts.contactBirthdays.md @@ -0,0 +1,29 @@ +--- +title: "contacts.contactBirthdays" +description: "contacts.contactBirthdays attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/contacts_contactBirthdays.html +--- +# Constructor: contacts.contactBirthdays +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|contacts|Array of [ContactBirthday](/API_docs/types/ContactBirthday.html) | Yes| +|users|Array of [User](/API_docs/types/User.html) | Yes| + + + +### Type: [contacts.ContactBirthdays](/API_docs/types/contacts.ContactBirthdays.html) + + +### Example: + +``` +$contacts_contactBirthdays = ['_' => 'contacts.contactBirthdays', 'contacts' => [ContactBirthday, ContactBirthday], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/contacts.contacts.md b/docs/API_docs/constructors/contacts.contacts.md new file mode 100644 index 0000000000..4422dae473 --- /dev/null +++ b/docs/API_docs/constructors/contacts.contacts.md @@ -0,0 +1,32 @@ +--- +title: "contacts.contacts" +description: "The current user's contact list and info on users." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/contacts_contacts.html +--- +# Constructor: contacts.contacts +[Back to constructors index](/API_docs/constructors/index.html) + + + +The current user's contact list and info on users. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|contacts|Array of [Contact](/API_docs/types/Contact.html) | Yes|Contact list| +|saved\_count|[int](/API_docs/types/int.html) | Yes|Number of contacts that were saved successfully| +|users|Array of [User](/API_docs/types/User.html) | Yes|User list| + + + +### Type: [contacts.Contacts](/API_docs/types/contacts.Contacts.html) + + +### Example: + +``` +$contacts_contacts = ['_' => 'contacts.contacts', 'contacts' => [Contact, Contact], 'saved_count' => int, 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/contacts.contactsNotModified.md b/docs/API_docs/constructors/contacts.contactsNotModified.md new file mode 100644 index 0000000000..90dff4ea78 --- /dev/null +++ b/docs/API_docs/constructors/contacts.contactsNotModified.md @@ -0,0 +1,25 @@ +--- +title: "contacts.contactsNotModified" +description: "Contact list on the server is the same as the list on the client." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/contacts_contactsNotModified.html +--- +# Constructor: contacts.contactsNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contact list on the server is the same as the list on the client. + + + + +### Type: [contacts.Contacts](/API_docs/types/contacts.Contacts.html) + + +### Example: + +``` +$contacts_contactsNotModified = ['_' => 'contacts.contactsNotModified']; +``` diff --git a/docs/API_docs/constructors/contacts.found.md b/docs/API_docs/constructors/contacts.found.md new file mode 100644 index 0000000000..9e3ca8b5bf --- /dev/null +++ b/docs/API_docs/constructors/contacts.found.md @@ -0,0 +1,33 @@ +--- +title: "contacts.found" +description: "Users found by name substring and auxiliary data." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/contacts_found.html +--- +# Constructor: contacts.found +[Back to constructors index](/API_docs/constructors/index.html) + + + +Users found by name substring and auxiliary data. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|my\_results|Array of [Peer](/API_docs/types/Peer.html) | Yes|Personalized results| +|results|Array of [Peer](/API_docs/types/Peer.html) | Yes|List of found user identifiers| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Found chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|List of users| + + + +### Type: [contacts.Found](/API_docs/types/contacts.Found.html) + + +### Example: + +``` +$contacts_found = ['_' => 'contacts.found', 'my_results' => [Peer, Peer], 'results' => [Peer, Peer], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/contacts.importedContacts.md b/docs/API_docs/constructors/contacts.importedContacts.md new file mode 100644 index 0000000000..ac7a9524ef --- /dev/null +++ b/docs/API_docs/constructors/contacts.importedContacts.md @@ -0,0 +1,33 @@ +--- +title: "contacts.importedContacts" +description: "Info on successfully imported contacts." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/contacts_importedContacts.html +--- +# Constructor: contacts.importedContacts +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info on successfully imported contacts. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|imported|Array of [ImportedContact](/API_docs/types/ImportedContact.html) | Yes|List of successfully imported contacts| +|popular\_invites|Array of [PopularContact](/API_docs/types/PopularContact.html) | Yes|Popular contacts| +|retry\_contacts|Array of [long](/API_docs/types/long.html) | Yes|List of contact ids that could not be imported due to system limitation and will need to be imported at a later date.| +|users|Array of [User](/API_docs/types/User.html) | Yes|List of users| + + + +### Type: [contacts.ImportedContacts](/API_docs/types/contacts.ImportedContacts.html) + + +### Example: + +``` +$contacts_importedContacts = ['_' => 'contacts.importedContacts', 'imported' => [ImportedContact, ImportedContact], 'popular_invites' => [PopularContact, PopularContact], 'retry_contacts' => [long, long], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/contacts.resolvedPeer.md b/docs/API_docs/constructors/contacts.resolvedPeer.md new file mode 100644 index 0000000000..b2925179e6 --- /dev/null +++ b/docs/API_docs/constructors/contacts.resolvedPeer.md @@ -0,0 +1,32 @@ +--- +title: "contacts.resolvedPeer" +description: "Resolved peer" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/contacts_resolvedPeer.html +--- +# Constructor: contacts.resolvedPeer +[Back to constructors index](/API_docs/constructors/index.html) + + + +Resolved peer + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|The peer| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users| + + + +### Type: [contacts.ResolvedPeer](/API_docs/types/contacts.ResolvedPeer.html) + + +### Example: + +``` +$contacts_resolvedPeer = ['_' => 'contacts.resolvedPeer', 'peer' => long, 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/contacts.topPeers.md b/docs/API_docs/constructors/contacts.topPeers.md new file mode 100644 index 0000000000..5badba4c48 --- /dev/null +++ b/docs/API_docs/constructors/contacts.topPeers.md @@ -0,0 +1,32 @@ +--- +title: "contacts.topPeers" +description: "Top peers" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/contacts_topPeers.html +--- +# Constructor: contacts.topPeers +[Back to constructors index](/API_docs/constructors/index.html) + + + +Top peers + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|categories|Array of [TopPeerCategoryPeers](/API_docs/types/TopPeerCategoryPeers.html) | Yes|Top peers by top peer category| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users| + + + +### Type: [contacts.TopPeers](/API_docs/types/contacts.TopPeers.html) + + +### Example: + +``` +$contacts_topPeers = ['_' => 'contacts.topPeers', 'categories' => [TopPeerCategoryPeers, TopPeerCategoryPeers], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/contacts.topPeersDisabled.md b/docs/API_docs/constructors/contacts.topPeersDisabled.md new file mode 100644 index 0000000000..c95563d5de --- /dev/null +++ b/docs/API_docs/constructors/contacts.topPeersDisabled.md @@ -0,0 +1,25 @@ +--- +title: "contacts.topPeersDisabled" +description: "Top peers disabled" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/contacts_topPeersDisabled.html +--- +# Constructor: contacts.topPeersDisabled +[Back to constructors index](/API_docs/constructors/index.html) + + + +Top peers disabled + + + + +### Type: [contacts.TopPeers](/API_docs/types/contacts.TopPeers.html) + + +### Example: + +``` +$contacts_topPeersDisabled = ['_' => 'contacts.topPeersDisabled']; +``` diff --git a/docs/API_docs/constructors/contacts.topPeersNotModified.md b/docs/API_docs/constructors/contacts.topPeersNotModified.md new file mode 100644 index 0000000000..7413ee6d73 --- /dev/null +++ b/docs/API_docs/constructors/contacts.topPeersNotModified.md @@ -0,0 +1,25 @@ +--- +title: "contacts.topPeersNotModified" +description: "Top peer info hasn't changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/contacts_topPeersNotModified.html +--- +# Constructor: contacts.topPeersNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +Top peer info hasn't changed + + + + +### Type: [contacts.TopPeers](/API_docs/types/contacts.TopPeers.html) + + +### Example: + +``` +$contacts_topPeersNotModified = ['_' => 'contacts.topPeersNotModified']; +``` diff --git a/docs/API_docs/constructors/dataJSON.md b/docs/API_docs/constructors/dataJSON.md new file mode 100644 index 0000000000..f9ac828ffd --- /dev/null +++ b/docs/API_docs/constructors/dataJSON.md @@ -0,0 +1,29 @@ +--- +title: "dataJSON" +description: "Represents a json-encoded object" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: dataJSON +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a json-encoded object + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|data|[string](/API_docs/types/string.html) | Yes|JSON-encoded object| + + + +### Type: [DataJSON](/API_docs/types/DataJSON.html) + + +### Example: + +``` +$dataJSON = ['_' => 'dataJSON', 'data' => 'string']; +``` diff --git a/docs/API_docs/constructors/dcOption.md b/docs/API_docs/constructors/dcOption.md new file mode 100644 index 0000000000..1018477992 --- /dev/null +++ b/docs/API_docs/constructors/dcOption.md @@ -0,0 +1,38 @@ +--- +title: "dcOption" +description: "Data center" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: dcOption +[Back to constructors index](/API_docs/constructors/index.html) + + + +Data center + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|ipv6|[Bool](/API_docs/types/Bool.html) | Optional|Whether the specified IP is an IPv6 address| +|media\_only|[Bool](/API_docs/types/Bool.html) | Optional|Whether this DC should only be used to [download or upload files](https://core.telegram.org/api/files)| +|tcpo\_only|[Bool](/API_docs/types/Bool.html) | Optional|Whether this DC only supports connection with [transport obfuscation](https://core.telegram.org/mtproto/mtproto-transports#transport-obfuscation)| +|cdn|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a [CDN DC](https://core.telegram.org/cdn).| +|static|[Bool](/API_docs/types/Bool.html) | Optional|If set, this IP should be used when connecting through a proxy| +|this\_port\_only|[Bool](/API_docs/types/Bool.html) | Optional|If set, clients must connect using only the specified port, without trying any other port.| +|id|[int](/API_docs/types/int.html) | Yes|DC ID| +|ip\_address|[string](/API_docs/types/string.html) | Yes|IP address of DC| +|port|[int](/API_docs/types/int.html) | Yes|Port| +|secret|[string](/API_docs/types/string.html) | Optional| + + + +### Type: [DcOption](/API_docs/types/DcOption.html) + + +### Example: + +``` +$dcOption = ['_' => 'dcOption', 'ipv6' => Bool, 'media_only' => Bool, 'tcpo_only' => Bool, 'cdn' => Bool, 'static' => Bool, 'this_port_only' => Bool, 'id' => int, 'ip_address' => 'string', 'port' => int, 'secret' => 'string']; +``` diff --git a/docs/API_docs/constructors/decryptedMessageActionAbortKey_20.md b/docs/API_docs/constructors/decryptedMessageActionAbortKey_20.md new file mode 100644 index 0000000000..f7c7892d46 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageActionAbortKey_20.md @@ -0,0 +1,29 @@ +--- +title: "decryptedMessageActionAbortKey" +description: "Abort rekeying" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageActionAbortKey\_20 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Abort rekeying + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|exchange\_id|[long](/API_docs/types/long.html) | Yes|Exchange ID| + + + +### Type: [DecryptedMessageAction](/API_docs/types/DecryptedMessageAction.html) + + +### Example: + +``` +$decryptedMessageActionAbortKey_20 = ['_' => 'decryptedMessageActionAbortKey', 'exchange_id' => long]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageActionAcceptKey_20.md b/docs/API_docs/constructors/decryptedMessageActionAcceptKey_20.md new file mode 100644 index 0000000000..3a672a85a6 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageActionAcceptKey_20.md @@ -0,0 +1,31 @@ +--- +title: "decryptedMessageActionAcceptKey" +description: "Accept new key" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageActionAcceptKey\_20 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Accept new key + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|exchange\_id|[long](/API_docs/types/long.html) | Yes|Exchange ID| +|g\_b|[bytes](/API_docs/types/bytes.html) | Yes|B parameter, see [rekeying process](https://core.telegram.org/api/end-to-end/pfs)| +|key\_fingerprint|[long](/API_docs/types/long.html) | Yes|Key fingerprint, see [rekeying process](https://core.telegram.org/api/end-to-end/pfs)| + + + +### Type: [DecryptedMessageAction](/API_docs/types/DecryptedMessageAction.html) + + +### Example: + +``` +$decryptedMessageActionAcceptKey_20 = ['_' => 'decryptedMessageActionAcceptKey', 'exchange_id' => long, 'g_b' => 'bytes', 'key_fingerprint' => long]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageActionCommitKey_20.md b/docs/API_docs/constructors/decryptedMessageActionCommitKey_20.md new file mode 100644 index 0000000000..11df1af824 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageActionCommitKey_20.md @@ -0,0 +1,30 @@ +--- +title: "decryptedMessageActionCommitKey" +description: "Commit new key, see rekeying process" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageActionCommitKey\_20 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Commit new key, see [rekeying process](https://core.telegram.org/api/end-to-end/pfs) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|exchange\_id|[long](/API_docs/types/long.html) | Yes|Exchange ID, see [rekeying process](https://core.telegram.org/api/end-to-end/pfs)| +|key\_fingerprint|[long](/API_docs/types/long.html) | Yes|Key fingerprint, see [rekeying process](https://core.telegram.org/api/end-to-end/pfs)| + + + +### Type: [DecryptedMessageAction](/API_docs/types/DecryptedMessageAction.html) + + +### Example: + +``` +$decryptedMessageActionCommitKey_20 = ['_' => 'decryptedMessageActionCommitKey', 'exchange_id' => long, 'key_fingerprint' => long]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageActionDeleteMessages_8.md b/docs/API_docs/constructors/decryptedMessageActionDeleteMessages_8.md new file mode 100644 index 0000000000..90834864b8 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageActionDeleteMessages_8.md @@ -0,0 +1,29 @@ +--- +title: "decryptedMessageActionDeleteMessages" +description: "Deleted messages." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageActionDeleteMessages\_8 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Deleted messages. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|random\_ids|Array of [long](/API_docs/types/long.html) | Yes|List of deleted message IDs| + + + +### Type: [DecryptedMessageAction](/API_docs/types/DecryptedMessageAction.html) + + +### Example: + +``` +$decryptedMessageActionDeleteMessages_8 = ['_' => 'decryptedMessageActionDeleteMessages', 'random_ids' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageActionFlushHistory_8.md b/docs/API_docs/constructors/decryptedMessageActionFlushHistory_8.md new file mode 100644 index 0000000000..eeb4633ab0 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageActionFlushHistory_8.md @@ -0,0 +1,24 @@ +--- +title: "decryptedMessageActionFlushHistory" +description: "The entire message history has been deleted." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageActionFlushHistory\_8 +[Back to constructors index](/API_docs/constructors/index.html) + + + +The entire message history has been deleted. + + + + +### Type: [DecryptedMessageAction](/API_docs/types/DecryptedMessageAction.html) + + +### Example: + +``` +$decryptedMessageActionFlushHistory_8 = ['_' => 'decryptedMessageActionFlushHistory']; +``` diff --git a/docs/API_docs/constructors/decryptedMessageActionNoop_20.md b/docs/API_docs/constructors/decryptedMessageActionNoop_20.md new file mode 100644 index 0000000000..5405c70fb7 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageActionNoop_20.md @@ -0,0 +1,24 @@ +--- +title: "decryptedMessageActionNoop" +description: "NOOP action" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageActionNoop\_20 +[Back to constructors index](/API_docs/constructors/index.html) + + + +NOOP action + + + + +### Type: [DecryptedMessageAction](/API_docs/types/DecryptedMessageAction.html) + + +### Example: + +``` +$decryptedMessageActionNoop_20 = ['_' => 'decryptedMessageActionNoop']; +``` diff --git a/docs/API_docs/constructors/decryptedMessageActionNotifyLayer_17.md b/docs/API_docs/constructors/decryptedMessageActionNotifyLayer_17.md new file mode 100644 index 0000000000..37c511b09c --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageActionNotifyLayer_17.md @@ -0,0 +1,29 @@ +--- +title: "decryptedMessageActionNotifyLayer" +description: "A notification stating the API layer that is used by the client. You should use your current layer and take notice of the layer used on the other side of a conversation when sending messages." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageActionNotifyLayer\_17 +[Back to constructors index](/API_docs/constructors/index.html) + + + +A notification stating the API layer that is used by the client. You should use your current layer and take notice of the layer used on the other side of a conversation when sending messages. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|layer|[int](/API_docs/types/int.html) | Yes|Layer number, must be **17** or higher (this constructor was introduced in Layer 17.| + + + +### Type: [DecryptedMessageAction](/API_docs/types/DecryptedMessageAction.html) + + +### Example: + +``` +$decryptedMessageActionNotifyLayer_17 = ['_' => 'decryptedMessageActionNotifyLayer', 'layer' => int]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageActionReadMessages_8.md b/docs/API_docs/constructors/decryptedMessageActionReadMessages_8.md new file mode 100644 index 0000000000..56528494e4 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageActionReadMessages_8.md @@ -0,0 +1,29 @@ +--- +title: "decryptedMessageActionReadMessages" +description: "Messages marked as read." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageActionReadMessages\_8 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Messages marked as read. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|random\_ids|Array of [long](/API_docs/types/long.html) | Yes|List of message IDs| + + + +### Type: [DecryptedMessageAction](/API_docs/types/DecryptedMessageAction.html) + + +### Example: + +``` +$decryptedMessageActionReadMessages_8 = ['_' => 'decryptedMessageActionReadMessages', 'random_ids' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageActionRequestKey_20.md b/docs/API_docs/constructors/decryptedMessageActionRequestKey_20.md new file mode 100644 index 0000000000..3748d6eb96 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageActionRequestKey_20.md @@ -0,0 +1,30 @@ +--- +title: "decryptedMessageActionRequestKey" +description: "Request rekeying, see rekeying process" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageActionRequestKey\_20 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Request rekeying, see [rekeying process](https://core.telegram.org/api/end-to-end/pfs) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|exchange\_id|[long](/API_docs/types/long.html) | Yes|Exchange ID| +|g\_a|[bytes](/API_docs/types/bytes.html) | Yes|g\_a, see [rekeying process](https://core.telegram.org/api/end-to-end/pfs)| + + + +### Type: [DecryptedMessageAction](/API_docs/types/DecryptedMessageAction.html) + + +### Example: + +``` +$decryptedMessageActionRequestKey_20 = ['_' => 'decryptedMessageActionRequestKey', 'exchange_id' => long, 'g_a' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/decryptedMessageActionResend_17.md b/docs/API_docs/constructors/decryptedMessageActionResend_17.md new file mode 100644 index 0000000000..c291d49032 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageActionResend_17.md @@ -0,0 +1,30 @@ +--- +title: "decryptedMessageActionResend" +description: "Request for the other party in a Secret Chat to automatically resend a contiguous range of previously sent messages, as explained in Sequence number is Secret Chats." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageActionResend\_17 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Request for the other party in a Secret Chat to automatically resend a contiguous range of previously sent messages, as explained in [Sequence number is Secret Chats](https://core.telegram.org/api/end-to-end/seq_no). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|start\_seq\_no|[int](/API_docs/types/int.html) | Yes|`out_seq_no` of the first message to be resent, with correct parity| +|end\_seq\_no|[int](/API_docs/types/int.html) | Yes|`out_seq_no` of the last message to be resent, with same parity.| + + + +### Type: [DecryptedMessageAction](/API_docs/types/DecryptedMessageAction.html) + + +### Example: + +``` +$decryptedMessageActionResend_17 = ['_' => 'decryptedMessageActionResend', 'start_seq_no' => int, 'end_seq_no' => int]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageActionScreenshotMessages_8.md b/docs/API_docs/constructors/decryptedMessageActionScreenshotMessages_8.md new file mode 100644 index 0000000000..d37a6c1fbb --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageActionScreenshotMessages_8.md @@ -0,0 +1,29 @@ +--- +title: "decryptedMessageActionScreenshotMessages" +description: "A screenshot was taken." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageActionScreenshotMessages\_8 +[Back to constructors index](/API_docs/constructors/index.html) + + + +A screenshot was taken. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|random\_ids|Array of [long](/API_docs/types/long.html) | Yes|List of affected message ids (that appeared on the screenshot)| + + + +### Type: [DecryptedMessageAction](/API_docs/types/DecryptedMessageAction.html) + + +### Example: + +``` +$decryptedMessageActionScreenshotMessages_8 = ['_' => 'decryptedMessageActionScreenshotMessages', 'random_ids' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageActionSetMessageTTL_8.md b/docs/API_docs/constructors/decryptedMessageActionSetMessageTTL_8.md new file mode 100644 index 0000000000..9bf9241aef --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageActionSetMessageTTL_8.md @@ -0,0 +1,31 @@ +--- +title: "decryptedMessageActionSetMessageTTL" +description: "Setting of a message lifetime after reading." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageActionSetMessageTTL\_8 +[Back to constructors index](/API_docs/constructors/index.html) + + + +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. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|ttl\_seconds|[int](/API_docs/types/int.html) | Yes|Lifetime in seconds| + + + +### Type: [DecryptedMessageAction](/API_docs/types/DecryptedMessageAction.html) + + +### Example: + +``` +$decryptedMessageActionSetMessageTTL_8 = ['_' => 'decryptedMessageActionSetMessageTTL', 'ttl_seconds' => int]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageActionTyping_17.md b/docs/API_docs/constructors/decryptedMessageActionTyping_17.md new file mode 100644 index 0000000000..876038580b --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageActionTyping_17.md @@ -0,0 +1,29 @@ +--- +title: "decryptedMessageActionTyping" +description: "User is preparing a message: typing, recording, uploading, etc." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageActionTyping\_17 +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is preparing a message: typing, recording, uploading, etc. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|action|[SendMessageAction](/API_docs/types/SendMessageAction.html) | Yes|Type of action| + + + +### Type: [DecryptedMessageAction](/API_docs/types/DecryptedMessageAction.html) + + +### Example: + +``` +$decryptedMessageActionTyping_17 = ['_' => 'decryptedMessageActionTyping', 'action' => SendMessageAction]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageLayer_17.md b/docs/API_docs/constructors/decryptedMessageLayer_17.md new file mode 100644 index 0000000000..2c8910bb47 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageLayer_17.md @@ -0,0 +1,32 @@ +--- +title: "decryptedMessageLayer" +description: "Sets the layer number for the contents of an encrypted message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageLayer\_17 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Sets the layer number for the contents of an encrypted message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|layer|[int](/API_docs/types/int.html) | Yes|Layer number. Mimimal value - **17** (the layer in which the constructor was added).| +|in\_seq\_no|[int](/API_docs/types/int.html) | Yes|2x the number of messages in the sender's inbox (including deleted and service messages), incremented by 1 if current user was not the chat creator
Parameter added in Layer 17.| +|out\_seq\_no|[int](/API_docs/types/int.html) | Yes|2x the number of messages in the recipient's inbox (including deleted and service messages), incremented by 1 if current user was the chat creator
Parameter added in Layer 17.| +|message|[DecryptedMessage](/API_docs/types/DecryptedMessage.html) | Yes|The content of message itself| + + + +### Type: [DecryptedMessageLayer](/API_docs/types/DecryptedMessageLayer.html) + + +### Example: + +``` +$decryptedMessageLayer_17 = ['_' => 'decryptedMessageLayer', 'layer' => int, 'in_seq_no' => int, 'out_seq_no' => int, 'message' => DecryptedMessage]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageMediaAudio_17.md b/docs/API_docs/constructors/decryptedMessageMediaAudio_17.md new file mode 100644 index 0000000000..fe15160883 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageMediaAudio_17.md @@ -0,0 +1,31 @@ +--- +title: "decryptedMessageMediaAudio" +description: "Audio file attached to a secret chat message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageMediaAudio\_17 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Audio file attached to a secret chat message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|duration|[int](/API_docs/types/int.html) | Yes|Audio duration in seconds| +|mime\_type|[string](/API_docs/types/string.html) | Yes|MIME-type of the audio file
Parameter added in Layer 13.| +|size|[int](/API_docs/types/int.html) | Yes|File size| + + + +### Type: [DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) + + +### Example: + +``` +$decryptedMessageMediaAudio_17 = ['_' => 'decryptedMessageMediaAudio', 'duration' => int, 'mime_type' => 'string', 'size' => int]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageMediaAudio_8.md b/docs/API_docs/constructors/decryptedMessageMediaAudio_8.md new file mode 100644 index 0000000000..24b66043e9 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageMediaAudio_8.md @@ -0,0 +1,30 @@ +--- +title: "decryptedMessageMediaAudio" +description: "Audio file attached to a secret chat message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageMediaAudio\_8 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Audio file attached to a secret chat message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|duration|[int](/API_docs/types/int.html) | Yes|Audio duration in seconds| +|size|[int](/API_docs/types/int.html) | Yes|File size| + + + +### Type: [DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) + + +### Example: + +``` +$decryptedMessageMediaAudio_8 = ['_' => 'decryptedMessageMediaAudio', 'duration' => int, 'size' => int]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageMediaContact_8.md b/docs/API_docs/constructors/decryptedMessageMediaContact_8.md new file mode 100644 index 0000000000..1509a35a6f --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageMediaContact_8.md @@ -0,0 +1,32 @@ +--- +title: "decryptedMessageMediaContact" +description: "Contact attached to an encrypted message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageMediaContact\_8 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contact attached to an encrypted message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|phone\_number|[string](/API_docs/types/string.html) | Yes|Phone number| +|first\_name|[string](/API_docs/types/string.html) | Yes|Contact's first name| +|last\_name|[string](/API_docs/types/string.html) | Yes|Contact's last name| +|user\_id|[int](/API_docs/types/int.html) | Yes|Telegram User ID of signed-up contact| + + + +### Type: [DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) + + +### Example: + +``` +$decryptedMessageMediaContact_8 = ['_' => 'decryptedMessageMediaContact', 'phone_number' => 'string', 'first_name' => 'string', 'last_name' => 'string', 'user_id' => int]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageMediaDocument_143.md b/docs/API_docs/constructors/decryptedMessageMediaDocument_143.md new file mode 100644 index 0000000000..9fc08612b9 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageMediaDocument_143.md @@ -0,0 +1,35 @@ +--- +title: "decryptedMessageMediaDocument" +description: "Document attached to a message in a secret chat." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageMediaDocument\_143 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Document attached to a message in a secret chat. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|thumb|[bytes](/API_docs/types/bytes.html) | Yes|Thumbnail-file contents (JPEG-file, quality 55, set in a 90x90 square)| +|thumb\_w|[int](/API_docs/types/int.html) | Yes|Thumbnail width| +|thumb\_h|[int](/API_docs/types/int.html) | Yes|Thumbnail height| +|mime\_type|[string](/API_docs/types/string.html) | Yes|File MIME-type| +|size|[long](/API_docs/types/long.html) | Yes| +|attributes|Array of [DocumentAttribute](/API_docs/types/DocumentAttribute.html) | Yes|Document attributes for media types| +|caption|[string](/API_docs/types/string.html) | Yes|Caption| + + + +### Type: [DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) + + +### Example: + +``` +$decryptedMessageMediaDocument_143 = ['_' => 'decryptedMessageMediaDocument', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'mime_type' => 'string', 'size' => long, 'attributes' => [DocumentAttribute, DocumentAttribute], 'caption' => 'string']; +``` diff --git a/docs/API_docs/constructors/decryptedMessageMediaDocument_45.md b/docs/API_docs/constructors/decryptedMessageMediaDocument_45.md new file mode 100644 index 0000000000..f390eb12e1 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageMediaDocument_45.md @@ -0,0 +1,35 @@ +--- +title: "decryptedMessageMediaDocument" +description: "Document attached to a message in a secret chat." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageMediaDocument\_45 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Document attached to a message in a secret chat. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|thumb|[bytes](/API_docs/types/bytes.html) | Yes|Thumbnail-file contents (JPEG-file, quality 55, set in a 90x90 square)| +|thumb\_w|[int](/API_docs/types/int.html) | Yes|Thumbnail width| +|thumb\_h|[int](/API_docs/types/int.html) | Yes|Thumbnail height| +|mime\_type|[string](/API_docs/types/string.html) | Yes|File MIME-type| +|size|[int](/API_docs/types/int.html) | Yes| +|attributes|Array of [DocumentAttribute](/API_docs/types/DocumentAttribute.html) | Yes|Document attributes for media types| +|caption|[string](/API_docs/types/string.html) | Yes|Caption| + + + +### Type: [DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) + + +### Example: + +``` +$decryptedMessageMediaDocument_45 = ['_' => 'decryptedMessageMediaDocument', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'mime_type' => 'string', 'size' => int, 'attributes' => [DocumentAttribute, DocumentAttribute], 'caption' => 'string']; +``` diff --git a/docs/API_docs/constructors/decryptedMessageMediaDocument_8.md b/docs/API_docs/constructors/decryptedMessageMediaDocument_8.md new file mode 100644 index 0000000000..5bd3939854 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageMediaDocument_8.md @@ -0,0 +1,34 @@ +--- +title: "decryptedMessageMediaDocument" +description: "Document attached to a message in a secret chat." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageMediaDocument\_8 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Document attached to a message in a secret chat. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|thumb|[bytes](/API_docs/types/bytes.html) | Yes|Thumbnail-file contents (JPEG-file, quality 55, set in a 90x90 square)| +|thumb\_w|[int](/API_docs/types/int.html) | Yes|Thumbnail width| +|thumb\_h|[int](/API_docs/types/int.html) | Yes|Thumbnail height| +|file\_name|[string](/API_docs/types/string.html) | Yes| +|mime\_type|[string](/API_docs/types/string.html) | Yes|File MIME-type| +|size|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) + + +### Example: + +``` +$decryptedMessageMediaDocument_8 = ['_' => 'decryptedMessageMediaDocument', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'file_name' => 'string', 'mime_type' => 'string', 'size' => int]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageMediaEmpty_8.md b/docs/API_docs/constructors/decryptedMessageMediaEmpty_8.md new file mode 100644 index 0000000000..8e9d61309b --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageMediaEmpty_8.md @@ -0,0 +1,24 @@ +--- +title: "decryptedMessageMediaEmpty" +description: "Empty constructor, no media content." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageMediaEmpty\_8 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor, no media content. + + + + +### Type: [DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) + + +### Example: + +``` +$decryptedMessageMediaEmpty_8 = ['_' => 'decryptedMessageMediaEmpty']; +``` diff --git a/docs/API_docs/constructors/decryptedMessageMediaExternalDocument_23.md b/docs/API_docs/constructors/decryptedMessageMediaExternalDocument_23.md new file mode 100644 index 0000000000..d47ea44e4e --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageMediaExternalDocument_23.md @@ -0,0 +1,36 @@ +--- +title: "decryptedMessageMediaExternalDocument" +description: "Non-e2e documented forwarded from non-secret chat" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageMediaExternalDocument\_23 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Non-e2e documented forwarded from non-secret chat + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Document ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|access hash| +|date|[int](/API_docs/types/int.html) | Yes|Date| +|mime\_type|[string](/API_docs/types/string.html) | Yes|Mime type| +|size|[int](/API_docs/types/int.html) | Yes|Size| +|thumb|[PhotoSize](/API_docs/types/PhotoSize.html) | Optional|Thumbnail| +|dc\_id|[int](/API_docs/types/int.html) | Yes|DC ID| +|attributes|Array of [DocumentAttribute](/API_docs/types/DocumentAttribute.html) | Yes|Attributes for media types| + + + +### Type: [DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) + + +### Example: + +``` +$decryptedMessageMediaExternalDocument_23 = ['_' => 'decryptedMessageMediaExternalDocument', 'id' => long, 'access_hash' => long, 'date' => int, 'mime_type' => 'string', 'size' => int, 'thumb' => PhotoSize, 'dc_id' => int, 'attributes' => [DocumentAttribute, DocumentAttribute]]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageMediaGeoPoint_8.md b/docs/API_docs/constructors/decryptedMessageMediaGeoPoint_8.md new file mode 100644 index 0000000000..edf2753227 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageMediaGeoPoint_8.md @@ -0,0 +1,30 @@ +--- +title: "decryptedMessageMediaGeoPoint" +description: "GeoPoint attached to an encrypted message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageMediaGeoPoint\_8 +[Back to constructors index](/API_docs/constructors/index.html) + + + +GeoPoint attached to an encrypted message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|lat|[double](/API_docs/types/double.html) | Yes|Latitude of point| +|long|[double](/API_docs/types/double.html) | Yes|Longitude of point| + + + +### Type: [DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) + + +### Example: + +``` +$decryptedMessageMediaGeoPoint_8 = ['_' => 'decryptedMessageMediaGeoPoint', 'lat' => double, 'long' => double]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageMediaPhoto_45.md b/docs/API_docs/constructors/decryptedMessageMediaPhoto_45.md new file mode 100644 index 0000000000..ceee87d35f --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageMediaPhoto_45.md @@ -0,0 +1,35 @@ +--- +title: "decryptedMessageMediaPhoto" +description: "Photo attached to an encrypted message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageMediaPhoto\_45 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Photo attached to an encrypted message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|thumb|[bytes](/API_docs/types/bytes.html) | Yes|Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90)| +|thumb\_w|[int](/API_docs/types/int.html) | Yes|Thumbnail width| +|thumb\_h|[int](/API_docs/types/int.html) | Yes|Thumbnail height| +|w|[int](/API_docs/types/int.html) | Yes|Photo width| +|h|[int](/API_docs/types/int.html) | Yes|Photo height| +|size|[int](/API_docs/types/int.html) | Yes|Size of the photo in bytes| +|caption|[string](/API_docs/types/string.html) | Yes|Caption| + + + +### Type: [DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) + + +### Example: + +``` +$decryptedMessageMediaPhoto_45 = ['_' => 'decryptedMessageMediaPhoto', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'w' => int, 'h' => int, 'size' => int, 'caption' => 'string']; +``` diff --git a/docs/API_docs/constructors/decryptedMessageMediaPhoto_8.md b/docs/API_docs/constructors/decryptedMessageMediaPhoto_8.md new file mode 100644 index 0000000000..e1bc208cd5 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageMediaPhoto_8.md @@ -0,0 +1,34 @@ +--- +title: "decryptedMessageMediaPhoto" +description: "Photo attached to an encrypted message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageMediaPhoto\_8 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Photo attached to an encrypted message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|thumb|[bytes](/API_docs/types/bytes.html) | Yes|Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90)| +|thumb\_w|[int](/API_docs/types/int.html) | Yes|Thumbnail width| +|thumb\_h|[int](/API_docs/types/int.html) | Yes|Thumbnail height| +|w|[int](/API_docs/types/int.html) | Yes|Photo width| +|h|[int](/API_docs/types/int.html) | Yes|Photo height| +|size|[int](/API_docs/types/int.html) | Yes|Size of the photo in bytes| + + + +### Type: [DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) + + +### Example: + +``` +$decryptedMessageMediaPhoto_8 = ['_' => 'decryptedMessageMediaPhoto', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'w' => int, 'h' => int, 'size' => int]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageMediaVenue_45.md b/docs/API_docs/constructors/decryptedMessageMediaVenue_45.md new file mode 100644 index 0000000000..d28f7dcb85 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageMediaVenue_45.md @@ -0,0 +1,34 @@ +--- +title: "decryptedMessageMediaVenue" +description: "Venue" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageMediaVenue\_45 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Venue + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|lat|[double](/API_docs/types/double.html) | Yes|Latitude of venue| +|long|[double](/API_docs/types/double.html) | Yes|Longitude of venue| +|title|[string](/API_docs/types/string.html) | Yes|Venue name| +|address|[string](/API_docs/types/string.html) | Yes|Address| +|provider|[string](/API_docs/types/string.html) | Yes|Venue provider: currently only "foursquare" and "gplaces" (Google Places) need to be supported| +|venue\_id|[string](/API_docs/types/string.html) | Yes|Venue ID in the provider's database| + + + +### Type: [DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) + + +### Example: + +``` +$decryptedMessageMediaVenue_45 = ['_' => 'decryptedMessageMediaVenue', 'lat' => double, 'long' => double, 'title' => 'string', 'address' => 'string', 'provider' => 'string', 'venue_id' => 'string']; +``` diff --git a/docs/API_docs/constructors/decryptedMessageMediaVideo_17.md b/docs/API_docs/constructors/decryptedMessageMediaVideo_17.md new file mode 100644 index 0000000000..fa1b19d05e --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageMediaVideo_17.md @@ -0,0 +1,36 @@ +--- +title: "decryptedMessageMediaVideo" +description: "Video attached to an encrypted message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageMediaVideo\_17 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Video attached to an encrypted message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|thumb|[bytes](/API_docs/types/bytes.html) | Yes|Content of thumbnail file (JPEG file, quality 55, set in a square 90x90)| +|thumb\_w|[int](/API_docs/types/int.html) | Yes|Thumbnail width| +|thumb\_h|[int](/API_docs/types/int.html) | Yes|Thumbnail height| +|duration|[int](/API_docs/types/int.html) | Yes|Duration of video in seconds| +|mime\_type|[string](/API_docs/types/string.html) | Yes|MIME-type of the video file
Parameter added in Layer 17.| +|w|[int](/API_docs/types/int.html) | Yes|Image width| +|h|[int](/API_docs/types/int.html) | Yes|Image height| +|size|[int](/API_docs/types/int.html) | Yes|File size| + + + +### Type: [DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) + + +### Example: + +``` +$decryptedMessageMediaVideo_17 = ['_' => 'decryptedMessageMediaVideo', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'duration' => int, 'mime_type' => 'string', 'w' => int, 'h' => int, 'size' => int]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageMediaVideo_45.md b/docs/API_docs/constructors/decryptedMessageMediaVideo_45.md new file mode 100644 index 0000000000..534d2ac0d6 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageMediaVideo_45.md @@ -0,0 +1,37 @@ +--- +title: "decryptedMessageMediaVideo" +description: "Video attached to an encrypted message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageMediaVideo\_45 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Video attached to an encrypted message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|thumb|[bytes](/API_docs/types/bytes.html) | Yes|Content of thumbnail file (JPEG file, quality 55, set in a square 90x90)| +|thumb\_w|[int](/API_docs/types/int.html) | Yes|Thumbnail width| +|thumb\_h|[int](/API_docs/types/int.html) | Yes|Thumbnail height| +|duration|[int](/API_docs/types/int.html) | Yes|Duration of video in seconds| +|mime\_type|[string](/API_docs/types/string.html) | Yes|MIME-type of the video file
Parameter added in Layer 17.| +|w|[int](/API_docs/types/int.html) | Yes|Image width| +|h|[int](/API_docs/types/int.html) | Yes|Image height| +|size|[int](/API_docs/types/int.html) | Yes|File size| +|caption|[string](/API_docs/types/string.html) | Yes|Caption| + + + +### Type: [DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) + + +### Example: + +``` +$decryptedMessageMediaVideo_45 = ['_' => 'decryptedMessageMediaVideo', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'duration' => int, 'mime_type' => 'string', 'w' => int, 'h' => int, 'size' => int, 'caption' => 'string']; +``` diff --git a/docs/API_docs/constructors/decryptedMessageMediaVideo_8.md b/docs/API_docs/constructors/decryptedMessageMediaVideo_8.md new file mode 100644 index 0000000000..cc0dcee547 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageMediaVideo_8.md @@ -0,0 +1,35 @@ +--- +title: "decryptedMessageMediaVideo" +description: "Video attached to an encrypted message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageMediaVideo\_8 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Video attached to an encrypted message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|thumb|[bytes](/API_docs/types/bytes.html) | Yes|Content of thumbnail file (JPEG file, quality 55, set in a square 90x90)| +|thumb\_w|[int](/API_docs/types/int.html) | Yes|Thumbnail width| +|thumb\_h|[int](/API_docs/types/int.html) | Yes|Thumbnail height| +|duration|[int](/API_docs/types/int.html) | Yes|Duration of video in seconds| +|w|[int](/API_docs/types/int.html) | Yes|Image width| +|h|[int](/API_docs/types/int.html) | Yes|Image height| +|size|[int](/API_docs/types/int.html) | Yes|File size| + + + +### Type: [DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) + + +### Example: + +``` +$decryptedMessageMediaVideo_8 = ['_' => 'decryptedMessageMediaVideo', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'duration' => int, 'w' => int, 'h' => int, 'size' => int]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageMediaWebPage_45.md b/docs/API_docs/constructors/decryptedMessageMediaWebPage_45.md new file mode 100644 index 0000000000..d160c62267 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageMediaWebPage_45.md @@ -0,0 +1,29 @@ +--- +title: "decryptedMessageMediaWebPage" +description: "Webpage preview" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageMediaWebPage\_45 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Webpage preview + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|URL of webpage| + + + +### Type: [DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) + + +### Example: + +``` +$decryptedMessageMediaWebPage_45 = ['_' => 'decryptedMessageMediaWebPage', 'url' => 'string']; +``` diff --git a/docs/API_docs/constructors/decryptedMessageService_17.md b/docs/API_docs/constructors/decryptedMessageService_17.md new file mode 100644 index 0000000000..83b4b53068 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageService_17.md @@ -0,0 +1,29 @@ +--- +title: "decryptedMessageService" +description: "Contents of an encrypted service message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageService\_17 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contents of an encrypted service message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|action|[DecryptedMessageAction](/API_docs/types/DecryptedMessageAction.html) | Yes|Action relevant to the service message| + + + +### Type: [DecryptedMessage](/API_docs/types/DecryptedMessage.html) + + +### Example: + +``` +$decryptedMessageService_17 = ['_' => 'decryptedMessageService', 'action' => DecryptedMessageAction]; +``` diff --git a/docs/API_docs/constructors/decryptedMessageService_8.md b/docs/API_docs/constructors/decryptedMessageService_8.md new file mode 100644 index 0000000000..ff46e54e85 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessageService_8.md @@ -0,0 +1,29 @@ +--- +title: "decryptedMessageService" +description: "Contents of an encrypted service message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessageService\_8 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contents of an encrypted service message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|action|[DecryptedMessageAction](/API_docs/types/DecryptedMessageAction.html) | Yes|Action relevant to the service message| + + + +### Type: [DecryptedMessage](/API_docs/types/DecryptedMessage.html) + + +### Example: + +``` +$decryptedMessageService_8 = ['_' => 'decryptedMessageService', 'action' => DecryptedMessageAction]; +``` diff --git a/docs/API_docs/constructors/decryptedMessage_17.md b/docs/API_docs/constructors/decryptedMessage_17.md new file mode 100644 index 0000000000..32ccade83f --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessage_17.md @@ -0,0 +1,31 @@ +--- +title: "decryptedMessage" +description: "Contents of an encrypted message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessage\_17 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contents of an encrypted message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|ttl|[int](/API_docs/types/int.html) | Yes|Message lifetime. Has higher priority than [decryptedMessageActionSetMessageTTL](../constructors/decryptedMessageActionSetMessageTTL.html).
Parameter added in Layer 17.| +|message|[string](/API_docs/types/string.html) | Yes|Message text| +|media|[DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) | Yes|Media content| + + + +### Type: [DecryptedMessage](/API_docs/types/DecryptedMessage.html) + + +### Example: + +``` +$decryptedMessage_17 = ['_' => 'decryptedMessage', 'ttl' => int, 'message' => 'string', 'media' => DecryptedMessageMedia]; +``` diff --git a/docs/API_docs/constructors/decryptedMessage_45.md b/docs/API_docs/constructors/decryptedMessage_45.md new file mode 100644 index 0000000000..9d7dfd2dcf --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessage_45.md @@ -0,0 +1,95 @@ +--- +title: "decryptedMessage" +description: "Contents of an encrypted message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessage\_45 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contents of an encrypted message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|ttl|[int](/API_docs/types/int.html) | Yes|Message lifetime. Has higher priority than [decryptedMessageActionSetMessageTTL](../constructors/decryptedMessageActionSetMessageTTL.html).
Parameter added in Layer 17.| +|message|[string](/API_docs/types/string.html) | Yes|Message text| +|media|[DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) | Optional|Media content| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|Message [entities](https://core.telegram.org/api/entities) for styled text (parameter added in layer 45)| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|via\_bot\_name|[string](/API_docs/types/string.html) | Optional|Specifies the ID of the inline bot that generated the message (parameter added in layer 45)| +|reply\_to\_random\_id|[long](/API_docs/types/long.html) | Optional|Random message ID of the message this message replies to (parameter added in layer 45)| + + + +### Type: [DecryptedMessage](/API_docs/types/DecryptedMessage.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$decryptedMessage_45 = ['_' => 'decryptedMessage', 'ttl' => int, 'message' => 'string', 'media' => DecryptedMessageMedia, 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'via_bot_name' => 'string', 'reply_to_random_id' => long]; +``` diff --git a/docs/API_docs/constructors/decryptedMessage_73.md b/docs/API_docs/constructors/decryptedMessage_73.md new file mode 100644 index 0000000000..127a4c74cb --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessage_73.md @@ -0,0 +1,98 @@ +--- +title: "decryptedMessage" +description: "Contents of an encrypted message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessage\_73 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contents of an encrypted message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|no\_webpage|[Bool](/API_docs/types/Bool.html) | Optional|Whether the webpage preview is disabled| +|silent|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a silent message (no notification triggered)| +|ttl|[int](/API_docs/types/int.html) | Yes|Message lifetime. Has higher priority than [decryptedMessageActionSetMessageTTL](../constructors/decryptedMessageActionSetMessageTTL.html).
Parameter added in Layer 17.| +|message|[string](/API_docs/types/string.html) | Yes|Message text| +|media|[DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) | Optional|Media content| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|Message [entities](https://core.telegram.org/api/entities) for styled text (parameter added in layer 45)| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|via\_bot\_name|[string](/API_docs/types/string.html) | Optional|Specifies the ID of the inline bot that generated the message (parameter added in layer 45)| +|reply\_to\_random\_id|[long](/API_docs/types/long.html) | Optional|Random message ID of the message this message replies to (parameter added in layer 45)| +|grouped\_id|[long](/API_docs/types/long.html) | Optional|Random 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](https://core.telegram.org/api/files#albums-grouped-media) (parameter added in layer 45)| + + + +### Type: [DecryptedMessage](/API_docs/types/DecryptedMessage.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$decryptedMessage_73 = ['_' => 'decryptedMessage', 'no_webpage' => Bool, 'silent' => Bool, 'ttl' => int, 'message' => 'string', 'media' => DecryptedMessageMedia, 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'via_bot_name' => 'string', 'reply_to_random_id' => long, 'grouped_id' => long]; +``` diff --git a/docs/API_docs/constructors/decryptedMessage_8.md b/docs/API_docs/constructors/decryptedMessage_8.md new file mode 100644 index 0000000000..4cc0b297a0 --- /dev/null +++ b/docs/API_docs/constructors/decryptedMessage_8.md @@ -0,0 +1,30 @@ +--- +title: "decryptedMessage" +description: "Contents of an encrypted message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: decryptedMessage\_8 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contents of an encrypted message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|message|[string](/API_docs/types/string.html) | Yes|Message text| +|media|[DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) | Yes|Media content| + + + +### Type: [DecryptedMessage](/API_docs/types/DecryptedMessage.html) + + +### Example: + +``` +$decryptedMessage_8 = ['_' => 'decryptedMessage', 'message' => 'string', 'media' => DecryptedMessageMedia]; +``` diff --git a/docs/API_docs/constructors/defaultHistoryTTL.md b/docs/API_docs/constructors/defaultHistoryTTL.md new file mode 100644 index 0000000000..c6fc99c049 --- /dev/null +++ b/docs/API_docs/constructors/defaultHistoryTTL.md @@ -0,0 +1,29 @@ +--- +title: "defaultHistoryTTL" +description: "Contains info about the default value of the Time-To-Live setting, applied to all new chats." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: defaultHistoryTTL +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains info about the default value of the Time-To-Live setting, applied to all new chats. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|period|[int](/API_docs/types/int.html) | Yes|Time-To-Live setting applied to all new chats.| + + + +### Type: [DefaultHistoryTTL](/API_docs/types/DefaultHistoryTTL.html) + + +### Example: + +``` +$defaultHistoryTTL = ['_' => 'defaultHistoryTTL', 'period' => int]; +``` diff --git a/docs/API_docs/constructors/dialog.md b/docs/API_docs/constructors/dialog.md new file mode 100644 index 0000000000..58c87cfdcf --- /dev/null +++ b/docs/API_docs/constructors/dialog.md @@ -0,0 +1,43 @@ +--- +title: "dialog" +description: "Chat" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: dialog +[Back to constructors index](/API_docs/constructors/index.html) + + + +Chat + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|pinned|[Bool](/API_docs/types/Bool.html) | Optional|Is the dialog pinned| +|unread\_mark|[Bool](/API_docs/types/Bool.html) | Optional|Whether the chat was manually marked as unread| +|view\_forum\_as\_messages|[Bool](/API_docs/types/Bool.html) | Optional|Users may also choose to display messages from all topics of a [forum](https://core.telegram.org/api/forum) as if they were sent to a normal group, using a "View as messages" setting in the local client.
This setting only affects the current account, and is synced to other logged in sessions using the [channels.toggleViewForumAsMessages](../methods/channels.toggleViewForumAsMessages.html) method; invoking this method will update the value of this flag.| +|peer|[long](/API_docs/types/long.html) | Yes|The chat| +|top\_message|[int](/API_docs/types/int.html) | Yes|The latest message ID| +|read\_inbox\_max\_id|[int](/API_docs/types/int.html) | Yes|Position up to which all incoming messages are read.| +|read\_outbox\_max\_id|[int](/API_docs/types/int.html) | Yes|Position up to which all outgoing messages are read.| +|unread\_count|[int](/API_docs/types/int.html) | Yes|Number of unread messages| +|unread\_mentions\_count|[int](/API_docs/types/int.html) | Yes|Number of [unread mentions](https://core.telegram.org/api/mentions)| +|unread\_reactions\_count|[int](/API_docs/types/int.html) | Yes|Number of unread reactions to messages you sent| +|notify\_settings|[PeerNotifySettings](/API_docs/types/PeerNotifySettings.html) | Yes|Notification settings| +|pts|[int](/API_docs/types/int.html) | Optional|[PTS](https://core.telegram.org/api/updates)| +|draft|[DraftMessage](/API_docs/types/DraftMessage.html) | Optional|Message [draft](https://core.telegram.org/api/drafts)| +|folder\_id|[int](/API_docs/types/int.html) | Optional|[Peer folder ID, for more info click here](https://core.telegram.org/api/folders#peer-folders)| +|ttl\_period|[int](/API_docs/types/int.html) | Optional|Time-to-live of all messages sent in this dialog| + + + +### Type: [Dialog](/API_docs/types/Dialog.html) + + +### Example: + +``` +$dialog = ['_' => 'dialog', 'pinned' => Bool, 'unread_mark' => Bool, 'view_forum_as_messages' => Bool, 'peer' => long, 'top_message' => int, 'read_inbox_max_id' => int, 'read_outbox_max_id' => int, 'unread_count' => int, 'unread_mentions_count' => int, 'unread_reactions_count' => int, 'notify_settings' => PeerNotifySettings, 'pts' => int, 'draft' => DraftMessage, 'folder_id' => int, 'ttl_period' => int]; +``` diff --git a/docs/API_docs/constructors/dialogFilter.md b/docs/API_docs/constructors/dialogFilter.md new file mode 100644 index 0000000000..97ce57ee5a --- /dev/null +++ b/docs/API_docs/constructors/dialogFilter.md @@ -0,0 +1,43 @@ +--- +title: "dialogFilter" +description: "Dialog filter AKA folder" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: dialogFilter +[Back to constructors index](/API_docs/constructors/index.html) + + + +Dialog filter AKA [folder](https://core.telegram.org/api/folders) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|contacts|[Bool](/API_docs/types/Bool.html) | Optional|Whether to include all contacts in this [folder](https://core.telegram.org/api/folders)| +|non\_contacts|[Bool](/API_docs/types/Bool.html) | Optional|Whether to include all non-contacts in this [folder](https://core.telegram.org/api/folders)| +|groups|[Bool](/API_docs/types/Bool.html) | Optional|Whether to include all groups in this [folder](https://core.telegram.org/api/folders)| +|broadcasts|[Bool](/API_docs/types/Bool.html) | Optional|Whether to include all channels in this [folder](https://core.telegram.org/api/folders)| +|bots|[Bool](/API_docs/types/Bool.html) | Optional|Whether to include all bots in this [folder](https://core.telegram.org/api/folders)| +|exclude\_muted|[Bool](/API_docs/types/Bool.html) | Optional|Whether to exclude muted chats from this [folder](https://core.telegram.org/api/folders)| +|exclude\_read|[Bool](/API_docs/types/Bool.html) | Optional|Whether to exclude read chats from this [folder](https://core.telegram.org/api/folders)| +|exclude\_archived|[Bool](/API_docs/types/Bool.html) | Optional|Whether to exclude archived chats from this [folder](https://core.telegram.org/api/folders)| +|id|[int](/API_docs/types/int.html) | Yes|[Folder](https://core.telegram.org/api/folders) ID| +|title|[string](/API_docs/types/string.html) | Yes|[Folder](https://core.telegram.org/api/folders) name| +|emoticon|[string](/API_docs/types/string.html) | Optional|Emoji to use as icon for the folder.| +|color|[int](/API_docs/types/int.html) | Optional| +|pinned\_peers|Array of [InputPeer](/API_docs/types/InputPeer.html) | Yes|Pinned chats, [folders](https://core.telegram.org/api/folders) can have unlimited pinned chats| +|include\_peers|Array of [InputPeer](/API_docs/types/InputPeer.html) | Yes|Include the following chats in this [folder](https://core.telegram.org/api/folders)| +|exclude\_peers|Array of [InputPeer](/API_docs/types/InputPeer.html) | Yes|Exclude the following chats from this [folder](https://core.telegram.org/api/folders)| + + + +### Type: [DialogFilter](/API_docs/types/DialogFilter.html) + + +### Example: + +``` +$dialogFilter = ['_' => 'dialogFilter', 'contacts' => Bool, 'non_contacts' => Bool, 'groups' => Bool, 'broadcasts' => Bool, 'bots' => Bool, 'exclude_muted' => Bool, 'exclude_read' => Bool, 'exclude_archived' => Bool, 'id' => int, 'title' => 'string', 'emoticon' => 'string', 'color' => int, 'pinned_peers' => [InputPeer, InputPeer], 'include_peers' => [InputPeer, InputPeer], 'exclude_peers' => [InputPeer, InputPeer]]; +``` diff --git a/docs/API_docs/constructors/dialogFilterChatlist.md b/docs/API_docs/constructors/dialogFilterChatlist.md new file mode 100644 index 0000000000..65b5e806ca --- /dev/null +++ b/docs/API_docs/constructors/dialogFilterChatlist.md @@ -0,0 +1,35 @@ +--- +title: "dialogFilterChatlist" +description: "A folder imported using a chat folder deep link »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: dialogFilterChatlist +[Back to constructors index](/API_docs/constructors/index.html) + + + +A folder imported using a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|has\_my\_invites|[Bool](/API_docs/types/Bool.html) | Optional|Whether the current user has created some [chat folder deep links »](https://core.telegram.org/api/links#chat-folder-links) to share the folder as well.| +|id|[int](/API_docs/types/int.html) | Yes|ID of the folder| +|title|[string](/API_docs/types/string.html) | Yes|Name of the folder| +|emoticon|[string](/API_docs/types/string.html) | Optional|Emoji to use as icon for the folder.| +|color|[int](/API_docs/types/int.html) | Optional| +|pinned\_peers|Array of [InputPeer](/API_docs/types/InputPeer.html) | Yes|Pinned chats, [folders](https://core.telegram.org/api/folders) can have unlimited pinned chats| +|include\_peers|Array of [InputPeer](/API_docs/types/InputPeer.html) | Yes|Chats to include in the folder| + + + +### Type: [DialogFilter](/API_docs/types/DialogFilter.html) + + +### Example: + +``` +$dialogFilterChatlist = ['_' => 'dialogFilterChatlist', 'has_my_invites' => Bool, 'id' => int, 'title' => 'string', 'emoticon' => 'string', 'color' => int, 'pinned_peers' => [InputPeer, InputPeer], 'include_peers' => [InputPeer, InputPeer]]; +``` diff --git a/docs/API_docs/constructors/dialogFilterDefault.md b/docs/API_docs/constructors/dialogFilterDefault.md new file mode 100644 index 0000000000..458408f878 --- /dev/null +++ b/docs/API_docs/constructors/dialogFilterDefault.md @@ -0,0 +1,24 @@ +--- +title: "dialogFilterDefault" +description: "Used only when reordering folders to indicate the default (all chats) folder." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: dialogFilterDefault +[Back to constructors index](/API_docs/constructors/index.html) + + + +Used only when reordering folders to indicate the default (all chats) folder. + + + + +### Type: [DialogFilter](/API_docs/types/DialogFilter.html) + + +### Example: + +``` +$dialogFilterDefault = ['_' => 'dialogFilterDefault']; +``` diff --git a/docs/API_docs/constructors/dialogFilterSuggested.md b/docs/API_docs/constructors/dialogFilterSuggested.md new file mode 100644 index 0000000000..ef75f17f51 --- /dev/null +++ b/docs/API_docs/constructors/dialogFilterSuggested.md @@ -0,0 +1,30 @@ +--- +title: "dialogFilterSuggested" +description: "Suggested folders" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: dialogFilterSuggested +[Back to constructors index](/API_docs/constructors/index.html) + + + +Suggested [folders](https://core.telegram.org/api/folders) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|filter|[DialogFilter](/API_docs/types/DialogFilter.html) | Yes|[Folder info](https://core.telegram.org/api/folders)| +|description|[string](/API_docs/types/string.html) | Yes|[Folder](https://core.telegram.org/api/folders) description| + + + +### Type: [DialogFilterSuggested](/API_docs/types/DialogFilterSuggested.html) + + +### Example: + +``` +$dialogFilterSuggested = ['_' => 'dialogFilterSuggested', 'filter' => DialogFilter, 'description' => 'string']; +``` diff --git a/docs/API_docs/constructors/dialogFolder.md b/docs/API_docs/constructors/dialogFolder.md new file mode 100644 index 0000000000..6ee5bc7592 --- /dev/null +++ b/docs/API_docs/constructors/dialogFolder.md @@ -0,0 +1,36 @@ +--- +title: "dialogFolder" +description: "Dialog in folder" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: dialogFolder +[Back to constructors index](/API_docs/constructors/index.html) + + + +Dialog in folder + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|pinned|[Bool](/API_docs/types/Bool.html) | Optional|Is this folder pinned| +|folder|[Folder](/API_docs/types/Folder.html) | Yes|The folder| +|peer|[long](/API_docs/types/long.html) | Yes|Peer in folder| +|top\_message|[int](/API_docs/types/int.html) | Yes|Latest message ID of dialog| +|unread\_muted\_peers\_count|[int](/API_docs/types/int.html) | Yes|Number of unread muted peers in folder| +|unread\_unmuted\_peers\_count|[int](/API_docs/types/int.html) | Yes|Number of unread unmuted peers in folder| +|unread\_muted\_messages\_count|[int](/API_docs/types/int.html) | Yes|Number of unread messages from muted peers in folder| +|unread\_unmuted\_messages\_count|[int](/API_docs/types/int.html) | Yes|Number of unread messages from unmuted peers in folder| + + + +### Type: [Dialog](/API_docs/types/Dialog.html) + + +### Example: + +``` +$dialogFolder = ['_' => 'dialogFolder', 'pinned' => Bool, 'folder' => Folder, 'peer' => long, 'top_message' => int, 'unread_muted_peers_count' => int, 'unread_unmuted_peers_count' => int, 'unread_muted_messages_count' => int, 'unread_unmuted_messages_count' => int]; +``` diff --git a/docs/API_docs/constructors/dialogPeer.md b/docs/API_docs/constructors/dialogPeer.md new file mode 100644 index 0000000000..530fcff0e5 --- /dev/null +++ b/docs/API_docs/constructors/dialogPeer.md @@ -0,0 +1,29 @@ +--- +title: "dialogPeer" +description: "Peer" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: dialogPeer +[Back to constructors index](/API_docs/constructors/index.html) + + + +Peer + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|Peer| + + + +### Type: [DialogPeer](/API_docs/types/DialogPeer.html) + + +### Example: + +``` +$dialogPeer = ['_' => 'dialogPeer', 'peer' => long]; +``` diff --git a/docs/API_docs/constructors/dialogPeerFolder.md b/docs/API_docs/constructors/dialogPeerFolder.md new file mode 100644 index 0000000000..d82156d7e9 --- /dev/null +++ b/docs/API_docs/constructors/dialogPeerFolder.md @@ -0,0 +1,29 @@ +--- +title: "dialogPeerFolder" +description: "Peer folder" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: dialogPeerFolder +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Peer folder](https://core.telegram.org/api/folders#peer-folders) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|folder\_id|[int](/API_docs/types/int.html) | Yes|[Peer folder ID, for more info click here](https://core.telegram.org/api/folders#peer-folders)| + + + +### Type: [DialogPeer](/API_docs/types/DialogPeer.html) + + +### Example: + +``` +$dialogPeerFolder = ['_' => 'dialogPeerFolder', 'folder_id' => int]; +``` diff --git a/docs/API_docs/constructors/document.md b/docs/API_docs/constructors/document.md new file mode 100644 index 0000000000..05d5c8aa6e --- /dev/null +++ b/docs/API_docs/constructors/document.md @@ -0,0 +1,38 @@ +--- +title: "document" +description: "Document" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: document +[Back to constructors index](/API_docs/constructors/index.html) + + + +Document + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Document ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Check sum, dependent on document ID| +|file\_reference|[bytes](/API_docs/types/bytes.html) | Yes|[File reference](https://core.telegram.org/api/file_reference)| +|date|[int](/API_docs/types/int.html) | Yes|Creation date| +|mime\_type|[string](/API_docs/types/string.html) | Yes|MIME type| +|size|[long](/API_docs/types/long.html) | Yes|Size| +|thumbs|Array of [PhotoSize](/API_docs/types/PhotoSize.html) | Optional|Thumbnails| +|video\_thumbs|Array of [VideoSize](/API_docs/types/VideoSize.html) | Optional|Video thumbnails| +|dc\_id|[int](/API_docs/types/int.html) | Yes|DC ID| +|attributes|Array of [DocumentAttribute](/API_docs/types/DocumentAttribute.html) | Yes|Attributes| + + + +### Type: [Document](/API_docs/types/Document.html) + + +### Example: + +``` +$document = ['_' => 'document', 'id' => long, 'access_hash' => long, 'file_reference' => 'bytes', 'date' => int, 'mime_type' => 'string', 'size' => long, 'thumbs' => [PhotoSize, PhotoSize], 'video_thumbs' => [VideoSize, VideoSize], 'dc_id' => int, 'attributes' => [DocumentAttribute, DocumentAttribute]]; +``` diff --git a/docs/API_docs/constructors/documentAttributeAnimated.md b/docs/API_docs/constructors/documentAttributeAnimated.md new file mode 100644 index 0000000000..d86beea05e --- /dev/null +++ b/docs/API_docs/constructors/documentAttributeAnimated.md @@ -0,0 +1,24 @@ +--- +title: "documentAttributeAnimated" +description: "Defines an animated GIF" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: documentAttributeAnimated +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines an animated GIF + + + + +### Type: [DocumentAttribute](/API_docs/types/DocumentAttribute.html) + + +### Example: + +``` +$documentAttributeAnimated = ['_' => 'documentAttributeAnimated']; +``` diff --git a/docs/API_docs/constructors/documentAttributeAudio.md b/docs/API_docs/constructors/documentAttributeAudio.md new file mode 100644 index 0000000000..bc5e8fd3b0 --- /dev/null +++ b/docs/API_docs/constructors/documentAttributeAudio.md @@ -0,0 +1,33 @@ +--- +title: "documentAttributeAudio" +description: "Represents an audio file" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: documentAttributeAudio +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents an audio file + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|voice|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a voice message| +|duration|[int](/API_docs/types/int.html) | Optional|Duration in seconds| +|title|[string](/API_docs/types/string.html) | Optional|Name of song| +|performer|[string](/API_docs/types/string.html) | Optional|Performer| +|waveform|[waveform](/API_docs/constructors/waveform.html) | Optional| + + + +### Type: [DocumentAttribute](/API_docs/types/DocumentAttribute.html) + + +### Example: + +``` +$documentAttributeAudio = ['_' => 'documentAttributeAudio', 'voice' => Bool, 'duration' => int, 'title' => 'string', 'performer' => 'string', 'waveform' => waveform]; +``` diff --git a/docs/API_docs/constructors/documentAttributeAudio_23.md b/docs/API_docs/constructors/documentAttributeAudio_23.md new file mode 100644 index 0000000000..bd08952d25 --- /dev/null +++ b/docs/API_docs/constructors/documentAttributeAudio_23.md @@ -0,0 +1,29 @@ +--- +title: "documentAttributeAudio" +description: "Represents an audio file" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: documentAttributeAudio\_23 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents an audio file + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|duration|[int](/API_docs/types/int.html) | Optional|Duration in seconds| + + + +### Type: [DocumentAttribute](/API_docs/types/DocumentAttribute.html) + + +### Example: + +``` +$documentAttributeAudio_23 = ['_' => 'documentAttributeAudio', 'duration' => int]; +``` diff --git a/docs/API_docs/constructors/documentAttributeAudio_45.md b/docs/API_docs/constructors/documentAttributeAudio_45.md new file mode 100644 index 0000000000..2ee692bd7a --- /dev/null +++ b/docs/API_docs/constructors/documentAttributeAudio_45.md @@ -0,0 +1,31 @@ +--- +title: "documentAttributeAudio" +description: "Represents an audio file" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: documentAttributeAudio\_45 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents an audio file + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|duration|[int](/API_docs/types/int.html) | Optional|Duration in seconds| +|title|[string](/API_docs/types/string.html) | Yes|Name of song| +|performer|[string](/API_docs/types/string.html) | Yes|Performer| + + + +### Type: [DocumentAttribute](/API_docs/types/DocumentAttribute.html) + + +### Example: + +``` +$documentAttributeAudio_45 = ['_' => 'documentAttributeAudio', 'duration' => int, 'title' => 'string', 'performer' => 'string']; +``` diff --git a/docs/API_docs/constructors/documentAttributeCustomEmoji.md b/docs/API_docs/constructors/documentAttributeCustomEmoji.md new file mode 100644 index 0000000000..45983d79ea --- /dev/null +++ b/docs/API_docs/constructors/documentAttributeCustomEmoji.md @@ -0,0 +1,32 @@ +--- +title: "documentAttributeCustomEmoji" +description: "Info about a custom emoji" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: documentAttributeCustomEmoji +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about a custom emoji + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|free|[Bool](/API_docs/types/Bool.html) | Optional|Whether this custom emoji can be sent by non-Premium users| +|text\_color|[Bool](/API_docs/types/Bool.html) | Optional|Whether the color of this TGS custom emoji should be changed to the text color when used in messages, the accent color if used as emoji status, white on chat photos, or another appropriate color based on context.| +|alt|[string](/API_docs/types/string.html) | Yes|The actual emoji| +|stickerset|[InputStickerSet](/API_docs/types/InputStickerSet.html) | Optional|The emoji stickerset to which this emoji belongs.| + + + +### Type: [DocumentAttribute](/API_docs/types/DocumentAttribute.html) + + +### Example: + +``` +$documentAttributeCustomEmoji = ['_' => 'documentAttributeCustomEmoji', 'free' => Bool, 'text_color' => Bool, 'alt' => 'string', 'stickerset' => InputStickerSet]; +``` diff --git a/docs/API_docs/constructors/documentAttributeFilename.md b/docs/API_docs/constructors/documentAttributeFilename.md new file mode 100644 index 0000000000..28008c5190 --- /dev/null +++ b/docs/API_docs/constructors/documentAttributeFilename.md @@ -0,0 +1,29 @@ +--- +title: "documentAttributeFilename" +description: "A simple document with a file name" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: documentAttributeFilename +[Back to constructors index](/API_docs/constructors/index.html) + + + +A simple document with a file name + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|file\_name|[string](/API_docs/types/string.html) | Yes|The file name| + + + +### Type: [DocumentAttribute](/API_docs/types/DocumentAttribute.html) + + +### Example: + +``` +$documentAttributeFilename = ['_' => 'documentAttributeFilename', 'file_name' => 'string']; +``` diff --git a/docs/API_docs/constructors/documentAttributeHasStickers.md b/docs/API_docs/constructors/documentAttributeHasStickers.md new file mode 100644 index 0000000000..b32868f0c7 --- /dev/null +++ b/docs/API_docs/constructors/documentAttributeHasStickers.md @@ -0,0 +1,24 @@ +--- +title: "documentAttributeHasStickers" +description: "Whether the current document has stickers attached" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: documentAttributeHasStickers +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether the current document has stickers attached + + + + +### Type: [DocumentAttribute](/API_docs/types/DocumentAttribute.html) + + +### Example: + +``` +$documentAttributeHasStickers = ['_' => 'documentAttributeHasStickers']; +``` diff --git a/docs/API_docs/constructors/documentAttributeImageSize.md b/docs/API_docs/constructors/documentAttributeImageSize.md new file mode 100644 index 0000000000..29612d997d --- /dev/null +++ b/docs/API_docs/constructors/documentAttributeImageSize.md @@ -0,0 +1,30 @@ +--- +title: "documentAttributeImageSize" +description: "Defines the width and height of an image uploaded as document" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: documentAttributeImageSize +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines the width and height of an image uploaded as document + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|w|[int](/API_docs/types/int.html) | Optional|Width of image| +|h|[int](/API_docs/types/int.html) | Optional|Height of image| + + + +### Type: [DocumentAttribute](/API_docs/types/DocumentAttribute.html) + + +### Example: + +``` +$documentAttributeImageSize = ['_' => 'documentAttributeImageSize', 'w' => int, 'h' => int]; +``` diff --git a/docs/API_docs/constructors/documentAttributeSticker.md b/docs/API_docs/constructors/documentAttributeSticker.md new file mode 100644 index 0000000000..7b74ec2f30 --- /dev/null +++ b/docs/API_docs/constructors/documentAttributeSticker.md @@ -0,0 +1,32 @@ +--- +title: "documentAttributeSticker" +description: "Defines a sticker" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: documentAttributeSticker +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines a sticker + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|mask|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a mask sticker| +|alt|[string](/API_docs/types/string.html) | Yes|Alternative emoji representation of sticker| +|stickerset|[InputStickerSet](/API_docs/types/InputStickerSet.html) | Optional|Associated stickerset| +|mask\_coords|[MaskCoords](/API_docs/types/MaskCoords.html) | Optional|Mask coordinates (if this is a mask sticker, attached to a photo)| + + + +### Type: [DocumentAttribute](/API_docs/types/DocumentAttribute.html) + + +### Example: + +``` +$documentAttributeSticker = ['_' => 'documentAttributeSticker', 'mask' => Bool, 'alt' => 'string', 'stickerset' => InputStickerSet, 'mask_coords' => MaskCoords]; +``` diff --git a/docs/API_docs/constructors/documentAttributeSticker_23.md b/docs/API_docs/constructors/documentAttributeSticker_23.md new file mode 100644 index 0000000000..2fb6106f36 --- /dev/null +++ b/docs/API_docs/constructors/documentAttributeSticker_23.md @@ -0,0 +1,24 @@ +--- +title: "documentAttributeSticker" +description: "Defines a sticker" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: documentAttributeSticker\_23 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines a sticker + + + + +### Type: [DocumentAttribute](/API_docs/types/DocumentAttribute.html) + + +### Example: + +``` +$documentAttributeSticker_23 = ['_' => 'documentAttributeSticker']; +``` diff --git a/docs/API_docs/constructors/documentAttributeSticker_45.md b/docs/API_docs/constructors/documentAttributeSticker_45.md new file mode 100644 index 0000000000..daceb4b5e6 --- /dev/null +++ b/docs/API_docs/constructors/documentAttributeSticker_45.md @@ -0,0 +1,30 @@ +--- +title: "documentAttributeSticker" +description: "Defines a sticker" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: documentAttributeSticker\_45 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines a sticker + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|alt|[string](/API_docs/types/string.html) | Yes|Alternative emoji representation of sticker| +|stickerset|[InputStickerSet](/API_docs/types/InputStickerSet.html) | Optional|Associated stickerset| + + + +### Type: [DocumentAttribute](/API_docs/types/DocumentAttribute.html) + + +### Example: + +``` +$documentAttributeSticker_45 = ['_' => 'documentAttributeSticker', 'alt' => 'string', 'stickerset' => InputStickerSet]; +``` diff --git a/docs/API_docs/constructors/documentAttributeVideo.md b/docs/API_docs/constructors/documentAttributeVideo.md new file mode 100644 index 0000000000..0572073e71 --- /dev/null +++ b/docs/API_docs/constructors/documentAttributeVideo.md @@ -0,0 +1,35 @@ +--- +title: "documentAttributeVideo" +description: "Defines a video" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: documentAttributeVideo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines a video + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|round\_message|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a round video| +|supports\_streaming|[Bool](/API_docs/types/Bool.html) | Optional|Whether the video supports streaming| +|nosound|[Bool](/API_docs/types/Bool.html) | Optional|Whether the specified document is a video file with no audio tracks (a GIF animation (even as MPEG4), for example)| +|duration|[double](/API_docs/types/double.html) | Optional|Duration in seconds| +|w|[int](/API_docs/types/int.html) | Optional|Video width| +|h|[int](/API_docs/types/int.html) | Optional|Video height| +|preload\_prefix\_size|[int](/API_docs/types/int.html) | Optional|Number of bytes to preload when preloading videos (particularly [video stories](https://core.telegram.org/api/stories)).| + + + +### Type: [DocumentAttribute](/API_docs/types/DocumentAttribute.html) + + +### Example: + +``` +$documentAttributeVideo = ['_' => 'documentAttributeVideo', 'round_message' => Bool, 'supports_streaming' => Bool, 'nosound' => Bool, 'duration' => double, 'w' => int, 'h' => int, 'preload_prefix_size' => int]; +``` diff --git a/docs/API_docs/constructors/documentAttributeVideo_23.md b/docs/API_docs/constructors/documentAttributeVideo_23.md new file mode 100644 index 0000000000..1b83acde7e --- /dev/null +++ b/docs/API_docs/constructors/documentAttributeVideo_23.md @@ -0,0 +1,31 @@ +--- +title: "documentAttributeVideo" +description: "Defines a video" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: documentAttributeVideo\_23 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines a video + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|duration|[int](/API_docs/types/int.html) | Optional|Duration in seconds| +|w|[int](/API_docs/types/int.html) | Optional|Video width| +|h|[int](/API_docs/types/int.html) | Optional|Video height| + + + +### Type: [DocumentAttribute](/API_docs/types/DocumentAttribute.html) + + +### Example: + +``` +$documentAttributeVideo_23 = ['_' => 'documentAttributeVideo', 'duration' => int, 'w' => int, 'h' => int]; +``` diff --git a/docs/API_docs/constructors/documentAttributeVideo_66.md b/docs/API_docs/constructors/documentAttributeVideo_66.md new file mode 100644 index 0000000000..2c5259e39c --- /dev/null +++ b/docs/API_docs/constructors/documentAttributeVideo_66.md @@ -0,0 +1,32 @@ +--- +title: "documentAttributeVideo" +description: "Defines a video" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: documentAttributeVideo\_66 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines a video + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|round\_message|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a round video| +|duration|[int](/API_docs/types/int.html) | Optional|Duration in seconds| +|w|[int](/API_docs/types/int.html) | Optional|Video width| +|h|[int](/API_docs/types/int.html) | Optional|Video height| + + + +### Type: [DocumentAttribute](/API_docs/types/DocumentAttribute.html) + + +### Example: + +``` +$documentAttributeVideo_66 = ['_' => 'documentAttributeVideo', 'round_message' => Bool, 'duration' => int, 'w' => int, 'h' => int]; +``` diff --git a/docs/API_docs/constructors/documentEmpty.md b/docs/API_docs/constructors/documentEmpty.md new file mode 100644 index 0000000000..0545458acb --- /dev/null +++ b/docs/API_docs/constructors/documentEmpty.md @@ -0,0 +1,29 @@ +--- +title: "documentEmpty" +description: "Empty constructor, document doesn't exist." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: documentEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor, document doesn't exist. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Document ID or `0`| + + + +### Type: [Document](/API_docs/types/Document.html) + + +### Example: + +``` +$documentEmpty = ['_' => 'documentEmpty', 'id' => long]; +``` diff --git a/docs/API_docs/constructors/draftMessage.md b/docs/API_docs/constructors/draftMessage.md new file mode 100644 index 0000000000..507130b818 --- /dev/null +++ b/docs/API_docs/constructors/draftMessage.md @@ -0,0 +1,96 @@ +--- +title: "draftMessage" +description: "Represents a message draft." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: draftMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a message [draft](https://core.telegram.org/api/drafts). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|no\_webpage|[Bool](/API_docs/types/Bool.html) | Optional|Whether no webpage preview will be generated| +|invert\_media|[Bool](/API_docs/types/Bool.html) | Optional|If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.| +|reply\_to|[InputReplyTo](/API_docs/types/InputReplyTo.html) | Optional|If set, indicates that the message should be sent in reply to the specified message or story.| +|message|[string](/API_docs/types/string.html) | Yes|The draft| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|Message [entities](https://core.telegram.org/api/entities) for styled text.| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|media|[InputMedia](/API_docs/types/InputMedia.html) | Optional|Media.| +|date|[int](/API_docs/types/int.html) | Yes|Date of last update of the draft.| + + + +### Type: [DraftMessage](/API_docs/types/DraftMessage.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$draftMessage = ['_' => 'draftMessage', 'no_webpage' => Bool, 'invert_media' => Bool, 'reply_to' => InputReplyTo, 'message' => 'string', 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'media' => InputMedia, 'date' => int]; +``` diff --git a/docs/API_docs/constructors/draftMessageEmpty.md b/docs/API_docs/constructors/draftMessageEmpty.md new file mode 100644 index 0000000000..1bef6db4ed --- /dev/null +++ b/docs/API_docs/constructors/draftMessageEmpty.md @@ -0,0 +1,29 @@ +--- +title: "draftMessageEmpty" +description: "Empty draft" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: draftMessageEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty draft + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|date|[int](/API_docs/types/int.html) | Optional|When was the draft last updated| + + + +### Type: [DraftMessage](/API_docs/types/DraftMessage.html) + + +### Example: + +``` +$draftMessageEmpty = ['_' => 'draftMessageEmpty', 'date' => int]; +``` diff --git a/docs/API_docs/constructors/emailVerificationApple.md b/docs/API_docs/constructors/emailVerificationApple.md new file mode 100644 index 0000000000..0a7551c96e --- /dev/null +++ b/docs/API_docs/constructors/emailVerificationApple.md @@ -0,0 +1,29 @@ +--- +title: "emailVerificationApple" +description: "Apple ID email verification token" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: emailVerificationApple +[Back to constructors index](/API_docs/constructors/index.html) + + + +Apple ID email verification token + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|token|[string](/API_docs/types/string.html) | Yes|Token| + + + +### Type: [EmailVerification](/API_docs/types/EmailVerification.html) + + +### Example: + +``` +$emailVerificationApple = ['_' => 'emailVerificationApple', 'token' => 'string']; +``` diff --git a/docs/API_docs/constructors/emailVerificationCode.md b/docs/API_docs/constructors/emailVerificationCode.md new file mode 100644 index 0000000000..b90c33325f --- /dev/null +++ b/docs/API_docs/constructors/emailVerificationCode.md @@ -0,0 +1,29 @@ +--- +title: "emailVerificationCode" +description: "Email verification code" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: emailVerificationCode +[Back to constructors index](/API_docs/constructors/index.html) + + + +Email verification code + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|code|[string](/API_docs/types/string.html) | Yes|Received verification code| + + + +### Type: [EmailVerification](/API_docs/types/EmailVerification.html) + + +### Example: + +``` +$emailVerificationCode = ['_' => 'emailVerificationCode', 'code' => 'string']; +``` diff --git a/docs/API_docs/constructors/emailVerificationGoogle.md b/docs/API_docs/constructors/emailVerificationGoogle.md new file mode 100644 index 0000000000..c02b32835a --- /dev/null +++ b/docs/API_docs/constructors/emailVerificationGoogle.md @@ -0,0 +1,29 @@ +--- +title: "emailVerificationGoogle" +description: "Google ID email verification token" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: emailVerificationGoogle +[Back to constructors index](/API_docs/constructors/index.html) + + + +Google ID email verification token + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|token|[string](/API_docs/types/string.html) | Yes|Token| + + + +### Type: [EmailVerification](/API_docs/types/EmailVerification.html) + + +### Example: + +``` +$emailVerificationGoogle = ['_' => 'emailVerificationGoogle', 'token' => 'string']; +``` diff --git a/docs/API_docs/constructors/emailVerifyPurposeLoginChange.md b/docs/API_docs/constructors/emailVerifyPurposeLoginChange.md new file mode 100644 index 0000000000..1fbd0c80ca --- /dev/null +++ b/docs/API_docs/constructors/emailVerifyPurposeLoginChange.md @@ -0,0 +1,24 @@ +--- +title: "emailVerifyPurposeLoginChange" +description: "Email verification purpose: change login email" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: emailVerifyPurposeLoginChange +[Back to constructors index](/API_docs/constructors/index.html) + + + +Email verification purpose: change login email + + + + +### Type: [EmailVerifyPurpose](/API_docs/types/EmailVerifyPurpose.html) + + +### Example: + +``` +$emailVerifyPurposeLoginChange = ['_' => 'emailVerifyPurposeLoginChange']; +``` diff --git a/docs/API_docs/constructors/emailVerifyPurposeLoginSetup.md b/docs/API_docs/constructors/emailVerifyPurposeLoginSetup.md new file mode 100644 index 0000000000..7391818e62 --- /dev/null +++ b/docs/API_docs/constructors/emailVerifyPurposeLoginSetup.md @@ -0,0 +1,30 @@ +--- +title: "emailVerifyPurposeLoginSetup" +description: "Email verification purpose: setup login email" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: emailVerifyPurposeLoginSetup +[Back to constructors index](/API_docs/constructors/index.html) + + + +Email verification purpose: setup login email + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|phone\_number|[string](/API_docs/types/string.html) | Yes|Phone number| +|phone\_code\_hash|[string](/API_docs/types/string.html) | Yes|Phone code hash as specified by the [documentation](https://core.telegram.org/api/auth#email-verification)| + + + +### Type: [EmailVerifyPurpose](/API_docs/types/EmailVerifyPurpose.html) + + +### Example: + +``` +$emailVerifyPurposeLoginSetup = ['_' => 'emailVerifyPurposeLoginSetup', 'phone_number' => 'string', 'phone_code_hash' => 'string']; +``` diff --git a/docs/API_docs/constructors/emailVerifyPurposePassport.md b/docs/API_docs/constructors/emailVerifyPurposePassport.md new file mode 100644 index 0000000000..3348ac65f5 --- /dev/null +++ b/docs/API_docs/constructors/emailVerifyPurposePassport.md @@ -0,0 +1,24 @@ +--- +title: "emailVerifyPurposePassport" +description: "Verify an email for use in telegram passport" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: emailVerifyPurposePassport +[Back to constructors index](/API_docs/constructors/index.html) + + + +Verify an email for use in [telegram passport](https://core.telegram.org/api/passport) + + + + +### Type: [EmailVerifyPurpose](/API_docs/types/EmailVerifyPurpose.html) + + +### Example: + +``` +$emailVerifyPurposePassport = ['_' => 'emailVerifyPurposePassport']; +``` diff --git a/docs/API_docs/constructors/emojiGroup.md b/docs/API_docs/constructors/emojiGroup.md new file mode 100644 index 0000000000..02335593ed --- /dev/null +++ b/docs/API_docs/constructors/emojiGroup.md @@ -0,0 +1,31 @@ +--- +title: "emojiGroup" +description: "Represents an emoji category." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: emojiGroup +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents an [emoji category](https://core.telegram.org/api/custom-emoji#emoji-categories). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|title|[string](/API_docs/types/string.html) | Yes|Category name, i.e. "Animals", "Flags", "Faces" and so on...| +|icon\_emoji\_id|[long](/API_docs/types/long.html) | Yes|A single custom emoji used as preview for the category.| +|emoticons|Array of [string](/API_docs/types/string.html) | Yes|A list of UTF-8 emojis, matching the category.| + + + +### Type: [EmojiGroup](/API_docs/types/EmojiGroup.html) + + +### Example: + +``` +$emojiGroup = ['_' => 'emojiGroup', 'title' => 'string', 'icon_emoji_id' => long, 'emoticons' => ['string', 'string']]; +``` diff --git a/docs/API_docs/constructors/emojiGroupGreeting.md b/docs/API_docs/constructors/emojiGroupGreeting.md new file mode 100644 index 0000000000..3e787883a6 --- /dev/null +++ b/docs/API_docs/constructors/emojiGroupGreeting.md @@ -0,0 +1,29 @@ +--- +title: "emojiGroupGreeting" +description: "emojiGroupGreeting attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: emojiGroupGreeting +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|title|[string](/API_docs/types/string.html) | Yes| +|icon\_emoji\_id|[long](/API_docs/types/long.html) | Yes| +|emoticons|Array of [string](/API_docs/types/string.html) | Yes| + + + +### Type: [EmojiGroup](/API_docs/types/EmojiGroup.html) + + +### Example: + +``` +$emojiGroupGreeting = ['_' => 'emojiGroupGreeting', 'title' => 'string', 'icon_emoji_id' => long, 'emoticons' => ['string', 'string']]; +``` diff --git a/docs/API_docs/constructors/emojiGroupPremium.md b/docs/API_docs/constructors/emojiGroupPremium.md new file mode 100644 index 0000000000..dea724226c --- /dev/null +++ b/docs/API_docs/constructors/emojiGroupPremium.md @@ -0,0 +1,28 @@ +--- +title: "emojiGroupPremium" +description: "emojiGroupPremium attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: emojiGroupPremium +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|title|[string](/API_docs/types/string.html) | Yes| +|icon\_emoji\_id|[long](/API_docs/types/long.html) | Yes| + + + +### Type: [EmojiGroup](/API_docs/types/EmojiGroup.html) + + +### Example: + +``` +$emojiGroupPremium = ['_' => 'emojiGroupPremium', 'title' => 'string', 'icon_emoji_id' => long]; +``` diff --git a/docs/API_docs/constructors/emojiKeyword.md b/docs/API_docs/constructors/emojiKeyword.md new file mode 100644 index 0000000000..3d0a8e5baa --- /dev/null +++ b/docs/API_docs/constructors/emojiKeyword.md @@ -0,0 +1,30 @@ +--- +title: "emojiKeyword" +description: "Emoji keyword" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: emojiKeyword +[Back to constructors index](/API_docs/constructors/index.html) + + + +Emoji keyword + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|keyword|[string](/API_docs/types/string.html) | Yes|Keyword| +|emoticons|Array of [string](/API_docs/types/string.html) | Yes|Emojis associated to keyword| + + + +### Type: [EmojiKeyword](/API_docs/types/EmojiKeyword.html) + + +### Example: + +``` +$emojiKeyword = ['_' => 'emojiKeyword', 'keyword' => 'string', 'emoticons' => ['string', 'string']]; +``` diff --git a/docs/API_docs/constructors/emojiKeywordDeleted.md b/docs/API_docs/constructors/emojiKeywordDeleted.md new file mode 100644 index 0000000000..26e1e38cc7 --- /dev/null +++ b/docs/API_docs/constructors/emojiKeywordDeleted.md @@ -0,0 +1,30 @@ +--- +title: "emojiKeywordDeleted" +description: "Deleted emoji keyword" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: emojiKeywordDeleted +[Back to constructors index](/API_docs/constructors/index.html) + + + +Deleted emoji keyword + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|keyword|[string](/API_docs/types/string.html) | Yes|Keyword| +|emoticons|Array of [string](/API_docs/types/string.html) | Yes|Emojis that were associated to keyword| + + + +### Type: [EmojiKeyword](/API_docs/types/EmojiKeyword.html) + + +### Example: + +``` +$emojiKeywordDeleted = ['_' => 'emojiKeywordDeleted', 'keyword' => 'string', 'emoticons' => ['string', 'string']]; +``` diff --git a/docs/API_docs/constructors/emojiKeywordsDifference.md b/docs/API_docs/constructors/emojiKeywordsDifference.md new file mode 100644 index 0000000000..78474c4346 --- /dev/null +++ b/docs/API_docs/constructors/emojiKeywordsDifference.md @@ -0,0 +1,32 @@ +--- +title: "emojiKeywordsDifference" +description: "Changes to emoji keywords" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: emojiKeywordsDifference +[Back to constructors index](/API_docs/constructors/index.html) + + + +Changes to emoji keywords + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|lang\_code|[string](/API_docs/types/string.html) | Yes|Language code for keywords| +|from\_version|[int](/API_docs/types/int.html) | Yes|Previous emoji keyword list version| +|version|[int](/API_docs/types/int.html) | Yes|Current version of emoji keyword list| +|keywords|Array of [EmojiKeyword](/API_docs/types/EmojiKeyword.html) | Yes|Emojis associated to keywords| + + + +### Type: [EmojiKeywordsDifference](/API_docs/types/EmojiKeywordsDifference.html) + + +### Example: + +``` +$emojiKeywordsDifference = ['_' => 'emojiKeywordsDifference', 'lang_code' => 'string', 'from_version' => int, 'version' => int, 'keywords' => [EmojiKeyword, EmojiKeyword]]; +``` diff --git a/docs/API_docs/constructors/emojiLanguage.md b/docs/API_docs/constructors/emojiLanguage.md new file mode 100644 index 0000000000..1d91ad5dd3 --- /dev/null +++ b/docs/API_docs/constructors/emojiLanguage.md @@ -0,0 +1,29 @@ +--- +title: "emojiLanguage" +description: "Emoji language" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: emojiLanguage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Emoji language + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|lang\_code|[string](/API_docs/types/string.html) | Yes|Language code| + + + +### Type: [EmojiLanguage](/API_docs/types/EmojiLanguage.html) + + +### Example: + +``` +$emojiLanguage = ['_' => 'emojiLanguage', 'lang_code' => 'string']; +``` diff --git a/docs/API_docs/constructors/emojiList.md b/docs/API_docs/constructors/emojiList.md new file mode 100644 index 0000000000..8433222ebd --- /dev/null +++ b/docs/API_docs/constructors/emojiList.md @@ -0,0 +1,30 @@ +--- +title: "emojiList" +description: "Represents a list of custom emojis." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: emojiList +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a list of [custom emojis](https://core.telegram.org/api/custom-emoji). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hash|[long](/API_docs/types/long.html) | Yes|[Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation)| +|document\_id|Array of [long](/API_docs/types/long.html) | Yes|Custom emoji IDs| + + + +### Type: [EmojiList](/API_docs/types/EmojiList.html) + + +### Example: + +``` +$emojiList = ['_' => 'emojiList', 'hash' => long, 'document_id' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/emojiListNotModified.md b/docs/API_docs/constructors/emojiListNotModified.md new file mode 100644 index 0000000000..94082eee66 --- /dev/null +++ b/docs/API_docs/constructors/emojiListNotModified.md @@ -0,0 +1,24 @@ +--- +title: "emojiListNotModified" +description: "The list of custom emojis hasn't changed." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: emojiListNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +The list of [custom emojis](https://core.telegram.org/api/custom-emoji) hasn't changed. + + + + +### Type: [EmojiList](/API_docs/types/EmojiList.html) + + +### Example: + +``` +$emojiListNotModified = ['_' => 'emojiListNotModified']; +``` diff --git a/docs/API_docs/constructors/emojiStatus.md b/docs/API_docs/constructors/emojiStatus.md new file mode 100644 index 0000000000..226fa91dac --- /dev/null +++ b/docs/API_docs/constructors/emojiStatus.md @@ -0,0 +1,29 @@ +--- +title: "emojiStatus" +description: "An emoji status" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: emojiStatus +[Back to constructors index](/API_docs/constructors/index.html) + + + +An [emoji status](https://core.telegram.org/api/emoji-status) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|document\_id|[long](/API_docs/types/long.html) | Yes|[Custom emoji document ID](https://core.telegram.org/api/custom-emoji)| + + + +### Type: [EmojiStatus](/API_docs/types/EmojiStatus.html) + + +### Example: + +``` +$emojiStatus = ['_' => 'emojiStatus', 'document_id' => long]; +``` diff --git a/docs/API_docs/constructors/emojiStatusEmpty.md b/docs/API_docs/constructors/emojiStatusEmpty.md new file mode 100644 index 0000000000..0d1c97006f --- /dev/null +++ b/docs/API_docs/constructors/emojiStatusEmpty.md @@ -0,0 +1,24 @@ +--- +title: "emojiStatusEmpty" +description: "No emoji status is set" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: emojiStatusEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +No emoji status is set + + + + +### Type: [EmojiStatus](/API_docs/types/EmojiStatus.html) + + +### Example: + +``` +$emojiStatusEmpty = ['_' => 'emojiStatusEmpty']; +``` diff --git a/docs/API_docs/constructors/emojiStatusUntil.md b/docs/API_docs/constructors/emojiStatusUntil.md new file mode 100644 index 0000000000..bb5c9f29d4 --- /dev/null +++ b/docs/API_docs/constructors/emojiStatusUntil.md @@ -0,0 +1,30 @@ +--- +title: "emojiStatusUntil" +description: "An emoji status valid until the specified date" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: emojiStatusUntil +[Back to constructors index](/API_docs/constructors/index.html) + + + +An [emoji status](https://core.telegram.org/api/emoji-status) valid until the specified date + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|document\_id|[long](/API_docs/types/long.html) | Yes|[Custom emoji document ID](https://core.telegram.org/api/custom-emoji)| +|until|[int](/API_docs/types/int.html) | Yes|This status is valid until this date| + + + +### Type: [EmojiStatus](/API_docs/types/EmojiStatus.html) + + +### Example: + +``` +$emojiStatusUntil = ['_' => 'emojiStatusUntil', 'document_id' => long, 'until' => int]; +``` diff --git a/docs/API_docs/constructors/emojiURL.md b/docs/API_docs/constructors/emojiURL.md new file mode 100644 index 0000000000..63695426e8 --- /dev/null +++ b/docs/API_docs/constructors/emojiURL.md @@ -0,0 +1,29 @@ +--- +title: "emojiURL" +description: "An HTTP URL which can be used to automatically log in into translation platform and suggest new emoji replacements. The URL will be valid for 30 seconds after generation" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: emojiURL +[Back to constructors index](/API_docs/constructors/index.html) + + + +An HTTP URL which can be used to automatically log in into translation platform and suggest new emoji replacements. The URL will be valid for 30 seconds after generation + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|An HTTP URL which can be used to automatically log in into translation platform and suggest new emoji replacements. The URL will be valid for 30 seconds after generation| + + + +### Type: [EmojiURL](/API_docs/types/EmojiURL.html) + + +### Example: + +``` +$emojiURL = ['_' => 'emojiURL', 'url' => 'string']; +``` diff --git a/docs/API_docs/constructors/encryptedChat.md b/docs/API_docs/constructors/encryptedChat.md new file mode 100644 index 0000000000..01c694ffa6 --- /dev/null +++ b/docs/API_docs/constructors/encryptedChat.md @@ -0,0 +1,35 @@ +--- +title: "encryptedChat" +description: "Encrypted chat" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: encryptedChat +[Back to constructors index](/API_docs/constructors/index.html) + + + +Encrypted chat + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[int](/API_docs/types/int.html) | Yes|Chat ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Check sum dependent on the user ID| +|date|[int](/API_docs/types/int.html) | Yes|Date chat was created| +|admin\_id|[long](/API_docs/types/long.html) | Yes|Chat creator ID| +|participant\_id|[long](/API_docs/types/long.html) | Yes|ID of the second chat participant| +|g\_a\_or\_b|[bytes](/API_docs/types/bytes.html) | Yes|`B = g ^ b mod p`, if the currently authorized user is the chat's creator,
or `A = g ^ a mod p` otherwise
See [Wikipedia](https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange) for more info| +|key\_fingerprint|[long](/API_docs/types/long.html) | Yes|64-bit fingerprint of received key| + + + +### Type: [EncryptedChat](/API_docs/types/EncryptedChat.html) + + +### Example: + +``` +$encryptedChat = ['_' => 'encryptedChat', 'id' => int, 'access_hash' => long, 'date' => int, 'admin_id' => long, 'participant_id' => long, 'g_a_or_b' => 'bytes', 'key_fingerprint' => long]; +``` diff --git a/docs/API_docs/constructors/encryptedChatDiscarded.md b/docs/API_docs/constructors/encryptedChatDiscarded.md new file mode 100644 index 0000000000..0adec65030 --- /dev/null +++ b/docs/API_docs/constructors/encryptedChatDiscarded.md @@ -0,0 +1,30 @@ +--- +title: "encryptedChatDiscarded" +description: "Discarded or deleted chat." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: encryptedChatDiscarded +[Back to constructors index](/API_docs/constructors/index.html) + + + +Discarded or deleted chat. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|history\_deleted|[Bool](/API_docs/types/Bool.html) | Optional|Whether both users of this secret chat should also remove all of its messages| +|id|[int](/API_docs/types/int.html) | Yes|Chat ID| + + + +### Type: [EncryptedChat](/API_docs/types/EncryptedChat.html) + + +### Example: + +``` +$encryptedChatDiscarded = ['_' => 'encryptedChatDiscarded', 'history_deleted' => Bool, 'id' => int]; +``` diff --git a/docs/API_docs/constructors/encryptedChatEmpty.md b/docs/API_docs/constructors/encryptedChatEmpty.md new file mode 100644 index 0000000000..4f3705ca68 --- /dev/null +++ b/docs/API_docs/constructors/encryptedChatEmpty.md @@ -0,0 +1,29 @@ +--- +title: "encryptedChatEmpty" +description: "Empty constructor." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: encryptedChatEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[int](/API_docs/types/int.html) | Yes|Chat ID| + + + +### Type: [EncryptedChat](/API_docs/types/EncryptedChat.html) + + +### Example: + +``` +$encryptedChatEmpty = ['_' => 'encryptedChatEmpty', 'id' => int]; +``` diff --git a/docs/API_docs/constructors/encryptedChatRequested.md b/docs/API_docs/constructors/encryptedChatRequested.md new file mode 100644 index 0000000000..7b6e8552a5 --- /dev/null +++ b/docs/API_docs/constructors/encryptedChatRequested.md @@ -0,0 +1,35 @@ +--- +title: "encryptedChatRequested" +description: "Request to create an encrypted chat." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: encryptedChatRequested +[Back to constructors index](/API_docs/constructors/index.html) + + + +Request to create an encrypted chat. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|folder\_id|[int](/API_docs/types/int.html) | Optional|[Peer folder ID, for more info click here](https://core.telegram.org/api/folders#peer-folders)| +|id|[int](/API_docs/types/int.html) | Yes|Chat ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Check sum depending on user ID| +|date|[int](/API_docs/types/int.html) | Yes|Chat creation date| +|admin\_id|[long](/API_docs/types/long.html) | Yes|Chat creator ID| +|participant\_id|[long](/API_docs/types/long.html) | Yes|ID of second chat participant| +|g\_a|[bytes](/API_docs/types/bytes.html) | Yes|`A = g ^ a mod p`, see [Wikipedia](https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange)| + + + +### Type: [EncryptedChat](/API_docs/types/EncryptedChat.html) + + +### Example: + +``` +$encryptedChatRequested = ['_' => 'encryptedChatRequested', 'folder_id' => int, 'id' => int, 'access_hash' => long, 'date' => int, 'admin_id' => long, 'participant_id' => long, 'g_a' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/encryptedChatWaiting.md b/docs/API_docs/constructors/encryptedChatWaiting.md new file mode 100644 index 0000000000..e767679ae4 --- /dev/null +++ b/docs/API_docs/constructors/encryptedChatWaiting.md @@ -0,0 +1,33 @@ +--- +title: "encryptedChatWaiting" +description: "Chat waiting for approval of second participant." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: encryptedChatWaiting +[Back to constructors index](/API_docs/constructors/index.html) + + + +Chat waiting for approval of second participant. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[int](/API_docs/types/int.html) | Yes|Chat ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Checking sum depending on user ID| +|date|[int](/API_docs/types/int.html) | Yes|Date of chat creation| +|admin\_id|[long](/API_docs/types/long.html) | Yes|Chat creator ID| +|participant\_id|[long](/API_docs/types/long.html) | Yes|ID of second chat participant| + + + +### Type: [EncryptedChat](/API_docs/types/EncryptedChat.html) + + +### Example: + +``` +$encryptedChatWaiting = ['_' => 'encryptedChatWaiting', 'id' => int, 'access_hash' => long, 'date' => int, 'admin_id' => long, 'participant_id' => long]; +``` diff --git a/docs/API_docs/constructors/encryptedFile.md b/docs/API_docs/constructors/encryptedFile.md new file mode 100644 index 0000000000..332ef51a8f --- /dev/null +++ b/docs/API_docs/constructors/encryptedFile.md @@ -0,0 +1,33 @@ +--- +title: "encryptedFile" +description: "Encrypted file." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: encryptedFile +[Back to constructors index](/API_docs/constructors/index.html) + + + +Encrypted file. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|File ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Checking sum depending on user ID| +|size|[long](/API_docs/types/long.html) | Yes|File size in bytes| +|dc\_id|[int](/API_docs/types/int.html) | Yes|Number of data center| +|key\_fingerprint|[int](/API_docs/types/int.html) | Yes|32-bit fingerprint of key used for file encryption| + + + +### Type: [EncryptedFile](/API_docs/types/EncryptedFile.html) + + +### Example: + +``` +$encryptedFile = ['_' => 'encryptedFile', 'id' => long, 'access_hash' => long, 'size' => long, 'dc_id' => int, 'key_fingerprint' => int]; +``` diff --git a/docs/API_docs/constructors/encryptedFileEmpty.md b/docs/API_docs/constructors/encryptedFileEmpty.md new file mode 100644 index 0000000000..5bd4233647 --- /dev/null +++ b/docs/API_docs/constructors/encryptedFileEmpty.md @@ -0,0 +1,24 @@ +--- +title: "encryptedFileEmpty" +description: "Empty constructor, non-existing file." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: encryptedFileEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor, non-existing file. + + + + +### Type: [EncryptedFile](/API_docs/types/EncryptedFile.html) + + +### Example: + +``` +$encryptedFileEmpty = ['_' => 'encryptedFileEmpty']; +``` diff --git a/docs/API_docs/constructors/encryptedMessage.md b/docs/API_docs/constructors/encryptedMessage.md new file mode 100644 index 0000000000..d255b6d44f --- /dev/null +++ b/docs/API_docs/constructors/encryptedMessage.md @@ -0,0 +1,32 @@ +--- +title: "encryptedMessage" +description: "Encrypted message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: encryptedMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Encrypted message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chat\_id|[int](/API_docs/types/int.html) | Yes|ID of encrypted chat| +|date|[int](/API_docs/types/int.html) | Yes|Date of sending| +|decrypted\_message|[DecryptedMessage](/API_docs/types/DecryptedMessage.html) | Yes| +|file|[EncryptedFile](/API_docs/types/EncryptedFile.html) | Optional|Attached encrypted file| + + + +### Type: [EncryptedMessage](/API_docs/types/EncryptedMessage.html) + + +### Example: + +``` +$encryptedMessage = ['_' => 'encryptedMessage', 'chat_id' => int, 'date' => int, 'decrypted_message' => DecryptedMessage, 'file' => EncryptedFile]; +``` diff --git a/docs/API_docs/constructors/encryptedMessageService.md b/docs/API_docs/constructors/encryptedMessageService.md new file mode 100644 index 0000000000..1feba76ece --- /dev/null +++ b/docs/API_docs/constructors/encryptedMessageService.md @@ -0,0 +1,31 @@ +--- +title: "encryptedMessageService" +description: "Encrypted service message" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: encryptedMessageService +[Back to constructors index](/API_docs/constructors/index.html) + + + +Encrypted service message + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chat\_id|[int](/API_docs/types/int.html) | Yes|ID of encrypted chat| +|date|[int](/API_docs/types/int.html) | Yes|Date of sending| +|decrypted\_message|[DecryptedMessage](/API_docs/types/DecryptedMessage.html) | Yes| + + + +### Type: [EncryptedMessage](/API_docs/types/EncryptedMessage.html) + + +### Example: + +``` +$encryptedMessageService = ['_' => 'encryptedMessageService', 'chat_id' => int, 'date' => int, 'decrypted_message' => DecryptedMessage]; +``` diff --git a/docs/API_docs/constructors/error.md b/docs/API_docs/constructors/error.md new file mode 100644 index 0000000000..cdd828be71 --- /dev/null +++ b/docs/API_docs/constructors/error.md @@ -0,0 +1,30 @@ +--- +title: "error" +description: "Error." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: error +[Back to constructors index](/API_docs/constructors/index.html) + + + +Error. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|code|[int](/API_docs/types/int.html) | Yes|Error code| +|text|[string](/API_docs/types/string.html) | Yes|Message| + + + +### Type: [Error](/API_docs/types/Error.html) + + +### Example: + +``` +$error = ['_' => 'error', 'code' => int, 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/exportedChatlistInvite.md b/docs/API_docs/constructors/exportedChatlistInvite.md new file mode 100644 index 0000000000..be24ec047f --- /dev/null +++ b/docs/API_docs/constructors/exportedChatlistInvite.md @@ -0,0 +1,31 @@ +--- +title: "exportedChatlistInvite" +description: "Exported chat folder deep link »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: exportedChatlistInvite +[Back to constructors index](/API_docs/constructors/index.html) + + + +Exported [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|title|[string](/API_docs/types/string.html) | Yes|Name of the link| +|url|[string](/API_docs/types/string.html) | Yes|The [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links).| +|peers|Array of [Peer](/API_docs/types/Peer.html) | Yes|Peers to import| + + + +### Type: [ExportedChatlistInvite](/API_docs/types/ExportedChatlistInvite.html) + + +### Example: + +``` +$exportedChatlistInvite = ['_' => 'exportedChatlistInvite', 'title' => 'string', 'url' => 'string', 'peers' => [Peer, Peer]]; +``` diff --git a/docs/API_docs/constructors/exportedContactToken.md b/docs/API_docs/constructors/exportedContactToken.md new file mode 100644 index 0000000000..5974dc5982 --- /dev/null +++ b/docs/API_docs/constructors/exportedContactToken.md @@ -0,0 +1,30 @@ +--- +title: "exportedContactToken" +description: "Describes a temporary profile link." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: exportedContactToken +[Back to constructors index](/API_docs/constructors/index.html) + + + +Describes a [temporary profile link](https://core.telegram.org/api/links#temporary-profile-links). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|The [temporary profile link](https://core.telegram.org/api/links#temporary-profile-links).| +|expires|[int](/API_docs/types/int.html) | Yes|Its expiration date| + + + +### Type: [ExportedContactToken](/API_docs/types/ExportedContactToken.html) + + +### Example: + +``` +$exportedContactToken = ['_' => 'exportedContactToken', 'url' => 'string', 'expires' => int]; +``` diff --git a/docs/API_docs/constructors/exportedMessageLink.md b/docs/API_docs/constructors/exportedMessageLink.md new file mode 100644 index 0000000000..68d4d88d37 --- /dev/null +++ b/docs/API_docs/constructors/exportedMessageLink.md @@ -0,0 +1,30 @@ +--- +title: "exportedMessageLink" +description: "Link to a message in a supergroup/channel" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: exportedMessageLink +[Back to constructors index](/API_docs/constructors/index.html) + + + +Link to a message in a supergroup/channel + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|link|[string](/API_docs/types/string.html) | Yes|URL| +|html|[string](/API_docs/types/string.html) | Yes|Embed code| + + + +### Type: [ExportedMessageLink](/API_docs/types/ExportedMessageLink.html) + + +### Example: + +``` +$exportedMessageLink = ['_' => 'exportedMessageLink', 'link' => 'string', 'html' => 'string']; +``` diff --git a/docs/API_docs/constructors/exportedStoryLink.md b/docs/API_docs/constructors/exportedStoryLink.md new file mode 100644 index 0000000000..dac7d3bfc0 --- /dev/null +++ b/docs/API_docs/constructors/exportedStoryLink.md @@ -0,0 +1,29 @@ +--- +title: "exportedStoryLink" +description: "Represents a story deep link." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: exportedStoryLink +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a [story deep link](https://core.telegram.org/api/stories#story-links). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|link|[string](/API_docs/types/string.html) | Yes|The [story deep link](https://core.telegram.org/api/stories#story-links).| + + + +### Type: [ExportedStoryLink](/API_docs/types/ExportedStoryLink.html) + + +### Example: + +``` +$exportedStoryLink = ['_' => 'exportedStoryLink', 'link' => 'string']; +``` diff --git a/docs/API_docs/constructors/fileHash.md b/docs/API_docs/constructors/fileHash.md new file mode 100644 index 0000000000..5179b5d743 --- /dev/null +++ b/docs/API_docs/constructors/fileHash.md @@ -0,0 +1,31 @@ +--- +title: "fileHash" +description: "SHA256 Hash of an uploaded file, to be checked for validity after download" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: fileHash +[Back to constructors index](/API_docs/constructors/index.html) + + + +SHA256 Hash of an uploaded file, to be checked for validity after download + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[long](/API_docs/types/long.html) | Yes|Offset from where to start computing SHA-256 hash| +|limit|[int](/API_docs/types/int.html) | Yes|Length| +|hash|[bytes](/API_docs/types/bytes.html) | Yes|SHA-256 Hash of file chunk, to be checked for validity after download| + + + +### Type: [FileHash](/API_docs/types/FileHash.html) + + +### Example: + +``` +$fileHash = ['_' => 'fileHash', 'offset' => long, 'limit' => int, 'hash' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/fileLocationUnavailable_23.md b/docs/API_docs/constructors/fileLocationUnavailable_23.md new file mode 100644 index 0000000000..b49b0d4459 --- /dev/null +++ b/docs/API_docs/constructors/fileLocationUnavailable_23.md @@ -0,0 +1,29 @@ +--- +title: "fileLocationUnavailable" +description: "fileLocationUnavailable attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: fileLocationUnavailable\_23 +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|volume\_id|[long](/API_docs/types/long.html) | Yes| +|local\_id|[int](/API_docs/types/int.html) | Yes| +|secret|[long](/API_docs/types/long.html) | Yes| + + + +### Type: [FileLocation](/API_docs/types/FileLocation.html) + + +### Example: + +``` +$fileLocationUnavailable_23 = ['_' => 'fileLocationUnavailable', 'volume_id' => long, 'local_id' => int, 'secret' => long]; +``` diff --git a/docs/API_docs/constructors/fileLocation_23.md b/docs/API_docs/constructors/fileLocation_23.md new file mode 100644 index 0000000000..3a15234371 --- /dev/null +++ b/docs/API_docs/constructors/fileLocation_23.md @@ -0,0 +1,30 @@ +--- +title: "fileLocation" +description: "fileLocation attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: fileLocation\_23 +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|dc\_id|[int](/API_docs/types/int.html) | Yes| +|volume\_id|[long](/API_docs/types/long.html) | Yes| +|local\_id|[int](/API_docs/types/int.html) | Yes| +|secret|[long](/API_docs/types/long.html) | Yes| + + + +### Type: [FileLocation](/API_docs/types/FileLocation.html) + + +### Example: + +``` +$fileLocation_23 = ['_' => 'fileLocation', 'dc_id' => int, 'volume_id' => long, 'local_id' => int, 'secret' => long]; +``` diff --git a/docs/API_docs/constructors/folder.md b/docs/API_docs/constructors/folder.md new file mode 100644 index 0000000000..e36ab3a1c8 --- /dev/null +++ b/docs/API_docs/constructors/folder.md @@ -0,0 +1,34 @@ +--- +title: "folder" +description: "Folder" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: folder +[Back to constructors index](/API_docs/constructors/index.html) + + + +Folder + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|autofill\_new\_broadcasts|[Bool](/API_docs/types/Bool.html) | Optional|Automatically add new channels to this folder| +|autofill\_public\_groups|[Bool](/API_docs/types/Bool.html) | Optional|Automatically add joined new public supergroups to this folder| +|autofill\_new\_correspondents|[Bool](/API_docs/types/Bool.html) | Optional|Automatically add new private chats to this folder| +|id|[int](/API_docs/types/int.html) | Yes|Folder ID| +|title|[string](/API_docs/types/string.html) | Yes|Folder title| +|photo|[ChatPhoto](/API_docs/types/ChatPhoto.html) | Optional|Folder picture| + + + +### Type: [Folder](/API_docs/types/Folder.html) + + +### Example: + +``` +$folder = ['_' => 'folder', 'autofill_new_broadcasts' => Bool, 'autofill_public_groups' => Bool, 'autofill_new_correspondents' => Bool, 'id' => int, 'title' => 'string', 'photo' => ChatPhoto]; +``` diff --git a/docs/API_docs/constructors/folderPeer.md b/docs/API_docs/constructors/folderPeer.md new file mode 100644 index 0000000000..760fbcc958 --- /dev/null +++ b/docs/API_docs/constructors/folderPeer.md @@ -0,0 +1,30 @@ +--- +title: "folderPeer" +description: "Peer in a folder" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: folderPeer +[Back to constructors index](/API_docs/constructors/index.html) + + + +Peer in a folder + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|Folder peer info| +|folder\_id|[int](/API_docs/types/int.html) | Yes|[Peer folder ID, for more info click here](https://core.telegram.org/api/folders#peer-folders)| + + + +### Type: [FolderPeer](/API_docs/types/FolderPeer.html) + + +### Example: + +``` +$folderPeer = ['_' => 'folderPeer', 'peer' => long, 'folder_id' => int]; +``` diff --git a/docs/API_docs/constructors/forumTopic.md b/docs/API_docs/constructors/forumTopic.md new file mode 100644 index 0000000000..3fdc08e4a4 --- /dev/null +++ b/docs/API_docs/constructors/forumTopic.md @@ -0,0 +1,47 @@ +--- +title: "forumTopic" +description: "Represents a forum topic." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: forumTopic +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a [forum topic](https://core.telegram.org/api/forum#forum-topics). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|my|[Bool](/API_docs/types/Bool.html) | Optional|Whether the topic was created by the current user| +|closed|[Bool](/API_docs/types/Bool.html) | Optional|Whether the topic is closed (no messages can be sent to it)| +|pinned|[Bool](/API_docs/types/Bool.html) | Optional|Whether the topic is pinned| +|short|[Bool](/API_docs/types/Bool.html) | Optional|Whether this constructor is a reduced version of the full topic information.
If set, only the `my`, `closed`, `id`, `date`, `title`, `icon_color`, `icon_emoji_id` and `from_id` parameters will contain valid information.
Reduced info is usually only returned in topic-related [admin log events »](https://core.telegram.org/api/recent-actions) and in the [messages.channelMessages](../constructors/messages.channelMessages.html) constructor: if needed, full information can be fetched using [channels.getForumTopicsByID](../methods/channels.getForumTopicsByID.html).| +|hidden|[Bool](/API_docs/types/Bool.html) | Optional|Whether the topic is hidden (only valid for the "General" topic, `id=1`)| +|id|[int](/API_docs/types/int.html) | Yes|[Topic ID](https://core.telegram.org/api/forum#forum-topics)| +|date|[int](/API_docs/types/int.html) | Yes|Topic creation date| +|title|[string](/API_docs/types/string.html) | Yes|Topic title| +|icon\_color|[int](/API_docs/types/int.html) | Yes|If no custom emoji icon is specified, specifies the color of the fallback topic icon (RGB), one of `0x6FB9F0`, `0xFFD67E`, `0xCB86DB`, `0x8EEE98`, `0xFF93B2`, or `0xFB6F5F`.| +|icon\_emoji\_id|[long](/API_docs/types/long.html) | Optional|ID of the [custom emoji](https://core.telegram.org/api/custom-emoji) used as topic icon.| +|top\_message|[int](/API_docs/types/int.html) | Yes|ID of the last message that was sent to this topic| +|read\_inbox\_max\_id|[int](/API_docs/types/int.html) | Yes|Position up to which all incoming messages are read.| +|read\_outbox\_max\_id|[int](/API_docs/types/int.html) | Yes|Position up to which all outgoing messages are read.| +|unread\_count|[int](/API_docs/types/int.html) | Yes|Number of unread messages| +|unread\_mentions\_count|[int](/API_docs/types/int.html) | Yes|Number of [unread mentions](https://core.telegram.org/api/mentions)| +|unread\_reactions\_count|[int](/API_docs/types/int.html) | Yes|Number of unread reactions to messages you sent| +|from\_id|[Peer](/API_docs/types/Peer.html) | Yes|ID of the peer that created the topic| +|notify\_settings|[PeerNotifySettings](/API_docs/types/PeerNotifySettings.html) | Yes|Notification settings| +|draft|[DraftMessage](/API_docs/types/DraftMessage.html) | Optional|Message [draft](https://core.telegram.org/api/drafts)| + + + +### Type: [ForumTopic](/API_docs/types/ForumTopic.html) + + +### Example: + +``` +$forumTopic = ['_' => 'forumTopic', 'my' => Bool, 'closed' => Bool, 'pinned' => Bool, 'short' => Bool, 'hidden' => Bool, 'id' => int, 'date' => int, 'title' => 'string', 'icon_color' => int, 'icon_emoji_id' => long, 'top_message' => int, 'read_inbox_max_id' => int, 'read_outbox_max_id' => int, 'unread_count' => int, 'unread_mentions_count' => int, 'unread_reactions_count' => int, 'from_id' => Peer, 'notify_settings' => PeerNotifySettings, 'draft' => DraftMessage]; +``` diff --git a/docs/API_docs/constructors/forumTopicDeleted.md b/docs/API_docs/constructors/forumTopicDeleted.md new file mode 100644 index 0000000000..24593a4290 --- /dev/null +++ b/docs/API_docs/constructors/forumTopicDeleted.md @@ -0,0 +1,29 @@ +--- +title: "forumTopicDeleted" +description: "Represents a deleted forum topic." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: forumTopicDeleted +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a deleted forum topic. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[int](/API_docs/types/int.html) | Yes|The ID of the deleted forum topic.| + + + +### Type: [ForumTopic](/API_docs/types/ForumTopic.html) + + +### Example: + +``` +$forumTopicDeleted = ['_' => 'forumTopicDeleted', 'id' => int]; +``` diff --git a/docs/API_docs/constructors/fragment.collectibleInfo.md b/docs/API_docs/constructors/fragment.collectibleInfo.md new file mode 100644 index 0000000000..8d1e6008e6 --- /dev/null +++ b/docs/API_docs/constructors/fragment.collectibleInfo.md @@ -0,0 +1,33 @@ +--- +title: "fragment.collectibleInfo" +description: "fragment.collectibleInfo attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/fragment_collectibleInfo.html +--- +# Constructor: fragment.collectibleInfo +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|purchase\_date|[int](/API_docs/types/int.html) | Yes| +|currency|[string](/API_docs/types/string.html) | Yes| +|amount|[long](/API_docs/types/long.html) | Yes| +|crypto\_currency|[string](/API_docs/types/string.html) | Yes| +|crypto\_amount|[long](/API_docs/types/long.html) | Yes| +|url|[string](/API_docs/types/string.html) | Yes| + + + +### Type: [fragment.CollectibleInfo](/API_docs/types/fragment.CollectibleInfo.html) + + +### Example: + +``` +$fragment_collectibleInfo = ['_' => 'fragment.collectibleInfo', 'purchase_date' => int, 'currency' => 'string', 'amount' => long, 'crypto_currency' => 'string', 'crypto_amount' => long, 'url' => 'string']; +``` diff --git a/docs/API_docs/constructors/game.md b/docs/API_docs/constructors/game.md new file mode 100644 index 0000000000..1543a18285 --- /dev/null +++ b/docs/API_docs/constructors/game.md @@ -0,0 +1,35 @@ +--- +title: "game" +description: "Indicates an already sent game" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: game +[Back to constructors index](/API_docs/constructors/index.html) + + + +Indicates an already sent game + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|ID of the game| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash of the game| +|short\_name|[string](/API_docs/types/string.html) | Yes|Short name for the game| +|title|[string](/API_docs/types/string.html) | Yes|Title of the game| +|description|[string](/API_docs/types/string.html) | Yes|Game description| +|photo|[Photo](/API_docs/types/Photo.html) | Optional|Game preview| +|document|[Document](/API_docs/types/Document.html) | Optional|Optional attached document| + + + +### Type: [Game](/API_docs/types/Game.html) + + +### Example: + +``` +$game = ['_' => 'game', 'id' => long, 'access_hash' => long, 'short_name' => 'string', 'title' => 'string', 'description' => 'string', 'photo' => Photo, 'document' => Document]; +``` diff --git a/docs/API_docs/constructors/geoPoint.md b/docs/API_docs/constructors/geoPoint.md new file mode 100644 index 0000000000..ef8157f41b --- /dev/null +++ b/docs/API_docs/constructors/geoPoint.md @@ -0,0 +1,32 @@ +--- +title: "geoPoint" +description: "GeoPoint." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: geoPoint +[Back to constructors index](/API_docs/constructors/index.html) + + + +GeoPoint. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|long|[double](/API_docs/types/double.html) | Yes|Longitude| +|lat|[double](/API_docs/types/double.html) | Yes|Latitude| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash| +|accuracy\_radius|[int](/API_docs/types/int.html) | Optional|The estimated horizontal accuracy of the location, in meters; as defined by the sender.| + + + +### Type: [GeoPoint](/API_docs/types/GeoPoint.html) + + +### Example: + +``` +$geoPoint = ['_' => 'geoPoint', 'long' => double, 'lat' => double, 'access_hash' => long, 'accuracy_radius' => int]; +``` diff --git a/docs/API_docs/constructors/geoPointEmpty.md b/docs/API_docs/constructors/geoPointEmpty.md new file mode 100644 index 0000000000..a2447e8566 --- /dev/null +++ b/docs/API_docs/constructors/geoPointEmpty.md @@ -0,0 +1,24 @@ +--- +title: "geoPointEmpty" +description: "Empty constructor." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: geoPointEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor. + + + + +### Type: [GeoPoint](/API_docs/types/GeoPoint.html) + + +### Example: + +``` +$geoPointEmpty = ['_' => 'geoPointEmpty']; +``` diff --git a/docs/API_docs/constructors/globalPrivacySettings.md b/docs/API_docs/constructors/globalPrivacySettings.md new file mode 100644 index 0000000000..e4f9c60998 --- /dev/null +++ b/docs/API_docs/constructors/globalPrivacySettings.md @@ -0,0 +1,33 @@ +--- +title: "globalPrivacySettings" +description: "Global privacy settings" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: globalPrivacySettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +Global privacy settings + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|archive\_and\_mute\_new\_noncontact\_peers|[Bool](/API_docs/types/Bool.html) | Optional|Whether to archive and mute new chats from non-contacts| +|keep\_archived\_unmuted|[Bool](/API_docs/types/Bool.html) | Optional|Whether unmuted chats will be kept in the Archive chat list when they get a new message.| +|keep\_archived\_folders|[Bool](/API_docs/types/Bool.html) | Optional|Whether unmuted chats that are always included or pinned in a [folder](https://core.telegram.org/api/folders), will be kept in the Archive chat list when they get a new message. Ignored if `keep_archived_unmuted` is set.| +|hide\_read\_marks|[Bool](/API_docs/types/Bool.html) | Optional| +|new\_noncontact\_peers\_require\_premium|[Bool](/API_docs/types/Bool.html) | Optional| + + + +### Type: [GlobalPrivacySettings](/API_docs/types/GlobalPrivacySettings.html) + + +### Example: + +``` +$globalPrivacySettings = ['_' => 'globalPrivacySettings', 'archive_and_mute_new_noncontact_peers' => Bool, 'keep_archived_unmuted' => Bool, 'keep_archived_folders' => Bool, 'hide_read_marks' => Bool, 'new_noncontact_peers_require_premium' => Bool]; +``` diff --git a/docs/API_docs/constructors/groupCall.md b/docs/API_docs/constructors/groupCall.md new file mode 100644 index 0000000000..6ba5d9ad28 --- /dev/null +++ b/docs/API_docs/constructors/groupCall.md @@ -0,0 +1,46 @@ +--- +title: "groupCall" +description: "Info about a group call or livestream" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: groupCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about a group call or livestream + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|join\_muted|[Bool](/API_docs/types/Bool.html) | Optional|Whether the user should be muted upon joining the call| +|can\_change\_join\_muted|[Bool](/API_docs/types/Bool.html) | Optional|Whether the current user can change the value of the `join_muted` flag using [phone.toggleGroupCallSettings](../methods/phone.toggleGroupCallSettings.html)| +|join\_date\_asc|[Bool](/API_docs/types/Bool.html) | Optional|Specifies the ordering to use when locally sorting by date and displaying in the UI group call participants.| +|schedule\_start\_subscribed|[Bool](/API_docs/types/Bool.html) | Optional|Whether we subscribed to the scheduled call| +|can\_start\_video|[Bool](/API_docs/types/Bool.html) | Optional|Whether you can start streaming video into the call| +|record\_video\_active|[Bool](/API_docs/types/Bool.html) | Optional|Whether the group call is currently being recorded| +|rtmp\_stream|[Bool](/API_docs/types/Bool.html) | Optional|Whether RTMP streams are allowed| +|listeners\_hidden|[Bool](/API_docs/types/Bool.html) | Optional|Whether the listeners list is hidden and cannot be fetched using [phone.getGroupParticipants](../methods/phone.getGroupParticipants.html). The `phone.groupParticipants.count` and `groupCall.participants_count` counters will still include listeners.| +|id|[long](/API_docs/types/long.html) | Yes|Group call ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Group call access hash| +|participants\_count|[int](/API_docs/types/int.html) | Yes|Participant count| +|title|[string](/API_docs/types/string.html) | Optional|Group call title| +|stream\_dc\_id|[int](/API_docs/types/int.html) | Optional|DC ID to be used for livestream chunks| +|record\_start\_date|[int](/API_docs/types/int.html) | Optional|When was the recording started| +|schedule\_date|[int](/API_docs/types/int.html) | Optional|When is the call scheduled to start| +|unmuted\_video\_count|[int](/API_docs/types/int.html) | Optional|Number of people currently streaming video into the call| +|unmuted\_video\_limit|[int](/API_docs/types/int.html) | Yes|Maximum number of people allowed to stream video into the call| +|version|[int](/API_docs/types/int.html) | Yes|Version| + + + +### Type: [GroupCall](/API_docs/types/GroupCall.html) + + +### Example: + +``` +$groupCall = ['_' => 'groupCall', 'join_muted' => Bool, 'can_change_join_muted' => Bool, 'join_date_asc' => Bool, 'schedule_start_subscribed' => Bool, 'can_start_video' => Bool, 'record_video_active' => Bool, 'rtmp_stream' => Bool, 'listeners_hidden' => Bool, 'id' => long, 'access_hash' => long, 'participants_count' => int, 'title' => 'string', 'stream_dc_id' => int, 'record_start_date' => int, 'schedule_date' => int, 'unmuted_video_count' => int, 'unmuted_video_limit' => int, 'version' => int]; +``` diff --git a/docs/API_docs/constructors/groupCallDiscarded.md b/docs/API_docs/constructors/groupCallDiscarded.md new file mode 100644 index 0000000000..0d74010edf --- /dev/null +++ b/docs/API_docs/constructors/groupCallDiscarded.md @@ -0,0 +1,31 @@ +--- +title: "groupCallDiscarded" +description: "An ended group call" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: groupCallDiscarded +[Back to constructors index](/API_docs/constructors/index.html) + + + +An ended group call + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Group call ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Group call access hash| +|duration|[int](/API_docs/types/int.html) | Yes|Group call duration| + + + +### Type: [GroupCall](/API_docs/types/GroupCall.html) + + +### Example: + +``` +$groupCallDiscarded = ['_' => 'groupCallDiscarded', 'id' => long, 'access_hash' => long, 'duration' => int]; +``` diff --git a/docs/API_docs/constructors/groupCallParticipant.md b/docs/API_docs/constructors/groupCallParticipant.md new file mode 100644 index 0000000000..ee36894dfd --- /dev/null +++ b/docs/API_docs/constructors/groupCallParticipant.md @@ -0,0 +1,47 @@ +--- +title: "groupCallParticipant" +description: "Info about a group call participant" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: groupCallParticipant +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about a group call participant + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|muted|[Bool](/API_docs/types/Bool.html) | Optional|Whether the participant is muted| +|left|[Bool](/API_docs/types/Bool.html) | Optional|Whether the participant has left| +|can\_self\_unmute|[Bool](/API_docs/types/Bool.html) | Optional|Whether the participant can unmute themselves| +|just\_joined|[Bool](/API_docs/types/Bool.html) | Optional|Whether the participant has just joined| +|versioned|[Bool](/API_docs/types/Bool.html) | Optional|If set, and [updateGroupCallParticipants](../constructors/updateGroupCallParticipants.html).version < locally stored call.version, info about this participant should be ignored. If (...), and [updateGroupCallParticipants](../constructors/updateGroupCallParticipants.html).version > call.version+1, the participant list should be refetched using [phone.getGroupParticipants](../methods/phone.getGroupParticipants.html).| +|min|[Bool](/API_docs/types/Bool.html) | Optional|If not set, the `volume` and `muted_by_you` fields can be safely used to overwrite locally cached information; otherwise, `volume` will contain valid information only if `volume_by_admin` is set both in the cache and in the received constructor.| +|muted\_by\_you|[Bool](/API_docs/types/Bool.html) | Optional|Whether this participant was muted by the current user| +|volume\_by\_admin|[Bool](/API_docs/types/Bool.html) | Optional|Whether our volume can only changed by an admin| +|self|[Bool](/API_docs/types/Bool.html) | Optional|Whether this participant is the current user| +|video\_joined|[Bool](/API_docs/types/Bool.html) | Optional|Whether this participant is currently broadcasting video| +|peer|[long](/API_docs/types/long.html) | Yes|Peer information| +|date|[int](/API_docs/types/int.html) | Yes|When did this participant join the group call| +|active\_date|[int](/API_docs/types/int.html) | Optional|When was this participant last active in the group call| +|source|[int](/API_docs/types/int.html) | Yes|Source ID| +|volume|[int](/API_docs/types/int.html) | Optional|Volume, if not set the volume is set to 100%.| +|about|[string](/API_docs/types/string.html) | Optional|Info about this participant| +|raise\_hand\_rating|[long](/API_docs/types/long.html) | Optional|Specifies the UI visualization order of peers with raised hands: peers with a higher rating should be showed first in the list.| +|video|[GroupCallParticipantVideo](/API_docs/types/GroupCallParticipantVideo.html) | Optional|Info about the video stream the participant is currently broadcasting| +|presentation|[GroupCallParticipantVideo](/API_docs/types/GroupCallParticipantVideo.html) | Optional|Info about the screen sharing stream the participant is currently broadcasting| + + + +### Type: [GroupCallParticipant](/API_docs/types/GroupCallParticipant.html) + + +### Example: + +``` +$groupCallParticipant = ['_' => 'groupCallParticipant', 'muted' => Bool, 'left' => Bool, 'can_self_unmute' => Bool, 'just_joined' => Bool, 'versioned' => Bool, 'min' => Bool, 'muted_by_you' => Bool, 'volume_by_admin' => Bool, 'self' => Bool, 'video_joined' => Bool, 'peer' => long, 'date' => int, 'active_date' => int, 'source' => int, 'volume' => int, 'about' => 'string', 'raise_hand_rating' => long, 'video' => GroupCallParticipantVideo, 'presentation' => GroupCallParticipantVideo]; +``` diff --git a/docs/API_docs/constructors/groupCallParticipantVideo.md b/docs/API_docs/constructors/groupCallParticipantVideo.md new file mode 100644 index 0000000000..ac662fc369 --- /dev/null +++ b/docs/API_docs/constructors/groupCallParticipantVideo.md @@ -0,0 +1,32 @@ +--- +title: "groupCallParticipantVideo" +description: "Info about a video stream" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: groupCallParticipantVideo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about a video stream + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|paused|[Bool](/API_docs/types/Bool.html) | Optional|Whether the stream is currently paused| +|endpoint|[string](/API_docs/types/string.html) | Yes|Endpoint| +|source\_groups|Array of [GroupCallParticipantVideoSourceGroup](/API_docs/types/GroupCallParticipantVideoSourceGroup.html) | Yes|Source groups| +|audio\_source|[int](/API_docs/types/int.html) | Optional|Audio source ID| + + + +### Type: [GroupCallParticipantVideo](/API_docs/types/GroupCallParticipantVideo.html) + + +### Example: + +``` +$groupCallParticipantVideo = ['_' => 'groupCallParticipantVideo', 'paused' => Bool, 'endpoint' => 'string', 'source_groups' => [GroupCallParticipantVideoSourceGroup, GroupCallParticipantVideoSourceGroup], 'audio_source' => int]; +``` diff --git a/docs/API_docs/constructors/groupCallParticipantVideoSourceGroup.md b/docs/API_docs/constructors/groupCallParticipantVideoSourceGroup.md new file mode 100644 index 0000000000..b921542fe0 --- /dev/null +++ b/docs/API_docs/constructors/groupCallParticipantVideoSourceGroup.md @@ -0,0 +1,30 @@ +--- +title: "groupCallParticipantVideoSourceGroup" +description: "Describes a group of video synchronization source identifiers" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: groupCallParticipantVideoSourceGroup +[Back to constructors index](/API_docs/constructors/index.html) + + + +Describes a group of video synchronization source identifiers + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|semantics|[string](/API_docs/types/string.html) | Yes|SDP semantics| +|sources|Array of [int](/API_docs/types/int.html) | Yes|Source IDs| + + + +### Type: [GroupCallParticipantVideoSourceGroup](/API_docs/types/GroupCallParticipantVideoSourceGroup.html) + + +### Example: + +``` +$groupCallParticipantVideoSourceGroup = ['_' => 'groupCallParticipantVideoSourceGroup', 'semantics' => 'string', 'sources' => [int, int]]; +``` diff --git a/docs/API_docs/constructors/groupCallStreamChannel.md b/docs/API_docs/constructors/groupCallStreamChannel.md new file mode 100644 index 0000000000..cc8c73d3ca --- /dev/null +++ b/docs/API_docs/constructors/groupCallStreamChannel.md @@ -0,0 +1,31 @@ +--- +title: "groupCallStreamChannel" +description: "Info about an RTMP stream in a group call or livestream" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: groupCallStreamChannel +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about an RTMP stream in a group call or livestream + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel|[int](/API_docs/types/int.html) | Yes|Channel ID| +|scale|[int](/API_docs/types/int.html) | Yes|Specifies the duration of the video segment to fetch in milliseconds, by bitshifting `1000` to the right `scale` times: `duration_ms := 1000 >> scale`.| +|last\_timestamp\_ms|[long](/API_docs/types/long.html) | Yes|Last seen timestamp to easily start fetching livestream chunks using [inputGroupCallStream](../constructors/inputGroupCallStream.html)| + + + +### Type: [GroupCallStreamChannel](/API_docs/types/GroupCallStreamChannel.html) + + +### Example: + +``` +$groupCallStreamChannel = ['_' => 'groupCallStreamChannel', 'channel' => int, 'scale' => int, 'last_timestamp_ms' => long]; +``` diff --git a/docs/API_docs/constructors/help.appConfig.md b/docs/API_docs/constructors/help.appConfig.md new file mode 100644 index 0000000000..232180377b --- /dev/null +++ b/docs/API_docs/constructors/help.appConfig.md @@ -0,0 +1,31 @@ +--- +title: "help.appConfig" +description: "Contains various client configuration parameters" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_appConfig.html +--- +# Constructor: help.appConfig +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains various [client configuration parameters](https://core.telegram.org/api/config#client-configuration) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hash|[int](/API_docs/types/int.html) | Yes| +|config|[JSONValue](/API_docs/types/JSONValue.html) | Yes|[Client configuration parameters](https://core.telegram.org/api/config#client-configuration)| + + + +### Type: [help.AppConfig](/API_docs/types/help.AppConfig.html) + + +### Example: + +``` +$help_appConfig = ['_' => 'help.appConfig', 'hash' => int, 'config' => JSONValue]; +``` diff --git a/docs/API_docs/constructors/help.appConfigNotModified.md b/docs/API_docs/constructors/help.appConfigNotModified.md new file mode 100644 index 0000000000..0f7714424b --- /dev/null +++ b/docs/API_docs/constructors/help.appConfigNotModified.md @@ -0,0 +1,25 @@ +--- +title: "help.appConfigNotModified" +description: "The client configuration parameters haven't changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_appConfigNotModified.html +--- +# Constructor: help.appConfigNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +The client configuration parameters haven't changed + + + + +### Type: [help.AppConfig](/API_docs/types/help.AppConfig.html) + + +### Example: + +``` +$help_appConfigNotModified = ['_' => 'help.appConfigNotModified']; +``` diff --git a/docs/API_docs/constructors/help.appUpdate.md b/docs/API_docs/constructors/help.appUpdate.md new file mode 100644 index 0000000000..b709346533 --- /dev/null +++ b/docs/API_docs/constructors/help.appUpdate.md @@ -0,0 +1,98 @@ +--- +title: "help.appUpdate" +description: "An update is available for the application." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_appUpdate.html +--- +# Constructor: help.appUpdate +[Back to constructors index](/API_docs/constructors/index.html) + + + +An update is available for the application. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|can\_not\_skip|[Bool](/API_docs/types/Bool.html) | Optional|Unskippable, the new info must be shown to the user (with a popup or something else)| +|id|[int](/API_docs/types/int.html) | Yes|Update ID| +|version|[string](/API_docs/types/string.html) | Yes|New version name| +|text|[string](/API_docs/types/string.html) | Yes|Text description of the update| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Yes|[Message entities for styled text](https://core.telegram.org/api/entities)| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|document|[Document](/API_docs/types/Document.html) | Optional|Application binary| +|url|[string](/API_docs/types/string.html) | Optional|Application download URL| +|sticker|[Document](/API_docs/types/Document.html) | Optional|Associated sticker| + + + +### Type: [help.AppUpdate](/API_docs/types/help.AppUpdate.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$help_appUpdate = ['_' => 'help.appUpdate', 'can_not_skip' => Bool, 'id' => int, 'version' => 'string', 'text' => 'string', 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'document' => Document, 'url' => 'string', 'sticker' => Document]; +``` diff --git a/docs/API_docs/constructors/help.countriesList.md b/docs/API_docs/constructors/help.countriesList.md new file mode 100644 index 0000000000..d83e199138 --- /dev/null +++ b/docs/API_docs/constructors/help.countriesList.md @@ -0,0 +1,31 @@ +--- +title: "help.countriesList" +description: "Name, ISO code, localized name and phone codes/patterns of all available countries" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_countriesList.html +--- +# Constructor: help.countriesList +[Back to constructors index](/API_docs/constructors/index.html) + + + +Name, ISO code, localized name and phone codes/patterns of all available countries + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|countries|Array of [help.Country](/API_docs/constructors/help.Country.html) | Yes|Name, ISO code, localized name and phone codes/patterns of all available countries| +|hash|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [help.CountriesList](/API_docs/types/help.CountriesList.html) + + +### Example: + +``` +$help_countriesList = ['_' => 'help.countriesList', 'countries' => [help.Country, help.Country], 'hash' => int]; +``` diff --git a/docs/API_docs/constructors/help.countriesListNotModified.md b/docs/API_docs/constructors/help.countriesListNotModified.md new file mode 100644 index 0000000000..9593732ab8 --- /dev/null +++ b/docs/API_docs/constructors/help.countriesListNotModified.md @@ -0,0 +1,25 @@ +--- +title: "help.countriesListNotModified" +description: "The country list has not changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_countriesListNotModified.html +--- +# Constructor: help.countriesListNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +The country list has not changed + + + + +### Type: [help.CountriesList](/API_docs/types/help.CountriesList.html) + + +### Example: + +``` +$help_countriesListNotModified = ['_' => 'help.countriesListNotModified']; +``` diff --git a/docs/API_docs/constructors/help.country.md b/docs/API_docs/constructors/help.country.md new file mode 100644 index 0000000000..7db00f6aba --- /dev/null +++ b/docs/API_docs/constructors/help.country.md @@ -0,0 +1,34 @@ +--- +title: "help.country" +description: "Name, ISO code, localized name and phone codes/patterns of a specific country" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_country.html +--- +# Constructor: help.country +[Back to constructors index](/API_docs/constructors/index.html) + + + +Name, ISO code, localized name and phone codes/patterns of a specific country + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hidden|[Bool](/API_docs/types/Bool.html) | Optional|Whether this country should not be shown in the list| +|iso2|[string](/API_docs/types/string.html) | Yes|ISO code of country| +|default\_name|[string](/API_docs/types/string.html) | Yes|Name of the country in the country's language| +|name|[string](/API_docs/types/string.html) | Optional|Name of the country in the user's language, if different from the original name| +|country\_codes|Array of [help.CountryCode](/API_docs/constructors/help.CountryCode.html) | Yes|Phone codes/patterns| + + + +### Type: [help.Country](/API_docs/types/help.Country.html) + + +### Example: + +``` +$help_country = ['_' => 'help.country', 'hidden' => Bool, 'iso2' => 'string', 'default_name' => 'string', 'name' => 'string', 'country_codes' => [help.CountryCode, help.CountryCode]]; +``` diff --git a/docs/API_docs/constructors/help.countryCode.md b/docs/API_docs/constructors/help.countryCode.md new file mode 100644 index 0000000000..de23cd3762 --- /dev/null +++ b/docs/API_docs/constructors/help.countryCode.md @@ -0,0 +1,32 @@ +--- +title: "help.countryCode" +description: "Country code and phone number pattern of a specific country" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_countryCode.html +--- +# Constructor: help.countryCode +[Back to constructors index](/API_docs/constructors/index.html) + + + +Country code and phone number pattern of a specific country + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|country\_code|[string](/API_docs/types/string.html) | Yes|ISO country code| +|prefixes|Array of [string](/API_docs/types/string.html) | Optional|Possible phone prefixes| +|patterns|Array of [string](/API_docs/types/string.html) | Optional|Phone patterns: for example, `XXX XXX XXX`| + + + +### Type: [help.CountryCode](/API_docs/types/help.CountryCode.html) + + +### Example: + +``` +$help_countryCode = ['_' => 'help.countryCode', 'country_code' => 'string', 'prefixes' => ['string', 'string'], 'patterns' => ['string', 'string']]; +``` diff --git a/docs/API_docs/constructors/help.deepLinkInfo.md b/docs/API_docs/constructors/help.deepLinkInfo.md new file mode 100644 index 0000000000..ab3d0dae4e --- /dev/null +++ b/docs/API_docs/constructors/help.deepLinkInfo.md @@ -0,0 +1,93 @@ +--- +title: "help.deepLinkInfo" +description: "Deep link info, see the here for more details" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_deepLinkInfo.html +--- +# Constructor: help.deepLinkInfo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Deep link info, see [the here for more details](https://core.telegram.org/api/links#unsupported-links) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|update\_app|[Bool](/API_docs/types/Bool.html) | Optional|An update of the app is required to parse this link| +|message|[string](/API_docs/types/string.html) | Yes|Message to show to the user| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|[Message entities for styled text](https://core.telegram.org/api/entities)| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | + + + +### Type: [help.DeepLinkInfo](/API_docs/types/help.DeepLinkInfo.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$help_deepLinkInfo = ['_' => 'help.deepLinkInfo', 'update_app' => Bool, 'message' => 'string', 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', ]; +``` diff --git a/docs/API_docs/constructors/help.deepLinkInfoEmpty.md b/docs/API_docs/constructors/help.deepLinkInfoEmpty.md new file mode 100644 index 0000000000..1d032d92bf --- /dev/null +++ b/docs/API_docs/constructors/help.deepLinkInfoEmpty.md @@ -0,0 +1,25 @@ +--- +title: "help.deepLinkInfoEmpty" +description: "Deep link info empty" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_deepLinkInfoEmpty.html +--- +# Constructor: help.deepLinkInfoEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Deep link info empty + + + + +### Type: [help.DeepLinkInfo](/API_docs/types/help.DeepLinkInfo.html) + + +### Example: + +``` +$help_deepLinkInfoEmpty = ['_' => 'help.deepLinkInfoEmpty']; +``` diff --git a/docs/API_docs/constructors/help.inviteText.md b/docs/API_docs/constructors/help.inviteText.md new file mode 100644 index 0000000000..813a4a337a --- /dev/null +++ b/docs/API_docs/constructors/help.inviteText.md @@ -0,0 +1,30 @@ +--- +title: "help.inviteText" +description: "Text of a text message with an invitation to install Telegram." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_inviteText.html +--- +# Constructor: help.inviteText +[Back to constructors index](/API_docs/constructors/index.html) + + + +Text of a text message with an invitation to install Telegram. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|message|[string](/API_docs/types/string.html) | Yes|Text of the message| + + + +### Type: [help.InviteText](/API_docs/types/help.InviteText.html) + + +### Example: + +``` +$help_inviteText = ['_' => 'help.inviteText', 'message' => 'string']; +``` diff --git a/docs/API_docs/constructors/help.noAppUpdate.md b/docs/API_docs/constructors/help.noAppUpdate.md new file mode 100644 index 0000000000..4215ae742d --- /dev/null +++ b/docs/API_docs/constructors/help.noAppUpdate.md @@ -0,0 +1,25 @@ +--- +title: "help.noAppUpdate" +description: "No updates are available for the application." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_noAppUpdate.html +--- +# Constructor: help.noAppUpdate +[Back to constructors index](/API_docs/constructors/index.html) + + + +No updates are available for the application. + + + + +### Type: [help.AppUpdate](/API_docs/types/help.AppUpdate.html) + + +### Example: + +``` +$help_noAppUpdate = ['_' => 'help.noAppUpdate']; +``` diff --git a/docs/API_docs/constructors/help.passportConfig.md b/docs/API_docs/constructors/help.passportConfig.md new file mode 100644 index 0000000000..540b1475ee --- /dev/null +++ b/docs/API_docs/constructors/help.passportConfig.md @@ -0,0 +1,31 @@ +--- +title: "help.passportConfig" +description: "Telegram passport configuration" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_passportConfig.html +--- +# Constructor: help.passportConfig +[Back to constructors index](/API_docs/constructors/index.html) + + + +Telegram [passport](https://core.telegram.org/passport) configuration + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hash|[int](/API_docs/types/int.html) | Yes| +|countries\_langs|[DataJSON](/API_docs/types/DataJSON.html) | Yes|Localization| + + + +### Type: [help.PassportConfig](/API_docs/types/help.PassportConfig.html) + + +### Example: + +``` +$help_passportConfig = ['_' => 'help.passportConfig', 'hash' => int, 'countries_langs' => DataJSON]; +``` diff --git a/docs/API_docs/constructors/help.passportConfigNotModified.md b/docs/API_docs/constructors/help.passportConfigNotModified.md new file mode 100644 index 0000000000..3006693180 --- /dev/null +++ b/docs/API_docs/constructors/help.passportConfigNotModified.md @@ -0,0 +1,25 @@ +--- +title: "help.passportConfigNotModified" +description: "Password configuration not modified" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_passportConfigNotModified.html +--- +# Constructor: help.passportConfigNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +Password configuration not modified + + + + +### Type: [help.PassportConfig](/API_docs/types/help.PassportConfig.html) + + +### Example: + +``` +$help_passportConfigNotModified = ['_' => 'help.passportConfigNotModified']; +``` diff --git a/docs/API_docs/constructors/help.peerColorOption.md b/docs/API_docs/constructors/help.peerColorOption.md new file mode 100644 index 0000000000..2a13ca9d3b --- /dev/null +++ b/docs/API_docs/constructors/help.peerColorOption.md @@ -0,0 +1,35 @@ +--- +title: "help.peerColorOption" +description: "Contains info about a color palette »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_peerColorOption.html +--- +# Constructor: help.peerColorOption +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains info about a [color palette »](https://core.telegram.org/api/colors). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hidden|[Bool](/API_docs/types/Bool.html) | Optional|Whether this palette should not be displayed as an option to the user when choosing a palette to apply to profile pages or message accents.| +|color\_id|[int](/API_docs/types/int.html) | Yes|Palette ID.| +|colors|[help.PeerColorSet](/API_docs/constructors/help.PeerColorSet.html) | Optional|Light mode palette.
Will be empty for IDs `0` to `6` inclusive, in which case a palette containing a single color from the following colors should be used: red, orange, violet, green, cyan, blue, pink for indexes 0 to 6.| +|dark\_colors|[help.PeerColorSet](/API_docs/constructors/help.PeerColorSet.html) | Optional|Dark mode palette. Optional, defaults to the palette in `colors` (or the autogenerated palette for IDs `0` to `6`) if absent.| +|channel\_min\_level|[int](/API_docs/types/int.html) | Optional|Channels can use this palette only after reaching at least the [boost level](https://core.telegram.org/api/boost) specified in this field.| +|group\_min\_level|[int](/API_docs/types/int.html) | Optional| + + + +### Type: [help.PeerColorOption](/API_docs/types/help.PeerColorOption.html) + + +### Example: + +``` +$help_peerColorOption = ['_' => 'help.peerColorOption', 'hidden' => Bool, 'color_id' => int, 'colors' => help.PeerColorSet, 'dark_colors' => help.PeerColorSet, 'channel_min_level' => int, 'group_min_level' => int]; +``` diff --git a/docs/API_docs/constructors/help.peerColorProfileSet.md b/docs/API_docs/constructors/help.peerColorProfileSet.md new file mode 100644 index 0000000000..36ffda1832 --- /dev/null +++ b/docs/API_docs/constructors/help.peerColorProfileSet.md @@ -0,0 +1,32 @@ +--- +title: "help.peerColorProfileSet" +description: "Represents a color palette that can be used in profile pages »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_peerColorProfileSet.html +--- +# Constructor: help.peerColorProfileSet +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a [color palette that can be used in profile pages »](https://core.telegram.org/api/colors). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|palette\_colors|Array of [int](/API_docs/types/int.html) | Yes|A list of 1-2 colors in RGB format, shown in the color palette settings to describe the current palette.| +|bg\_colors|Array of [int](/API_docs/types/int.html) | Yes|A list of 1-2 colors in RGB format describing the colors used to generate the actual background used in the profile page.| +|story\_colors|Array of [int](/API_docs/types/int.html) | Yes|A list of 2 colors in RGB format describing the colors of the gradient used for the unread active story indicator around the profile photo.| + + + +### Type: [help.PeerColorSet](/API_docs/types/help.PeerColorSet.html) + + +### Example: + +``` +$help_peerColorProfileSet = ['_' => 'help.peerColorProfileSet', 'palette_colors' => [int, int], 'bg_colors' => [int, int], 'story_colors' => [int, int]]; +``` diff --git a/docs/API_docs/constructors/help.peerColorSet.md b/docs/API_docs/constructors/help.peerColorSet.md new file mode 100644 index 0000000000..d2b406964b --- /dev/null +++ b/docs/API_docs/constructors/help.peerColorSet.md @@ -0,0 +1,30 @@ +--- +title: "help.peerColorSet" +description: "Represents a color palette that can be used in message accents »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_peerColorSet.html +--- +# Constructor: help.peerColorSet +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a [color palette that can be used in message accents »](https://core.telegram.org/api/colors). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|colors|Array of [int](/API_docs/types/int.html) | Yes|A list of 1-3 colors in RGB format, describing the accent color.| + + + +### Type: [help.PeerColorSet](/API_docs/types/help.PeerColorSet.html) + + +### Example: + +``` +$help_peerColorSet = ['_' => 'help.peerColorSet', 'colors' => [int, int]]; +``` diff --git a/docs/API_docs/constructors/help.peerColors.md b/docs/API_docs/constructors/help.peerColors.md new file mode 100644 index 0000000000..f5215fc481 --- /dev/null +++ b/docs/API_docs/constructors/help.peerColors.md @@ -0,0 +1,31 @@ +--- +title: "help.peerColors" +description: "Contains info about multiple color palettes »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_peerColors.html +--- +# Constructor: help.peerColors +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains info about multiple [color palettes »](https://core.telegram.org/api/colors). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hash|[int](/API_docs/types/int.html) | Yes| +|colors|Array of [help.PeerColorOption](/API_docs/constructors/help.PeerColorOption.html) | Yes|Usable [color palettes](https://core.telegram.org/api/colors).| + + + +### Type: [help.PeerColors](/API_docs/types/help.PeerColors.html) + + +### Example: + +``` +$help_peerColors = ['_' => 'help.peerColors', 'hash' => int, 'colors' => [help.PeerColorOption, help.PeerColorOption]]; +``` diff --git a/docs/API_docs/constructors/help.peerColorsNotModified.md b/docs/API_docs/constructors/help.peerColorsNotModified.md new file mode 100644 index 0000000000..12200aaff6 --- /dev/null +++ b/docs/API_docs/constructors/help.peerColorsNotModified.md @@ -0,0 +1,25 @@ +--- +title: "help.peerColorsNotModified" +description: "The list of color palettes has not changed." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_peerColorsNotModified.html +--- +# Constructor: help.peerColorsNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +The list of color palettes has not changed. + + + + +### Type: [help.PeerColors](/API_docs/types/help.PeerColors.html) + + +### Example: + +``` +$help_peerColorsNotModified = ['_' => 'help.peerColorsNotModified']; +``` diff --git a/docs/API_docs/constructors/help.premiumPromo.md b/docs/API_docs/constructors/help.premiumPromo.md new file mode 100644 index 0000000000..da09f3e11d --- /dev/null +++ b/docs/API_docs/constructors/help.premiumPromo.md @@ -0,0 +1,39 @@ +--- +title: "help.premiumPromo" +description: "Telegram Premium promotion information" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_premiumPromo.html +--- +# Constructor: help.premiumPromo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Telegram Premium promotion information + +Note that the `video_sections`+`videos` fields are a list of videos, and the corresponding premium feature identifiers. +They're equivalent to a section => video dictionary, with keys from `video_section` and values from `videos`. +The keys in `video_sections` correspond to a specific feature identifier, and the associated promotional video should be shown when the associated feature row is clicked. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|status\_text|[string](/API_docs/types/string.html) | Yes|Description of the current state of the user's Telegram Premium subscription| +|status\_entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Yes|[Message entities for styled text](https://core.telegram.org/api/entities)| +|video\_sections|Array of [string](/API_docs/types/string.html) | Yes|A list of [premium feature identifiers »](https://core.telegram.org/api/premium), associated to each video| +|videos|Array of [Document](/API_docs/types/Document.html) | Yes|A list of videos| +|period\_options|Array of [PremiumSubscriptionOption](/API_docs/types/PremiumSubscriptionOption.html) | Yes|Telegram Premium subscription options| +|users|Array of [User](/API_docs/types/User.html) | Yes|Related user information| + + + +### Type: [help.PremiumPromo](/API_docs/types/help.PremiumPromo.html) + + +### Example: + +``` +$help_premiumPromo = ['_' => 'help.premiumPromo', 'status_text' => 'string', 'status_entities' => [MessageEntity, MessageEntity], 'video_sections' => ['string', 'string'], 'videos' => [Document, Document], 'period_options' => [PremiumSubscriptionOption, PremiumSubscriptionOption], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/help.promoData.md b/docs/API_docs/constructors/help.promoData.md new file mode 100644 index 0000000000..54927df867 --- /dev/null +++ b/docs/API_docs/constructors/help.promoData.md @@ -0,0 +1,36 @@ +--- +title: "help.promoData" +description: "MTProxy/Public Service Announcement information" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_promoData.html +--- +# Constructor: help.promoData +[Back to constructors index](/API_docs/constructors/index.html) + + + +MTProxy/Public Service Announcement information + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|proxy|[Bool](/API_docs/types/Bool.html) | Optional|MTProxy-related channel| +|expires|[int](/API_docs/types/int.html) | Yes|Expiry of PSA/MTProxy info| +|peer|[long](/API_docs/types/long.html) | Yes|MTProxy/PSA peer| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Chat info| +|users|Array of [User](/API_docs/types/User.html) | Yes|User info| +|psa\_type|[string](/API_docs/types/string.html) | Optional|PSA type| +|psa\_message|[string](/API_docs/types/string.html) | Optional|PSA message| + + + +### Type: [help.PromoData](/API_docs/types/help.PromoData.html) + + +### Example: + +``` +$help_promoData = ['_' => 'help.promoData', 'proxy' => Bool, 'expires' => int, 'peer' => long, 'chats' => [Chat, Chat], 'users' => [User, User], 'psa_type' => 'string', 'psa_message' => 'string']; +``` diff --git a/docs/API_docs/constructors/help.promoDataEmpty.md b/docs/API_docs/constructors/help.promoDataEmpty.md new file mode 100644 index 0000000000..454a8c7e11 --- /dev/null +++ b/docs/API_docs/constructors/help.promoDataEmpty.md @@ -0,0 +1,30 @@ +--- +title: "help.promoDataEmpty" +description: "No PSA/MTProxy info is available" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_promoDataEmpty.html +--- +# Constructor: help.promoDataEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +No PSA/MTProxy info is available + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|expires|[int](/API_docs/types/int.html) | Yes|Re-fetch PSA/MTProxy info after the specified number of seconds| + + + +### Type: [help.PromoData](/API_docs/types/help.PromoData.html) + + +### Example: + +``` +$help_promoDataEmpty = ['_' => 'help.promoDataEmpty', 'expires' => int]; +``` diff --git a/docs/API_docs/constructors/help.recentMeUrls.md b/docs/API_docs/constructors/help.recentMeUrls.md new file mode 100644 index 0000000000..ea78246f6c --- /dev/null +++ b/docs/API_docs/constructors/help.recentMeUrls.md @@ -0,0 +1,32 @@ +--- +title: "help.recentMeUrls" +description: "Recent t.me URLs" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_recentMeUrls.html +--- +# Constructor: help.recentMeUrls +[Back to constructors index](/API_docs/constructors/index.html) + + + +Recent t.me URLs + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|urls|Array of [RecentMeUrl](/API_docs/types/RecentMeUrl.html) | Yes|URLs| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users| + + + +### Type: [help.RecentMeUrls](/API_docs/types/help.RecentMeUrls.html) + + +### Example: + +``` +$help_recentMeUrls = ['_' => 'help.recentMeUrls', 'urls' => [RecentMeUrl, RecentMeUrl], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/help.support.md b/docs/API_docs/constructors/help.support.md new file mode 100644 index 0000000000..1ced4555e7 --- /dev/null +++ b/docs/API_docs/constructors/help.support.md @@ -0,0 +1,31 @@ +--- +title: "help.support" +description: "Info on support user." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_support.html +--- +# Constructor: help.support +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info on support user. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|phone\_number|[string](/API_docs/types/string.html) | Yes|Phone number| +|user|[User](/API_docs/types/User.html) | Optional|User| + + + +### Type: [help.Support](/API_docs/types/help.Support.html) + + +### Example: + +``` +$help_support = ['_' => 'help.support', 'phone_number' => 'string', 'user' => User]; +``` diff --git a/docs/API_docs/constructors/help.supportName.md b/docs/API_docs/constructors/help.supportName.md new file mode 100644 index 0000000000..2568b7ab64 --- /dev/null +++ b/docs/API_docs/constructors/help.supportName.md @@ -0,0 +1,30 @@ +--- +title: "help.supportName" +description: "Localized name for telegram support" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_supportName.html +--- +# Constructor: help.supportName +[Back to constructors index](/API_docs/constructors/index.html) + + + +Localized name for telegram support + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|name|[string](/API_docs/types/string.html) | Yes|Localized name| + + + +### Type: [help.SupportName](/API_docs/types/help.SupportName.html) + + +### Example: + +``` +$help_supportName = ['_' => 'help.supportName', 'name' => 'string']; +``` diff --git a/docs/API_docs/constructors/help.termsOfService.md b/docs/API_docs/constructors/help.termsOfService.md new file mode 100644 index 0000000000..c62efd7f67 --- /dev/null +++ b/docs/API_docs/constructors/help.termsOfService.md @@ -0,0 +1,95 @@ +--- +title: "help.termsOfService" +description: "Info about the latest telegram Terms Of Service" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_termsOfService.html +--- +# Constructor: help.termsOfService +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about the latest telegram Terms Of Service + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|popup|[Bool](/API_docs/types/Bool.html) | Optional|Whether a prompt must be showed to the user, in order to accept the new terms.| +|id|[DataJSON](/API_docs/types/DataJSON.html) | Yes|ID of the new terms| +|text|[string](/API_docs/types/string.html) | Yes|Text of the new terms| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Yes|[Message entities for styled text](https://core.telegram.org/api/entities)| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|min\_age\_confirm|[int](/API_docs/types/int.html) | Optional|Minimum age required to sign up to telegram, the user must confirm that they is older than the minimum age.| + + + +### Type: [help.TermsOfService](/API_docs/types/help.TermsOfService.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$help_termsOfService = ['_' => 'help.termsOfService', 'popup' => Bool, 'id' => DataJSON, 'text' => 'string', 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'min_age_confirm' => int]; +``` diff --git a/docs/API_docs/constructors/help.termsOfServiceUpdate.md b/docs/API_docs/constructors/help.termsOfServiceUpdate.md new file mode 100644 index 0000000000..16f6e23eb5 --- /dev/null +++ b/docs/API_docs/constructors/help.termsOfServiceUpdate.md @@ -0,0 +1,31 @@ +--- +title: "help.termsOfServiceUpdate" +description: "Info about an update of telegram's terms of service. If the terms of service are declined, then the account.deleteAccount method should be called with the reason 'Decline ToS update'" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_termsOfServiceUpdate.html +--- +# Constructor: help.termsOfServiceUpdate +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about an update of telegram's terms of service. If the terms of service are declined, then the [account.deleteAccount](../methods/account.deleteAccount.html) method should be called with the reason "Decline ToS update" + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|expires|[int](/API_docs/types/int.html) | Yes|New TOS updates will have to be queried using [help.getTermsOfServiceUpdate](../methods/help.getTermsOfServiceUpdate.html) in `expires` seconds| +|terms\_of\_service|[help.TermsOfService](/API_docs/constructors/help.TermsOfService.html) | Yes|New terms of service| + + + +### Type: [help.TermsOfServiceUpdate](/API_docs/types/help.TermsOfServiceUpdate.html) + + +### Example: + +``` +$help_termsOfServiceUpdate = ['_' => 'help.termsOfServiceUpdate', 'expires' => int, 'terms_of_service' => help.TermsOfService]; +``` diff --git a/docs/API_docs/constructors/help.termsOfServiceUpdateEmpty.md b/docs/API_docs/constructors/help.termsOfServiceUpdateEmpty.md new file mode 100644 index 0000000000..082eeb1fdb --- /dev/null +++ b/docs/API_docs/constructors/help.termsOfServiceUpdateEmpty.md @@ -0,0 +1,30 @@ +--- +title: "help.termsOfServiceUpdateEmpty" +description: "No changes were made to telegram's terms of service" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_termsOfServiceUpdateEmpty.html +--- +# Constructor: help.termsOfServiceUpdateEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +No changes were made to telegram's terms of service + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|expires|[int](/API_docs/types/int.html) | Yes|New TOS updates will have to be queried using [help.getTermsOfServiceUpdate](../methods/help.getTermsOfServiceUpdate.html) in `expires` seconds| + + + +### Type: [help.TermsOfServiceUpdate](/API_docs/types/help.TermsOfServiceUpdate.html) + + +### Example: + +``` +$help_termsOfServiceUpdateEmpty = ['_' => 'help.termsOfServiceUpdateEmpty', 'expires' => int]; +``` diff --git a/docs/API_docs/constructors/help.timezonesList.md b/docs/API_docs/constructors/help.timezonesList.md new file mode 100644 index 0000000000..b26afbccbb --- /dev/null +++ b/docs/API_docs/constructors/help.timezonesList.md @@ -0,0 +1,29 @@ +--- +title: "help.timezonesList" +description: "help.timezonesList attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_timezonesList.html +--- +# Constructor: help.timezonesList +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|timezones|Array of [Timezone](/API_docs/types/Timezone.html) | Yes| +|hash|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [help.TimezonesList](/API_docs/types/help.TimezonesList.html) + + +### Example: + +``` +$help_timezonesList = ['_' => 'help.timezonesList', 'timezones' => [Timezone, Timezone], 'hash' => int]; +``` diff --git a/docs/API_docs/constructors/help.timezonesListNotModified.md b/docs/API_docs/constructors/help.timezonesListNotModified.md new file mode 100644 index 0000000000..5e8405ed8b --- /dev/null +++ b/docs/API_docs/constructors/help.timezonesListNotModified.md @@ -0,0 +1,23 @@ +--- +title: "help.timezonesListNotModified" +description: "help.timezonesListNotModified attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_timezonesListNotModified.html +--- +# Constructor: help.timezonesListNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + + + + +### Type: [help.TimezonesList](/API_docs/types/help.TimezonesList.html) + + +### Example: + +``` +$help_timezonesListNotModified = ['_' => 'help.timezonesListNotModified']; +``` diff --git a/docs/API_docs/constructors/help.userInfo.md b/docs/API_docs/constructors/help.userInfo.md new file mode 100644 index 0000000000..fd8a1cee5f --- /dev/null +++ b/docs/API_docs/constructors/help.userInfo.md @@ -0,0 +1,94 @@ +--- +title: "help.userInfo" +description: "Internal use" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_userInfo.html +--- +# Constructor: help.userInfo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Internal use + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|message|[string](/API_docs/types/string.html) | Yes|Info| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Yes|[Message entities for styled text](https://core.telegram.org/api/entities)| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|author|[string](/API_docs/types/string.html) | Yes|Author| +|date|[int](/API_docs/types/int.html) | Yes|Date| + + + +### Type: [help.UserInfo](/API_docs/types/help.UserInfo.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$help_userInfo = ['_' => 'help.userInfo', 'message' => 'string', 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'author' => 'string', 'date' => int]; +``` diff --git a/docs/API_docs/constructors/help.userInfoEmpty.md b/docs/API_docs/constructors/help.userInfoEmpty.md new file mode 100644 index 0000000000..233eac7765 --- /dev/null +++ b/docs/API_docs/constructors/help.userInfoEmpty.md @@ -0,0 +1,25 @@ +--- +title: "help.userInfoEmpty" +description: "Internal use" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/help_userInfoEmpty.html +--- +# Constructor: help.userInfoEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Internal use + + + + +### Type: [help.UserInfo](/API_docs/types/help.UserInfo.html) + + +### Example: + +``` +$help_userInfoEmpty = ['_' => 'help.userInfoEmpty']; +``` diff --git a/docs/API_docs/constructors/highScore.md b/docs/API_docs/constructors/highScore.md new file mode 100644 index 0000000000..f132e5f654 --- /dev/null +++ b/docs/API_docs/constructors/highScore.md @@ -0,0 +1,31 @@ +--- +title: "highScore" +description: "Game highscore" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: highScore +[Back to constructors index](/API_docs/constructors/index.html) + + + +Game highscore + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|pos|[int](/API_docs/types/int.html) | Yes|Position in highscore list| +|user\_id|[long](/API_docs/types/long.html) | Yes|User ID| +|score|[int](/API_docs/types/int.html) | Yes|Score| + + + +### Type: [HighScore](/API_docs/types/HighScore.html) + + +### Example: + +``` +$highScore = ['_' => 'highScore', 'pos' => int, 'user_id' => long, 'score' => int]; +``` diff --git a/docs/API_docs/constructors/importedContact.md b/docs/API_docs/constructors/importedContact.md new file mode 100644 index 0000000000..b04be4cbc0 --- /dev/null +++ b/docs/API_docs/constructors/importedContact.md @@ -0,0 +1,30 @@ +--- +title: "importedContact" +description: "Successfully imported contact." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: importedContact +[Back to constructors index](/API_docs/constructors/index.html) + + + +Successfully imported contact. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|User identifier| +|client\_id|[long](/API_docs/types/long.html) | Yes|The contact's client identifier (passed to one of the [InputContact](../types/InputContact.html) constructors)| + + + +### Type: [ImportedContact](/API_docs/types/ImportedContact.html) + + +### Example: + +``` +$importedContact = ['_' => 'importedContact', 'user_id' => long, 'client_id' => long]; +``` diff --git a/docs/API_docs/constructors/index.md b/docs/API_docs/constructors/index.md new file mode 100644 index 0000000000..bd3373a694 --- /dev/null +++ b/docs/API_docs/constructors/index.md @@ -0,0 +1,3976 @@ +--- +title: Constructors +description: List of constructors +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructors +[Back to API documentation index](..) + +*** +

[$account.authorizationForm](/API_docs/constructors/account.authorizationForm.html) = \['required_types' => \[[SecureRequiredType](/API_docs/types/SecureRequiredType.html)\], 'values' => \[[SecureValue](/API_docs/types/SecureValue.html)\], 'errors' => \[[SecureValueError](/API_docs/types/SecureValueError.html)\], 'users' => \[[User](/API_docs/types/User.html)\], 'privacy_policy_url' => [string](/API_docs/types/string.html), \]; + +*** +

[$account.authorizations](/API_docs/constructors/account.authorizations.html) = \['authorization_ttl_days' => [int](/API_docs/types/int.html), 'authorizations' => \[[Authorization](/API_docs/types/Authorization.html)\], \]; + +*** +

[$account.autoDownloadSettings](/API_docs/constructors/account.autoDownloadSettings.html) = \['low' => [AutoDownloadSettings](/API_docs/types/AutoDownloadSettings.html), 'medium' => [AutoDownloadSettings](/API_docs/types/AutoDownloadSettings.html), 'high' => [AutoDownloadSettings](/API_docs/types/AutoDownloadSettings.html), \]; + +*** +

[$account.autoSaveSettings](/API_docs/constructors/account.autoSaveSettings.html) = \['users_settings' => [AutoSaveSettings](/API_docs/types/AutoSaveSettings.html), 'chats_settings' => [AutoSaveSettings](/API_docs/types/AutoSaveSettings.html), 'broadcasts_settings' => [AutoSaveSettings](/API_docs/types/AutoSaveSettings.html), 'exceptions' => \[[AutoSaveException](/API_docs/types/AutoSaveException.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$account.businessChatLinks](/API_docs/constructors/account.businessChatLinks.html) = \['links' => \[[BusinessChatLink](/API_docs/types/BusinessChatLink.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$account.connectedBots](/API_docs/constructors/account.connectedBots.html) = \['connected_bots' => \[[ConnectedBot](/API_docs/types/ConnectedBot.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$account.contentSettings](/API_docs/constructors/account.contentSettings.html) = \['sensitive_enabled' => [Bool](/API_docs/types/Bool.html), 'sensitive_can_change' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$account.emailVerified](/API_docs/constructors/account.emailVerified.html) = \['email' => [string](/API_docs/types/string.html), \]; + +*** +

[$account.emailVerifiedLogin](/API_docs/constructors/account.emailVerifiedLogin.html) = \['email' => [string](/API_docs/types/string.html), 'sent_code' => [auth.SentCode](/API_docs/types/auth.SentCode.html), \]; + +*** +

[$account.emojiStatuses](/API_docs/constructors/account.emojiStatuses.html) = \['hash' => [long](/API_docs/types/long.html), 'statuses' => \[[EmojiStatus](/API_docs/types/EmojiStatus.html)\], \]; + +*** +

[$account.emojiStatusesNotModified](/API_docs/constructors/account.emojiStatusesNotModified.html) = \[\]; + +*** +

[$account.password](/API_docs/constructors/account.password.html) = \['has_recovery' => [Bool](/API_docs/types/Bool.html), 'has_secure_values' => [Bool](/API_docs/types/Bool.html), 'has_password' => [Bool](/API_docs/types/Bool.html), 'current_algo' => [PasswordKdfAlgo](/API_docs/types/PasswordKdfAlgo.html), 'srp_B' => [bytes](/API_docs/types/bytes.html), 'srp_id' => [long](/API_docs/types/long.html), 'hint' => [string](/API_docs/types/string.html), 'email_unconfirmed_pattern' => [string](/API_docs/types/string.html), 'new_algo' => [PasswordKdfAlgo](/API_docs/types/PasswordKdfAlgo.html), 'new_secure_algo' => [SecurePasswordKdfAlgo](/API_docs/types/SecurePasswordKdfAlgo.html), 'secure_random' => [bytes](/API_docs/types/bytes.html), 'pending_reset_date' => [int](/API_docs/types/int.html), 'login_email_pattern' => [string](/API_docs/types/string.html), \]; + +*** +

[$account.passwordInputSettings](/API_docs/constructors/account.passwordInputSettings.html) = \['new_algo' => [PasswordKdfAlgo](/API_docs/types/PasswordKdfAlgo.html), 'new_password_hash' => [bytes](/API_docs/types/bytes.html), 'hint' => [string](/API_docs/types/string.html), 'email' => [string](/API_docs/types/string.html), 'new_secure_settings' => [SecureSecretSettings](/API_docs/types/SecureSecretSettings.html), \]; + +*** +

[$account.passwordSettings](/API_docs/constructors/account.passwordSettings.html) = \['email' => [string](/API_docs/types/string.html), 'secure_settings' => [SecureSecretSettings](/API_docs/types/SecureSecretSettings.html), \]; + +*** +

[$account.privacyRules](/API_docs/constructors/account.privacyRules.html) = \['rules' => \[[PrivacyRule](/API_docs/types/PrivacyRule.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$account.resetPasswordFailedWait](/API_docs/constructors/account.resetPasswordFailedWait.html) = \['retry_date' => [int](/API_docs/types/int.html), \]; + +*** +

[$account.resetPasswordOk](/API_docs/constructors/account.resetPasswordOk.html) = \[\]; + +*** +

[$account.resetPasswordRequestedWait](/API_docs/constructors/account.resetPasswordRequestedWait.html) = \['until_date' => [int](/API_docs/types/int.html), \]; + +*** +

[$account.resolvedBusinessChatLinks](/API_docs/constructors/account.resolvedBusinessChatLinks.html) = \['peer' => [long](/API_docs/types/long.html), 'message' => [string](/API_docs/types/string.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$account.savedRingtone](/API_docs/constructors/account.savedRingtone.html) = \[\]; + +*** +

[$account.savedRingtoneConverted](/API_docs/constructors/account.savedRingtoneConverted.html) = \['document' => [Document](/API_docs/types/Document.html), \]; + +*** +

[$account.savedRingtones](/API_docs/constructors/account.savedRingtones.html) = \['hash' => [long](/API_docs/types/long.html), 'ringtones' => \[[Document](/API_docs/types/Document.html)\], \]; + +*** +

[$account.savedRingtonesNotModified](/API_docs/constructors/account.savedRingtonesNotModified.html) = \[\]; + +*** +

[$account.sentEmailCode](/API_docs/constructors/account.sentEmailCode.html) = \['email_pattern' => [string](/API_docs/types/string.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$account.takeout](/API_docs/constructors/account.takeout.html) = \['id' => [long](/API_docs/types/long.html), \]; + +*** +

[$account.themes](/API_docs/constructors/account.themes.html) = \['hash' => [long](/API_docs/types/long.html), 'themes' => \[[Theme](/API_docs/types/Theme.html)\], \]; + +*** +

[$account.themesNotModified](/API_docs/constructors/account.themesNotModified.html) = \[\]; + +*** +

[$account.tmpPassword](/API_docs/constructors/account.tmpPassword.html) = \['tmp_password' => [bytes](/API_docs/types/bytes.html), 'valid_until' => [int](/API_docs/types/int.html), \]; + +*** +

[$account.wallPapers](/API_docs/constructors/account.wallPapers.html) = \['hash' => [long](/API_docs/types/long.html), 'wallpapers' => \[[WallPaper](/API_docs/types/WallPaper.html)\], \]; + +*** +

[$account.wallPapersNotModified](/API_docs/constructors/account.wallPapersNotModified.html) = \[\]; + +*** +

[$account.webAuthorizations](/API_docs/constructors/account.webAuthorizations.html) = \['authorizations' => \[[WebAuthorization](/API_docs/types/WebAuthorization.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$accountDaysTTL](/API_docs/constructors/accountDaysTTL.html) = \['days' => [int](/API_docs/types/int.html), \]; + +*** +

[$appWebViewResultUrl](/API_docs/constructors/appWebViewResultUrl.html) = \['url' => [string](/API_docs/types/string.html), \]; + +*** +

[$attachMenuBot](/API_docs/constructors/attachMenuBot.html) = \['inactive' => [Bool](/API_docs/types/Bool.html), 'has_settings' => [Bool](/API_docs/types/Bool.html), 'request_write_access' => [Bool](/API_docs/types/Bool.html), 'show_in_attach_menu' => [Bool](/API_docs/types/Bool.html), 'show_in_side_menu' => [Bool](/API_docs/types/Bool.html), 'side_menu_disclaimer_needed' => [Bool](/API_docs/types/Bool.html), 'bot_id' => [long](/API_docs/types/long.html), 'short_name' => [string](/API_docs/types/string.html), 'peer_types' => \[[AttachMenuPeerType](/API_docs/types/AttachMenuPeerType.html)\], 'icons' => \[[AttachMenuBotIcon](/API_docs/types/AttachMenuBotIcon.html)\], \]; + +*** +

[$attachMenuBotIcon](/API_docs/constructors/attachMenuBotIcon.html) = \['name' => [string](/API_docs/types/string.html), 'icon' => [Document](/API_docs/types/Document.html), 'colors' => \[[AttachMenuBotIconColor](/API_docs/types/AttachMenuBotIconColor.html)\], \]; + +*** +

[$attachMenuBotIconColor](/API_docs/constructors/attachMenuBotIconColor.html) = \['name' => [string](/API_docs/types/string.html), 'color' => [int](/API_docs/types/int.html), \]; + +*** +

[$attachMenuBots](/API_docs/constructors/attachMenuBots.html) = \['hash' => [long](/API_docs/types/long.html), 'bots' => \[[AttachMenuBot](/API_docs/types/AttachMenuBot.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$attachMenuBotsBot](/API_docs/constructors/attachMenuBotsBot.html) = \['bot' => [AttachMenuBot](/API_docs/types/AttachMenuBot.html), 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$attachMenuBotsNotModified](/API_docs/constructors/attachMenuBotsNotModified.html) = \[\]; + +*** +

[$attachMenuPeerTypeBotPM](/API_docs/constructors/attachMenuPeerTypeBotPM.html) = \[\]; + +*** +

[$attachMenuPeerTypeBroadcast](/API_docs/constructors/attachMenuPeerTypeBroadcast.html) = \[\]; + +*** +

[$attachMenuPeerTypeChat](/API_docs/constructors/attachMenuPeerTypeChat.html) = \[\]; + +*** +

[$attachMenuPeerTypePM](/API_docs/constructors/attachMenuPeerTypePM.html) = \[\]; + +*** +

[$attachMenuPeerTypeSameBotPM](/API_docs/constructors/attachMenuPeerTypeSameBotPM.html) = \[\]; + +*** +

[$auth.authorization](/API_docs/constructors/auth.authorization.html) = \['setup_password_required' => [Bool](/API_docs/types/Bool.html), 'otherwise_relogin_days' => [int](/API_docs/types/int.html), 'tmp_sessions' => [int](/API_docs/types/int.html), 'future_auth_token' => [bytes](/API_docs/types/bytes.html), 'user' => [User](/API_docs/types/User.html), \]; + +*** +

[$auth.authorizationSignUpRequired](/API_docs/constructors/auth.authorizationSignUpRequired.html) = \['terms_of_service' => [help.TermsOfService](/API_docs/types/help.TermsOfService.html), \]; + +*** +

[$auth.codeTypeCall](/API_docs/constructors/auth.codeTypeCall.html) = \[\]; + +*** +

[$auth.codeTypeFlashCall](/API_docs/constructors/auth.codeTypeFlashCall.html) = \[\]; + +*** +

[$auth.codeTypeFragmentSms](/API_docs/constructors/auth.codeTypeFragmentSms.html) = \[\]; + +*** +

[$auth.codeTypeMissedCall](/API_docs/constructors/auth.codeTypeMissedCall.html) = \[\]; + +*** +

[$auth.codeTypeSms](/API_docs/constructors/auth.codeTypeSms.html) = \[\]; + +*** +

[$auth.exportedAuthorization](/API_docs/constructors/auth.exportedAuthorization.html) = \['id' => [long](/API_docs/types/long.html), 'bytes' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$auth.loggedOut](/API_docs/constructors/auth.loggedOut.html) = \['future_auth_token' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$auth.loginToken](/API_docs/constructors/auth.loginToken.html) = \['expires' => [int](/API_docs/types/int.html), 'token' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$auth.loginTokenMigrateTo](/API_docs/constructors/auth.loginTokenMigrateTo.html) = \['dc_id' => [int](/API_docs/types/int.html), 'token' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$auth.loginTokenSuccess](/API_docs/constructors/auth.loginTokenSuccess.html) = \['authorization' => [auth.Authorization](/API_docs/types/auth.Authorization.html), \]; + +*** +

[$auth.passwordRecovery](/API_docs/constructors/auth.passwordRecovery.html) = \['email_pattern' => [string](/API_docs/types/string.html), \]; + +*** +

[$auth.sentCode](/API_docs/constructors/auth.sentCode.html) = \['type' => [auth.SentCodeType](/API_docs/types/auth.SentCodeType.html), 'phone_code_hash' => [string](/API_docs/types/string.html), 'next_type' => [auth.CodeType](/API_docs/types/auth.CodeType.html), 'timeout' => [int](/API_docs/types/int.html), \]; + +*** +

[$auth.sentCodeSuccess](/API_docs/constructors/auth.sentCodeSuccess.html) = \['authorization' => [auth.Authorization](/API_docs/types/auth.Authorization.html), \]; + +*** +

[$auth.sentCodeTypeApp](/API_docs/constructors/auth.sentCodeTypeApp.html) = \['length' => [int](/API_docs/types/int.html), \]; + +*** +

[$auth.sentCodeTypeCall](/API_docs/constructors/auth.sentCodeTypeCall.html) = \['length' => [int](/API_docs/types/int.html), \]; + +*** +

[$auth.sentCodeTypeEmailCode](/API_docs/constructors/auth.sentCodeTypeEmailCode.html) = \['apple_signin_allowed' => [Bool](/API_docs/types/Bool.html), 'google_signin_allowed' => [Bool](/API_docs/types/Bool.html), 'email_pattern' => [string](/API_docs/types/string.html), 'length' => [int](/API_docs/types/int.html), 'reset_available_period' => [int](/API_docs/types/int.html), 'reset_pending_date' => [int](/API_docs/types/int.html), \]; + +*** +

[$auth.sentCodeTypeFirebaseSms](/API_docs/constructors/auth.sentCodeTypeFirebaseSms.html) = \['nonce' => [bytes](/API_docs/types/bytes.html), 'receipt' => [string](/API_docs/types/string.html), 'push_timeout' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$auth.sentCodeTypeFlashCall](/API_docs/constructors/auth.sentCodeTypeFlashCall.html) = \['pattern' => [string](/API_docs/types/string.html), \]; + +*** +

[$auth.sentCodeTypeFragmentSms](/API_docs/constructors/auth.sentCodeTypeFragmentSms.html) = \['url' => [string](/API_docs/types/string.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$auth.sentCodeTypeMissedCall](/API_docs/constructors/auth.sentCodeTypeMissedCall.html) = \['prefix' => [string](/API_docs/types/string.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$auth.sentCodeTypeSetUpEmailRequired](/API_docs/constructors/auth.sentCodeTypeSetUpEmailRequired.html) = \['apple_signin_allowed' => [Bool](/API_docs/types/Bool.html), 'google_signin_allowed' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$auth.sentCodeTypeSms](/API_docs/constructors/auth.sentCodeTypeSms.html) = \['length' => [int](/API_docs/types/int.html), \]; + +*** +

[$auth.sentCodeTypeSmsPhrase](/API_docs/constructors/auth.sentCodeTypeSmsPhrase.html) = \['beginning' => [string](/API_docs/types/string.html), \]; + +*** +

[$auth.sentCodeTypeSmsWord](/API_docs/constructors/auth.sentCodeTypeSmsWord.html) = \['beginning' => [string](/API_docs/types/string.html), \]; + +*** +

[$authorization](/API_docs/constructors/authorization.html) = \['current' => [Bool](/API_docs/types/Bool.html), 'official_app' => [Bool](/API_docs/types/Bool.html), 'password_pending' => [Bool](/API_docs/types/Bool.html), 'encrypted_requests_disabled' => [Bool](/API_docs/types/Bool.html), 'call_requests_disabled' => [Bool](/API_docs/types/Bool.html), 'unconfirmed' => [Bool](/API_docs/types/Bool.html), 'hash' => [long](/API_docs/types/long.html), 'device_model' => [string](/API_docs/types/string.html), 'platform' => [string](/API_docs/types/string.html), 'system_version' => [string](/API_docs/types/string.html), 'api_id' => [int](/API_docs/types/int.html), 'app_name' => [string](/API_docs/types/string.html), 'app_version' => [string](/API_docs/types/string.html), 'date_created' => [int](/API_docs/types/int.html), 'date_active' => [int](/API_docs/types/int.html), 'ip' => [string](/API_docs/types/string.html), 'country' => [string](/API_docs/types/string.html), 'region' => [string](/API_docs/types/string.html), \]; + +*** +

[$autoDownloadSettings](/API_docs/constructors/autoDownloadSettings.html) = \['disabled' => [Bool](/API_docs/types/Bool.html), 'video_preload_large' => [Bool](/API_docs/types/Bool.html), 'audio_preload_next' => [Bool](/API_docs/types/Bool.html), 'phonecalls_less_data' => [Bool](/API_docs/types/Bool.html), 'stories_preload' => [Bool](/API_docs/types/Bool.html), 'photo_size_max' => [int](/API_docs/types/int.html), 'video_size_max' => [long](/API_docs/types/long.html), 'file_size_max' => [long](/API_docs/types/long.html), 'video_upload_maxbitrate' => [int](/API_docs/types/int.html), 'small_queue_active_operations_max' => [int](/API_docs/types/int.html), 'large_queue_active_operations_max' => [int](/API_docs/types/int.html), \]; + +*** +

[$autoSaveException](/API_docs/constructors/autoSaveException.html) = \['peer' => [long](/API_docs/types/long.html), 'settings' => [AutoSaveSettings](/API_docs/types/AutoSaveSettings.html), \]; + +*** +

[$autoSaveSettings](/API_docs/constructors/autoSaveSettings.html) = \['photos' => [Bool](/API_docs/types/Bool.html), 'videos' => [Bool](/API_docs/types/Bool.html), 'video_max_size' => [long](/API_docs/types/long.html), \]; + +*** +

[$availableReaction](/API_docs/constructors/availableReaction.html) = \['inactive' => [Bool](/API_docs/types/Bool.html), 'premium' => [Bool](/API_docs/types/Bool.html), 'reaction' => [string](/API_docs/types/string.html), 'title' => [string](/API_docs/types/string.html), 'static_icon' => [Document](/API_docs/types/Document.html), 'appear_animation' => [Document](/API_docs/types/Document.html), 'select_animation' => [Document](/API_docs/types/Document.html), 'activate_animation' => [Document](/API_docs/types/Document.html), 'effect_animation' => [Document](/API_docs/types/Document.html), 'around_animation' => [Document](/API_docs/types/Document.html), 'center_icon' => [Document](/API_docs/types/Document.html), \]; + +*** +

[$bankCardOpenUrl](/API_docs/constructors/bankCardOpenUrl.html) = \['url' => [string](/API_docs/types/string.html), 'name' => [string](/API_docs/types/string.html), \]; + +*** +

[$baseThemeArctic](/API_docs/constructors/baseThemeArctic.html) = \[\]; + +*** +

[$baseThemeClassic](/API_docs/constructors/baseThemeClassic.html) = \[\]; + +*** +

[$baseThemeDay](/API_docs/constructors/baseThemeDay.html) = \[\]; + +*** +

[$baseThemeNight](/API_docs/constructors/baseThemeNight.html) = \[\]; + +*** +

[$baseThemeTinted](/API_docs/constructors/baseThemeTinted.html) = \[\]; + +*** +

[$birthday](/API_docs/constructors/birthday.html) = \['day' => [int](/API_docs/types/int.html), 'month' => [int](/API_docs/types/int.html), 'year' => [int](/API_docs/types/int.html), \]; + +*** +

[$boolFalse](/API_docs/constructors/boolFalse.html) = \[\]; + +*** +

[$boolTrue](/API_docs/constructors/boolTrue.html) = \[\]; + +*** +

[$boost](/API_docs/constructors/boost.html) = \['gift' => [Bool](/API_docs/types/Bool.html), 'giveaway' => [Bool](/API_docs/types/Bool.html), 'unclaimed' => [Bool](/API_docs/types/Bool.html), 'id' => [string](/API_docs/types/string.html), 'user_id' => [long](/API_docs/types/long.html), 'giveaway_msg_id' => [int](/API_docs/types/int.html), 'date' => [int](/API_docs/types/int.html), 'expires' => [int](/API_docs/types/int.html), 'used_gift_slug' => [string](/API_docs/types/string.html), 'multiplier' => [int](/API_docs/types/int.html), \]; + +*** +

[$botApp](/API_docs/constructors/botApp.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'short_name' => [string](/API_docs/types/string.html), 'title' => [string](/API_docs/types/string.html), 'description' => [string](/API_docs/types/string.html), 'photo' => [Photo](/API_docs/types/Photo.html), 'document' => [Document](/API_docs/types/Document.html), 'hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$botAppNotModified](/API_docs/constructors/botAppNotModified.html) = \[\]; + +*** +

[$botBusinessConnection](/API_docs/constructors/botBusinessConnection.html) = \['can_reply' => [Bool](/API_docs/types/Bool.html), 'disabled' => [Bool](/API_docs/types/Bool.html), 'connection_id' => [string](/API_docs/types/string.html), 'user_id' => [long](/API_docs/types/long.html), 'dc_id' => [int](/API_docs/types/int.html), 'date' => [int](/API_docs/types/int.html), \]; + +*** +

[$botCommand](/API_docs/constructors/botCommand.html) = \['command' => [string](/API_docs/types/string.html), 'description' => [string](/API_docs/types/string.html), \]; + +*** +

[$botCommandScopeChatAdmins](/API_docs/constructors/botCommandScopeChatAdmins.html) = \[\]; + +*** +

[$botCommandScopeChats](/API_docs/constructors/botCommandScopeChats.html) = \[\]; + +*** +

[$botCommandScopeDefault](/API_docs/constructors/botCommandScopeDefault.html) = \[\]; + +*** +

[$botCommandScopePeer](/API_docs/constructors/botCommandScopePeer.html) = \['peer' => [InputPeer](/API_docs/types/InputPeer.html), \]; + +*** +

[$botCommandScopePeerAdmins](/API_docs/constructors/botCommandScopePeerAdmins.html) = \['peer' => [InputPeer](/API_docs/types/InputPeer.html), \]; + +*** +

[$botCommandScopePeerUser](/API_docs/constructors/botCommandScopePeerUser.html) = \['peer' => [InputPeer](/API_docs/types/InputPeer.html), 'user_id' => [InputUser](/API_docs/types/InputUser.html), \]; + +*** +

[$botCommandScopeUsers](/API_docs/constructors/botCommandScopeUsers.html) = \[\]; + +*** +

[$botInfo](/API_docs/constructors/botInfo.html) = \['user_id' => [long](/API_docs/types/long.html), 'description' => [string](/API_docs/types/string.html), 'description_photo' => [Photo](/API_docs/types/Photo.html), 'description_document' => [Document](/API_docs/types/Document.html), 'commands' => \[[BotCommand](/API_docs/types/BotCommand.html)\], 'menu_button' => [BotMenuButton](/API_docs/types/BotMenuButton.html), \]; + +*** +

[$botInlineMediaResult](/API_docs/constructors/botInlineMediaResult.html) = \['id' => [string](/API_docs/types/string.html), 'type' => [string](/API_docs/types/string.html), 'photo' => [Photo](/API_docs/types/Photo.html), 'document' => [Document](/API_docs/types/Document.html), 'title' => [string](/API_docs/types/string.html), 'description' => [string](/API_docs/types/string.html), 'send_message' => [BotInlineMessage](/API_docs/types/BotInlineMessage.html), \]; + +*** +

[$botInlineMessageMediaAuto](/API_docs/constructors/botInlineMessageMediaAuto.html) = \['invert_media' => [Bool](/API_docs/types/Bool.html), 'message' => [string](/API_docs/types/string.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'reply_markup' => [ReplyMarkup](/API_docs/types/ReplyMarkup.html), \]; + +*** +

[$botInlineMessageMediaContact](/API_docs/constructors/botInlineMessageMediaContact.html) = \['phone_number' => [string](/API_docs/types/string.html), 'first_name' => [string](/API_docs/types/string.html), 'last_name' => [string](/API_docs/types/string.html), 'vcard' => [string](/API_docs/types/string.html), 'reply_markup' => [ReplyMarkup](/API_docs/types/ReplyMarkup.html), \]; + +*** +

[$botInlineMessageMediaGeo](/API_docs/constructors/botInlineMessageMediaGeo.html) = \['geo' => [GeoPoint](/API_docs/types/GeoPoint.html), 'heading' => [int](/API_docs/types/int.html), 'period' => [int](/API_docs/types/int.html), 'proximity_notification_radius' => [int](/API_docs/types/int.html), 'reply_markup' => [ReplyMarkup](/API_docs/types/ReplyMarkup.html), \]; + +*** +

[$botInlineMessageMediaInvoice](/API_docs/constructors/botInlineMessageMediaInvoice.html) = \['shipping_address_requested' => [Bool](/API_docs/types/Bool.html), 'test' => [Bool](/API_docs/types/Bool.html), 'title' => [string](/API_docs/types/string.html), 'description' => [string](/API_docs/types/string.html), 'photo' => [WebDocument](/API_docs/types/WebDocument.html), 'currency' => [string](/API_docs/types/string.html), 'total_amount' => [long](/API_docs/types/long.html), 'reply_markup' => [ReplyMarkup](/API_docs/types/ReplyMarkup.html), \]; + +*** +

[$botInlineMessageMediaVenue](/API_docs/constructors/botInlineMessageMediaVenue.html) = \['geo' => [GeoPoint](/API_docs/types/GeoPoint.html), 'title' => [string](/API_docs/types/string.html), 'address' => [string](/API_docs/types/string.html), 'provider' => [string](/API_docs/types/string.html), 'venue_id' => [string](/API_docs/types/string.html), 'venue_type' => [string](/API_docs/types/string.html), 'reply_markup' => [ReplyMarkup](/API_docs/types/ReplyMarkup.html), \]; + +*** +

[$botInlineMessageMediaWebPage](/API_docs/constructors/botInlineMessageMediaWebPage.html) = \['invert_media' => [Bool](/API_docs/types/Bool.html), 'force_large_media' => [Bool](/API_docs/types/Bool.html), 'force_small_media' => [Bool](/API_docs/types/Bool.html), 'manual' => [Bool](/API_docs/types/Bool.html), 'safe' => [Bool](/API_docs/types/Bool.html), 'message' => [string](/API_docs/types/string.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'url' => [string](/API_docs/types/string.html), 'reply_markup' => [ReplyMarkup](/API_docs/types/ReplyMarkup.html), \]; + +*** +

[$botInlineMessageText](/API_docs/constructors/botInlineMessageText.html) = \['no_webpage' => [Bool](/API_docs/types/Bool.html), 'invert_media' => [Bool](/API_docs/types/Bool.html), 'message' => [string](/API_docs/types/string.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'reply_markup' => [ReplyMarkup](/API_docs/types/ReplyMarkup.html), \]; + +*** +

[$botInlineResult](/API_docs/constructors/botInlineResult.html) = \['id' => [string](/API_docs/types/string.html), 'type' => [string](/API_docs/types/string.html), 'title' => [string](/API_docs/types/string.html), 'description' => [string](/API_docs/types/string.html), 'url' => [string](/API_docs/types/string.html), 'thumb' => [WebDocument](/API_docs/types/WebDocument.html), 'content' => [WebDocument](/API_docs/types/WebDocument.html), 'send_message' => [BotInlineMessage](/API_docs/types/BotInlineMessage.html), \]; + +*** +

[$botMenuButton](/API_docs/constructors/botMenuButton.html) = \['text' => [string](/API_docs/types/string.html), 'url' => [string](/API_docs/types/string.html), \]; + +*** +

[$botMenuButtonCommands](/API_docs/constructors/botMenuButtonCommands.html) = \[\]; + +*** +

[$botMenuButtonDefault](/API_docs/constructors/botMenuButtonDefault.html) = \[\]; + +*** +

[$bots.botInfo](/API_docs/constructors/bots.botInfo.html) = \['name' => [string](/API_docs/types/string.html), 'about' => [string](/API_docs/types/string.html), 'description' => [string](/API_docs/types/string.html), \]; + +*** +

[$broadcastRevenueBalances](/API_docs/constructors/broadcastRevenueBalances.html) = \['current_balance' => [long](/API_docs/types/long.html), 'available_balance' => [long](/API_docs/types/long.html), 'overall_revenue' => [long](/API_docs/types/long.html), \]; + +*** +

[$broadcastRevenueTransactionProceeds](/API_docs/constructors/broadcastRevenueTransactionProceeds.html) = \['amount' => [long](/API_docs/types/long.html), 'from_date' => [int](/API_docs/types/int.html), 'to_date' => [int](/API_docs/types/int.html), \]; + +*** +

[$broadcastRevenueTransactionRefund](/API_docs/constructors/broadcastRevenueTransactionRefund.html) = \['amount' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'provider' => [string](/API_docs/types/string.html), \]; + +*** +

[$broadcastRevenueTransactionWithdrawal](/API_docs/constructors/broadcastRevenueTransactionWithdrawal.html) = \['pending' => [Bool](/API_docs/types/Bool.html), 'failed' => [Bool](/API_docs/types/Bool.html), 'amount' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'provider' => [string](/API_docs/types/string.html), 'transaction_date' => [int](/API_docs/types/int.html), 'transaction_url' => [string](/API_docs/types/string.html), \]; + +*** +

[$businessAwayMessage](/API_docs/constructors/businessAwayMessage.html) = \['offline_only' => [Bool](/API_docs/types/Bool.html), 'shortcut_id' => [int](/API_docs/types/int.html), 'schedule' => [BusinessAwayMessageSchedule](/API_docs/types/BusinessAwayMessageSchedule.html), 'recipients' => [BusinessRecipients](/API_docs/types/BusinessRecipients.html), \]; + +*** +

[$businessAwayMessageScheduleAlways](/API_docs/constructors/businessAwayMessageScheduleAlways.html) = \[\]; + +*** +

[$businessAwayMessageScheduleCustom](/API_docs/constructors/businessAwayMessageScheduleCustom.html) = \['start_date' => [int](/API_docs/types/int.html), 'end_date' => [int](/API_docs/types/int.html), \]; + +*** +

[$businessAwayMessageScheduleOutsideWorkHours](/API_docs/constructors/businessAwayMessageScheduleOutsideWorkHours.html) = \[\]; + +*** +

[$businessBotRecipients](/API_docs/constructors/businessBotRecipients.html) = \['existing_chats' => [Bool](/API_docs/types/Bool.html), 'new_chats' => [Bool](/API_docs/types/Bool.html), 'contacts' => [Bool](/API_docs/types/Bool.html), 'non_contacts' => [Bool](/API_docs/types/Bool.html), 'exclude_selected' => [Bool](/API_docs/types/Bool.html), 'users' => \[[long](/API_docs/types/long.html)\], 'exclude_users' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$businessChatLink](/API_docs/constructors/businessChatLink.html) = \['link' => [string](/API_docs/types/string.html), 'message' => [string](/API_docs/types/string.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'title' => [string](/API_docs/types/string.html), 'views' => [int](/API_docs/types/int.html), \]; + +*** +

[$businessGreetingMessage](/API_docs/constructors/businessGreetingMessage.html) = \['shortcut_id' => [int](/API_docs/types/int.html), 'recipients' => [BusinessRecipients](/API_docs/types/BusinessRecipients.html), 'no_activity_days' => [int](/API_docs/types/int.html), \]; + +*** +

[$businessIntro](/API_docs/constructors/businessIntro.html) = \['title' => [string](/API_docs/types/string.html), 'description' => [string](/API_docs/types/string.html), 'sticker' => [Document](/API_docs/types/Document.html), \]; + +*** +

[$businessLocation](/API_docs/constructors/businessLocation.html) = \['geo_point' => [GeoPoint](/API_docs/types/GeoPoint.html), 'address' => [string](/API_docs/types/string.html), \]; + +*** +

[$businessRecipients](/API_docs/constructors/businessRecipients.html) = \['existing_chats' => [Bool](/API_docs/types/Bool.html), 'new_chats' => [Bool](/API_docs/types/Bool.html), 'contacts' => [Bool](/API_docs/types/Bool.html), 'non_contacts' => [Bool](/API_docs/types/Bool.html), 'exclude_selected' => [Bool](/API_docs/types/Bool.html), 'users' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$businessWeeklyOpen](/API_docs/constructors/businessWeeklyOpen.html) = \['start_minute' => [int](/API_docs/types/int.html), 'end_minute' => [int](/API_docs/types/int.html), \]; + +*** +

[$businessWorkHours](/API_docs/constructors/businessWorkHours.html) = \['open_now' => [Bool](/API_docs/types/Bool.html), 'timezone_id' => [string](/API_docs/types/string.html), 'weekly_open' => \[[BusinessWeeklyOpen](/API_docs/types/BusinessWeeklyOpen.html)\], \]; + +*** +

[$cdnConfig](/API_docs/constructors/cdnConfig.html) = \['public_keys' => \[[CdnPublicKey](/API_docs/types/CdnPublicKey.html)\], \]; + +*** +

[$cdnPublicKey](/API_docs/constructors/cdnPublicKey.html) = \['dc_id' => [int](/API_docs/types/int.html), 'public_key' => [string](/API_docs/types/string.html), \]; + +*** +

[$channel](/API_docs/constructors/channel.html) = \['creator' => [Bool](/API_docs/types/Bool.html), 'left' => [Bool](/API_docs/types/Bool.html), 'broadcast' => [Bool](/API_docs/types/Bool.html), 'verified' => [Bool](/API_docs/types/Bool.html), 'megagroup' => [Bool](/API_docs/types/Bool.html), 'restricted' => [Bool](/API_docs/types/Bool.html), 'signatures' => [Bool](/API_docs/types/Bool.html), 'min' => [Bool](/API_docs/types/Bool.html), 'scam' => [Bool](/API_docs/types/Bool.html), 'has_link' => [Bool](/API_docs/types/Bool.html), 'has_geo' => [Bool](/API_docs/types/Bool.html), 'slowmode_enabled' => [Bool](/API_docs/types/Bool.html), 'call_active' => [Bool](/API_docs/types/Bool.html), 'call_not_empty' => [Bool](/API_docs/types/Bool.html), 'fake' => [Bool](/API_docs/types/Bool.html), 'gigagroup' => [Bool](/API_docs/types/Bool.html), 'noforwards' => [Bool](/API_docs/types/Bool.html), 'join_to_send' => [Bool](/API_docs/types/Bool.html), 'join_request' => [Bool](/API_docs/types/Bool.html), 'forum' => [Bool](/API_docs/types/Bool.html), 'stories_hidden' => [Bool](/API_docs/types/Bool.html), 'stories_hidden_min' => [Bool](/API_docs/types/Bool.html), 'stories_unavailable' => [Bool](/API_docs/types/Bool.html), 'id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'title' => [string](/API_docs/types/string.html), 'username' => [string](/API_docs/types/string.html), 'photo' => [ChatPhoto](/API_docs/types/ChatPhoto.html), 'date' => [int](/API_docs/types/int.html), 'restriction_reason' => \[[RestrictionReason](/API_docs/types/RestrictionReason.html)\], 'admin_rights' => [ChatAdminRights](/API_docs/types/ChatAdminRights.html), 'banned_rights' => [ChatBannedRights](/API_docs/types/ChatBannedRights.html), 'default_banned_rights' => [ChatBannedRights](/API_docs/types/ChatBannedRights.html), 'participants_count' => [int](/API_docs/types/int.html), 'usernames' => \[[Username](/API_docs/types/Username.html)\], 'stories_max_id' => [int](/API_docs/types/int.html), 'color' => [PeerColor](/API_docs/types/PeerColor.html), 'profile_color' => [PeerColor](/API_docs/types/PeerColor.html), 'emoji_status' => [EmojiStatus](/API_docs/types/EmojiStatus.html), 'level' => [int](/API_docs/types/int.html), \]; + +*** +

[$channelAdminLogEvent](/API_docs/constructors/channelAdminLogEvent.html) = \['id' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'user_id' => [long](/API_docs/types/long.html), 'action' => [ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html), \]; + +*** +

[$channelAdminLogEventActionChangeAbout](/API_docs/constructors/channelAdminLogEventActionChangeAbout.html) = \['prev_value' => [string](/API_docs/types/string.html), 'new_value' => [string](/API_docs/types/string.html), \]; + +*** +

[$channelAdminLogEventActionChangeAvailableReactions](/API_docs/constructors/channelAdminLogEventActionChangeAvailableReactions.html) = \['prev_value' => [ChatReactions](/API_docs/types/ChatReactions.html), 'new_value' => [ChatReactions](/API_docs/types/ChatReactions.html), \]; + +*** +

[$channelAdminLogEventActionChangeEmojiStatus](/API_docs/constructors/channelAdminLogEventActionChangeEmojiStatus.html) = \['prev_value' => [EmojiStatus](/API_docs/types/EmojiStatus.html), 'new_value' => [EmojiStatus](/API_docs/types/EmojiStatus.html), \]; + +*** +

[$channelAdminLogEventActionChangeEmojiStickerSet](/API_docs/constructors/channelAdminLogEventActionChangeEmojiStickerSet.html) = \['prev_stickerset' => [InputStickerSet](/API_docs/types/InputStickerSet.html), 'new_stickerset' => [InputStickerSet](/API_docs/types/InputStickerSet.html), \]; + +*** +

[$channelAdminLogEventActionChangeHistoryTTL](/API_docs/constructors/channelAdminLogEventActionChangeHistoryTTL.html) = \['prev_value' => [int](/API_docs/types/int.html), 'new_value' => [int](/API_docs/types/int.html), \]; + +*** +

[$channelAdminLogEventActionChangeLinkedChat](/API_docs/constructors/channelAdminLogEventActionChangeLinkedChat.html) = \['prev_value' => [long](/API_docs/types/long.html), 'new_value' => [long](/API_docs/types/long.html), \]; + +*** +

[$channelAdminLogEventActionChangeLocation](/API_docs/constructors/channelAdminLogEventActionChangeLocation.html) = \['prev_value' => [ChannelLocation](/API_docs/types/ChannelLocation.html), 'new_value' => [ChannelLocation](/API_docs/types/ChannelLocation.html), \]; + +*** +

[$channelAdminLogEventActionChangePeerColor](/API_docs/constructors/channelAdminLogEventActionChangePeerColor.html) = \['prev_value' => [PeerColor](/API_docs/types/PeerColor.html), 'new_value' => [PeerColor](/API_docs/types/PeerColor.html), \]; + +*** +

[$channelAdminLogEventActionChangePhoto](/API_docs/constructors/channelAdminLogEventActionChangePhoto.html) = \['prev_photo' => [Photo](/API_docs/types/Photo.html), 'new_photo' => [Photo](/API_docs/types/Photo.html), \]; + +*** +

[$channelAdminLogEventActionChangeProfilePeerColor](/API_docs/constructors/channelAdminLogEventActionChangeProfilePeerColor.html) = \['prev_value' => [PeerColor](/API_docs/types/PeerColor.html), 'new_value' => [PeerColor](/API_docs/types/PeerColor.html), \]; + +*** +

[$channelAdminLogEventActionChangeStickerSet](/API_docs/constructors/channelAdminLogEventActionChangeStickerSet.html) = \['prev_stickerset' => [InputStickerSet](/API_docs/types/InputStickerSet.html), 'new_stickerset' => [InputStickerSet](/API_docs/types/InputStickerSet.html), \]; + +*** +

[$channelAdminLogEventActionChangeTitle](/API_docs/constructors/channelAdminLogEventActionChangeTitle.html) = \['prev_value' => [string](/API_docs/types/string.html), 'new_value' => [string](/API_docs/types/string.html), \]; + +*** +

[$channelAdminLogEventActionChangeUsername](/API_docs/constructors/channelAdminLogEventActionChangeUsername.html) = \['prev_value' => [string](/API_docs/types/string.html), 'new_value' => [string](/API_docs/types/string.html), \]; + +*** +

[$channelAdminLogEventActionChangeUsernames](/API_docs/constructors/channelAdminLogEventActionChangeUsernames.html) = \['prev_value' => \[[string](/API_docs/types/string.html)\], 'new_value' => \[[string](/API_docs/types/string.html)\], \]; + +*** +

[$channelAdminLogEventActionChangeWallpaper](/API_docs/constructors/channelAdminLogEventActionChangeWallpaper.html) = \['prev_value' => [WallPaper](/API_docs/types/WallPaper.html), 'new_value' => [WallPaper](/API_docs/types/WallPaper.html), \]; + +*** +

[$channelAdminLogEventActionCreateTopic](/API_docs/constructors/channelAdminLogEventActionCreateTopic.html) = \['topic' => [ForumTopic](/API_docs/types/ForumTopic.html), \]; + +*** +

[$channelAdminLogEventActionDefaultBannedRights](/API_docs/constructors/channelAdminLogEventActionDefaultBannedRights.html) = \['prev_banned_rights' => [ChatBannedRights](/API_docs/types/ChatBannedRights.html), 'new_banned_rights' => [ChatBannedRights](/API_docs/types/ChatBannedRights.html), \]; + +*** +

[$channelAdminLogEventActionDeleteMessage](/API_docs/constructors/channelAdminLogEventActionDeleteMessage.html) = \['message' => [Message](/API_docs/types/Message.html), \]; + +*** +

[$channelAdminLogEventActionDeleteTopic](/API_docs/constructors/channelAdminLogEventActionDeleteTopic.html) = \['topic' => [ForumTopic](/API_docs/types/ForumTopic.html), \]; + +*** +

[$channelAdminLogEventActionDiscardGroupCall](/API_docs/constructors/channelAdminLogEventActionDiscardGroupCall.html) = \['call' => [InputGroupCall](/API_docs/types/InputGroupCall.html), \]; + +*** +

[$channelAdminLogEventActionEditMessage](/API_docs/constructors/channelAdminLogEventActionEditMessage.html) = \['prev_message' => [Message](/API_docs/types/Message.html), 'new_message' => [Message](/API_docs/types/Message.html), \]; + +*** +

[$channelAdminLogEventActionEditTopic](/API_docs/constructors/channelAdminLogEventActionEditTopic.html) = \['prev_topic' => [ForumTopic](/API_docs/types/ForumTopic.html), 'new_topic' => [ForumTopic](/API_docs/types/ForumTopic.html), \]; + +*** +

[$channelAdminLogEventActionExportedInviteDelete](/API_docs/constructors/channelAdminLogEventActionExportedInviteDelete.html) = \['invite' => [ExportedChatInvite](/API_docs/types/ExportedChatInvite.html), \]; + +*** +

[$channelAdminLogEventActionExportedInviteEdit](/API_docs/constructors/channelAdminLogEventActionExportedInviteEdit.html) = \['prev_invite' => [ExportedChatInvite](/API_docs/types/ExportedChatInvite.html), 'new_invite' => [ExportedChatInvite](/API_docs/types/ExportedChatInvite.html), \]; + +*** +

[$channelAdminLogEventActionExportedInviteRevoke](/API_docs/constructors/channelAdminLogEventActionExportedInviteRevoke.html) = \['invite' => [ExportedChatInvite](/API_docs/types/ExportedChatInvite.html), \]; + +*** +

[$channelAdminLogEventActionParticipantInvite](/API_docs/constructors/channelAdminLogEventActionParticipantInvite.html) = \['participant' => [ChannelParticipant](/API_docs/types/ChannelParticipant.html), \]; + +*** +

[$channelAdminLogEventActionParticipantJoin](/API_docs/constructors/channelAdminLogEventActionParticipantJoin.html) = \[\]; + +*** +

[$channelAdminLogEventActionParticipantJoinByInvite](/API_docs/constructors/channelAdminLogEventActionParticipantJoinByInvite.html) = \['via_chatlist' => [Bool](/API_docs/types/Bool.html), 'invite' => [ExportedChatInvite](/API_docs/types/ExportedChatInvite.html), \]; + +*** +

[$channelAdminLogEventActionParticipantJoinByRequest](/API_docs/constructors/channelAdminLogEventActionParticipantJoinByRequest.html) = \['invite' => [ExportedChatInvite](/API_docs/types/ExportedChatInvite.html), 'approved_by' => [long](/API_docs/types/long.html), \]; + +*** +

[$channelAdminLogEventActionParticipantLeave](/API_docs/constructors/channelAdminLogEventActionParticipantLeave.html) = \[\]; + +*** +

[$channelAdminLogEventActionParticipantMute](/API_docs/constructors/channelAdminLogEventActionParticipantMute.html) = \['participant' => [GroupCallParticipant](/API_docs/types/GroupCallParticipant.html), \]; + +*** +

[$channelAdminLogEventActionParticipantToggleAdmin](/API_docs/constructors/channelAdminLogEventActionParticipantToggleAdmin.html) = \['prev_participant' => [ChannelParticipant](/API_docs/types/ChannelParticipant.html), 'new_participant' => [ChannelParticipant](/API_docs/types/ChannelParticipant.html), \]; + +*** +

[$channelAdminLogEventActionParticipantToggleBan](/API_docs/constructors/channelAdminLogEventActionParticipantToggleBan.html) = \['prev_participant' => [ChannelParticipant](/API_docs/types/ChannelParticipant.html), 'new_participant' => [ChannelParticipant](/API_docs/types/ChannelParticipant.html), \]; + +*** +

[$channelAdminLogEventActionParticipantUnmute](/API_docs/constructors/channelAdminLogEventActionParticipantUnmute.html) = \['participant' => [GroupCallParticipant](/API_docs/types/GroupCallParticipant.html), \]; + +*** +

[$channelAdminLogEventActionParticipantVolume](/API_docs/constructors/channelAdminLogEventActionParticipantVolume.html) = \['participant' => [GroupCallParticipant](/API_docs/types/GroupCallParticipant.html), \]; + +*** +

[$channelAdminLogEventActionPinTopic](/API_docs/constructors/channelAdminLogEventActionPinTopic.html) = \['prev_topic' => [ForumTopic](/API_docs/types/ForumTopic.html), 'new_topic' => [ForumTopic](/API_docs/types/ForumTopic.html), \]; + +*** +

[$channelAdminLogEventActionSendMessage](/API_docs/constructors/channelAdminLogEventActionSendMessage.html) = \['message' => [Message](/API_docs/types/Message.html), \]; + +*** +

[$channelAdminLogEventActionStartGroupCall](/API_docs/constructors/channelAdminLogEventActionStartGroupCall.html) = \['call' => [InputGroupCall](/API_docs/types/InputGroupCall.html), \]; + +*** +

[$channelAdminLogEventActionStopPoll](/API_docs/constructors/channelAdminLogEventActionStopPoll.html) = \['message' => [Message](/API_docs/types/Message.html), \]; + +*** +

[$channelAdminLogEventActionToggleAntiSpam](/API_docs/constructors/channelAdminLogEventActionToggleAntiSpam.html) = \['new_value' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$channelAdminLogEventActionToggleForum](/API_docs/constructors/channelAdminLogEventActionToggleForum.html) = \['new_value' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$channelAdminLogEventActionToggleGroupCallSetting](/API_docs/constructors/channelAdminLogEventActionToggleGroupCallSetting.html) = \['join_muted' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$channelAdminLogEventActionToggleInvites](/API_docs/constructors/channelAdminLogEventActionToggleInvites.html) = \['new_value' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$channelAdminLogEventActionToggleNoForwards](/API_docs/constructors/channelAdminLogEventActionToggleNoForwards.html) = \['new_value' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$channelAdminLogEventActionTogglePreHistoryHidden](/API_docs/constructors/channelAdminLogEventActionTogglePreHistoryHidden.html) = \['new_value' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$channelAdminLogEventActionToggleSignatures](/API_docs/constructors/channelAdminLogEventActionToggleSignatures.html) = \['new_value' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$channelAdminLogEventActionToggleSlowMode](/API_docs/constructors/channelAdminLogEventActionToggleSlowMode.html) = \['prev_value' => [int](/API_docs/types/int.html), 'new_value' => [int](/API_docs/types/int.html), \]; + +*** +

[$channelAdminLogEventActionUpdatePinned](/API_docs/constructors/channelAdminLogEventActionUpdatePinned.html) = \['message' => [Message](/API_docs/types/Message.html), \]; + +*** +

[$channelAdminLogEventsFilter](/API_docs/constructors/channelAdminLogEventsFilter.html) = \['join' => [Bool](/API_docs/types/Bool.html), 'leave' => [Bool](/API_docs/types/Bool.html), 'invite' => [Bool](/API_docs/types/Bool.html), 'ban' => [Bool](/API_docs/types/Bool.html), 'unban' => [Bool](/API_docs/types/Bool.html), 'kick' => [Bool](/API_docs/types/Bool.html), 'unkick' => [Bool](/API_docs/types/Bool.html), 'promote' => [Bool](/API_docs/types/Bool.html), 'demote' => [Bool](/API_docs/types/Bool.html), 'info' => [Bool](/API_docs/types/Bool.html), 'settings' => [Bool](/API_docs/types/Bool.html), 'pinned' => [Bool](/API_docs/types/Bool.html), 'edit' => [Bool](/API_docs/types/Bool.html), 'delete' => [Bool](/API_docs/types/Bool.html), 'group_call' => [Bool](/API_docs/types/Bool.html), 'invites' => [Bool](/API_docs/types/Bool.html), 'send' => [Bool](/API_docs/types/Bool.html), 'forums' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$channelForbidden](/API_docs/constructors/channelForbidden.html) = \['broadcast' => [Bool](/API_docs/types/Bool.html), 'megagroup' => [Bool](/API_docs/types/Bool.html), 'id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'title' => [string](/API_docs/types/string.html), 'until_date' => [int](/API_docs/types/int.html), \]; + +*** +

[$channelFull](/API_docs/constructors/channelFull.html) = \['can_view_participants' => [Bool](/API_docs/types/Bool.html), 'can_set_username' => [Bool](/API_docs/types/Bool.html), 'can_set_stickers' => [Bool](/API_docs/types/Bool.html), 'hidden_prehistory' => [Bool](/API_docs/types/Bool.html), 'can_set_location' => [Bool](/API_docs/types/Bool.html), 'has_scheduled' => [Bool](/API_docs/types/Bool.html), 'can_view_stats' => [Bool](/API_docs/types/Bool.html), 'blocked' => [Bool](/API_docs/types/Bool.html), 'can_delete_channel' => [Bool](/API_docs/types/Bool.html), 'antispam' => [Bool](/API_docs/types/Bool.html), 'participants_hidden' => [Bool](/API_docs/types/Bool.html), 'translations_disabled' => [Bool](/API_docs/types/Bool.html), 'stories_pinned_available' => [Bool](/API_docs/types/Bool.html), 'view_forum_as_messages' => [Bool](/API_docs/types/Bool.html), 'restricted_sponsored' => [Bool](/API_docs/types/Bool.html), 'can_view_revenue' => [Bool](/API_docs/types/Bool.html), 'id' => [long](/API_docs/types/long.html), 'about' => [string](/API_docs/types/string.html), 'participants_count' => [int](/API_docs/types/int.html), 'admins_count' => [int](/API_docs/types/int.html), 'kicked_count' => [int](/API_docs/types/int.html), 'banned_count' => [int](/API_docs/types/int.html), 'online_count' => [int](/API_docs/types/int.html), 'read_inbox_max_id' => [int](/API_docs/types/int.html), 'read_outbox_max_id' => [int](/API_docs/types/int.html), 'unread_count' => [int](/API_docs/types/int.html), 'chat_photo' => [Photo](/API_docs/types/Photo.html), 'notify_settings' => [PeerNotifySettings](/API_docs/types/PeerNotifySettings.html), 'exported_invite' => [ExportedChatInvite](/API_docs/types/ExportedChatInvite.html), 'bot_info' => \[[BotInfo](/API_docs/types/BotInfo.html)\], 'migrated_from_chat_id' => [long](/API_docs/types/long.html), 'migrated_from_max_id' => [int](/API_docs/types/int.html), 'pinned_msg_id' => [int](/API_docs/types/int.html), 'stickerset' => [StickerSet](/API_docs/types/StickerSet.html), 'available_min_id' => [int](/API_docs/types/int.html), 'folder_id' => [int](/API_docs/types/int.html), 'linked_chat_id' => [long](/API_docs/types/long.html), 'location' => [ChannelLocation](/API_docs/types/ChannelLocation.html), 'slowmode_seconds' => [int](/API_docs/types/int.html), 'slowmode_next_send_date' => [int](/API_docs/types/int.html), 'stats_dc' => [int](/API_docs/types/int.html), 'pts' => [int](/API_docs/types/int.html), 'call' => [InputGroupCall](/API_docs/types/InputGroupCall.html), 'ttl_period' => [int](/API_docs/types/int.html), 'pending_suggestions' => \[[string](/API_docs/types/string.html)\], 'groupcall_default_join_as' => [Peer](/API_docs/types/Peer.html), 'theme_emoticon' => [string](/API_docs/types/string.html), 'requests_pending' => [int](/API_docs/types/int.html), 'recent_requesters' => \[[long](/API_docs/types/long.html)\], 'default_send_as' => [Peer](/API_docs/types/Peer.html), 'available_reactions' => [ChatReactions](/API_docs/types/ChatReactions.html), 'reactions_limit' => [int](/API_docs/types/int.html), 'stories' => [PeerStories](/API_docs/types/PeerStories.html), 'wallpaper' => [WallPaper](/API_docs/types/WallPaper.html), 'boosts_applied' => [int](/API_docs/types/int.html), 'boosts_unrestrict' => [int](/API_docs/types/int.html), 'emojiset' => [StickerSet](/API_docs/types/StickerSet.html), \]; + +*** +

[$channelLocation](/API_docs/constructors/channelLocation.html) = \['geo_point' => [GeoPoint](/API_docs/types/GeoPoint.html), 'address' => [string](/API_docs/types/string.html), \]; + +*** +

[$channelLocationEmpty](/API_docs/constructors/channelLocationEmpty.html) = \[\]; + +*** +

[$channelMessagesFilter](/API_docs/constructors/channelMessagesFilter.html) = \['exclude_new_messages' => [Bool](/API_docs/types/Bool.html), 'ranges' => \[[MessageRange](/API_docs/types/MessageRange.html)\], \]; + +*** +

[$channelMessagesFilterEmpty](/API_docs/constructors/channelMessagesFilterEmpty.html) = \[\]; + +*** +

[$channelParticipant](/API_docs/constructors/channelParticipant.html) = \['user_id' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), \]; + +*** +

[$channelParticipantAdmin](/API_docs/constructors/channelParticipantAdmin.html) = \['can_edit' => [Bool](/API_docs/types/Bool.html), 'self' => [Bool](/API_docs/types/Bool.html), 'user_id' => [long](/API_docs/types/long.html), 'inviter_id' => [long](/API_docs/types/long.html), 'promoted_by' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'admin_rights' => [ChatAdminRights](/API_docs/types/ChatAdminRights.html), 'rank' => [string](/API_docs/types/string.html), \]; + +*** +

[$channelParticipantBanned](/API_docs/constructors/channelParticipantBanned.html) = \['left' => [Bool](/API_docs/types/Bool.html), 'peer' => [long](/API_docs/types/long.html), 'kicked_by' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'banned_rights' => [ChatBannedRights](/API_docs/types/ChatBannedRights.html), \]; + +*** +

[$channelParticipantCreator](/API_docs/constructors/channelParticipantCreator.html) = \['user_id' => [long](/API_docs/types/long.html), 'admin_rights' => [ChatAdminRights](/API_docs/types/ChatAdminRights.html), 'rank' => [string](/API_docs/types/string.html), \]; + +*** +

[$channelParticipantLeft](/API_docs/constructors/channelParticipantLeft.html) = \['peer' => [long](/API_docs/types/long.html), \]; + +*** +

[$channelParticipantSelf](/API_docs/constructors/channelParticipantSelf.html) = \['via_request' => [Bool](/API_docs/types/Bool.html), 'user_id' => [long](/API_docs/types/long.html), 'inviter_id' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), \]; + +*** +

[$channelParticipantsAdmins](/API_docs/constructors/channelParticipantsAdmins.html) = \[\]; + +*** +

[$channelParticipantsBanned](/API_docs/constructors/channelParticipantsBanned.html) = \['q' => [string](/API_docs/types/string.html), \]; + +*** +

[$channelParticipantsBots](/API_docs/constructors/channelParticipantsBots.html) = \[\]; + +*** +

[$channelParticipantsContacts](/API_docs/constructors/channelParticipantsContacts.html) = \['q' => [string](/API_docs/types/string.html), \]; + +*** +

[$channelParticipantsKicked](/API_docs/constructors/channelParticipantsKicked.html) = \['q' => [string](/API_docs/types/string.html), \]; + +*** +

[$channelParticipantsMentions](/API_docs/constructors/channelParticipantsMentions.html) = \['q' => [string](/API_docs/types/string.html), 'top_msg_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$channelParticipantsRecent](/API_docs/constructors/channelParticipantsRecent.html) = \[\]; + +*** +

[$channelParticipantsSearch](/API_docs/constructors/channelParticipantsSearch.html) = \['q' => [string](/API_docs/types/string.html), \]; + +*** +

[$channels.adminLogResults](/API_docs/constructors/channels.adminLogResults.html) = \['events' => \[[ChannelAdminLogEvent](/API_docs/types/ChannelAdminLogEvent.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$channels.channelParticipant](/API_docs/constructors/channels.channelParticipant.html) = \['participant' => [ChannelParticipant](/API_docs/types/ChannelParticipant.html), 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$channels.channelParticipants](/API_docs/constructors/channels.channelParticipants.html) = \['count' => [int](/API_docs/types/int.html), 'participants' => \[[ChannelParticipant](/API_docs/types/ChannelParticipant.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$channels.channelParticipantsNotModified](/API_docs/constructors/channels.channelParticipantsNotModified.html) = \[\]; + +*** +

[$channels.sendAsPeers](/API_docs/constructors/channels.sendAsPeers.html) = \['peers' => \[[SendAsPeer](/API_docs/types/SendAsPeer.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$channels.sponsoredMessageReportResultAdsHidden](/API_docs/constructors/channels.sponsoredMessageReportResultAdsHidden.html) = \[\]; + +*** +

[$channels.sponsoredMessageReportResultChooseOption](/API_docs/constructors/channels.sponsoredMessageReportResultChooseOption.html) = \['title' => [string](/API_docs/types/string.html), 'options' => \[[SponsoredMessageReportOption](/API_docs/types/SponsoredMessageReportOption.html)\], \]; + +*** +

[$channels.sponsoredMessageReportResultReported](/API_docs/constructors/channels.sponsoredMessageReportResultReported.html) = \[\]; + +*** +

[$chat](/API_docs/constructors/chat.html) = \['creator' => [Bool](/API_docs/types/Bool.html), 'left' => [Bool](/API_docs/types/Bool.html), 'deactivated' => [Bool](/API_docs/types/Bool.html), 'call_active' => [Bool](/API_docs/types/Bool.html), 'call_not_empty' => [Bool](/API_docs/types/Bool.html), 'noforwards' => [Bool](/API_docs/types/Bool.html), 'id' => [long](/API_docs/types/long.html), 'title' => [string](/API_docs/types/string.html), 'photo' => [ChatPhoto](/API_docs/types/ChatPhoto.html), 'participants_count' => [int](/API_docs/types/int.html), 'date' => [int](/API_docs/types/int.html), 'version' => [int](/API_docs/types/int.html), 'migrated_to' => [InputChannel](/API_docs/types/InputChannel.html), 'admin_rights' => [ChatAdminRights](/API_docs/types/ChatAdminRights.html), 'default_banned_rights' => [ChatBannedRights](/API_docs/types/ChatBannedRights.html), \]; + +*** +

[$chatAdminRights](/API_docs/constructors/chatAdminRights.html) = \['change_info' => [Bool](/API_docs/types/Bool.html), 'post_messages' => [Bool](/API_docs/types/Bool.html), 'edit_messages' => [Bool](/API_docs/types/Bool.html), 'delete_messages' => [Bool](/API_docs/types/Bool.html), 'ban_users' => [Bool](/API_docs/types/Bool.html), 'invite_users' => [Bool](/API_docs/types/Bool.html), 'pin_messages' => [Bool](/API_docs/types/Bool.html), 'add_admins' => [Bool](/API_docs/types/Bool.html), 'anonymous' => [Bool](/API_docs/types/Bool.html), 'manage_call' => [Bool](/API_docs/types/Bool.html), 'other' => [Bool](/API_docs/types/Bool.html), 'manage_topics' => [Bool](/API_docs/types/Bool.html), 'post_stories' => [Bool](/API_docs/types/Bool.html), 'edit_stories' => [Bool](/API_docs/types/Bool.html), 'delete_stories' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$chatAdminWithInvites](/API_docs/constructors/chatAdminWithInvites.html) = \['admin_id' => [long](/API_docs/types/long.html), 'invites_count' => [int](/API_docs/types/int.html), 'revoked_invites_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$chatBannedRights](/API_docs/constructors/chatBannedRights.html) = \['view_messages' => [Bool](/API_docs/types/Bool.html), 'send_messages' => [Bool](/API_docs/types/Bool.html), 'send_media' => [Bool](/API_docs/types/Bool.html), 'send_stickers' => [Bool](/API_docs/types/Bool.html), 'send_gifs' => [Bool](/API_docs/types/Bool.html), 'send_games' => [Bool](/API_docs/types/Bool.html), 'send_inline' => [Bool](/API_docs/types/Bool.html), 'embed_links' => [Bool](/API_docs/types/Bool.html), 'send_polls' => [Bool](/API_docs/types/Bool.html), 'change_info' => [Bool](/API_docs/types/Bool.html), 'invite_users' => [Bool](/API_docs/types/Bool.html), 'pin_messages' => [Bool](/API_docs/types/Bool.html), 'manage_topics' => [Bool](/API_docs/types/Bool.html), 'send_photos' => [Bool](/API_docs/types/Bool.html), 'send_videos' => [Bool](/API_docs/types/Bool.html), 'send_roundvideos' => [Bool](/API_docs/types/Bool.html), 'send_audios' => [Bool](/API_docs/types/Bool.html), 'send_voices' => [Bool](/API_docs/types/Bool.html), 'send_docs' => [Bool](/API_docs/types/Bool.html), 'send_plain' => [Bool](/API_docs/types/Bool.html), 'until_date' => [int](/API_docs/types/int.html), \]; + +*** +

[$chatEmpty](/API_docs/constructors/chatEmpty.html) = \['id' => [long](/API_docs/types/long.html), \]; + +*** +

[$chatForbidden](/API_docs/constructors/chatForbidden.html) = \['id' => [long](/API_docs/types/long.html), 'title' => [string](/API_docs/types/string.html), \]; + +*** +

[$chatFull](/API_docs/constructors/chatFull.html) = \['can_set_username' => [Bool](/API_docs/types/Bool.html), 'has_scheduled' => [Bool](/API_docs/types/Bool.html), 'translations_disabled' => [Bool](/API_docs/types/Bool.html), 'id' => [long](/API_docs/types/long.html), 'about' => [string](/API_docs/types/string.html), 'participants' => [ChatParticipants](/API_docs/types/ChatParticipants.html), 'chat_photo' => [Photo](/API_docs/types/Photo.html), 'notify_settings' => [PeerNotifySettings](/API_docs/types/PeerNotifySettings.html), 'exported_invite' => [ExportedChatInvite](/API_docs/types/ExportedChatInvite.html), 'bot_info' => \[[BotInfo](/API_docs/types/BotInfo.html)\], 'pinned_msg_id' => [int](/API_docs/types/int.html), 'folder_id' => [int](/API_docs/types/int.html), 'call' => [InputGroupCall](/API_docs/types/InputGroupCall.html), 'ttl_period' => [int](/API_docs/types/int.html), 'groupcall_default_join_as' => [Peer](/API_docs/types/Peer.html), 'theme_emoticon' => [string](/API_docs/types/string.html), 'requests_pending' => [int](/API_docs/types/int.html), 'recent_requesters' => \[[long](/API_docs/types/long.html)\], 'available_reactions' => [ChatReactions](/API_docs/types/ChatReactions.html), 'reactions_limit' => [int](/API_docs/types/int.html), \]; + +*** +

[$chatInvite](/API_docs/constructors/chatInvite.html) = \['channel' => [Bool](/API_docs/types/Bool.html), 'broadcast' => [Bool](/API_docs/types/Bool.html), 'public' => [Bool](/API_docs/types/Bool.html), 'megagroup' => [Bool](/API_docs/types/Bool.html), 'request_needed' => [Bool](/API_docs/types/Bool.html), 'verified' => [Bool](/API_docs/types/Bool.html), 'scam' => [Bool](/API_docs/types/Bool.html), 'fake' => [Bool](/API_docs/types/Bool.html), 'title' => [string](/API_docs/types/string.html), 'about' => [string](/API_docs/types/string.html), 'photo' => [Photo](/API_docs/types/Photo.html), 'participants_count' => [int](/API_docs/types/int.html), 'participants' => \[[User](/API_docs/types/User.html)\], 'color' => [int](/API_docs/types/int.html), \]; + +*** +

[$chatInviteAlready](/API_docs/constructors/chatInviteAlready.html) = \['chat' => [Chat](/API_docs/types/Chat.html), \]; + +*** +

[$chatInviteExported](/API_docs/constructors/chatInviteExported.html) = \['revoked' => [Bool](/API_docs/types/Bool.html), 'permanent' => [Bool](/API_docs/types/Bool.html), 'request_needed' => [Bool](/API_docs/types/Bool.html), 'link' => [string](/API_docs/types/string.html), 'admin_id' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'start_date' => [int](/API_docs/types/int.html), 'expire_date' => [int](/API_docs/types/int.html), 'usage_limit' => [int](/API_docs/types/int.html), 'usage' => [int](/API_docs/types/int.html), 'requested' => [int](/API_docs/types/int.html), 'title' => [string](/API_docs/types/string.html), \]; + +*** +

[$chatInviteImporter](/API_docs/constructors/chatInviteImporter.html) = \['requested' => [Bool](/API_docs/types/Bool.html), 'via_chatlist' => [Bool](/API_docs/types/Bool.html), 'user_id' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'about' => [string](/API_docs/types/string.html), 'approved_by' => [long](/API_docs/types/long.html), \]; + +*** +

[$chatInvitePeek](/API_docs/constructors/chatInvitePeek.html) = \['chat' => [Chat](/API_docs/types/Chat.html), 'expires' => [int](/API_docs/types/int.html), \]; + +*** +

[$chatInvitePublicJoinRequests](/API_docs/constructors/chatInvitePublicJoinRequests.html) = \[\]; + +*** +

[$chatOnlines](/API_docs/constructors/chatOnlines.html) = \['onlines' => [int](/API_docs/types/int.html), \]; + +*** +

[$chatParticipant](/API_docs/constructors/chatParticipant.html) = \['user_id' => [long](/API_docs/types/long.html), 'inviter_id' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), \]; + +*** +

[$chatParticipantAdmin](/API_docs/constructors/chatParticipantAdmin.html) = \['user_id' => [long](/API_docs/types/long.html), 'inviter_id' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), \]; + +*** +

[$chatParticipantCreator](/API_docs/constructors/chatParticipantCreator.html) = \['user_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$chatParticipants](/API_docs/constructors/chatParticipants.html) = \['chat_id' => [long](/API_docs/types/long.html), 'participants' => \[[ChatParticipant](/API_docs/types/ChatParticipant.html)\], 'version' => [int](/API_docs/types/int.html), \]; + +*** +

[$chatParticipantsForbidden](/API_docs/constructors/chatParticipantsForbidden.html) = \['chat_id' => [long](/API_docs/types/long.html), 'self_participant' => [ChatParticipant](/API_docs/types/ChatParticipant.html), \]; + +*** +

[$chatPhoto](/API_docs/constructors/chatPhoto.html) = \['has_video' => [Bool](/API_docs/types/Bool.html), 'photo_id' => [long](/API_docs/types/long.html), 'stripped_thumb' => [bytes](/API_docs/types/bytes.html), 'dc_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$chatPhotoEmpty](/API_docs/constructors/chatPhotoEmpty.html) = \[\]; + +*** +

[$chatReactionsAll](/API_docs/constructors/chatReactionsAll.html) = \['allow_custom' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$chatReactionsNone](/API_docs/constructors/chatReactionsNone.html) = \[\]; + +*** +

[$chatReactionsSome](/API_docs/constructors/chatReactionsSome.html) = \['reactions' => \[[Reaction](/API_docs/types/Reaction.html)\], \]; + +*** +

[$chatlists.chatlistInvite](/API_docs/constructors/chatlists.chatlistInvite.html) = \['title' => [string](/API_docs/types/string.html), 'emoticon' => [string](/API_docs/types/string.html), 'peers' => \[[Peer](/API_docs/types/Peer.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$chatlists.chatlistInviteAlready](/API_docs/constructors/chatlists.chatlistInviteAlready.html) = \['filter_id' => [int](/API_docs/types/int.html), 'missing_peers' => \[[Peer](/API_docs/types/Peer.html)\], 'already_peers' => \[[Peer](/API_docs/types/Peer.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$chatlists.chatlistUpdates](/API_docs/constructors/chatlists.chatlistUpdates.html) = \['missing_peers' => \[[Peer](/API_docs/types/Peer.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$chatlists.exportedChatlistInvite](/API_docs/constructors/chatlists.exportedChatlistInvite.html) = \['filter' => [DialogFilter](/API_docs/types/DialogFilter.html), 'invite' => [ExportedChatlistInvite](/API_docs/types/ExportedChatlistInvite.html), \]; + +*** +

[$chatlists.exportedInvites](/API_docs/constructors/chatlists.exportedInvites.html) = \['invites' => \[[ExportedChatlistInvite](/API_docs/types/ExportedChatlistInvite.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$codeSettings](/API_docs/constructors/codeSettings.html) = \['allow_flashcall' => [Bool](/API_docs/types/Bool.html), 'current_number' => [Bool](/API_docs/types/Bool.html), 'allow_app_hash' => [Bool](/API_docs/types/Bool.html), 'allow_missed_call' => [Bool](/API_docs/types/Bool.html), 'allow_firebase' => [Bool](/API_docs/types/Bool.html), 'unknown_number' => [Bool](/API_docs/types/Bool.html), 'logout_tokens' => \[[bytes](/API_docs/types/bytes.html)\], 'token' => [string](/API_docs/types/string.html), 'app_sandbox' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$config](/API_docs/constructors/config.html) = \['default_p2p_contacts' => [Bool](/API_docs/types/Bool.html), 'preload_featured_stickers' => [Bool](/API_docs/types/Bool.html), 'revoke_pm_inbox' => [Bool](/API_docs/types/Bool.html), 'blocked_mode' => [Bool](/API_docs/types/Bool.html), 'force_try_ipv6' => [Bool](/API_docs/types/Bool.html), 'date' => [int](/API_docs/types/int.html), 'expires' => [int](/API_docs/types/int.html), 'test_mode' => [Bool](/API_docs/types/Bool.html), 'this_dc' => [int](/API_docs/types/int.html), 'dc_options' => \[[DcOption](/API_docs/types/DcOption.html)\], 'dc_txt_domain_name' => [string](/API_docs/types/string.html), 'chat_size_max' => [int](/API_docs/types/int.html), 'megagroup_size_max' => [int](/API_docs/types/int.html), 'forwarded_count_max' => [int](/API_docs/types/int.html), 'online_update_period_ms' => [int](/API_docs/types/int.html), 'offline_blur_timeout_ms' => [int](/API_docs/types/int.html), 'offline_idle_timeout_ms' => [int](/API_docs/types/int.html), 'online_cloud_timeout_ms' => [int](/API_docs/types/int.html), 'notify_cloud_delay_ms' => [int](/API_docs/types/int.html), 'notify_default_delay_ms' => [int](/API_docs/types/int.html), 'push_chat_period_ms' => [int](/API_docs/types/int.html), 'push_chat_limit' => [int](/API_docs/types/int.html), 'edit_time_limit' => [int](/API_docs/types/int.html), 'revoke_time_limit' => [int](/API_docs/types/int.html), 'revoke_pm_time_limit' => [int](/API_docs/types/int.html), 'rating_e_decay' => [int](/API_docs/types/int.html), 'stickers_recent_limit' => [int](/API_docs/types/int.html), 'channels_read_media_period' => [int](/API_docs/types/int.html), 'tmp_sessions' => [int](/API_docs/types/int.html), 'call_receive_timeout_ms' => [int](/API_docs/types/int.html), 'call_ring_timeout_ms' => [int](/API_docs/types/int.html), 'call_connect_timeout_ms' => [int](/API_docs/types/int.html), 'call_packet_timeout_ms' => [int](/API_docs/types/int.html), 'me_url_prefix' => [string](/API_docs/types/string.html), 'autoupdate_url_prefix' => [string](/API_docs/types/string.html), 'gif_search_username' => [string](/API_docs/types/string.html), 'venue_search_username' => [string](/API_docs/types/string.html), 'img_search_username' => [string](/API_docs/types/string.html), 'static_maps_provider' => [string](/API_docs/types/string.html), 'caption_length_max' => [int](/API_docs/types/int.html), 'message_length_max' => [int](/API_docs/types/int.html), 'webfile_dc_id' => [int](/API_docs/types/int.html), 'suggested_lang_code' => [string](/API_docs/types/string.html), 'lang_pack_version' => [int](/API_docs/types/int.html), 'base_lang_pack_version' => [int](/API_docs/types/int.html), 'reactions_default' => [Reaction](/API_docs/types/Reaction.html), 'autologin_token' => [string](/API_docs/types/string.html), \]; + +*** +

[$connectedBot](/API_docs/constructors/connectedBot.html) = \['can_reply' => [Bool](/API_docs/types/Bool.html), 'bot_id' => [long](/API_docs/types/long.html), 'recipients' => [BusinessBotRecipients](/API_docs/types/BusinessBotRecipients.html), \]; + +*** +

[$contact](/API_docs/constructors/contact.html) = \['user_id' => [long](/API_docs/types/long.html), 'mutual' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$contactBirthday](/API_docs/constructors/contactBirthday.html) = \['contact_id' => [long](/API_docs/types/long.html), 'birthday' => [Birthday](/API_docs/types/Birthday.html), \]; + +*** +

[$contactStatus](/API_docs/constructors/contactStatus.html) = \['user_id' => [long](/API_docs/types/long.html), 'status' => [UserStatus](/API_docs/types/UserStatus.html), \]; + +*** +

[$contacts.blocked](/API_docs/constructors/contacts.blocked.html) = \['blocked' => \[[PeerBlocked](/API_docs/types/PeerBlocked.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$contacts.blockedSlice](/API_docs/constructors/contacts.blockedSlice.html) = \['count' => [int](/API_docs/types/int.html), 'blocked' => \[[PeerBlocked](/API_docs/types/PeerBlocked.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$contacts.contactBirthdays](/API_docs/constructors/contacts.contactBirthdays.html) = \['contacts' => \[[ContactBirthday](/API_docs/types/ContactBirthday.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$contacts.contacts](/API_docs/constructors/contacts.contacts.html) = \['contacts' => \[[Contact](/API_docs/types/Contact.html)\], 'saved_count' => [int](/API_docs/types/int.html), 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$contacts.contactsNotModified](/API_docs/constructors/contacts.contactsNotModified.html) = \[\]; + +*** +

[$contacts.found](/API_docs/constructors/contacts.found.html) = \['my_results' => \[[Peer](/API_docs/types/Peer.html)\], 'results' => \[[Peer](/API_docs/types/Peer.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$contacts.importedContacts](/API_docs/constructors/contacts.importedContacts.html) = \['imported' => \[[ImportedContact](/API_docs/types/ImportedContact.html)\], 'popular_invites' => \[[PopularContact](/API_docs/types/PopularContact.html)\], 'retry_contacts' => \[[long](/API_docs/types/long.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$contacts.resolvedPeer](/API_docs/constructors/contacts.resolvedPeer.html) = \['peer' => [long](/API_docs/types/long.html), 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$contacts.topPeers](/API_docs/constructors/contacts.topPeers.html) = \['categories' => \[[TopPeerCategoryPeers](/API_docs/types/TopPeerCategoryPeers.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$contacts.topPeersDisabled](/API_docs/constructors/contacts.topPeersDisabled.html) = \[\]; + +*** +

[$contacts.topPeersNotModified](/API_docs/constructors/contacts.topPeersNotModified.html) = \[\]; + +*** +

[$dataJSON](/API_docs/constructors/dataJSON.html) = \['data' => [string](/API_docs/types/string.html), \]; + +*** +

[$dcOption](/API_docs/constructors/dcOption.html) = \['ipv6' => [Bool](/API_docs/types/Bool.html), 'media_only' => [Bool](/API_docs/types/Bool.html), 'tcpo_only' => [Bool](/API_docs/types/Bool.html), 'cdn' => [Bool](/API_docs/types/Bool.html), 'static' => [Bool](/API_docs/types/Bool.html), 'this_port_only' => [Bool](/API_docs/types/Bool.html), 'id' => [int](/API_docs/types/int.html), 'ip_address' => [string](/API_docs/types/string.html), 'port' => [int](/API_docs/types/int.html), 'secret' => [string](/API_docs/types/string.html), \]; + +*** +

[$decryptedMessage\_73](/API_docs/constructors/decryptedMessage_73.html) = \['no_webpage' => [Bool](/API_docs/types/Bool.html), 'silent' => [Bool](/API_docs/types/Bool.html), 'ttl' => [int](/API_docs/types/int.html), 'message' => [string](/API_docs/types/string.html), 'media' => [DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'via_bot_name' => [string](/API_docs/types/string.html), 'reply_to_random_id' => [long](/API_docs/types/long.html), 'grouped_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$decryptedMessageActionAbortKey\_20](/API_docs/constructors/decryptedMessageActionAbortKey_20.html) = \['exchange_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$decryptedMessageActionAcceptKey\_20](/API_docs/constructors/decryptedMessageActionAcceptKey_20.html) = \['exchange_id' => [long](/API_docs/types/long.html), 'g_b' => [bytes](/API_docs/types/bytes.html), 'key_fingerprint' => [long](/API_docs/types/long.html), \]; + +*** +

[$decryptedMessageActionCommitKey\_20](/API_docs/constructors/decryptedMessageActionCommitKey_20.html) = \['exchange_id' => [long](/API_docs/types/long.html), 'key_fingerprint' => [long](/API_docs/types/long.html), \]; + +*** +

[$decryptedMessageActionDeleteMessages\_8](/API_docs/constructors/decryptedMessageActionDeleteMessages_8.html) = \['random_ids' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$decryptedMessageActionFlushHistory\_8](/API_docs/constructors/decryptedMessageActionFlushHistory_8.html) = \[\]; + +*** +

[$decryptedMessageActionNoop\_20](/API_docs/constructors/decryptedMessageActionNoop_20.html) = \[\]; + +*** +

[$decryptedMessageActionNotifyLayer\_17](/API_docs/constructors/decryptedMessageActionNotifyLayer_17.html) = \['layer' => [int](/API_docs/types/int.html), \]; + +*** +

[$decryptedMessageActionReadMessages\_8](/API_docs/constructors/decryptedMessageActionReadMessages_8.html) = \['random_ids' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$decryptedMessageActionRequestKey\_20](/API_docs/constructors/decryptedMessageActionRequestKey_20.html) = \['exchange_id' => [long](/API_docs/types/long.html), 'g_a' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$decryptedMessageActionResend\_17](/API_docs/constructors/decryptedMessageActionResend_17.html) = \['start_seq_no' => [int](/API_docs/types/int.html), 'end_seq_no' => [int](/API_docs/types/int.html), \]; + +*** +

[$decryptedMessageActionScreenshotMessages\_8](/API_docs/constructors/decryptedMessageActionScreenshotMessages_8.html) = \['random_ids' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$decryptedMessageActionSetMessageTTL\_8](/API_docs/constructors/decryptedMessageActionSetMessageTTL_8.html) = \['ttl_seconds' => [int](/API_docs/types/int.html), \]; + +*** +

[$decryptedMessageActionTyping\_17](/API_docs/constructors/decryptedMessageActionTyping_17.html) = \['action' => [SendMessageAction](/API_docs/types/SendMessageAction.html), \]; + +*** +

[$decryptedMessageLayer\_17](/API_docs/constructors/decryptedMessageLayer_17.html) = \['layer' => [int](/API_docs/types/int.html), 'in_seq_no' => [int](/API_docs/types/int.html), 'out_seq_no' => [int](/API_docs/types/int.html), 'message' => [DecryptedMessage](/API_docs/types/DecryptedMessage.html), \]; + +*** +

[$decryptedMessageMediaAudio\_17](/API_docs/constructors/decryptedMessageMediaAudio_17.html) = \['duration' => [int](/API_docs/types/int.html), 'mime_type' => [string](/API_docs/types/string.html), 'size' => [int](/API_docs/types/int.html), 'key' => [bytes](/API_docs/types/bytes.html), 'iv' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$decryptedMessageMediaContact\_8](/API_docs/constructors/decryptedMessageMediaContact_8.html) = \['phone_number' => [string](/API_docs/types/string.html), 'first_name' => [string](/API_docs/types/string.html), 'last_name' => [string](/API_docs/types/string.html), 'user_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$decryptedMessageMediaDocument\_143](/API_docs/constructors/decryptedMessageMediaDocument_143.html) = \['thumb' => [bytes](/API_docs/types/bytes.html), 'thumb_w' => [int](/API_docs/types/int.html), 'thumb_h' => [int](/API_docs/types/int.html), 'mime_type' => [string](/API_docs/types/string.html), 'size' => [long](/API_docs/types/long.html), 'key' => [bytes](/API_docs/types/bytes.html), 'iv' => [bytes](/API_docs/types/bytes.html), 'attributes' => \[[DocumentAttribute](/API_docs/types/DocumentAttribute.html)\], 'caption' => [string](/API_docs/types/string.html), \]; + +*** +

[$decryptedMessageMediaEmpty\_8](/API_docs/constructors/decryptedMessageMediaEmpty_8.html) = \[\]; + +*** +

[$decryptedMessageMediaExternalDocument\_23](/API_docs/constructors/decryptedMessageMediaExternalDocument_23.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'mime_type' => [string](/API_docs/types/string.html), 'size' => [int](/API_docs/types/int.html), 'thumb' => [PhotoSize](/API_docs/types/PhotoSize.html), 'dc_id' => [int](/API_docs/types/int.html), 'attributes' => \[[DocumentAttribute](/API_docs/types/DocumentAttribute.html)\], \]; + +*** +

[$decryptedMessageMediaGeoPoint\_8](/API_docs/constructors/decryptedMessageMediaGeoPoint_8.html) = \['lat' => [double](/API_docs/types/double.html), 'long' => [double](/API_docs/types/double.html), \]; + +*** +

[$decryptedMessageMediaPhoto\_45](/API_docs/constructors/decryptedMessageMediaPhoto_45.html) = \['thumb' => [bytes](/API_docs/types/bytes.html), 'thumb_w' => [int](/API_docs/types/int.html), 'thumb_h' => [int](/API_docs/types/int.html), 'w' => [int](/API_docs/types/int.html), 'h' => [int](/API_docs/types/int.html), 'size' => [int](/API_docs/types/int.html), 'key' => [bytes](/API_docs/types/bytes.html), 'iv' => [bytes](/API_docs/types/bytes.html), 'caption' => [string](/API_docs/types/string.html), \]; + +*** +

[$decryptedMessageMediaVenue\_45](/API_docs/constructors/decryptedMessageMediaVenue_45.html) = \['lat' => [double](/API_docs/types/double.html), 'long' => [double](/API_docs/types/double.html), 'title' => [string](/API_docs/types/string.html), 'address' => [string](/API_docs/types/string.html), 'provider' => [string](/API_docs/types/string.html), 'venue_id' => [string](/API_docs/types/string.html), \]; + +*** +

[$decryptedMessageMediaVideo\_45](/API_docs/constructors/decryptedMessageMediaVideo_45.html) = \['thumb' => [bytes](/API_docs/types/bytes.html), 'thumb_w' => [int](/API_docs/types/int.html), 'thumb_h' => [int](/API_docs/types/int.html), 'duration' => [int](/API_docs/types/int.html), 'mime_type' => [string](/API_docs/types/string.html), 'w' => [int](/API_docs/types/int.html), 'h' => [int](/API_docs/types/int.html), 'size' => [int](/API_docs/types/int.html), 'key' => [bytes](/API_docs/types/bytes.html), 'iv' => [bytes](/API_docs/types/bytes.html), 'caption' => [string](/API_docs/types/string.html), \]; + +*** +

[$decryptedMessageMediaWebPage\_45](/API_docs/constructors/decryptedMessageMediaWebPage_45.html) = \['url' => [string](/API_docs/types/string.html), \]; + +*** +

[$decryptedMessageService\_17](/API_docs/constructors/decryptedMessageService_17.html) = \['action' => [DecryptedMessageAction](/API_docs/types/DecryptedMessageAction.html), \]; + +*** +

[$defaultHistoryTTL](/API_docs/constructors/defaultHistoryTTL.html) = \['period' => [int](/API_docs/types/int.html), \]; + +*** +

[$dialog](/API_docs/constructors/dialog.html) = \['pinned' => [Bool](/API_docs/types/Bool.html), 'unread_mark' => [Bool](/API_docs/types/Bool.html), 'view_forum_as_messages' => [Bool](/API_docs/types/Bool.html), 'peer' => [long](/API_docs/types/long.html), 'top_message' => [int](/API_docs/types/int.html), 'read_inbox_max_id' => [int](/API_docs/types/int.html), 'read_outbox_max_id' => [int](/API_docs/types/int.html), 'unread_count' => [int](/API_docs/types/int.html), 'unread_mentions_count' => [int](/API_docs/types/int.html), 'unread_reactions_count' => [int](/API_docs/types/int.html), 'notify_settings' => [PeerNotifySettings](/API_docs/types/PeerNotifySettings.html), 'pts' => [int](/API_docs/types/int.html), 'draft' => [DraftMessage](/API_docs/types/DraftMessage.html), 'folder_id' => [int](/API_docs/types/int.html), 'ttl_period' => [int](/API_docs/types/int.html), \]; + +*** +

[$dialogFilter](/API_docs/constructors/dialogFilter.html) = \['contacts' => [Bool](/API_docs/types/Bool.html), 'non_contacts' => [Bool](/API_docs/types/Bool.html), 'groups' => [Bool](/API_docs/types/Bool.html), 'broadcasts' => [Bool](/API_docs/types/Bool.html), 'bots' => [Bool](/API_docs/types/Bool.html), 'exclude_muted' => [Bool](/API_docs/types/Bool.html), 'exclude_read' => [Bool](/API_docs/types/Bool.html), 'exclude_archived' => [Bool](/API_docs/types/Bool.html), 'id' => [int](/API_docs/types/int.html), 'title' => [string](/API_docs/types/string.html), 'emoticon' => [string](/API_docs/types/string.html), 'color' => [int](/API_docs/types/int.html), 'pinned_peers' => \[[InputPeer](/API_docs/types/InputPeer.html)\], 'include_peers' => \[[InputPeer](/API_docs/types/InputPeer.html)\], 'exclude_peers' => \[[InputPeer](/API_docs/types/InputPeer.html)\], \]; + +*** +

[$dialogFilterChatlist](/API_docs/constructors/dialogFilterChatlist.html) = \['has_my_invites' => [Bool](/API_docs/types/Bool.html), 'id' => [int](/API_docs/types/int.html), 'title' => [string](/API_docs/types/string.html), 'emoticon' => [string](/API_docs/types/string.html), 'color' => [int](/API_docs/types/int.html), 'pinned_peers' => \[[InputPeer](/API_docs/types/InputPeer.html)\], 'include_peers' => \[[InputPeer](/API_docs/types/InputPeer.html)\], \]; + +*** +

[$dialogFilterDefault](/API_docs/constructors/dialogFilterDefault.html) = \[\]; + +*** +

[$dialogFilterSuggested](/API_docs/constructors/dialogFilterSuggested.html) = \['filter' => [DialogFilter](/API_docs/types/DialogFilter.html), 'description' => [string](/API_docs/types/string.html), \]; + +*** +

[$dialogFolder](/API_docs/constructors/dialogFolder.html) = \['pinned' => [Bool](/API_docs/types/Bool.html), 'folder' => [Folder](/API_docs/types/Folder.html), 'peer' => [long](/API_docs/types/long.html), 'top_message' => [int](/API_docs/types/int.html), 'unread_muted_peers_count' => [int](/API_docs/types/int.html), 'unread_unmuted_peers_count' => [int](/API_docs/types/int.html), 'unread_muted_messages_count' => [int](/API_docs/types/int.html), 'unread_unmuted_messages_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$dialogPeer](/API_docs/constructors/dialogPeer.html) = \['peer' => [long](/API_docs/types/long.html), \]; + +*** +

[$dialogPeerFolder](/API_docs/constructors/dialogPeerFolder.html) = \['folder_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$document](/API_docs/constructors/document.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'file_reference' => [bytes](/API_docs/types/bytes.html), 'date' => [int](/API_docs/types/int.html), 'mime_type' => [string](/API_docs/types/string.html), 'size' => [long](/API_docs/types/long.html), 'thumbs' => \[[PhotoSize](/API_docs/types/PhotoSize.html)\], 'video_thumbs' => \[[VideoSize](/API_docs/types/VideoSize.html)\], 'dc_id' => [int](/API_docs/types/int.html), 'attributes' => \[[DocumentAttribute](/API_docs/types/DocumentAttribute.html)\], \]; + +*** +

[$documentAttributeAnimated](/API_docs/constructors/documentAttributeAnimated.html) = \[\]; + +*** +

[$documentAttributeAudio\_45](/API_docs/constructors/documentAttributeAudio_45.html) = \['duration' => [int](/API_docs/types/int.html), 'title' => [string](/API_docs/types/string.html), 'performer' => [string](/API_docs/types/string.html), \]; + +*** +

[$documentAttributeCustomEmoji](/API_docs/constructors/documentAttributeCustomEmoji.html) = \['free' => [Bool](/API_docs/types/Bool.html), 'text_color' => [Bool](/API_docs/types/Bool.html), 'alt' => [string](/API_docs/types/string.html), 'stickerset' => [InputStickerSet](/API_docs/types/InputStickerSet.html), \]; + +*** +

[$documentAttributeFilename](/API_docs/constructors/documentAttributeFilename.html) = \['file_name' => [string](/API_docs/types/string.html), \]; + +*** +

[$documentAttributeHasStickers](/API_docs/constructors/documentAttributeHasStickers.html) = \[\]; + +*** +

[$documentAttributeImageSize](/API_docs/constructors/documentAttributeImageSize.html) = \['w' => [int](/API_docs/types/int.html), 'h' => [int](/API_docs/types/int.html), \]; + +*** +

[$documentAttributeSticker\_45](/API_docs/constructors/documentAttributeSticker_45.html) = \['alt' => [string](/API_docs/types/string.html), 'stickerset' => [InputStickerSet](/API_docs/types/InputStickerSet.html), \]; + +*** +

[$documentAttributeVideo\_66](/API_docs/constructors/documentAttributeVideo_66.html) = \['round_message' => [Bool](/API_docs/types/Bool.html), 'duration' => [int](/API_docs/types/int.html), 'w' => [int](/API_docs/types/int.html), 'h' => [int](/API_docs/types/int.html), \]; + +*** +

[$documentEmpty](/API_docs/constructors/documentEmpty.html) = \['id' => [long](/API_docs/types/long.html), \]; + +*** +

[$draftMessage](/API_docs/constructors/draftMessage.html) = \['no_webpage' => [Bool](/API_docs/types/Bool.html), 'invert_media' => [Bool](/API_docs/types/Bool.html), 'reply_to' => [InputReplyTo](/API_docs/types/InputReplyTo.html), 'message' => [string](/API_docs/types/string.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'media' => [InputMedia](/API_docs/types/InputMedia.html), 'date' => [int](/API_docs/types/int.html), \]; + +*** +

[$draftMessageEmpty](/API_docs/constructors/draftMessageEmpty.html) = \['date' => [int](/API_docs/types/int.html), \]; + +*** +

[$emailVerificationApple](/API_docs/constructors/emailVerificationApple.html) = \['token' => [string](/API_docs/types/string.html), \]; + +*** +

[$emailVerificationCode](/API_docs/constructors/emailVerificationCode.html) = \['code' => [string](/API_docs/types/string.html), \]; + +*** +

[$emailVerificationGoogle](/API_docs/constructors/emailVerificationGoogle.html) = \['token' => [string](/API_docs/types/string.html), \]; + +*** +

[$emailVerifyPurposeLoginChange](/API_docs/constructors/emailVerifyPurposeLoginChange.html) = \[\]; + +*** +

[$emailVerifyPurposeLoginSetup](/API_docs/constructors/emailVerifyPurposeLoginSetup.html) = \['phone_number' => [string](/API_docs/types/string.html), 'phone_code_hash' => [string](/API_docs/types/string.html), \]; + +*** +

[$emailVerifyPurposePassport](/API_docs/constructors/emailVerifyPurposePassport.html) = \[\]; + +*** +

[$emojiGroup](/API_docs/constructors/emojiGroup.html) = \['title' => [string](/API_docs/types/string.html), 'icon_emoji_id' => [long](/API_docs/types/long.html), 'emoticons' => \[[string](/API_docs/types/string.html)\], \]; + +*** +

[$emojiGroupGreeting](/API_docs/constructors/emojiGroupGreeting.html) = \['title' => [string](/API_docs/types/string.html), 'icon_emoji_id' => [long](/API_docs/types/long.html), 'emoticons' => \[[string](/API_docs/types/string.html)\], \]; + +*** +

[$emojiGroupPremium](/API_docs/constructors/emojiGroupPremium.html) = \['title' => [string](/API_docs/types/string.html), 'icon_emoji_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$emojiKeyword](/API_docs/constructors/emojiKeyword.html) = \['keyword' => [string](/API_docs/types/string.html), 'emoticons' => \[[string](/API_docs/types/string.html)\], \]; + +*** +

[$emojiKeywordDeleted](/API_docs/constructors/emojiKeywordDeleted.html) = \['keyword' => [string](/API_docs/types/string.html), 'emoticons' => \[[string](/API_docs/types/string.html)\], \]; + +*** +

[$emojiKeywordsDifference](/API_docs/constructors/emojiKeywordsDifference.html) = \['lang_code' => [string](/API_docs/types/string.html), 'from_version' => [int](/API_docs/types/int.html), 'version' => [int](/API_docs/types/int.html), 'keywords' => \[[EmojiKeyword](/API_docs/types/EmojiKeyword.html)\], \]; + +*** +

[$emojiLanguage](/API_docs/constructors/emojiLanguage.html) = \['lang_code' => [string](/API_docs/types/string.html), \]; + +*** +

[$emojiList](/API_docs/constructors/emojiList.html) = \['hash' => [long](/API_docs/types/long.html), 'document_id' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$emojiListNotModified](/API_docs/constructors/emojiListNotModified.html) = \[\]; + +*** +

[$emojiStatus](/API_docs/constructors/emojiStatus.html) = \['document_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$emojiStatusEmpty](/API_docs/constructors/emojiStatusEmpty.html) = \[\]; + +*** +

[$emojiStatusUntil](/API_docs/constructors/emojiStatusUntil.html) = \['document_id' => [long](/API_docs/types/long.html), 'until' => [int](/API_docs/types/int.html), \]; + +*** +

[$emojiURL](/API_docs/constructors/emojiURL.html) = \['url' => [string](/API_docs/types/string.html), \]; + +*** +

[$encryptedChat](/API_docs/constructors/encryptedChat.html) = \['id' => [int](/API_docs/types/int.html), 'access_hash' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'admin_id' => [long](/API_docs/types/long.html), 'participant_id' => [long](/API_docs/types/long.html), 'g_a_or_b' => [bytes](/API_docs/types/bytes.html), 'key_fingerprint' => [long](/API_docs/types/long.html), \]; + +*** +

[$encryptedChatDiscarded](/API_docs/constructors/encryptedChatDiscarded.html) = \['history_deleted' => [Bool](/API_docs/types/Bool.html), 'id' => [int](/API_docs/types/int.html), \]; + +*** +

[$encryptedChatEmpty](/API_docs/constructors/encryptedChatEmpty.html) = \['id' => [int](/API_docs/types/int.html), \]; + +*** +

[$encryptedChatRequested](/API_docs/constructors/encryptedChatRequested.html) = \['folder_id' => [int](/API_docs/types/int.html), 'id' => [int](/API_docs/types/int.html), 'access_hash' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'admin_id' => [long](/API_docs/types/long.html), 'participant_id' => [long](/API_docs/types/long.html), 'g_a' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$encryptedChatWaiting](/API_docs/constructors/encryptedChatWaiting.html) = \['id' => [int](/API_docs/types/int.html), 'access_hash' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'admin_id' => [long](/API_docs/types/long.html), 'participant_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$encryptedFile](/API_docs/constructors/encryptedFile.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'size' => [long](/API_docs/types/long.html), 'dc_id' => [int](/API_docs/types/int.html), 'key_fingerprint' => [int](/API_docs/types/int.html), \]; + +*** +

[$encryptedFileEmpty](/API_docs/constructors/encryptedFileEmpty.html) = \[\]; + +*** +

[$encryptedMessage](/API_docs/constructors/encryptedMessage.html) = \['chat_id' => [int](/API_docs/types/int.html), 'date' => [int](/API_docs/types/int.html), 'decrypted_message' => [DecryptedMessage](/API_docs/types/DecryptedMessage.html), 'file' => [EncryptedFile](/API_docs/types/EncryptedFile.html), \]; + +*** +

[$encryptedMessageService](/API_docs/constructors/encryptedMessageService.html) = \['chat_id' => [int](/API_docs/types/int.html), 'date' => [int](/API_docs/types/int.html), 'decrypted_message' => [DecryptedMessage](/API_docs/types/DecryptedMessage.html), \]; + +*** +

[$error](/API_docs/constructors/error.html) = \['code' => [int](/API_docs/types/int.html), 'text' => [string](/API_docs/types/string.html), \]; + +*** +

[$exportedChatlistInvite](/API_docs/constructors/exportedChatlistInvite.html) = \['title' => [string](/API_docs/types/string.html), 'url' => [string](/API_docs/types/string.html), 'peers' => \[[Peer](/API_docs/types/Peer.html)\], \]; + +*** +

[$exportedContactToken](/API_docs/constructors/exportedContactToken.html) = \['url' => [string](/API_docs/types/string.html), 'expires' => [int](/API_docs/types/int.html), \]; + +*** +

[$exportedMessageLink](/API_docs/constructors/exportedMessageLink.html) = \['link' => [string](/API_docs/types/string.html), 'html' => [string](/API_docs/types/string.html), \]; + +*** +

[$exportedStoryLink](/API_docs/constructors/exportedStoryLink.html) = \['link' => [string](/API_docs/types/string.html), \]; + +*** +

[$fileHash](/API_docs/constructors/fileHash.html) = \['offset' => [long](/API_docs/types/long.html), 'limit' => [int](/API_docs/types/int.html), 'hash' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$fileLocation\_23](/API_docs/constructors/fileLocation_23.html) = \['dc_id' => [int](/API_docs/types/int.html), 'volume_id' => [long](/API_docs/types/long.html), 'local_id' => [int](/API_docs/types/int.html), 'secret' => [long](/API_docs/types/long.html), \]; + +*** +

[$fileLocationUnavailable\_23](/API_docs/constructors/fileLocationUnavailable_23.html) = \['volume_id' => [long](/API_docs/types/long.html), 'local_id' => [int](/API_docs/types/int.html), 'secret' => [long](/API_docs/types/long.html), \]; + +*** +

[$folder](/API_docs/constructors/folder.html) = \['autofill_new_broadcasts' => [Bool](/API_docs/types/Bool.html), 'autofill_public_groups' => [Bool](/API_docs/types/Bool.html), 'autofill_new_correspondents' => [Bool](/API_docs/types/Bool.html), 'id' => [int](/API_docs/types/int.html), 'title' => [string](/API_docs/types/string.html), 'photo' => [ChatPhoto](/API_docs/types/ChatPhoto.html), \]; + +*** +

[$folderPeer](/API_docs/constructors/folderPeer.html) = \['peer' => [long](/API_docs/types/long.html), 'folder_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$forumTopic](/API_docs/constructors/forumTopic.html) = \['my' => [Bool](/API_docs/types/Bool.html), 'closed' => [Bool](/API_docs/types/Bool.html), 'pinned' => [Bool](/API_docs/types/Bool.html), 'short' => [Bool](/API_docs/types/Bool.html), 'hidden' => [Bool](/API_docs/types/Bool.html), 'id' => [int](/API_docs/types/int.html), 'date' => [int](/API_docs/types/int.html), 'title' => [string](/API_docs/types/string.html), 'icon_color' => [int](/API_docs/types/int.html), 'icon_emoji_id' => [long](/API_docs/types/long.html), 'top_message' => [int](/API_docs/types/int.html), 'read_inbox_max_id' => [int](/API_docs/types/int.html), 'read_outbox_max_id' => [int](/API_docs/types/int.html), 'unread_count' => [int](/API_docs/types/int.html), 'unread_mentions_count' => [int](/API_docs/types/int.html), 'unread_reactions_count' => [int](/API_docs/types/int.html), 'from_id' => [Peer](/API_docs/types/Peer.html), 'notify_settings' => [PeerNotifySettings](/API_docs/types/PeerNotifySettings.html), 'draft' => [DraftMessage](/API_docs/types/DraftMessage.html), \]; + +*** +

[$forumTopicDeleted](/API_docs/constructors/forumTopicDeleted.html) = \['id' => [int](/API_docs/types/int.html), \]; + +*** +

[$fragment.collectibleInfo](/API_docs/constructors/fragment.collectibleInfo.html) = \['purchase_date' => [int](/API_docs/types/int.html), 'currency' => [string](/API_docs/types/string.html), 'amount' => [long](/API_docs/types/long.html), 'crypto_currency' => [string](/API_docs/types/string.html), 'crypto_amount' => [long](/API_docs/types/long.html), 'url' => [string](/API_docs/types/string.html), \]; + +*** +

[$game](/API_docs/constructors/game.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'short_name' => [string](/API_docs/types/string.html), 'title' => [string](/API_docs/types/string.html), 'description' => [string](/API_docs/types/string.html), 'photo' => [Photo](/API_docs/types/Photo.html), 'document' => [Document](/API_docs/types/Document.html), \]; + +*** +

[$geoPoint](/API_docs/constructors/geoPoint.html) = \['long' => [double](/API_docs/types/double.html), 'lat' => [double](/API_docs/types/double.html), 'access_hash' => [long](/API_docs/types/long.html), 'accuracy_radius' => [int](/API_docs/types/int.html), \]; + +*** +

[$geoPointEmpty](/API_docs/constructors/geoPointEmpty.html) = \[\]; + +*** +

[$globalPrivacySettings](/API_docs/constructors/globalPrivacySettings.html) = \['archive_and_mute_new_noncontact_peers' => [Bool](/API_docs/types/Bool.html), 'keep_archived_unmuted' => [Bool](/API_docs/types/Bool.html), 'keep_archived_folders' => [Bool](/API_docs/types/Bool.html), 'hide_read_marks' => [Bool](/API_docs/types/Bool.html), 'new_noncontact_peers_require_premium' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$groupCall](/API_docs/constructors/groupCall.html) = \['join_muted' => [Bool](/API_docs/types/Bool.html), 'can_change_join_muted' => [Bool](/API_docs/types/Bool.html), 'join_date_asc' => [Bool](/API_docs/types/Bool.html), 'schedule_start_subscribed' => [Bool](/API_docs/types/Bool.html), 'can_start_video' => [Bool](/API_docs/types/Bool.html), 'record_video_active' => [Bool](/API_docs/types/Bool.html), 'rtmp_stream' => [Bool](/API_docs/types/Bool.html), 'listeners_hidden' => [Bool](/API_docs/types/Bool.html), 'id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'participants_count' => [int](/API_docs/types/int.html), 'title' => [string](/API_docs/types/string.html), 'stream_dc_id' => [int](/API_docs/types/int.html), 'record_start_date' => [int](/API_docs/types/int.html), 'schedule_date' => [int](/API_docs/types/int.html), 'unmuted_video_count' => [int](/API_docs/types/int.html), 'unmuted_video_limit' => [int](/API_docs/types/int.html), 'version' => [int](/API_docs/types/int.html), \]; + +*** +

[$groupCallDiscarded](/API_docs/constructors/groupCallDiscarded.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'duration' => [int](/API_docs/types/int.html), \]; + +*** +

[$groupCallParticipant](/API_docs/constructors/groupCallParticipant.html) = \['muted' => [Bool](/API_docs/types/Bool.html), 'left' => [Bool](/API_docs/types/Bool.html), 'can_self_unmute' => [Bool](/API_docs/types/Bool.html), 'just_joined' => [Bool](/API_docs/types/Bool.html), 'versioned' => [Bool](/API_docs/types/Bool.html), 'min' => [Bool](/API_docs/types/Bool.html), 'muted_by_you' => [Bool](/API_docs/types/Bool.html), 'volume_by_admin' => [Bool](/API_docs/types/Bool.html), 'self' => [Bool](/API_docs/types/Bool.html), 'video_joined' => [Bool](/API_docs/types/Bool.html), 'peer' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'active_date' => [int](/API_docs/types/int.html), 'source' => [int](/API_docs/types/int.html), 'volume' => [int](/API_docs/types/int.html), 'about' => [string](/API_docs/types/string.html), 'raise_hand_rating' => [long](/API_docs/types/long.html), 'video' => [GroupCallParticipantVideo](/API_docs/types/GroupCallParticipantVideo.html), 'presentation' => [GroupCallParticipantVideo](/API_docs/types/GroupCallParticipantVideo.html), \]; + +*** +

[$groupCallParticipantVideo](/API_docs/constructors/groupCallParticipantVideo.html) = \['paused' => [Bool](/API_docs/types/Bool.html), 'endpoint' => [string](/API_docs/types/string.html), 'source_groups' => \[[GroupCallParticipantVideoSourceGroup](/API_docs/types/GroupCallParticipantVideoSourceGroup.html)\], 'audio_source' => [int](/API_docs/types/int.html), \]; + +*** +

[$groupCallParticipantVideoSourceGroup](/API_docs/constructors/groupCallParticipantVideoSourceGroup.html) = \['semantics' => [string](/API_docs/types/string.html), 'sources' => \[[int](/API_docs/types/int.html)\], \]; + +*** +

[$groupCallStreamChannel](/API_docs/constructors/groupCallStreamChannel.html) = \['channel' => [int](/API_docs/types/int.html), 'scale' => [int](/API_docs/types/int.html), 'last_timestamp_ms' => [long](/API_docs/types/long.html), \]; + +*** +

[$help.appConfig](/API_docs/constructors/help.appConfig.html) = \['hash' => [int](/API_docs/types/int.html), 'config' => [JSONValue](/API_docs/types/JSONValue.html), \]; + +*** +

[$help.appConfigNotModified](/API_docs/constructors/help.appConfigNotModified.html) = \[\]; + +*** +

[$help.appUpdate](/API_docs/constructors/help.appUpdate.html) = \['can_not_skip' => [Bool](/API_docs/types/Bool.html), 'id' => [int](/API_docs/types/int.html), 'version' => [string](/API_docs/types/string.html), 'text' => [string](/API_docs/types/string.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'document' => [Document](/API_docs/types/Document.html), 'url' => [string](/API_docs/types/string.html), 'sticker' => [Document](/API_docs/types/Document.html), \]; + +*** +

[$help.countriesList](/API_docs/constructors/help.countriesList.html) = \['countries' => \[[help.Country](/API_docs/types/help.Country.html)\], 'hash' => [int](/API_docs/types/int.html), \]; + +*** +

[$help.countriesListNotModified](/API_docs/constructors/help.countriesListNotModified.html) = \[\]; + +*** +

[$help.country](/API_docs/constructors/help.country.html) = \['hidden' => [Bool](/API_docs/types/Bool.html), 'iso2' => [string](/API_docs/types/string.html), 'default_name' => [string](/API_docs/types/string.html), 'name' => [string](/API_docs/types/string.html), 'country_codes' => \[[help.CountryCode](/API_docs/types/help.CountryCode.html)\], \]; + +*** +

[$help.countryCode](/API_docs/constructors/help.countryCode.html) = \['country_code' => [string](/API_docs/types/string.html), 'prefixes' => \[[string](/API_docs/types/string.html)\], 'patterns' => \[[string](/API_docs/types/string.html)\], \]; + +*** +

[$help.deepLinkInfo](/API_docs/constructors/help.deepLinkInfo.html) = \['update_app' => [Bool](/API_docs/types/Bool.html), 'message' => [string](/API_docs/types/string.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], \]; + +*** +

[$help.deepLinkInfoEmpty](/API_docs/constructors/help.deepLinkInfoEmpty.html) = \[\]; + +*** +

[$help.inviteText](/API_docs/constructors/help.inviteText.html) = \['message' => [string](/API_docs/types/string.html), \]; + +*** +

[$help.noAppUpdate](/API_docs/constructors/help.noAppUpdate.html) = \[\]; + +*** +

[$help.passportConfig](/API_docs/constructors/help.passportConfig.html) = \['hash' => [int](/API_docs/types/int.html), 'countries_langs' => [DataJSON](/API_docs/types/DataJSON.html), \]; + +*** +

[$help.passportConfigNotModified](/API_docs/constructors/help.passportConfigNotModified.html) = \[\]; + +*** +

[$help.peerColorOption](/API_docs/constructors/help.peerColorOption.html) = \['hidden' => [Bool](/API_docs/types/Bool.html), 'color_id' => [int](/API_docs/types/int.html), 'colors' => [help.PeerColorSet](/API_docs/types/help.PeerColorSet.html), 'dark_colors' => [help.PeerColorSet](/API_docs/types/help.PeerColorSet.html), 'channel_min_level' => [int](/API_docs/types/int.html), 'group_min_level' => [int](/API_docs/types/int.html), \]; + +*** +

[$help.peerColorProfileSet](/API_docs/constructors/help.peerColorProfileSet.html) = \['palette_colors' => \[[int](/API_docs/types/int.html)\], 'bg_colors' => \[[int](/API_docs/types/int.html)\], 'story_colors' => \[[int](/API_docs/types/int.html)\], \]; + +*** +

[$help.peerColorSet](/API_docs/constructors/help.peerColorSet.html) = \['colors' => \[[int](/API_docs/types/int.html)\], \]; + +*** +

[$help.peerColors](/API_docs/constructors/help.peerColors.html) = \['hash' => [int](/API_docs/types/int.html), 'colors' => \[[help.PeerColorOption](/API_docs/types/help.PeerColorOption.html)\], \]; + +*** +

[$help.peerColorsNotModified](/API_docs/constructors/help.peerColorsNotModified.html) = \[\]; + +*** +

[$help.premiumPromo](/API_docs/constructors/help.premiumPromo.html) = \['status_text' => [string](/API_docs/types/string.html), 'status_entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'video_sections' => \[[string](/API_docs/types/string.html)\], 'videos' => \[[Document](/API_docs/types/Document.html)\], 'period_options' => \[[PremiumSubscriptionOption](/API_docs/types/PremiumSubscriptionOption.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$help.promoData](/API_docs/constructors/help.promoData.html) = \['proxy' => [Bool](/API_docs/types/Bool.html), 'expires' => [int](/API_docs/types/int.html), 'peer' => [long](/API_docs/types/long.html), 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], 'psa_type' => [string](/API_docs/types/string.html), 'psa_message' => [string](/API_docs/types/string.html), \]; + +*** +

[$help.promoDataEmpty](/API_docs/constructors/help.promoDataEmpty.html) = \['expires' => [int](/API_docs/types/int.html), \]; + +*** +

[$help.recentMeUrls](/API_docs/constructors/help.recentMeUrls.html) = \['urls' => \[[RecentMeUrl](/API_docs/types/RecentMeUrl.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$help.support](/API_docs/constructors/help.support.html) = \['phone_number' => [string](/API_docs/types/string.html), 'user' => [User](/API_docs/types/User.html), \]; + +*** +

[$help.supportName](/API_docs/constructors/help.supportName.html) = \['name' => [string](/API_docs/types/string.html), \]; + +*** +

[$help.termsOfService](/API_docs/constructors/help.termsOfService.html) = \['popup' => [Bool](/API_docs/types/Bool.html), 'id' => [DataJSON](/API_docs/types/DataJSON.html), 'text' => [string](/API_docs/types/string.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'min_age_confirm' => [int](/API_docs/types/int.html), \]; + +*** +

[$help.termsOfServiceUpdate](/API_docs/constructors/help.termsOfServiceUpdate.html) = \['expires' => [int](/API_docs/types/int.html), 'terms_of_service' => [help.TermsOfService](/API_docs/types/help.TermsOfService.html), \]; + +*** +

[$help.termsOfServiceUpdateEmpty](/API_docs/constructors/help.termsOfServiceUpdateEmpty.html) = \['expires' => [int](/API_docs/types/int.html), \]; + +*** +

[$help.timezonesList](/API_docs/constructors/help.timezonesList.html) = \['timezones' => \[[Timezone](/API_docs/types/Timezone.html)\], 'hash' => [int](/API_docs/types/int.html), \]; + +*** +

[$help.timezonesListNotModified](/API_docs/constructors/help.timezonesListNotModified.html) = \[\]; + +*** +

[$help.userInfo](/API_docs/constructors/help.userInfo.html) = \['message' => [string](/API_docs/types/string.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'author' => [string](/API_docs/types/string.html), 'date' => [int](/API_docs/types/int.html), \]; + +*** +

[$help.userInfoEmpty](/API_docs/constructors/help.userInfoEmpty.html) = \[\]; + +*** +

[$highScore](/API_docs/constructors/highScore.html) = \['pos' => [int](/API_docs/types/int.html), 'user_id' => [long](/API_docs/types/long.html), 'score' => [int](/API_docs/types/int.html), \]; + +*** +

[$importedContact](/API_docs/constructors/importedContact.html) = \['user_id' => [long](/API_docs/types/long.html), 'client_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$inlineBotSwitchPM](/API_docs/constructors/inlineBotSwitchPM.html) = \['text' => [string](/API_docs/types/string.html), 'start_param' => [string](/API_docs/types/string.html), \]; + +*** +

[$inlineBotWebView](/API_docs/constructors/inlineBotWebView.html) = \['text' => [string](/API_docs/types/string.html), 'url' => [string](/API_docs/types/string.html), \]; + +*** +

[$inlineQueryPeerTypeBotPM](/API_docs/constructors/inlineQueryPeerTypeBotPM.html) = \[\]; + +*** +

[$inlineQueryPeerTypeBroadcast](/API_docs/constructors/inlineQueryPeerTypeBroadcast.html) = \[\]; + +*** +

[$inlineQueryPeerTypeChat](/API_docs/constructors/inlineQueryPeerTypeChat.html) = \[\]; + +*** +

[$inlineQueryPeerTypeMegagroup](/API_docs/constructors/inlineQueryPeerTypeMegagroup.html) = \[\]; + +*** +

[$inlineQueryPeerTypePM](/API_docs/constructors/inlineQueryPeerTypePM.html) = \[\]; + +*** +

[$inlineQueryPeerTypeSameBotPM](/API_docs/constructors/inlineQueryPeerTypeSameBotPM.html) = \[\]; + +*** +

[$inputAppEvent](/API_docs/constructors/inputAppEvent.html) = \['time' => [double](/API_docs/types/double.html), 'type' => [string](/API_docs/types/string.html), 'peer' => [long](/API_docs/types/long.html), 'data' => [JSONValue](/API_docs/types/JSONValue.html), \]; + +*** +

[$inputBotAppID](/API_docs/constructors/inputBotAppID.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputBotAppShortName](/API_docs/constructors/inputBotAppShortName.html) = \['bot_id' => [InputUser](/API_docs/types/InputUser.html), 'short_name' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputBotInlineMessageGame](/API_docs/constructors/inputBotInlineMessageGame.html) = \['reply_markup' => [ReplyMarkup](/API_docs/types/ReplyMarkup.html), \]; + +*** +

[$inputBotInlineMessageID](/API_docs/constructors/inputBotInlineMessageID.html) = \['dc_id' => [int](/API_docs/types/int.html), 'id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputBotInlineMessageID64](/API_docs/constructors/inputBotInlineMessageID64.html) = \['dc_id' => [int](/API_docs/types/int.html), 'owner_id' => [long](/API_docs/types/long.html), 'id' => [int](/API_docs/types/int.html), 'access_hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputBotInlineMessageMediaAuto](/API_docs/constructors/inputBotInlineMessageMediaAuto.html) = \['invert_media' => [Bool](/API_docs/types/Bool.html), 'message' => [string](/API_docs/types/string.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'reply_markup' => [ReplyMarkup](/API_docs/types/ReplyMarkup.html), \]; + +*** +

[$inputBotInlineMessageMediaContact](/API_docs/constructors/inputBotInlineMessageMediaContact.html) = \['phone_number' => [string](/API_docs/types/string.html), 'first_name' => [string](/API_docs/types/string.html), 'last_name' => [string](/API_docs/types/string.html), 'vcard' => [string](/API_docs/types/string.html), 'reply_markup' => [ReplyMarkup](/API_docs/types/ReplyMarkup.html), \]; + +*** +

[$inputBotInlineMessageMediaGeo](/API_docs/constructors/inputBotInlineMessageMediaGeo.html) = \['geo_point' => [InputGeoPoint](/API_docs/types/InputGeoPoint.html), 'heading' => [int](/API_docs/types/int.html), 'period' => [int](/API_docs/types/int.html), 'proximity_notification_radius' => [int](/API_docs/types/int.html), 'reply_markup' => [ReplyMarkup](/API_docs/types/ReplyMarkup.html), \]; + +*** +

[$inputBotInlineMessageMediaInvoice](/API_docs/constructors/inputBotInlineMessageMediaInvoice.html) = \['title' => [string](/API_docs/types/string.html), 'description' => [string](/API_docs/types/string.html), 'photo' => [InputWebDocument](/API_docs/types/InputWebDocument.html), 'invoice' => [Invoice](/API_docs/types/Invoice.html), 'payload' => [bytes](/API_docs/types/bytes.html), 'provider' => [string](/API_docs/types/string.html), 'provider_data' => [DataJSON](/API_docs/types/DataJSON.html), 'reply_markup' => [ReplyMarkup](/API_docs/types/ReplyMarkup.html), \]; + +*** +

[$inputBotInlineMessageMediaVenue](/API_docs/constructors/inputBotInlineMessageMediaVenue.html) = \['geo_point' => [InputGeoPoint](/API_docs/types/InputGeoPoint.html), 'title' => [string](/API_docs/types/string.html), 'address' => [string](/API_docs/types/string.html), 'provider' => [string](/API_docs/types/string.html), 'venue_id' => [string](/API_docs/types/string.html), 'venue_type' => [string](/API_docs/types/string.html), 'reply_markup' => [ReplyMarkup](/API_docs/types/ReplyMarkup.html), \]; + +*** +

[$inputBotInlineMessageMediaWebPage](/API_docs/constructors/inputBotInlineMessageMediaWebPage.html) = \['invert_media' => [Bool](/API_docs/types/Bool.html), 'force_large_media' => [Bool](/API_docs/types/Bool.html), 'force_small_media' => [Bool](/API_docs/types/Bool.html), 'optional' => [Bool](/API_docs/types/Bool.html), 'message' => [string](/API_docs/types/string.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'url' => [string](/API_docs/types/string.html), 'reply_markup' => [ReplyMarkup](/API_docs/types/ReplyMarkup.html), \]; + +*** +

[$inputBotInlineMessageText](/API_docs/constructors/inputBotInlineMessageText.html) = \['no_webpage' => [Bool](/API_docs/types/Bool.html), 'invert_media' => [Bool](/API_docs/types/Bool.html), 'message' => [string](/API_docs/types/string.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'reply_markup' => [ReplyMarkup](/API_docs/types/ReplyMarkup.html), \]; + +*** +

[$inputBotInlineResult](/API_docs/constructors/inputBotInlineResult.html) = \['id' => [string](/API_docs/types/string.html), 'type' => [string](/API_docs/types/string.html), 'title' => [string](/API_docs/types/string.html), 'description' => [string](/API_docs/types/string.html), 'url' => [string](/API_docs/types/string.html), 'thumb' => [InputWebDocument](/API_docs/types/InputWebDocument.html), 'content' => [InputWebDocument](/API_docs/types/InputWebDocument.html), 'send_message' => [InputBotInlineMessage](/API_docs/types/InputBotInlineMessage.html), \]; + +*** +

[$inputBotInlineResultDocument](/API_docs/constructors/inputBotInlineResultDocument.html) = \['id' => [string](/API_docs/types/string.html), 'type' => [string](/API_docs/types/string.html), 'title' => [string](/API_docs/types/string.html), 'description' => [string](/API_docs/types/string.html), 'document' => [InputDocument](/API_docs/types/InputDocument.html), 'send_message' => [InputBotInlineMessage](/API_docs/types/InputBotInlineMessage.html), \]; + +*** +

[$inputBotInlineResultGame](/API_docs/constructors/inputBotInlineResultGame.html) = \['id' => [string](/API_docs/types/string.html), 'short_name' => [string](/API_docs/types/string.html), 'send_message' => [InputBotInlineMessage](/API_docs/types/InputBotInlineMessage.html), \]; + +*** +

[$inputBotInlineResultPhoto](/API_docs/constructors/inputBotInlineResultPhoto.html) = \['id' => [string](/API_docs/types/string.html), 'type' => [string](/API_docs/types/string.html), 'photo' => [InputPhoto](/API_docs/types/InputPhoto.html), 'send_message' => [InputBotInlineMessage](/API_docs/types/InputBotInlineMessage.html), \]; + +*** +

[$inputBusinessAwayMessage](/API_docs/constructors/inputBusinessAwayMessage.html) = \['offline_only' => [Bool](/API_docs/types/Bool.html), 'shortcut_id' => [int](/API_docs/types/int.html), 'schedule' => [BusinessAwayMessageSchedule](/API_docs/types/BusinessAwayMessageSchedule.html), 'recipients' => [InputBusinessRecipients](/API_docs/types/InputBusinessRecipients.html), \]; + +*** +

[$inputBusinessBotRecipients](/API_docs/constructors/inputBusinessBotRecipients.html) = \['existing_chats' => [Bool](/API_docs/types/Bool.html), 'new_chats' => [Bool](/API_docs/types/Bool.html), 'contacts' => [Bool](/API_docs/types/Bool.html), 'non_contacts' => [Bool](/API_docs/types/Bool.html), 'exclude_selected' => [Bool](/API_docs/types/Bool.html), 'users' => \[[InputUser](/API_docs/types/InputUser.html)\], 'exclude_users' => \[[InputUser](/API_docs/types/InputUser.html)\], \]; + +*** +

[$inputBusinessChatLink](/API_docs/constructors/inputBusinessChatLink.html) = \['message' => [string](/API_docs/types/string.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'title' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputBusinessGreetingMessage](/API_docs/constructors/inputBusinessGreetingMessage.html) = \['shortcut_id' => [int](/API_docs/types/int.html), 'recipients' => [InputBusinessRecipients](/API_docs/types/InputBusinessRecipients.html), 'no_activity_days' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputBusinessIntro](/API_docs/constructors/inputBusinessIntro.html) = \['title' => [string](/API_docs/types/string.html), 'description' => [string](/API_docs/types/string.html), 'sticker' => [InputDocument](/API_docs/types/InputDocument.html), \]; + +*** +

[$inputBusinessRecipients](/API_docs/constructors/inputBusinessRecipients.html) = \['existing_chats' => [Bool](/API_docs/types/Bool.html), 'new_chats' => [Bool](/API_docs/types/Bool.html), 'contacts' => [Bool](/API_docs/types/Bool.html), 'non_contacts' => [Bool](/API_docs/types/Bool.html), 'exclude_selected' => [Bool](/API_docs/types/Bool.html), 'users' => \[[InputUser](/API_docs/types/InputUser.html)\], \]; + +*** +

[$inputChannel](/API_docs/constructors/inputChannel.html) = \['channel_id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputChannelEmpty](/API_docs/constructors/inputChannelEmpty.html) = \[\]; + +*** +

[$inputChannelFromMessage](/API_docs/constructors/inputChannelFromMessage.html) = \['peer' => [InputPeer](/API_docs/types/InputPeer.html), 'msg_id' => [int](/API_docs/types/int.html), 'channel_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputChatPhoto](/API_docs/constructors/inputChatPhoto.html) = \['id' => [InputPhoto](/API_docs/types/InputPhoto.html), \]; + +*** +

[$inputChatPhotoEmpty](/API_docs/constructors/inputChatPhotoEmpty.html) = \[\]; + +*** +

[$inputChatUploadedPhoto](/API_docs/constructors/inputChatUploadedPhoto.html) = \['file' => [InputFile](/API_docs/types/InputFile.html), 'video' => [InputFile](/API_docs/types/InputFile.html), 'video_start_ts' => [double](/API_docs/types/double.html), 'video_emoji_markup' => [VideoSize](/API_docs/types/VideoSize.html), \]; + +*** +

[$inputChatlistDialogFilter](/API_docs/constructors/inputChatlistDialogFilter.html) = \['filter_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputCheckPasswordEmpty](/API_docs/constructors/inputCheckPasswordEmpty.html) = \[\]; + +*** +

[$inputCheckPasswordSRP](/API_docs/constructors/inputCheckPasswordSRP.html) = \['srp_id' => [long](/API_docs/types/long.html), 'A' => [bytes](/API_docs/types/bytes.html), 'M1' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$inputClientProxy](/API_docs/constructors/inputClientProxy.html) = \['address' => [string](/API_docs/types/string.html), 'port' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputCollectiblePhone](/API_docs/constructors/inputCollectiblePhone.html) = \['phone' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputCollectibleUsername](/API_docs/constructors/inputCollectibleUsername.html) = \['username' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputDialogPeer](/API_docs/constructors/inputDialogPeer.html) = \['peer' => [InputPeer](/API_docs/types/InputPeer.html), \]; + +*** +

[$inputDialogPeerFolder](/API_docs/constructors/inputDialogPeerFolder.html) = \['folder_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputDocument](/API_docs/constructors/inputDocument.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'file_reference' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$inputDocumentEmpty](/API_docs/constructors/inputDocumentEmpty.html) = \[\]; + +*** +

[$inputDocumentFileLocation](/API_docs/constructors/inputDocumentFileLocation.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'file_reference' => [bytes](/API_docs/types/bytes.html), 'thumb_size' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputEncryptedChat](/API_docs/constructors/inputEncryptedChat.html) = \['chat_id' => [int](/API_docs/types/int.html), 'access_hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputEncryptedFile](/API_docs/constructors/inputEncryptedFile.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputEncryptedFileBigUploaded](/API_docs/constructors/inputEncryptedFileBigUploaded.html) = \['id' => [long](/API_docs/types/long.html), 'parts' => [int](/API_docs/types/int.html), 'key_fingerprint' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputEncryptedFileEmpty](/API_docs/constructors/inputEncryptedFileEmpty.html) = \[\]; + +*** +

[$inputEncryptedFileLocation](/API_docs/constructors/inputEncryptedFileLocation.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputEncryptedFileUploaded](/API_docs/constructors/inputEncryptedFileUploaded.html) = \['id' => [long](/API_docs/types/long.html), 'parts' => [int](/API_docs/types/int.html), 'md5_checksum' => [string](/API_docs/types/string.html), 'key_fingerprint' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputFile](/API_docs/constructors/inputFile.html) = \['id' => [long](/API_docs/types/long.html), 'parts' => [int](/API_docs/types/int.html), 'name' => [string](/API_docs/types/string.html), 'md5_checksum' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputFileBig](/API_docs/constructors/inputFileBig.html) = \['id' => [long](/API_docs/types/long.html), 'parts' => [int](/API_docs/types/int.html), 'name' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputFileLocation](/API_docs/constructors/inputFileLocation.html) = \['volume_id' => [long](/API_docs/types/long.html), 'local_id' => [int](/API_docs/types/int.html), 'secret' => [long](/API_docs/types/long.html), 'file_reference' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$inputFolderPeer](/API_docs/constructors/inputFolderPeer.html) = \['peer' => [InputPeer](/API_docs/types/InputPeer.html), 'folder_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputGameID](/API_docs/constructors/inputGameID.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputGameShortName](/API_docs/constructors/inputGameShortName.html) = \['bot_id' => [InputUser](/API_docs/types/InputUser.html), 'short_name' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputGeoPoint](/API_docs/constructors/inputGeoPoint.html) = \['lat' => [double](/API_docs/types/double.html), 'long' => [double](/API_docs/types/double.html), 'accuracy_radius' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputGeoPointEmpty](/API_docs/constructors/inputGeoPointEmpty.html) = \[\]; + +*** +

[$inputGroupCall](/API_docs/constructors/inputGroupCall.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputGroupCallStream](/API_docs/constructors/inputGroupCallStream.html) = \['call' => [InputGroupCall](/API_docs/types/InputGroupCall.html), 'time_ms' => [long](/API_docs/types/long.html), 'scale' => [int](/API_docs/types/int.html), 'video_channel' => [int](/API_docs/types/int.html), 'video_quality' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputInvoiceMessage](/API_docs/constructors/inputInvoiceMessage.html) = \['peer' => [InputPeer](/API_docs/types/InputPeer.html), 'msg_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputInvoicePremiumGiftCode](/API_docs/constructors/inputInvoicePremiumGiftCode.html) = \['purpose' => [InputStorePaymentPurpose](/API_docs/types/InputStorePaymentPurpose.html), 'option' => [PremiumGiftCodeOption](/API_docs/types/PremiumGiftCodeOption.html), \]; + +*** +

[$inputInvoiceSlug](/API_docs/constructors/inputInvoiceSlug.html) = \['slug' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputKeyboardButtonRequestPeer](/API_docs/constructors/inputKeyboardButtonRequestPeer.html) = \['name_requested' => [Bool](/API_docs/types/Bool.html), 'username_requested' => [Bool](/API_docs/types/Bool.html), 'photo_requested' => [Bool](/API_docs/types/Bool.html), 'text' => [string](/API_docs/types/string.html), 'button_id' => [int](/API_docs/types/int.html), 'peer_type' => [RequestPeerType](/API_docs/types/RequestPeerType.html), 'max_quantity' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputKeyboardButtonUrlAuth](/API_docs/constructors/inputKeyboardButtonUrlAuth.html) = \['request_write_access' => [Bool](/API_docs/types/Bool.html), 'text' => [string](/API_docs/types/string.html), 'fwd_text' => [string](/API_docs/types/string.html), 'url' => [string](/API_docs/types/string.html), 'bot' => [InputUser](/API_docs/types/InputUser.html), \]; + +*** +

[$inputKeyboardButtonUserProfile](/API_docs/constructors/inputKeyboardButtonUserProfile.html) = \['text' => [string](/API_docs/types/string.html), 'user_id' => [InputUser](/API_docs/types/InputUser.html), \]; + +*** +

[$inputMediaAreaChannelPost](/API_docs/constructors/inputMediaAreaChannelPost.html) = \['coordinates' => [MediaAreaCoordinates](/API_docs/types/MediaAreaCoordinates.html), 'channel' => [InputChannel](/API_docs/types/InputChannel.html), 'msg_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputMediaAreaVenue](/API_docs/constructors/inputMediaAreaVenue.html) = \['coordinates' => [MediaAreaCoordinates](/API_docs/types/MediaAreaCoordinates.html), 'query_id' => [long](/API_docs/types/long.html), 'result_id' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputMediaContact](/API_docs/constructors/inputMediaContact.html) = \['phone_number' => [string](/API_docs/types/string.html), 'first_name' => [string](/API_docs/types/string.html), 'last_name' => [string](/API_docs/types/string.html), 'vcard' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputMediaDice](/API_docs/constructors/inputMediaDice.html) = \['emoticon' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputMediaDocument](/API_docs/constructors/inputMediaDocument.html) = \['spoiler' => [Bool](/API_docs/types/Bool.html), 'id' => [InputDocument](/API_docs/types/InputDocument.html), 'ttl_seconds' => [int](/API_docs/types/int.html), 'query' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputMediaDocumentExternal](/API_docs/constructors/inputMediaDocumentExternal.html) = \['spoiler' => [Bool](/API_docs/types/Bool.html), 'url' => [string](/API_docs/types/string.html), 'ttl_seconds' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputMediaEmpty](/API_docs/constructors/inputMediaEmpty.html) = \[\]; + +*** +

[$inputMediaGame](/API_docs/constructors/inputMediaGame.html) = \['id' => [InputGame](/API_docs/types/InputGame.html), \]; + +*** +

[$inputMediaGeoLive](/API_docs/constructors/inputMediaGeoLive.html) = \['stopped' => [Bool](/API_docs/types/Bool.html), 'geo_point' => [InputGeoPoint](/API_docs/types/InputGeoPoint.html), 'heading' => [int](/API_docs/types/int.html), 'period' => [int](/API_docs/types/int.html), 'proximity_notification_radius' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputMediaGeoPoint](/API_docs/constructors/inputMediaGeoPoint.html) = \['geo_point' => [InputGeoPoint](/API_docs/types/InputGeoPoint.html), \]; + +*** +

[$inputMediaInvoice](/API_docs/constructors/inputMediaInvoice.html) = \['title' => [string](/API_docs/types/string.html), 'description' => [string](/API_docs/types/string.html), 'photo' => [InputWebDocument](/API_docs/types/InputWebDocument.html), 'invoice' => [Invoice](/API_docs/types/Invoice.html), 'payload' => [bytes](/API_docs/types/bytes.html), 'provider' => [string](/API_docs/types/string.html), 'provider_data' => [DataJSON](/API_docs/types/DataJSON.html), 'start_param' => [string](/API_docs/types/string.html), 'extended_media' => [InputMedia](/API_docs/types/InputMedia.html), \]; + +*** +

[$inputMediaPhoto](/API_docs/constructors/inputMediaPhoto.html) = \['spoiler' => [Bool](/API_docs/types/Bool.html), 'id' => [InputPhoto](/API_docs/types/InputPhoto.html), 'ttl_seconds' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputMediaPhotoExternal](/API_docs/constructors/inputMediaPhotoExternal.html) = \['spoiler' => [Bool](/API_docs/types/Bool.html), 'url' => [string](/API_docs/types/string.html), 'ttl_seconds' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputMediaPoll](/API_docs/constructors/inputMediaPoll.html) = \['poll' => [Poll](/API_docs/types/Poll.html), 'correct_answers' => \[[bytes](/API_docs/types/bytes.html)\], 'solution' => [string](/API_docs/types/string.html), 'solution_entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], \]; + +*** +

[$inputMediaStory](/API_docs/constructors/inputMediaStory.html) = \['peer' => [InputPeer](/API_docs/types/InputPeer.html), 'id' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputMediaUploadedDocument](/API_docs/constructors/inputMediaUploadedDocument.html) = \['nosound_video' => [Bool](/API_docs/types/Bool.html), 'force_file' => [Bool](/API_docs/types/Bool.html), 'spoiler' => [Bool](/API_docs/types/Bool.html), 'file' => [InputFile](/API_docs/types/InputFile.html), 'thumb' => [InputFile](/API_docs/types/InputFile.html), 'mime_type' => [string](/API_docs/types/string.html), 'attributes' => \[[DocumentAttribute](/API_docs/types/DocumentAttribute.html)\], 'stickers' => \[[InputDocument](/API_docs/types/InputDocument.html)\], 'ttl_seconds' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputMediaUploadedPhoto](/API_docs/constructors/inputMediaUploadedPhoto.html) = \['spoiler' => [Bool](/API_docs/types/Bool.html), 'file' => [InputFile](/API_docs/types/InputFile.html), 'stickers' => \[[InputDocument](/API_docs/types/InputDocument.html)\], 'ttl_seconds' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputMediaVenue](/API_docs/constructors/inputMediaVenue.html) = \['geo_point' => [InputGeoPoint](/API_docs/types/InputGeoPoint.html), 'title' => [string](/API_docs/types/string.html), 'address' => [string](/API_docs/types/string.html), 'provider' => [string](/API_docs/types/string.html), 'venue_id' => [string](/API_docs/types/string.html), 'venue_type' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputMediaWebPage](/API_docs/constructors/inputMediaWebPage.html) = \['force_large_media' => [Bool](/API_docs/types/Bool.html), 'force_small_media' => [Bool](/API_docs/types/Bool.html), 'optional' => [Bool](/API_docs/types/Bool.html), 'url' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputMessageCallbackQuery](/API_docs/constructors/inputMessageCallbackQuery.html) = \['id' => [int](/API_docs/types/int.html), 'query_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputMessageEntityMentionName](/API_docs/constructors/inputMessageEntityMentionName.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), 'user_id' => [InputUser](/API_docs/types/InputUser.html), \]; + +*** +

[$inputMessageID](/API_docs/constructors/inputMessageID.html) = \['id' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputMessagePinned](/API_docs/constructors/inputMessagePinned.html) = \[\]; + +*** +

[$inputMessageReplyTo](/API_docs/constructors/inputMessageReplyTo.html) = \['id' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputMessagesFilterChatPhotos](/API_docs/constructors/inputMessagesFilterChatPhotos.html) = \[\]; + +*** +

[$inputMessagesFilterContacts](/API_docs/constructors/inputMessagesFilterContacts.html) = \[\]; + +*** +

[$inputMessagesFilterDocument](/API_docs/constructors/inputMessagesFilterDocument.html) = \[\]; + +*** +

[$inputMessagesFilterEmpty](/API_docs/constructors/inputMessagesFilterEmpty.html) = \[\]; + +*** +

[$inputMessagesFilterGeo](/API_docs/constructors/inputMessagesFilterGeo.html) = \[\]; + +*** +

[$inputMessagesFilterGif](/API_docs/constructors/inputMessagesFilterGif.html) = \[\]; + +*** +

[$inputMessagesFilterMusic](/API_docs/constructors/inputMessagesFilterMusic.html) = \[\]; + +*** +

[$inputMessagesFilterMyMentions](/API_docs/constructors/inputMessagesFilterMyMentions.html) = \[\]; + +*** +

[$inputMessagesFilterPhoneCalls](/API_docs/constructors/inputMessagesFilterPhoneCalls.html) = \['missed' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$inputMessagesFilterPhotoVideo](/API_docs/constructors/inputMessagesFilterPhotoVideo.html) = \[\]; + +*** +

[$inputMessagesFilterPhotos](/API_docs/constructors/inputMessagesFilterPhotos.html) = \[\]; + +*** +

[$inputMessagesFilterPinned](/API_docs/constructors/inputMessagesFilterPinned.html) = \[\]; + +*** +

[$inputMessagesFilterRoundVideo](/API_docs/constructors/inputMessagesFilterRoundVideo.html) = \[\]; + +*** +

[$inputMessagesFilterRoundVoice](/API_docs/constructors/inputMessagesFilterRoundVoice.html) = \[\]; + +*** +

[$inputMessagesFilterUrl](/API_docs/constructors/inputMessagesFilterUrl.html) = \[\]; + +*** +

[$inputMessagesFilterVideo](/API_docs/constructors/inputMessagesFilterVideo.html) = \[\]; + +*** +

[$inputMessagesFilterVoice](/API_docs/constructors/inputMessagesFilterVoice.html) = \[\]; + +*** +

[$inputNotifyBroadcasts](/API_docs/constructors/inputNotifyBroadcasts.html) = \[\]; + +*** +

[$inputNotifyChats](/API_docs/constructors/inputNotifyChats.html) = \[\]; + +*** +

[$inputNotifyForumTopic](/API_docs/constructors/inputNotifyForumTopic.html) = \['peer' => [InputPeer](/API_docs/types/InputPeer.html), 'top_msg_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputNotifyPeer](/API_docs/constructors/inputNotifyPeer.html) = \['peer' => [InputPeer](/API_docs/types/InputPeer.html), \]; + +*** +

[$inputNotifyUsers](/API_docs/constructors/inputNotifyUsers.html) = \[\]; + +*** +

[$inputPaymentCredentials](/API_docs/constructors/inputPaymentCredentials.html) = \['save' => [Bool](/API_docs/types/Bool.html), 'data' => [DataJSON](/API_docs/types/DataJSON.html), \]; + +*** +

[$inputPaymentCredentialsApplePay](/API_docs/constructors/inputPaymentCredentialsApplePay.html) = \['payment_data' => [DataJSON](/API_docs/types/DataJSON.html), \]; + +*** +

[$inputPaymentCredentialsGooglePay](/API_docs/constructors/inputPaymentCredentialsGooglePay.html) = \['payment_token' => [DataJSON](/API_docs/types/DataJSON.html), \]; + +*** +

[$inputPaymentCredentialsSaved](/API_docs/constructors/inputPaymentCredentialsSaved.html) = \['id' => [string](/API_docs/types/string.html), 'tmp_password' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$inputPeerChannel](/API_docs/constructors/inputPeerChannel.html) = \['channel_id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputPeerChannelFromMessage](/API_docs/constructors/inputPeerChannelFromMessage.html) = \['peer' => [InputPeer](/API_docs/types/InputPeer.html), 'msg_id' => [int](/API_docs/types/int.html), 'channel_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputPeerChat](/API_docs/constructors/inputPeerChat.html) = \['chat_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputPeerEmpty](/API_docs/constructors/inputPeerEmpty.html) = \[\]; + +*** +

[$inputPeerNotifySettings](/API_docs/constructors/inputPeerNotifySettings.html) = \['show_previews' => [Bool](/API_docs/types/Bool.html), 'silent' => [Bool](/API_docs/types/Bool.html), 'mute_until' => [int](/API_docs/types/int.html), 'sound' => [NotificationSound](/API_docs/types/NotificationSound.html), 'stories_muted' => [Bool](/API_docs/types/Bool.html), 'stories_hide_sender' => [Bool](/API_docs/types/Bool.html), 'stories_sound' => [NotificationSound](/API_docs/types/NotificationSound.html), \]; + +*** +

[$inputPeerPhotoFileLocation](/API_docs/constructors/inputPeerPhotoFileLocation.html) = \['big' => [Bool](/API_docs/types/Bool.html), 'peer' => [InputPeer](/API_docs/types/InputPeer.html), 'photo_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputPeerSelf](/API_docs/constructors/inputPeerSelf.html) = \[\]; + +*** +

[$inputPeerUser](/API_docs/constructors/inputPeerUser.html) = \['user_id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputPeerUserFromMessage](/API_docs/constructors/inputPeerUserFromMessage.html) = \['peer' => [InputPeer](/API_docs/types/InputPeer.html), 'msg_id' => [int](/API_docs/types/int.html), 'user_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputPhoneCall](/API_docs/constructors/inputPhoneCall.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputPhoneContact](/API_docs/constructors/inputPhoneContact.html) = \['client_id' => [long](/API_docs/types/long.html), 'phone' => [string](/API_docs/types/string.html), 'first_name' => [string](/API_docs/types/string.html), 'last_name' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputPhoto](/API_docs/constructors/inputPhoto.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'file_reference' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$inputPhotoEmpty](/API_docs/constructors/inputPhotoEmpty.html) = \[\]; + +*** +

[$inputPhotoFileLocation](/API_docs/constructors/inputPhotoFileLocation.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'file_reference' => [bytes](/API_docs/types/bytes.html), 'thumb_size' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputPhotoLegacyFileLocation](/API_docs/constructors/inputPhotoLegacyFileLocation.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'file_reference' => [bytes](/API_docs/types/bytes.html), 'volume_id' => [long](/API_docs/types/long.html), 'local_id' => [int](/API_docs/types/int.html), 'secret' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputPrivacyKeyAbout](/API_docs/constructors/inputPrivacyKeyAbout.html) = \[\]; + +*** +

[$inputPrivacyKeyAddedByPhone](/API_docs/constructors/inputPrivacyKeyAddedByPhone.html) = \[\]; + +*** +

[$inputPrivacyKeyBirthday](/API_docs/constructors/inputPrivacyKeyBirthday.html) = \[\]; + +*** +

[$inputPrivacyKeyChatInvite](/API_docs/constructors/inputPrivacyKeyChatInvite.html) = \[\]; + +*** +

[$inputPrivacyKeyForwards](/API_docs/constructors/inputPrivacyKeyForwards.html) = \[\]; + +*** +

[$inputPrivacyKeyPhoneCall](/API_docs/constructors/inputPrivacyKeyPhoneCall.html) = \[\]; + +*** +

[$inputPrivacyKeyPhoneNumber](/API_docs/constructors/inputPrivacyKeyPhoneNumber.html) = \[\]; + +*** +

[$inputPrivacyKeyPhoneP2P](/API_docs/constructors/inputPrivacyKeyPhoneP2P.html) = \[\]; + +*** +

[$inputPrivacyKeyProfilePhoto](/API_docs/constructors/inputPrivacyKeyProfilePhoto.html) = \[\]; + +*** +

[$inputPrivacyKeyStatusTimestamp](/API_docs/constructors/inputPrivacyKeyStatusTimestamp.html) = \[\]; + +*** +

[$inputPrivacyKeyVoiceMessages](/API_docs/constructors/inputPrivacyKeyVoiceMessages.html) = \[\]; + +*** +

[$inputPrivacyValueAllowAll](/API_docs/constructors/inputPrivacyValueAllowAll.html) = \[\]; + +*** +

[$inputPrivacyValueAllowChatParticipants](/API_docs/constructors/inputPrivacyValueAllowChatParticipants.html) = \['chats' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$inputPrivacyValueAllowCloseFriends](/API_docs/constructors/inputPrivacyValueAllowCloseFriends.html) = \[\]; + +*** +

[$inputPrivacyValueAllowContacts](/API_docs/constructors/inputPrivacyValueAllowContacts.html) = \[\]; + +*** +

[$inputPrivacyValueAllowPremium](/API_docs/constructors/inputPrivacyValueAllowPremium.html) = \[\]; + +*** +

[$inputPrivacyValueAllowUsers](/API_docs/constructors/inputPrivacyValueAllowUsers.html) = \['users' => \[[InputUser](/API_docs/types/InputUser.html)\], \]; + +*** +

[$inputPrivacyValueDisallowAll](/API_docs/constructors/inputPrivacyValueDisallowAll.html) = \[\]; + +*** +

[$inputPrivacyValueDisallowChatParticipants](/API_docs/constructors/inputPrivacyValueDisallowChatParticipants.html) = \['chats' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$inputPrivacyValueDisallowContacts](/API_docs/constructors/inputPrivacyValueDisallowContacts.html) = \[\]; + +*** +

[$inputPrivacyValueDisallowUsers](/API_docs/constructors/inputPrivacyValueDisallowUsers.html) = \['users' => \[[InputUser](/API_docs/types/InputUser.html)\], \]; + +*** +

[$inputQuickReplyShortcut](/API_docs/constructors/inputQuickReplyShortcut.html) = \['shortcut' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputQuickReplyShortcutId](/API_docs/constructors/inputQuickReplyShortcutId.html) = \['shortcut_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputReplyToMessage](/API_docs/constructors/inputReplyToMessage.html) = \['reply_to_msg_id' => [int](/API_docs/types/int.html), 'top_msg_id' => [int](/API_docs/types/int.html), 'reply_to_peer_id' => [InputPeer](/API_docs/types/InputPeer.html), 'quote_text' => [string](/API_docs/types/string.html), 'quote_entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'quote_offset' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputReplyToStory](/API_docs/constructors/inputReplyToStory.html) = \['peer' => [InputPeer](/API_docs/types/InputPeer.html), 'story_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputReportReasonChildAbuse](/API_docs/constructors/inputReportReasonChildAbuse.html) = \[\]; + +*** +

[$inputReportReasonCopyright](/API_docs/constructors/inputReportReasonCopyright.html) = \[\]; + +*** +

[$inputReportReasonFake](/API_docs/constructors/inputReportReasonFake.html) = \[\]; + +*** +

[$inputReportReasonGeoIrrelevant](/API_docs/constructors/inputReportReasonGeoIrrelevant.html) = \[\]; + +*** +

[$inputReportReasonIllegalDrugs](/API_docs/constructors/inputReportReasonIllegalDrugs.html) = \[\]; + +*** +

[$inputReportReasonOther](/API_docs/constructors/inputReportReasonOther.html) = \[\]; + +*** +

[$inputReportReasonPersonalDetails](/API_docs/constructors/inputReportReasonPersonalDetails.html) = \[\]; + +*** +

[$inputReportReasonPornography](/API_docs/constructors/inputReportReasonPornography.html) = \[\]; + +*** +

[$inputReportReasonSpam](/API_docs/constructors/inputReportReasonSpam.html) = \[\]; + +*** +

[$inputReportReasonViolence](/API_docs/constructors/inputReportReasonViolence.html) = \[\]; + +*** +

[$inputSecureFile](/API_docs/constructors/inputSecureFile.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputSecureFileLocation](/API_docs/constructors/inputSecureFileLocation.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputSecureFileUploaded](/API_docs/constructors/inputSecureFileUploaded.html) = \['id' => [long](/API_docs/types/long.html), 'parts' => [int](/API_docs/types/int.html), 'md5_checksum' => [string](/API_docs/types/string.html), 'file_hash' => [bytes](/API_docs/types/bytes.html), 'secret' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$inputSecureValue](/API_docs/constructors/inputSecureValue.html) = \['type' => [SecureValueType](/API_docs/types/SecureValueType.html), 'data' => [SecureData](/API_docs/types/SecureData.html), 'front_side' => [InputSecureFile](/API_docs/types/InputSecureFile.html), 'reverse_side' => [InputSecureFile](/API_docs/types/InputSecureFile.html), 'selfie' => [InputSecureFile](/API_docs/types/InputSecureFile.html), 'translation' => \[[InputSecureFile](/API_docs/types/InputSecureFile.html)\], 'files' => \[[InputSecureFile](/API_docs/types/InputSecureFile.html)\], 'plain_data' => [SecurePlainData](/API_docs/types/SecurePlainData.html), \]; + +*** +

[$inputSingleMedia](/API_docs/constructors/inputSingleMedia.html) = \['media' => [InputMedia](/API_docs/types/InputMedia.html), 'message' => [string](/API_docs/types/string.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], \]; + +*** +

[$inputStickerSetAnimatedEmoji](/API_docs/constructors/inputStickerSetAnimatedEmoji.html) = \[\]; + +*** +

[$inputStickerSetAnimatedEmojiAnimations](/API_docs/constructors/inputStickerSetAnimatedEmojiAnimations.html) = \[\]; + +*** +

[$inputStickerSetDice](/API_docs/constructors/inputStickerSetDice.html) = \['emoticon' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputStickerSetEmojiChannelDefaultStatuses](/API_docs/constructors/inputStickerSetEmojiChannelDefaultStatuses.html) = \[\]; + +*** +

[$inputStickerSetEmojiDefaultStatuses](/API_docs/constructors/inputStickerSetEmojiDefaultStatuses.html) = \[\]; + +*** +

[$inputStickerSetEmojiDefaultTopicIcons](/API_docs/constructors/inputStickerSetEmojiDefaultTopicIcons.html) = \[\]; + +*** +

[$inputStickerSetEmojiGenericAnimations](/API_docs/constructors/inputStickerSetEmojiGenericAnimations.html) = \[\]; + +*** +

[$inputStickerSetEmpty](/API_docs/constructors/inputStickerSetEmpty.html) = \[\]; + +*** +

[$inputStickerSetID](/API_docs/constructors/inputStickerSetID.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputStickerSetItem](/API_docs/constructors/inputStickerSetItem.html) = \['document' => [InputDocument](/API_docs/types/InputDocument.html), 'emoji' => [string](/API_docs/types/string.html), 'mask_coords' => [MaskCoords](/API_docs/types/MaskCoords.html), 'keywords' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputStickerSetPremiumGifts](/API_docs/constructors/inputStickerSetPremiumGifts.html) = \[\]; + +*** +

[$inputStickerSetShortName](/API_docs/constructors/inputStickerSetShortName.html) = \['short_name' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputStickerSetThumb](/API_docs/constructors/inputStickerSetThumb.html) = \['stickerset' => [InputStickerSet](/API_docs/types/InputStickerSet.html), 'thumb_version' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputStickeredMediaDocument](/API_docs/constructors/inputStickeredMediaDocument.html) = \['id' => [InputDocument](/API_docs/types/InputDocument.html), \]; + +*** +

[$inputStickeredMediaPhoto](/API_docs/constructors/inputStickeredMediaPhoto.html) = \['id' => [InputPhoto](/API_docs/types/InputPhoto.html), \]; + +*** +

[$inputStorePaymentGiftPremium](/API_docs/constructors/inputStorePaymentGiftPremium.html) = \['user_id' => [InputUser](/API_docs/types/InputUser.html), 'currency' => [string](/API_docs/types/string.html), 'amount' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputStorePaymentPremiumGiftCode](/API_docs/constructors/inputStorePaymentPremiumGiftCode.html) = \['users' => \[[InputUser](/API_docs/types/InputUser.html)\], 'boost_peer' => [InputPeer](/API_docs/types/InputPeer.html), 'currency' => [string](/API_docs/types/string.html), 'amount' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputStorePaymentPremiumGiveaway](/API_docs/constructors/inputStorePaymentPremiumGiveaway.html) = \['only_new_subscribers' => [Bool](/API_docs/types/Bool.html), 'winners_are_visible' => [Bool](/API_docs/types/Bool.html), 'boost_peer' => [InputPeer](/API_docs/types/InputPeer.html), 'additional_peers' => \[[InputPeer](/API_docs/types/InputPeer.html)\], 'countries_iso2' => \[[string](/API_docs/types/string.html)\], 'prize_description' => [string](/API_docs/types/string.html), 'until_date' => [int](/API_docs/types/int.html), 'currency' => [string](/API_docs/types/string.html), 'amount' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputStorePaymentPremiumSubscription](/API_docs/constructors/inputStorePaymentPremiumSubscription.html) = \['restore' => [Bool](/API_docs/types/Bool.html), 'upgrade' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$inputTakeoutFileLocation](/API_docs/constructors/inputTakeoutFileLocation.html) = \[\]; + +*** +

[$inputTheme](/API_docs/constructors/inputTheme.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputThemeSettings](/API_docs/constructors/inputThemeSettings.html) = \['message_colors_animated' => [Bool](/API_docs/types/Bool.html), 'base_theme' => [BaseTheme](/API_docs/types/BaseTheme.html), 'accent_color' => [int](/API_docs/types/int.html), 'outbox_accent_color' => [int](/API_docs/types/int.html), 'message_colors' => \[[int](/API_docs/types/int.html)\], 'wallpaper' => [InputWallPaper](/API_docs/types/InputWallPaper.html), 'wallpaper_settings' => [WallPaperSettings](/API_docs/types/WallPaperSettings.html), \]; + +*** +

[$inputThemeSlug](/API_docs/constructors/inputThemeSlug.html) = \['slug' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputUser](/API_docs/constructors/inputUser.html) = \['user_id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputUserEmpty](/API_docs/constructors/inputUserEmpty.html) = \[\]; + +*** +

[$inputUserFromMessage](/API_docs/constructors/inputUserFromMessage.html) = \['peer' => [InputPeer](/API_docs/types/InputPeer.html), 'msg_id' => [int](/API_docs/types/int.html), 'user_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputUserSelf](/API_docs/constructors/inputUserSelf.html) = \[\]; + +*** +

[$inputWallPaper](/API_docs/constructors/inputWallPaper.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputWallPaperNoFile](/API_docs/constructors/inputWallPaperNoFile.html) = \['id' => [long](/API_docs/types/long.html), \]; + +*** +

[$inputWallPaperSlug](/API_docs/constructors/inputWallPaperSlug.html) = \['slug' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputWebDocument](/API_docs/constructors/inputWebDocument.html) = \['url' => [string](/API_docs/types/string.html), 'size' => [int](/API_docs/types/int.html), 'mime_type' => [string](/API_docs/types/string.html), 'attributes' => \[[DocumentAttribute](/API_docs/types/DocumentAttribute.html)\], \]; + +*** +

[$inputWebFileAudioAlbumThumbLocation](/API_docs/constructors/inputWebFileAudioAlbumThumbLocation.html) = \['small' => [Bool](/API_docs/types/Bool.html), 'document' => [InputDocument](/API_docs/types/InputDocument.html), 'title' => [string](/API_docs/types/string.html), 'performer' => [string](/API_docs/types/string.html), \]; + +*** +

[$inputWebFileGeoPointLocation](/API_docs/constructors/inputWebFileGeoPointLocation.html) = \['geo_point' => [InputGeoPoint](/API_docs/types/InputGeoPoint.html), 'access_hash' => [long](/API_docs/types/long.html), 'w' => [int](/API_docs/types/int.html), 'h' => [int](/API_docs/types/int.html), 'zoom' => [int](/API_docs/types/int.html), 'scale' => [int](/API_docs/types/int.html), \]; + +*** +

[$inputWebFileLocation](/API_docs/constructors/inputWebFileLocation.html) = \['url' => [string](/API_docs/types/string.html), 'access_hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$invoice](/API_docs/constructors/invoice.html) = \['test' => [Bool](/API_docs/types/Bool.html), 'name_requested' => [Bool](/API_docs/types/Bool.html), 'phone_requested' => [Bool](/API_docs/types/Bool.html), 'email_requested' => [Bool](/API_docs/types/Bool.html), 'shipping_address_requested' => [Bool](/API_docs/types/Bool.html), 'flexible' => [Bool](/API_docs/types/Bool.html), 'phone_to_provider' => [Bool](/API_docs/types/Bool.html), 'email_to_provider' => [Bool](/API_docs/types/Bool.html), 'recurring' => [Bool](/API_docs/types/Bool.html), 'currency' => [string](/API_docs/types/string.html), 'prices' => \[[LabeledPrice](/API_docs/types/LabeledPrice.html)\], 'max_tip_amount' => [long](/API_docs/types/long.html), 'suggested_tip_amounts' => \[[long](/API_docs/types/long.html)\], 'terms_url' => [string](/API_docs/types/string.html), \]; + +*** +

[$jsonArray](/API_docs/constructors/jsonArray.html) = \['value' => \[[JSONValue](/API_docs/types/JSONValue.html)\], \]; + +*** +

[$jsonBool](/API_docs/constructors/jsonBool.html) = \['value' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$jsonNull](/API_docs/constructors/jsonNull.html) = \[\]; + +*** +

[$jsonNumber](/API_docs/constructors/jsonNumber.html) = \['value' => [double](/API_docs/types/double.html), \]; + +*** +

[$jsonObject](/API_docs/constructors/jsonObject.html) = \['value' => \[[JSONObjectValue](/API_docs/types/JSONObjectValue.html)\], \]; + +*** +

[$jsonObjectValue](/API_docs/constructors/jsonObjectValue.html) = \['key' => [string](/API_docs/types/string.html), 'value' => [JSONValue](/API_docs/types/JSONValue.html), \]; + +*** +

[$jsonString](/API_docs/constructors/jsonString.html) = \['value' => [string](/API_docs/types/string.html), \]; + +*** +

[$keyboardButton](/API_docs/constructors/keyboardButton.html) = \['text' => [string](/API_docs/types/string.html), \]; + +*** +

[$keyboardButtonBuy](/API_docs/constructors/keyboardButtonBuy.html) = \['text' => [string](/API_docs/types/string.html), \]; + +*** +

[$keyboardButtonCallback](/API_docs/constructors/keyboardButtonCallback.html) = \['requires_password' => [Bool](/API_docs/types/Bool.html), 'text' => [string](/API_docs/types/string.html), 'data' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$keyboardButtonGame](/API_docs/constructors/keyboardButtonGame.html) = \['text' => [string](/API_docs/types/string.html), \]; + +*** +

[$keyboardButtonRequestGeoLocation](/API_docs/constructors/keyboardButtonRequestGeoLocation.html) = \['text' => [string](/API_docs/types/string.html), \]; + +*** +

[$keyboardButtonRequestPeer](/API_docs/constructors/keyboardButtonRequestPeer.html) = \['text' => [string](/API_docs/types/string.html), 'button_id' => [int](/API_docs/types/int.html), 'peer_type' => [RequestPeerType](/API_docs/types/RequestPeerType.html), 'max_quantity' => [int](/API_docs/types/int.html), \]; + +*** +

[$keyboardButtonRequestPhone](/API_docs/constructors/keyboardButtonRequestPhone.html) = \['text' => [string](/API_docs/types/string.html), \]; + +*** +

[$keyboardButtonRequestPoll](/API_docs/constructors/keyboardButtonRequestPoll.html) = \['quiz' => [Bool](/API_docs/types/Bool.html), 'text' => [string](/API_docs/types/string.html), \]; + +*** +

[$keyboardButtonRow](/API_docs/constructors/keyboardButtonRow.html) = \['buttons' => \[[KeyboardButton](/API_docs/types/KeyboardButton.html)\], \]; + +*** +

[$keyboardButtonSimpleWebView](/API_docs/constructors/keyboardButtonSimpleWebView.html) = \['text' => [string](/API_docs/types/string.html), 'url' => [string](/API_docs/types/string.html), \]; + +*** +

[$keyboardButtonSwitchInline](/API_docs/constructors/keyboardButtonSwitchInline.html) = \['same_peer' => [Bool](/API_docs/types/Bool.html), 'text' => [string](/API_docs/types/string.html), 'query' => [string](/API_docs/types/string.html), 'peer_types' => \[[InlineQueryPeerType](/API_docs/types/InlineQueryPeerType.html)\], \]; + +*** +

[$keyboardButtonUrl](/API_docs/constructors/keyboardButtonUrl.html) = \['text' => [string](/API_docs/types/string.html), 'url' => [string](/API_docs/types/string.html), \]; + +*** +

[$keyboardButtonUrlAuth](/API_docs/constructors/keyboardButtonUrlAuth.html) = \['text' => [string](/API_docs/types/string.html), 'fwd_text' => [string](/API_docs/types/string.html), 'url' => [string](/API_docs/types/string.html), 'button_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$keyboardButtonUserProfile](/API_docs/constructors/keyboardButtonUserProfile.html) = \['text' => [string](/API_docs/types/string.html), 'user_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$keyboardButtonWebView](/API_docs/constructors/keyboardButtonWebView.html) = \['text' => [string](/API_docs/types/string.html), 'url' => [string](/API_docs/types/string.html), \]; + +*** +

[$labeledPrice](/API_docs/constructors/labeledPrice.html) = \['label' => [string](/API_docs/types/string.html), 'amount' => [long](/API_docs/types/long.html), \]; + +*** +

[$langPackDifference](/API_docs/constructors/langPackDifference.html) = \['lang_code' => [string](/API_docs/types/string.html), 'from_version' => [int](/API_docs/types/int.html), 'version' => [int](/API_docs/types/int.html), 'strings' => \[[LangPackString](/API_docs/types/LangPackString.html)\], \]; + +*** +

[$langPackLanguage](/API_docs/constructors/langPackLanguage.html) = \['official' => [Bool](/API_docs/types/Bool.html), 'rtl' => [Bool](/API_docs/types/Bool.html), 'beta' => [Bool](/API_docs/types/Bool.html), 'name' => [string](/API_docs/types/string.html), 'native_name' => [string](/API_docs/types/string.html), 'lang_code' => [string](/API_docs/types/string.html), 'base_lang_code' => [string](/API_docs/types/string.html), 'plural_code' => [string](/API_docs/types/string.html), 'strings_count' => [int](/API_docs/types/int.html), 'translated_count' => [int](/API_docs/types/int.html), 'translations_url' => [string](/API_docs/types/string.html), \]; + +*** +

[$langPackString](/API_docs/constructors/langPackString.html) = \['key' => [string](/API_docs/types/string.html), 'value' => [string](/API_docs/types/string.html), \]; + +*** +

[$langPackStringDeleted](/API_docs/constructors/langPackStringDeleted.html) = \['key' => [string](/API_docs/types/string.html), \]; + +*** +

[$langPackStringPluralized](/API_docs/constructors/langPackStringPluralized.html) = \['key' => [string](/API_docs/types/string.html), 'zero_value' => [string](/API_docs/types/string.html), 'one_value' => [string](/API_docs/types/string.html), 'two_value' => [string](/API_docs/types/string.html), 'few_value' => [string](/API_docs/types/string.html), 'many_value' => [string](/API_docs/types/string.html), 'other_value' => [string](/API_docs/types/string.html), \]; + +*** +

[$maskCoords](/API_docs/constructors/maskCoords.html) = \['n' => [int](/API_docs/types/int.html), 'x' => [double](/API_docs/types/double.html), 'y' => [double](/API_docs/types/double.html), 'zoom' => [double](/API_docs/types/double.html), \]; + +*** +

[$mediaAreaChannelPost](/API_docs/constructors/mediaAreaChannelPost.html) = \['coordinates' => [MediaAreaCoordinates](/API_docs/types/MediaAreaCoordinates.html), 'channel_id' => [long](/API_docs/types/long.html), 'msg_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$mediaAreaCoordinates](/API_docs/constructors/mediaAreaCoordinates.html) = \['x' => [double](/API_docs/types/double.html), 'y' => [double](/API_docs/types/double.html), 'w' => [double](/API_docs/types/double.html), 'h' => [double](/API_docs/types/double.html), 'rotation' => [double](/API_docs/types/double.html), \]; + +*** +

[$mediaAreaGeoPoint](/API_docs/constructors/mediaAreaGeoPoint.html) = \['coordinates' => [MediaAreaCoordinates](/API_docs/types/MediaAreaCoordinates.html), 'geo' => [GeoPoint](/API_docs/types/GeoPoint.html), \]; + +*** +

[$mediaAreaSuggestedReaction](/API_docs/constructors/mediaAreaSuggestedReaction.html) = \['dark' => [Bool](/API_docs/types/Bool.html), 'flipped' => [Bool](/API_docs/types/Bool.html), 'coordinates' => [MediaAreaCoordinates](/API_docs/types/MediaAreaCoordinates.html), 'reaction' => [Reaction](/API_docs/types/Reaction.html), \]; + +*** +

[$mediaAreaVenue](/API_docs/constructors/mediaAreaVenue.html) = \['coordinates' => [MediaAreaCoordinates](/API_docs/types/MediaAreaCoordinates.html), 'geo' => [GeoPoint](/API_docs/types/GeoPoint.html), 'title' => [string](/API_docs/types/string.html), 'address' => [string](/API_docs/types/string.html), 'provider' => [string](/API_docs/types/string.html), 'venue_id' => [string](/API_docs/types/string.html), 'venue_type' => [string](/API_docs/types/string.html), \]; + +*** +

[$message](/API_docs/constructors/message.html) = \['out' => [Bool](/API_docs/types/Bool.html), 'mentioned' => [Bool](/API_docs/types/Bool.html), 'media_unread' => [Bool](/API_docs/types/Bool.html), 'silent' => [Bool](/API_docs/types/Bool.html), 'post' => [Bool](/API_docs/types/Bool.html), 'from_scheduled' => [Bool](/API_docs/types/Bool.html), 'legacy' => [Bool](/API_docs/types/Bool.html), 'edit_hide' => [Bool](/API_docs/types/Bool.html), 'pinned' => [Bool](/API_docs/types/Bool.html), 'noforwards' => [Bool](/API_docs/types/Bool.html), 'invert_media' => [Bool](/API_docs/types/Bool.html), 'offline' => [Bool](/API_docs/types/Bool.html), 'id' => [int](/API_docs/types/int.html), 'from_id' => [Peer](/API_docs/types/Peer.html), 'from_boosts_applied' => [int](/API_docs/types/int.html), 'peer_id' => [Peer](/API_docs/types/Peer.html), 'saved_peer_id' => [Peer](/API_docs/types/Peer.html), 'fwd_from' => [MessageFwdHeader](/API_docs/types/MessageFwdHeader.html), 'via_bot_id' => [long](/API_docs/types/long.html), 'via_business_bot_id' => [long](/API_docs/types/long.html), 'reply_to' => [MessageReplyHeader](/API_docs/types/MessageReplyHeader.html), 'date' => [int](/API_docs/types/int.html), 'message' => [string](/API_docs/types/string.html), 'media' => [MessageMedia](/API_docs/types/MessageMedia.html), 'reply_markup' => [ReplyMarkup](/API_docs/types/ReplyMarkup.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'views' => [int](/API_docs/types/int.html), 'forwards' => [int](/API_docs/types/int.html), 'replies' => [MessageReplies](/API_docs/types/MessageReplies.html), 'edit_date' => [int](/API_docs/types/int.html), 'post_author' => [string](/API_docs/types/string.html), 'grouped_id' => [long](/API_docs/types/long.html), 'reactions' => [MessageReactions](/API_docs/types/MessageReactions.html), 'restriction_reason' => \[[RestrictionReason](/API_docs/types/RestrictionReason.html)\], 'ttl_period' => [int](/API_docs/types/int.html), 'quick_reply_shortcut_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageActionBoostApply](/API_docs/constructors/messageActionBoostApply.html) = \['boosts' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageActionBotAllowed](/API_docs/constructors/messageActionBotAllowed.html) = \['attach_menu' => [Bool](/API_docs/types/Bool.html), 'from_request' => [Bool](/API_docs/types/Bool.html), 'domain' => [string](/API_docs/types/string.html), 'app' => [BotApp](/API_docs/types/BotApp.html), \]; + +*** +

[$messageActionChannelCreate](/API_docs/constructors/messageActionChannelCreate.html) = \['title' => [string](/API_docs/types/string.html), \]; + +*** +

[$messageActionChannelMigrateFrom](/API_docs/constructors/messageActionChannelMigrateFrom.html) = \['title' => [string](/API_docs/types/string.html), 'chat_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$messageActionChatAddUser](/API_docs/constructors/messageActionChatAddUser.html) = \['users' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$messageActionChatCreate](/API_docs/constructors/messageActionChatCreate.html) = \['title' => [string](/API_docs/types/string.html), 'users' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$messageActionChatDeletePhoto](/API_docs/constructors/messageActionChatDeletePhoto.html) = \[\]; + +*** +

[$messageActionChatDeleteUser](/API_docs/constructors/messageActionChatDeleteUser.html) = \['user_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$messageActionChatEditPhoto](/API_docs/constructors/messageActionChatEditPhoto.html) = \['photo' => [Photo](/API_docs/types/Photo.html), \]; + +*** +

[$messageActionChatEditTitle](/API_docs/constructors/messageActionChatEditTitle.html) = \['title' => [string](/API_docs/types/string.html), \]; + +*** +

[$messageActionChatJoinedByLink](/API_docs/constructors/messageActionChatJoinedByLink.html) = \['inviter_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$messageActionChatJoinedByRequest](/API_docs/constructors/messageActionChatJoinedByRequest.html) = \[\]; + +*** +

[$messageActionChatMigrateTo](/API_docs/constructors/messageActionChatMigrateTo.html) = \['channel_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$messageActionContactSignUp](/API_docs/constructors/messageActionContactSignUp.html) = \[\]; + +*** +

[$messageActionCustomAction](/API_docs/constructors/messageActionCustomAction.html) = \['message' => [string](/API_docs/types/string.html), \]; + +*** +

[$messageActionEmpty](/API_docs/constructors/messageActionEmpty.html) = \[\]; + +*** +

[$messageActionGameScore](/API_docs/constructors/messageActionGameScore.html) = \['game_id' => [long](/API_docs/types/long.html), 'score' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageActionGeoProximityReached](/API_docs/constructors/messageActionGeoProximityReached.html) = \['from_id' => [Peer](/API_docs/types/Peer.html), 'to_id' => [Peer](/API_docs/types/Peer.html), 'distance' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageActionGiftCode](/API_docs/constructors/messageActionGiftCode.html) = \['via_giveaway' => [Bool](/API_docs/types/Bool.html), 'unclaimed' => [Bool](/API_docs/types/Bool.html), 'boost_peer' => [Peer](/API_docs/types/Peer.html), 'months' => [int](/API_docs/types/int.html), 'slug' => [string](/API_docs/types/string.html), 'currency' => [string](/API_docs/types/string.html), 'amount' => [long](/API_docs/types/long.html), 'crypto_currency' => [string](/API_docs/types/string.html), 'crypto_amount' => [long](/API_docs/types/long.html), \]; + +*** +

[$messageActionGiftPremium](/API_docs/constructors/messageActionGiftPremium.html) = \['currency' => [string](/API_docs/types/string.html), 'amount' => [long](/API_docs/types/long.html), 'months' => [int](/API_docs/types/int.html), 'crypto_currency' => [string](/API_docs/types/string.html), 'crypto_amount' => [long](/API_docs/types/long.html), \]; + +*** +

[$messageActionGiveawayLaunch](/API_docs/constructors/messageActionGiveawayLaunch.html) = \[\]; + +*** +

[$messageActionGiveawayResults](/API_docs/constructors/messageActionGiveawayResults.html) = \['winners_count' => [int](/API_docs/types/int.html), 'unclaimed_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageActionGroupCall](/API_docs/constructors/messageActionGroupCall.html) = \['call' => [InputGroupCall](/API_docs/types/InputGroupCall.html), 'duration' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageActionGroupCallScheduled](/API_docs/constructors/messageActionGroupCallScheduled.html) = \['call' => [InputGroupCall](/API_docs/types/InputGroupCall.html), 'schedule_date' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageActionHistoryClear](/API_docs/constructors/messageActionHistoryClear.html) = \[\]; + +*** +

[$messageActionInviteToGroupCall](/API_docs/constructors/messageActionInviteToGroupCall.html) = \['call' => [InputGroupCall](/API_docs/types/InputGroupCall.html), 'users' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$messageActionPaymentSent](/API_docs/constructors/messageActionPaymentSent.html) = \['recurring_init' => [Bool](/API_docs/types/Bool.html), 'recurring_used' => [Bool](/API_docs/types/Bool.html), 'currency' => [string](/API_docs/types/string.html), 'total_amount' => [long](/API_docs/types/long.html), 'invoice_slug' => [string](/API_docs/types/string.html), \]; + +*** +

[$messageActionPaymentSentMe](/API_docs/constructors/messageActionPaymentSentMe.html) = \['recurring_init' => [Bool](/API_docs/types/Bool.html), 'recurring_used' => [Bool](/API_docs/types/Bool.html), 'currency' => [string](/API_docs/types/string.html), 'total_amount' => [long](/API_docs/types/long.html), 'payload' => [bytes](/API_docs/types/bytes.html), 'info' => [PaymentRequestedInfo](/API_docs/types/PaymentRequestedInfo.html), 'shipping_option_id' => [string](/API_docs/types/string.html), 'charge' => [PaymentCharge](/API_docs/types/PaymentCharge.html), \]; + +*** +

[$messageActionPhoneCall](/API_docs/constructors/messageActionPhoneCall.html) = \['video' => [Bool](/API_docs/types/Bool.html), 'call_id' => [long](/API_docs/types/long.html), 'reason' => [PhoneCallDiscardReason](/API_docs/types/PhoneCallDiscardReason.html), 'duration' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageActionPinMessage](/API_docs/constructors/messageActionPinMessage.html) = \[\]; + +*** +

[$messageActionRequestedPeer](/API_docs/constructors/messageActionRequestedPeer.html) = \['button_id' => [int](/API_docs/types/int.html), 'peers' => \[[Peer](/API_docs/types/Peer.html)\], \]; + +*** +

[$messageActionRequestedPeerSentMe](/API_docs/constructors/messageActionRequestedPeerSentMe.html) = \['button_id' => [int](/API_docs/types/int.html), 'peers' => \[[RequestedPeer](/API_docs/types/RequestedPeer.html)\], \]; + +*** +

[$messageActionScreenshotTaken](/API_docs/constructors/messageActionScreenshotTaken.html) = \[\]; + +*** +

[$messageActionSecureValuesSent](/API_docs/constructors/messageActionSecureValuesSent.html) = \['types' => \[[SecureValueType](/API_docs/types/SecureValueType.html)\], \]; + +*** +

[$messageActionSecureValuesSentMe](/API_docs/constructors/messageActionSecureValuesSentMe.html) = \['values' => \[[SecureValue](/API_docs/types/SecureValue.html)\], 'credentials' => [SecureCredentialsEncrypted](/API_docs/types/SecureCredentialsEncrypted.html), \]; + +*** +

[$messageActionSetChatTheme](/API_docs/constructors/messageActionSetChatTheme.html) = \['emoticon' => [string](/API_docs/types/string.html), \]; + +*** +

[$messageActionSetChatWallPaper](/API_docs/constructors/messageActionSetChatWallPaper.html) = \['same' => [Bool](/API_docs/types/Bool.html), 'for_both' => [Bool](/API_docs/types/Bool.html), 'wallpaper' => [WallPaper](/API_docs/types/WallPaper.html), \]; + +*** +

[$messageActionSetMessagesTTL](/API_docs/constructors/messageActionSetMessagesTTL.html) = \['period' => [int](/API_docs/types/int.html), 'auto_setting_from' => [long](/API_docs/types/long.html), \]; + +*** +

[$messageActionSuggestProfilePhoto](/API_docs/constructors/messageActionSuggestProfilePhoto.html) = \['photo' => [Photo](/API_docs/types/Photo.html), \]; + +*** +

[$messageActionTopicCreate](/API_docs/constructors/messageActionTopicCreate.html) = \['title' => [string](/API_docs/types/string.html), 'icon_color' => [int](/API_docs/types/int.html), 'icon_emoji_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$messageActionTopicEdit](/API_docs/constructors/messageActionTopicEdit.html) = \['title' => [string](/API_docs/types/string.html), 'icon_emoji_id' => [long](/API_docs/types/long.html), 'closed' => [Bool](/API_docs/types/Bool.html), 'hidden' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$messageActionWebViewDataSent](/API_docs/constructors/messageActionWebViewDataSent.html) = \['text' => [string](/API_docs/types/string.html), \]; + +*** +

[$messageActionWebViewDataSentMe](/API_docs/constructors/messageActionWebViewDataSentMe.html) = \['text' => [string](/API_docs/types/string.html), 'data' => [string](/API_docs/types/string.html), \]; + +*** +

[$messageEmpty](/API_docs/constructors/messageEmpty.html) = \['id' => [int](/API_docs/types/int.html), 'peer_id' => [Peer](/API_docs/types/Peer.html), \]; + +*** +

[$messageEntityBankCard](/API_docs/constructors/messageEntityBankCard.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageEntityBlockquote](/API_docs/constructors/messageEntityBlockquote.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageEntityBold](/API_docs/constructors/messageEntityBold.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageEntityBotCommand](/API_docs/constructors/messageEntityBotCommand.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageEntityCashtag](/API_docs/constructors/messageEntityCashtag.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageEntityCode](/API_docs/constructors/messageEntityCode.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageEntityCustomEmoji](/API_docs/constructors/messageEntityCustomEmoji.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), 'document_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$messageEntityEmail](/API_docs/constructors/messageEntityEmail.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageEntityHashtag](/API_docs/constructors/messageEntityHashtag.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageEntityItalic](/API_docs/constructors/messageEntityItalic.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageEntityMention](/API_docs/constructors/messageEntityMention.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageEntityMentionName](/API_docs/constructors/messageEntityMentionName.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), 'user_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$messageEntityPhone](/API_docs/constructors/messageEntityPhone.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageEntityPre](/API_docs/constructors/messageEntityPre.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), 'language' => [string](/API_docs/types/string.html), \]; + +*** +

[$messageEntitySpoiler](/API_docs/constructors/messageEntitySpoiler.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageEntityStrike](/API_docs/constructors/messageEntityStrike.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageEntityTextUrl](/API_docs/constructors/messageEntityTextUrl.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), 'url' => [string](/API_docs/types/string.html), \]; + +*** +

[$messageEntityUnderline](/API_docs/constructors/messageEntityUnderline.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageEntityUnknown](/API_docs/constructors/messageEntityUnknown.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageEntityUrl](/API_docs/constructors/messageEntityUrl.html) = \['offset' => [int](/API_docs/types/int.html), 'length' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageExtendedMedia](/API_docs/constructors/messageExtendedMedia.html) = \['media' => [MessageMedia](/API_docs/types/MessageMedia.html), \]; + +*** +

[$messageExtendedMediaPreview](/API_docs/constructors/messageExtendedMediaPreview.html) = \['w' => [int](/API_docs/types/int.html), 'h' => [int](/API_docs/types/int.html), 'thumb' => [PhotoSize](/API_docs/types/PhotoSize.html), 'video_duration' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageFwdHeader](/API_docs/constructors/messageFwdHeader.html) = \['imported' => [Bool](/API_docs/types/Bool.html), 'saved_out' => [Bool](/API_docs/types/Bool.html), 'from_id' => [Peer](/API_docs/types/Peer.html), 'from_name' => [string](/API_docs/types/string.html), 'date' => [int](/API_docs/types/int.html), 'channel_post' => [int](/API_docs/types/int.html), 'post_author' => [string](/API_docs/types/string.html), 'saved_from_peer' => [Peer](/API_docs/types/Peer.html), 'saved_from_msg_id' => [int](/API_docs/types/int.html), 'saved_from_id' => [Peer](/API_docs/types/Peer.html), 'saved_from_name' => [string](/API_docs/types/string.html), 'saved_date' => [int](/API_docs/types/int.html), 'psa_type' => [string](/API_docs/types/string.html), \]; + +*** +

[$messageMediaContact](/API_docs/constructors/messageMediaContact.html) = \['phone_number' => [string](/API_docs/types/string.html), 'first_name' => [string](/API_docs/types/string.html), 'last_name' => [string](/API_docs/types/string.html), 'vcard' => [string](/API_docs/types/string.html), 'user_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$messageMediaDice](/API_docs/constructors/messageMediaDice.html) = \['value' => [int](/API_docs/types/int.html), 'emoticon' => [string](/API_docs/types/string.html), \]; + +*** +

[$messageMediaDocument](/API_docs/constructors/messageMediaDocument.html) = \['nopremium' => [Bool](/API_docs/types/Bool.html), 'spoiler' => [Bool](/API_docs/types/Bool.html), 'video' => [Bool](/API_docs/types/Bool.html), 'round' => [Bool](/API_docs/types/Bool.html), 'voice' => [Bool](/API_docs/types/Bool.html), 'document' => [Document](/API_docs/types/Document.html), 'alt_document' => [Document](/API_docs/types/Document.html), 'ttl_seconds' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageMediaEmpty](/API_docs/constructors/messageMediaEmpty.html) = \[\]; + +*** +

[$messageMediaGame](/API_docs/constructors/messageMediaGame.html) = \['game' => [Game](/API_docs/types/Game.html), \]; + +*** +

[$messageMediaGeo](/API_docs/constructors/messageMediaGeo.html) = \['geo' => [GeoPoint](/API_docs/types/GeoPoint.html), \]; + +*** +

[$messageMediaGeoLive](/API_docs/constructors/messageMediaGeoLive.html) = \['geo' => [GeoPoint](/API_docs/types/GeoPoint.html), 'heading' => [int](/API_docs/types/int.html), 'period' => [int](/API_docs/types/int.html), 'proximity_notification_radius' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageMediaGiveaway](/API_docs/constructors/messageMediaGiveaway.html) = \['only_new_subscribers' => [Bool](/API_docs/types/Bool.html), 'winners_are_visible' => [Bool](/API_docs/types/Bool.html), 'channels' => \[[long](/API_docs/types/long.html)\], 'countries_iso2' => \[[string](/API_docs/types/string.html)\], 'prize_description' => [string](/API_docs/types/string.html), 'quantity' => [int](/API_docs/types/int.html), 'months' => [int](/API_docs/types/int.html), 'until_date' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageMediaGiveawayResults](/API_docs/constructors/messageMediaGiveawayResults.html) = \['only_new_subscribers' => [Bool](/API_docs/types/Bool.html), 'refunded' => [Bool](/API_docs/types/Bool.html), 'channel_id' => [long](/API_docs/types/long.html), 'additional_peers_count' => [int](/API_docs/types/int.html), 'launch_msg_id' => [int](/API_docs/types/int.html), 'winners_count' => [int](/API_docs/types/int.html), 'unclaimed_count' => [int](/API_docs/types/int.html), 'winners' => \[[long](/API_docs/types/long.html)\], 'months' => [int](/API_docs/types/int.html), 'prize_description' => [string](/API_docs/types/string.html), 'until_date' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageMediaInvoice](/API_docs/constructors/messageMediaInvoice.html) = \['shipping_address_requested' => [Bool](/API_docs/types/Bool.html), 'test' => [Bool](/API_docs/types/Bool.html), 'title' => [string](/API_docs/types/string.html), 'description' => [string](/API_docs/types/string.html), 'photo' => [WebDocument](/API_docs/types/WebDocument.html), 'receipt_msg_id' => [int](/API_docs/types/int.html), 'currency' => [string](/API_docs/types/string.html), 'total_amount' => [long](/API_docs/types/long.html), 'start_param' => [string](/API_docs/types/string.html), 'extended_media' => [MessageExtendedMedia](/API_docs/types/MessageExtendedMedia.html), \]; + +*** +

[$messageMediaPhoto](/API_docs/constructors/messageMediaPhoto.html) = \['spoiler' => [Bool](/API_docs/types/Bool.html), 'photo' => [Photo](/API_docs/types/Photo.html), 'ttl_seconds' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageMediaPoll](/API_docs/constructors/messageMediaPoll.html) = \['poll' => [Poll](/API_docs/types/Poll.html), 'results' => [PollResults](/API_docs/types/PollResults.html), \]; + +*** +

[$messageMediaStory](/API_docs/constructors/messageMediaStory.html) = \['via_mention' => [Bool](/API_docs/types/Bool.html), 'peer' => [long](/API_docs/types/long.html), 'id' => [int](/API_docs/types/int.html), 'story' => [StoryItem](/API_docs/types/StoryItem.html), \]; + +*** +

[$messageMediaUnsupported](/API_docs/constructors/messageMediaUnsupported.html) = \[\]; + +*** +

[$messageMediaVenue](/API_docs/constructors/messageMediaVenue.html) = \['geo' => [GeoPoint](/API_docs/types/GeoPoint.html), 'title' => [string](/API_docs/types/string.html), 'address' => [string](/API_docs/types/string.html), 'provider' => [string](/API_docs/types/string.html), 'venue_id' => [string](/API_docs/types/string.html), 'venue_type' => [string](/API_docs/types/string.html), \]; + +*** +

[$messageMediaWebPage](/API_docs/constructors/messageMediaWebPage.html) = \['force_large_media' => [Bool](/API_docs/types/Bool.html), 'force_small_media' => [Bool](/API_docs/types/Bool.html), 'manual' => [Bool](/API_docs/types/Bool.html), 'safe' => [Bool](/API_docs/types/Bool.html), 'webpage' => [WebPage](/API_docs/types/WebPage.html), \]; + +*** +

[$messagePeerReaction](/API_docs/constructors/messagePeerReaction.html) = \['big' => [Bool](/API_docs/types/Bool.html), 'unread' => [Bool](/API_docs/types/Bool.html), 'my' => [Bool](/API_docs/types/Bool.html), 'peer_id' => [Peer](/API_docs/types/Peer.html), 'date' => [int](/API_docs/types/int.html), 'reaction' => [Reaction](/API_docs/types/Reaction.html), \]; + +*** +

[$messagePeerVote](/API_docs/constructors/messagePeerVote.html) = \['peer' => [long](/API_docs/types/long.html), 'option' => [bytes](/API_docs/types/bytes.html), 'date' => [int](/API_docs/types/int.html), \]; + +*** +

[$messagePeerVoteInputOption](/API_docs/constructors/messagePeerVoteInputOption.html) = \['peer' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), \]; + +*** +

[$messagePeerVoteMultiple](/API_docs/constructors/messagePeerVoteMultiple.html) = \['peer' => [long](/API_docs/types/long.html), 'options' => \[[bytes](/API_docs/types/bytes.html)\], 'date' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageRange](/API_docs/constructors/messageRange.html) = \['min_id' => [int](/API_docs/types/int.html), 'max_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageReactions](/API_docs/constructors/messageReactions.html) = \['min' => [Bool](/API_docs/types/Bool.html), 'can_see_list' => [Bool](/API_docs/types/Bool.html), 'reactions_as_tags' => [Bool](/API_docs/types/Bool.html), 'results' => \[[ReactionCount](/API_docs/types/ReactionCount.html)\], 'recent_reactions' => \[[MessagePeerReaction](/API_docs/types/MessagePeerReaction.html)\], \]; + +*** +

[$messageReplies](/API_docs/constructors/messageReplies.html) = \['comments' => [Bool](/API_docs/types/Bool.html), 'replies' => [int](/API_docs/types/int.html), 'replies_pts' => [int](/API_docs/types/int.html), 'recent_repliers' => \[[Peer](/API_docs/types/Peer.html)\], 'channel_id' => [long](/API_docs/types/long.html), 'max_id' => [int](/API_docs/types/int.html), 'read_max_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageReplyHeader](/API_docs/constructors/messageReplyHeader.html) = \['reply_to_scheduled' => [Bool](/API_docs/types/Bool.html), 'forum_topic' => [Bool](/API_docs/types/Bool.html), 'quote' => [Bool](/API_docs/types/Bool.html), 'reply_to_msg_id' => [int](/API_docs/types/int.html), 'reply_to_peer_id' => [Peer](/API_docs/types/Peer.html), 'reply_from' => [MessageFwdHeader](/API_docs/types/MessageFwdHeader.html), 'reply_media' => [MessageMedia](/API_docs/types/MessageMedia.html), 'reply_to_top_id' => [int](/API_docs/types/int.html), 'quote_text' => [string](/API_docs/types/string.html), 'quote_entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'quote_offset' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageReplyStoryHeader](/API_docs/constructors/messageReplyStoryHeader.html) = \['peer' => [long](/API_docs/types/long.html), 'story_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageService](/API_docs/constructors/messageService.html) = \['out' => [Bool](/API_docs/types/Bool.html), 'mentioned' => [Bool](/API_docs/types/Bool.html), 'media_unread' => [Bool](/API_docs/types/Bool.html), 'silent' => [Bool](/API_docs/types/Bool.html), 'post' => [Bool](/API_docs/types/Bool.html), 'legacy' => [Bool](/API_docs/types/Bool.html), 'id' => [int](/API_docs/types/int.html), 'from_id' => [Peer](/API_docs/types/Peer.html), 'peer_id' => [Peer](/API_docs/types/Peer.html), 'reply_to' => [MessageReplyHeader](/API_docs/types/MessageReplyHeader.html), 'date' => [int](/API_docs/types/int.html), 'action' => [MessageAction](/API_docs/types/MessageAction.html), 'ttl_period' => [int](/API_docs/types/int.html), \]; + +*** +

[$messageViews](/API_docs/constructors/messageViews.html) = \['views' => [int](/API_docs/types/int.html), 'forwards' => [int](/API_docs/types/int.html), 'replies' => [MessageReplies](/API_docs/types/MessageReplies.html), \]; + +*** +

[$messages.affectedFoundMessages](/API_docs/constructors/messages.affectedFoundMessages.html) = \['pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), 'offset' => [int](/API_docs/types/int.html), 'messages' => \[[int](/API_docs/types/int.html)\], \]; + +*** +

[$messages.affectedHistory](/API_docs/constructors/messages.affectedHistory.html) = \['pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), 'offset' => [int](/API_docs/types/int.html), \]; + +*** +

[$messages.affectedMessages](/API_docs/constructors/messages.affectedMessages.html) = \['pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$messages.allStickers](/API_docs/constructors/messages.allStickers.html) = \['hash' => [long](/API_docs/types/long.html), 'sets' => \[[StickerSet](/API_docs/types/StickerSet.html)\], \]; + +*** +

[$messages.allStickersNotModified](/API_docs/constructors/messages.allStickersNotModified.html) = \[\]; + +*** +

[$messages.archivedStickers](/API_docs/constructors/messages.archivedStickers.html) = \['count' => [int](/API_docs/types/int.html), 'sets' => \[[StickerSetCovered](/API_docs/types/StickerSetCovered.html)\], \]; + +*** +

[$messages.availableReactions](/API_docs/constructors/messages.availableReactions.html) = \['hash' => [int](/API_docs/types/int.html), 'reactions' => \[[AvailableReaction](/API_docs/types/AvailableReaction.html)\], \]; + +*** +

[$messages.availableReactionsNotModified](/API_docs/constructors/messages.availableReactionsNotModified.html) = \[\]; + +*** +

[$messages.botApp](/API_docs/constructors/messages.botApp.html) = \['inactive' => [Bool](/API_docs/types/Bool.html), 'request_write_access' => [Bool](/API_docs/types/Bool.html), 'has_settings' => [Bool](/API_docs/types/Bool.html), 'app' => [BotApp](/API_docs/types/BotApp.html), \]; + +*** +

[$messages.botCallbackAnswer](/API_docs/constructors/messages.botCallbackAnswer.html) = \['alert' => [Bool](/API_docs/types/Bool.html), 'has_url' => [Bool](/API_docs/types/Bool.html), 'native_ui' => [Bool](/API_docs/types/Bool.html), 'message' => [string](/API_docs/types/string.html), 'url' => [string](/API_docs/types/string.html), 'cache_time' => [int](/API_docs/types/int.html), \]; + +*** +

[$messages.botResults](/API_docs/constructors/messages.botResults.html) = \['gallery' => [Bool](/API_docs/types/Bool.html), 'query_id' => [long](/API_docs/types/long.html), 'next_offset' => [string](/API_docs/types/string.html), 'switch_pm' => [InlineBotSwitchPM](/API_docs/types/InlineBotSwitchPM.html), 'switch_webview' => [InlineBotWebView](/API_docs/types/InlineBotWebView.html), 'results' => \[[BotInlineResult](/API_docs/types/BotInlineResult.html)\], 'cache_time' => [int](/API_docs/types/int.html), 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.channelMessages](/API_docs/constructors/messages.channelMessages.html) = \['inexact' => [Bool](/API_docs/types/Bool.html), 'pts' => [int](/API_docs/types/int.html), 'count' => [int](/API_docs/types/int.html), 'offset_id_offset' => [int](/API_docs/types/int.html), 'messages' => \[[Message](/API_docs/types/Message.html)\], 'topics' => \[[ForumTopic](/API_docs/types/ForumTopic.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.chatAdminsWithInvites](/API_docs/constructors/messages.chatAdminsWithInvites.html) = \['admins' => \[[ChatAdminWithInvites](/API_docs/types/ChatAdminWithInvites.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.chatFull](/API_docs/constructors/messages.chatFull.html) = \['full_chat' => [ChatFull](/API_docs/types/ChatFull.html), 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.chatInviteImporters](/API_docs/constructors/messages.chatInviteImporters.html) = \['count' => [int](/API_docs/types/int.html), 'importers' => \[[ChatInviteImporter](/API_docs/types/ChatInviteImporter.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.chats](/API_docs/constructors/messages.chats.html) = \['chats' => \[[Chat](/API_docs/types/Chat.html)\], \]; + +*** +

[$messages.chatsSlice](/API_docs/constructors/messages.chatsSlice.html) = \['count' => [int](/API_docs/types/int.html), 'chats' => \[[Chat](/API_docs/types/Chat.html)\], \]; + +*** +

[$messages.checkedHistoryImportPeer](/API_docs/constructors/messages.checkedHistoryImportPeer.html) = \['confirm_text' => [string](/API_docs/types/string.html), \]; + +*** +

[$messages.dhConfig](/API_docs/constructors/messages.dhConfig.html) = \['g' => [int](/API_docs/types/int.html), 'p' => [bytes](/API_docs/types/bytes.html), 'version' => [int](/API_docs/types/int.html), 'random' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$messages.dhConfigNotModified](/API_docs/constructors/messages.dhConfigNotModified.html) = \['random' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$messages.dialogFilters](/API_docs/constructors/messages.dialogFilters.html) = \['tags_enabled' => [Bool](/API_docs/types/Bool.html), 'filters' => \[[DialogFilter](/API_docs/types/DialogFilter.html)\], \]; + +*** +

[$messages.dialogs](/API_docs/constructors/messages.dialogs.html) = \['dialogs' => \[[Dialog](/API_docs/types/Dialog.html)\], 'messages' => \[[Message](/API_docs/types/Message.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.dialogsNotModified](/API_docs/constructors/messages.dialogsNotModified.html) = \['count' => [int](/API_docs/types/int.html), \]; + +*** +

[$messages.dialogsSlice](/API_docs/constructors/messages.dialogsSlice.html) = \['count' => [int](/API_docs/types/int.html), 'dialogs' => \[[Dialog](/API_docs/types/Dialog.html)\], 'messages' => \[[Message](/API_docs/types/Message.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.discussionMessage](/API_docs/constructors/messages.discussionMessage.html) = \['messages' => \[[Message](/API_docs/types/Message.html)\], 'max_id' => [int](/API_docs/types/int.html), 'read_inbox_max_id' => [int](/API_docs/types/int.html), 'read_outbox_max_id' => [int](/API_docs/types/int.html), 'unread_count' => [int](/API_docs/types/int.html), 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.emojiGroups](/API_docs/constructors/messages.emojiGroups.html) = \['hash' => [int](/API_docs/types/int.html), 'groups' => \[[EmojiGroup](/API_docs/types/EmojiGroup.html)\], \]; + +*** +

[$messages.emojiGroupsNotModified](/API_docs/constructors/messages.emojiGroupsNotModified.html) = \[\]; + +*** +

[$messages.exportedChatInvite](/API_docs/constructors/messages.exportedChatInvite.html) = \['invite' => [ExportedChatInvite](/API_docs/types/ExportedChatInvite.html), 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.exportedChatInviteReplaced](/API_docs/constructors/messages.exportedChatInviteReplaced.html) = \['invite' => [ExportedChatInvite](/API_docs/types/ExportedChatInvite.html), 'new_invite' => [ExportedChatInvite](/API_docs/types/ExportedChatInvite.html), 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.exportedChatInvites](/API_docs/constructors/messages.exportedChatInvites.html) = \['count' => [int](/API_docs/types/int.html), 'invites' => \[[ExportedChatInvite](/API_docs/types/ExportedChatInvite.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.favedStickers](/API_docs/constructors/messages.favedStickers.html) = \['hash' => [long](/API_docs/types/long.html), 'packs' => \[[StickerPack](/API_docs/types/StickerPack.html)\], 'stickers' => \[[Document](/API_docs/types/Document.html)\], \]; + +*** +

[$messages.favedStickersNotModified](/API_docs/constructors/messages.favedStickersNotModified.html) = \[\]; + +*** +

[$messages.featuredStickers](/API_docs/constructors/messages.featuredStickers.html) = \['premium' => [Bool](/API_docs/types/Bool.html), 'hash' => [long](/API_docs/types/long.html), 'count' => [int](/API_docs/types/int.html), 'sets' => \[[StickerSetCovered](/API_docs/types/StickerSetCovered.html)\], 'unread' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$messages.featuredStickersNotModified](/API_docs/constructors/messages.featuredStickersNotModified.html) = \['count' => [int](/API_docs/types/int.html), \]; + +*** +

[$messages.forumTopics](/API_docs/constructors/messages.forumTopics.html) = \['order_by_create_date' => [Bool](/API_docs/types/Bool.html), 'count' => [int](/API_docs/types/int.html), 'topics' => \[[ForumTopic](/API_docs/types/ForumTopic.html)\], 'messages' => \[[Message](/API_docs/types/Message.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], 'pts' => [int](/API_docs/types/int.html), \]; + +*** +

[$messages.foundStickerSets](/API_docs/constructors/messages.foundStickerSets.html) = \['hash' => [long](/API_docs/types/long.html), 'sets' => \[[StickerSetCovered](/API_docs/types/StickerSetCovered.html)\], \]; + +*** +

[$messages.foundStickerSetsNotModified](/API_docs/constructors/messages.foundStickerSetsNotModified.html) = \[\]; + +*** +

[$messages.highScores](/API_docs/constructors/messages.highScores.html) = \['scores' => \[[HighScore](/API_docs/types/HighScore.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.historyImport](/API_docs/constructors/messages.historyImport.html) = \['id' => [long](/API_docs/types/long.html), \]; + +*** +

[$messages.historyImportParsed](/API_docs/constructors/messages.historyImportParsed.html) = \['pm' => [Bool](/API_docs/types/Bool.html), 'group' => [Bool](/API_docs/types/Bool.html), 'title' => [string](/API_docs/types/string.html), \]; + +*** +

[$messages.inactiveChats](/API_docs/constructors/messages.inactiveChats.html) = \['dates' => \[[int](/API_docs/types/int.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.invitedUsers](/API_docs/constructors/messages.invitedUsers.html) = \['updates' => [Updates](/API_docs/types/Updates.html), 'missing_invitees' => \[[MissingInvitee](/API_docs/types/MissingInvitee.html)\], \]; + +*** +

[$messages.messageEditData](/API_docs/constructors/messages.messageEditData.html) = \['caption' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$messages.messageReactionsList](/API_docs/constructors/messages.messageReactionsList.html) = \['count' => [int](/API_docs/types/int.html), 'reactions' => \[[MessagePeerReaction](/API_docs/types/MessagePeerReaction.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], 'next_offset' => [string](/API_docs/types/string.html), \]; + +*** +

[$messages.messageViews](/API_docs/constructors/messages.messageViews.html) = \['views' => \[[MessageViews](/API_docs/types/MessageViews.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.messages](/API_docs/constructors/messages.messages.html) = \['messages' => \[[Message](/API_docs/types/Message.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.messagesNotModified](/API_docs/constructors/messages.messagesNotModified.html) = \['count' => [int](/API_docs/types/int.html), \]; + +*** +

[$messages.messagesSlice](/API_docs/constructors/messages.messagesSlice.html) = \['inexact' => [Bool](/API_docs/types/Bool.html), 'count' => [int](/API_docs/types/int.html), 'next_rate' => [int](/API_docs/types/int.html), 'offset_id_offset' => [int](/API_docs/types/int.html), 'messages' => \[[Message](/API_docs/types/Message.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.myStickers](/API_docs/constructors/messages.myStickers.html) = \['count' => [int](/API_docs/types/int.html), 'sets' => \[[StickerSetCovered](/API_docs/types/StickerSetCovered.html)\], \]; + +*** +

[$messages.peerDialogs](/API_docs/constructors/messages.peerDialogs.html) = \['dialogs' => \[[Dialog](/API_docs/types/Dialog.html)\], 'messages' => \[[Message](/API_docs/types/Message.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], 'state' => [updates.State](/API_docs/types/updates.State.html), \]; + +*** +

[$messages.peerSettings](/API_docs/constructors/messages.peerSettings.html) = \['settings' => [PeerSettings](/API_docs/types/PeerSettings.html), 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.quickReplies](/API_docs/constructors/messages.quickReplies.html) = \['quick_replies' => \[[QuickReply](/API_docs/types/QuickReply.html)\], 'messages' => \[[Message](/API_docs/types/Message.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.quickRepliesNotModified](/API_docs/constructors/messages.quickRepliesNotModified.html) = \[\]; + +*** +

[$messages.reactions](/API_docs/constructors/messages.reactions.html) = \['hash' => [long](/API_docs/types/long.html), 'reactions' => \[[Reaction](/API_docs/types/Reaction.html)\], \]; + +*** +

[$messages.reactionsNotModified](/API_docs/constructors/messages.reactionsNotModified.html) = \[\]; + +*** +

[$messages.recentStickers](/API_docs/constructors/messages.recentStickers.html) = \['hash' => [long](/API_docs/types/long.html), 'packs' => \[[StickerPack](/API_docs/types/StickerPack.html)\], 'stickers' => \[[Document](/API_docs/types/Document.html)\], 'dates' => \[[int](/API_docs/types/int.html)\], \]; + +*** +

[$messages.recentStickersNotModified](/API_docs/constructors/messages.recentStickersNotModified.html) = \[\]; + +*** +

[$messages.savedDialogs](/API_docs/constructors/messages.savedDialogs.html) = \['dialogs' => \[[SavedDialog](/API_docs/types/SavedDialog.html)\], 'messages' => \[[Message](/API_docs/types/Message.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.savedDialogsNotModified](/API_docs/constructors/messages.savedDialogsNotModified.html) = \['count' => [int](/API_docs/types/int.html), \]; + +*** +

[$messages.savedDialogsSlice](/API_docs/constructors/messages.savedDialogsSlice.html) = \['count' => [int](/API_docs/types/int.html), 'dialogs' => \[[SavedDialog](/API_docs/types/SavedDialog.html)\], 'messages' => \[[Message](/API_docs/types/Message.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.savedGifs](/API_docs/constructors/messages.savedGifs.html) = \['hash' => [long](/API_docs/types/long.html), 'gifs' => \[[Document](/API_docs/types/Document.html)\], \]; + +*** +

[$messages.savedGifsNotModified](/API_docs/constructors/messages.savedGifsNotModified.html) = \[\]; + +*** +

[$messages.savedReactionTags](/API_docs/constructors/messages.savedReactionTags.html) = \['tags' => \[[SavedReactionTag](/API_docs/types/SavedReactionTag.html)\], 'hash' => [long](/API_docs/types/long.html), \]; + +*** +

[$messages.savedReactionTagsNotModified](/API_docs/constructors/messages.savedReactionTagsNotModified.html) = \[\]; + +*** +

[$messages.searchCounter](/API_docs/constructors/messages.searchCounter.html) = \['inexact' => [Bool](/API_docs/types/Bool.html), 'filter' => [MessagesFilter](/API_docs/types/MessagesFilter.html), 'count' => [int](/API_docs/types/int.html), \]; + +*** +

[$messages.searchResultsCalendar](/API_docs/constructors/messages.searchResultsCalendar.html) = \['inexact' => [Bool](/API_docs/types/Bool.html), 'count' => [int](/API_docs/types/int.html), 'min_date' => [int](/API_docs/types/int.html), 'min_msg_id' => [int](/API_docs/types/int.html), 'offset_id_offset' => [int](/API_docs/types/int.html), 'periods' => \[[SearchResultsCalendarPeriod](/API_docs/types/SearchResultsCalendarPeriod.html)\], 'messages' => \[[Message](/API_docs/types/Message.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.searchResultsPositions](/API_docs/constructors/messages.searchResultsPositions.html) = \['count' => [int](/API_docs/types/int.html), 'positions' => \[[SearchResultsPosition](/API_docs/types/SearchResultsPosition.html)\], \]; + +*** +

[$messages.sentEncryptedFile](/API_docs/constructors/messages.sentEncryptedFile.html) = \['date' => [int](/API_docs/types/int.html), 'file' => [EncryptedFile](/API_docs/types/EncryptedFile.html), \]; + +*** +

[$messages.sentEncryptedMessage](/API_docs/constructors/messages.sentEncryptedMessage.html) = \['date' => [int](/API_docs/types/int.html), \]; + +*** +

[$messages.sponsoredMessages](/API_docs/constructors/messages.sponsoredMessages.html) = \['posts_between' => [int](/API_docs/types/int.html), 'messages' => \[[SponsoredMessage](/API_docs/types/SponsoredMessage.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$messages.sponsoredMessagesEmpty](/API_docs/constructors/messages.sponsoredMessagesEmpty.html) = \[\]; + +*** +

[$messages.stickerSet](/API_docs/constructors/messages.stickerSet.html) = \['set' => [StickerSet](/API_docs/types/StickerSet.html), 'packs' => \[[StickerPack](/API_docs/types/StickerPack.html)\], 'keywords' => \[[StickerKeyword](/API_docs/types/StickerKeyword.html)\], 'documents' => \[[Document](/API_docs/types/Document.html)\], \]; + +*** +

[$messages.stickerSetInstallResultArchive](/API_docs/constructors/messages.stickerSetInstallResultArchive.html) = \['sets' => \[[StickerSetCovered](/API_docs/types/StickerSetCovered.html)\], \]; + +*** +

[$messages.stickerSetInstallResultSuccess](/API_docs/constructors/messages.stickerSetInstallResultSuccess.html) = \[\]; + +*** +

[$messages.stickerSetNotModified](/API_docs/constructors/messages.stickerSetNotModified.html) = \[\]; + +*** +

[$messages.stickers](/API_docs/constructors/messages.stickers.html) = \['hash' => [long](/API_docs/types/long.html), 'stickers' => \[[Document](/API_docs/types/Document.html)\], \]; + +*** +

[$messages.stickersNotModified](/API_docs/constructors/messages.stickersNotModified.html) = \[\]; + +*** +

[$messages.transcribedAudio](/API_docs/constructors/messages.transcribedAudio.html) = \['pending' => [Bool](/API_docs/types/Bool.html), 'transcription_id' => [long](/API_docs/types/long.html), 'text' => [string](/API_docs/types/string.html), 'trial_remains_num' => [int](/API_docs/types/int.html), 'trial_remains_until_date' => [int](/API_docs/types/int.html), \]; + +*** +

[$messages.translateResult](/API_docs/constructors/messages.translateResult.html) = \['result' => \[[TextWithEntities](/API_docs/types/TextWithEntities.html)\], \]; + +*** +

[$messages.votesList](/API_docs/constructors/messages.votesList.html) = \['count' => [int](/API_docs/types/int.html), 'votes' => \[[MessagePeerVote](/API_docs/types/MessagePeerVote.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], 'next_offset' => [string](/API_docs/types/string.html), \]; + +*** +

[$messages.webPage](/API_docs/constructors/messages.webPage.html) = \['webpage' => [WebPage](/API_docs/types/WebPage.html), 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$missingInvitee](/API_docs/constructors/missingInvitee.html) = \['premium_would_allow_invite' => [Bool](/API_docs/types/Bool.html), 'premium_required_for_pm' => [Bool](/API_docs/types/Bool.html), 'user_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$myBoost](/API_docs/constructors/myBoost.html) = \['slot' => [int](/API_docs/types/int.html), 'peer' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'expires' => [int](/API_docs/types/int.html), 'cooldown_until_date' => [int](/API_docs/types/int.html), \]; + +*** +

[$nearestDc](/API_docs/constructors/nearestDc.html) = \['country' => [string](/API_docs/types/string.html), 'this_dc' => [int](/API_docs/types/int.html), 'nearest_dc' => [int](/API_docs/types/int.html), \]; + +*** +

[$notificationSoundDefault](/API_docs/constructors/notificationSoundDefault.html) = \[\]; + +*** +

[$notificationSoundLocal](/API_docs/constructors/notificationSoundLocal.html) = \['title' => [string](/API_docs/types/string.html), 'data' => [string](/API_docs/types/string.html), \]; + +*** +

[$notificationSoundNone](/API_docs/constructors/notificationSoundNone.html) = \[\]; + +*** +

[$notificationSoundRingtone](/API_docs/constructors/notificationSoundRingtone.html) = \['id' => [long](/API_docs/types/long.html), \]; + +*** +

[$notifyBroadcasts](/API_docs/constructors/notifyBroadcasts.html) = \[\]; + +*** +

[$notifyChats](/API_docs/constructors/notifyChats.html) = \[\]; + +*** +

[$notifyForumTopic](/API_docs/constructors/notifyForumTopic.html) = \['peer' => [long](/API_docs/types/long.html), 'top_msg_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$notifyPeer](/API_docs/constructors/notifyPeer.html) = \['peer' => [long](/API_docs/types/long.html), \]; + +*** +

[$notifyUsers](/API_docs/constructors/notifyUsers.html) = \[\]; + +*** +

[$null](/API_docs/constructors/null.html) = \[\]; + +*** +

[$outboxReadDate](/API_docs/constructors/outboxReadDate.html) = \['date' => [int](/API_docs/types/int.html), \]; + +*** +

[$page](/API_docs/constructors/page.html) = \['part' => [Bool](/API_docs/types/Bool.html), 'rtl' => [Bool](/API_docs/types/Bool.html), 'v2' => [Bool](/API_docs/types/Bool.html), 'url' => [string](/API_docs/types/string.html), 'blocks' => \[[PageBlock](/API_docs/types/PageBlock.html)\], 'photos' => \[[Photo](/API_docs/types/Photo.html)\], 'documents' => \[[Document](/API_docs/types/Document.html)\], 'views' => [int](/API_docs/types/int.html), \]; + +*** +

[$pageBlockAnchor](/API_docs/constructors/pageBlockAnchor.html) = \['name' => [string](/API_docs/types/string.html), \]; + +*** +

[$pageBlockAudio](/API_docs/constructors/pageBlockAudio.html) = \['audio_id' => [long](/API_docs/types/long.html), 'caption' => [PageCaption](/API_docs/types/PageCaption.html), \]; + +*** +

[$pageBlockAuthorDate](/API_docs/constructors/pageBlockAuthorDate.html) = \['author' => [RichText](/API_docs/types/RichText.html), 'published_date' => [int](/API_docs/types/int.html), \]; + +*** +

[$pageBlockBlockquote](/API_docs/constructors/pageBlockBlockquote.html) = \['text' => [RichText](/API_docs/types/RichText.html), 'caption' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$pageBlockChannel](/API_docs/constructors/pageBlockChannel.html) = \['channel' => [Chat](/API_docs/types/Chat.html), \]; + +*** +

[$pageBlockCollage](/API_docs/constructors/pageBlockCollage.html) = \['items' => \[[PageBlock](/API_docs/types/PageBlock.html)\], 'caption' => [PageCaption](/API_docs/types/PageCaption.html), \]; + +*** +

[$pageBlockCover](/API_docs/constructors/pageBlockCover.html) = \['cover' => [PageBlock](/API_docs/types/PageBlock.html), \]; + +*** +

[$pageBlockDetails](/API_docs/constructors/pageBlockDetails.html) = \['open' => [Bool](/API_docs/types/Bool.html), 'blocks' => \[[PageBlock](/API_docs/types/PageBlock.html)\], 'title' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$pageBlockDivider](/API_docs/constructors/pageBlockDivider.html) = \[\]; + +*** +

[$pageBlockEmbed](/API_docs/constructors/pageBlockEmbed.html) = \['full_width' => [Bool](/API_docs/types/Bool.html), 'allow_scrolling' => [Bool](/API_docs/types/Bool.html), 'url' => [string](/API_docs/types/string.html), 'html' => [string](/API_docs/types/string.html), 'poster_photo_id' => [long](/API_docs/types/long.html), 'w' => [int](/API_docs/types/int.html), 'h' => [int](/API_docs/types/int.html), 'caption' => [PageCaption](/API_docs/types/PageCaption.html), \]; + +*** +

[$pageBlockEmbedPost](/API_docs/constructors/pageBlockEmbedPost.html) = \['url' => [string](/API_docs/types/string.html), 'webpage_id' => [long](/API_docs/types/long.html), 'author_photo_id' => [long](/API_docs/types/long.html), 'author' => [string](/API_docs/types/string.html), 'date' => [int](/API_docs/types/int.html), 'blocks' => \[[PageBlock](/API_docs/types/PageBlock.html)\], 'caption' => [PageCaption](/API_docs/types/PageCaption.html), \]; + +*** +

[$pageBlockFooter](/API_docs/constructors/pageBlockFooter.html) = \['text' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$pageBlockHeader](/API_docs/constructors/pageBlockHeader.html) = \['text' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$pageBlockKicker](/API_docs/constructors/pageBlockKicker.html) = \['text' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$pageBlockList](/API_docs/constructors/pageBlockList.html) = \['items' => \[[PageListItem](/API_docs/types/PageListItem.html)\], \]; + +*** +

[$pageBlockMap](/API_docs/constructors/pageBlockMap.html) = \['geo' => [GeoPoint](/API_docs/types/GeoPoint.html), 'zoom' => [int](/API_docs/types/int.html), 'w' => [int](/API_docs/types/int.html), 'h' => [int](/API_docs/types/int.html), 'caption' => [PageCaption](/API_docs/types/PageCaption.html), \]; + +*** +

[$pageBlockOrderedList](/API_docs/constructors/pageBlockOrderedList.html) = \['items' => \[[PageListOrderedItem](/API_docs/types/PageListOrderedItem.html)\], \]; + +*** +

[$pageBlockParagraph](/API_docs/constructors/pageBlockParagraph.html) = \['text' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$pageBlockPhoto](/API_docs/constructors/pageBlockPhoto.html) = \['photo_id' => [long](/API_docs/types/long.html), 'caption' => [PageCaption](/API_docs/types/PageCaption.html), 'url' => [string](/API_docs/types/string.html), 'webpage_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$pageBlockPreformatted](/API_docs/constructors/pageBlockPreformatted.html) = \['text' => [RichText](/API_docs/types/RichText.html), 'language' => [string](/API_docs/types/string.html), \]; + +*** +

[$pageBlockPullquote](/API_docs/constructors/pageBlockPullquote.html) = \['text' => [RichText](/API_docs/types/RichText.html), 'caption' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$pageBlockRelatedArticles](/API_docs/constructors/pageBlockRelatedArticles.html) = \['title' => [RichText](/API_docs/types/RichText.html), 'articles' => \[[PageRelatedArticle](/API_docs/types/PageRelatedArticle.html)\], \]; + +*** +

[$pageBlockSlideshow](/API_docs/constructors/pageBlockSlideshow.html) = \['items' => \[[PageBlock](/API_docs/types/PageBlock.html)\], 'caption' => [PageCaption](/API_docs/types/PageCaption.html), \]; + +*** +

[$pageBlockSubheader](/API_docs/constructors/pageBlockSubheader.html) = \['text' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$pageBlockSubtitle](/API_docs/constructors/pageBlockSubtitle.html) = \['text' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$pageBlockTable](/API_docs/constructors/pageBlockTable.html) = \['bordered' => [Bool](/API_docs/types/Bool.html), 'striped' => [Bool](/API_docs/types/Bool.html), 'title' => [RichText](/API_docs/types/RichText.html), 'rows' => \[[PageTableRow](/API_docs/types/PageTableRow.html)\], \]; + +*** +

[$pageBlockTitle](/API_docs/constructors/pageBlockTitle.html) = \['text' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$pageBlockUnsupported](/API_docs/constructors/pageBlockUnsupported.html) = \[\]; + +*** +

[$pageBlockVideo](/API_docs/constructors/pageBlockVideo.html) = \['autoplay' => [Bool](/API_docs/types/Bool.html), 'loop' => [Bool](/API_docs/types/Bool.html), 'video_id' => [long](/API_docs/types/long.html), 'caption' => [PageCaption](/API_docs/types/PageCaption.html), \]; + +*** +

[$pageCaption](/API_docs/constructors/pageCaption.html) = \['text' => [RichText](/API_docs/types/RichText.html), 'credit' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$pageListItemBlocks](/API_docs/constructors/pageListItemBlocks.html) = \['blocks' => \[[PageBlock](/API_docs/types/PageBlock.html)\], \]; + +*** +

[$pageListItemText](/API_docs/constructors/pageListItemText.html) = \['text' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$pageListOrderedItemBlocks](/API_docs/constructors/pageListOrderedItemBlocks.html) = \['num' => [string](/API_docs/types/string.html), 'blocks' => \[[PageBlock](/API_docs/types/PageBlock.html)\], \]; + +*** +

[$pageListOrderedItemText](/API_docs/constructors/pageListOrderedItemText.html) = \['num' => [string](/API_docs/types/string.html), 'text' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$pageRelatedArticle](/API_docs/constructors/pageRelatedArticle.html) = \['url' => [string](/API_docs/types/string.html), 'webpage_id' => [long](/API_docs/types/long.html), 'title' => [string](/API_docs/types/string.html), 'description' => [string](/API_docs/types/string.html), 'photo_id' => [long](/API_docs/types/long.html), 'author' => [string](/API_docs/types/string.html), 'published_date' => [int](/API_docs/types/int.html), \]; + +*** +

[$pageTableCell](/API_docs/constructors/pageTableCell.html) = \['header' => [Bool](/API_docs/types/Bool.html), 'align_center' => [Bool](/API_docs/types/Bool.html), 'align_right' => [Bool](/API_docs/types/Bool.html), 'valign_middle' => [Bool](/API_docs/types/Bool.html), 'valign_bottom' => [Bool](/API_docs/types/Bool.html), 'text' => [RichText](/API_docs/types/RichText.html), 'colspan' => [int](/API_docs/types/int.html), 'rowspan' => [int](/API_docs/types/int.html), \]; + +*** +

[$pageTableRow](/API_docs/constructors/pageTableRow.html) = \['cells' => \[[PageTableCell](/API_docs/types/PageTableCell.html)\], \]; + +*** +

[$passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow](/API_docs/constructors/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow.html) = \['salt1' => [bytes](/API_docs/types/bytes.html), 'salt2' => [bytes](/API_docs/types/bytes.html), 'g' => [int](/API_docs/types/int.html), 'p' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$passwordKdfAlgoUnknown](/API_docs/constructors/passwordKdfAlgoUnknown.html) = \[\]; + +*** +

[$paymentCharge](/API_docs/constructors/paymentCharge.html) = \['id' => [string](/API_docs/types/string.html), 'provider_charge_id' => [string](/API_docs/types/string.html), \]; + +*** +

[$paymentFormMethod](/API_docs/constructors/paymentFormMethod.html) = \['url' => [string](/API_docs/types/string.html), 'title' => [string](/API_docs/types/string.html), \]; + +*** +

[$paymentRequestedInfo](/API_docs/constructors/paymentRequestedInfo.html) = \['name' => [string](/API_docs/types/string.html), 'phone' => [string](/API_docs/types/string.html), 'email' => [string](/API_docs/types/string.html), 'shipping_address' => [PostAddress](/API_docs/types/PostAddress.html), \]; + +*** +

[$paymentSavedCredentialsCard](/API_docs/constructors/paymentSavedCredentialsCard.html) = \['id' => [string](/API_docs/types/string.html), 'title' => [string](/API_docs/types/string.html), \]; + +*** +

[$payments.bankCardData](/API_docs/constructors/payments.bankCardData.html) = \['title' => [string](/API_docs/types/string.html), 'open_urls' => \[[BankCardOpenUrl](/API_docs/types/BankCardOpenUrl.html)\], \]; + +*** +

[$payments.checkedGiftCode](/API_docs/constructors/payments.checkedGiftCode.html) = \['via_giveaway' => [Bool](/API_docs/types/Bool.html), 'from_id' => [Peer](/API_docs/types/Peer.html), 'giveaway_msg_id' => [int](/API_docs/types/int.html), 'to_id' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'months' => [int](/API_docs/types/int.html), 'used_date' => [int](/API_docs/types/int.html), 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$payments.exportedInvoice](/API_docs/constructors/payments.exportedInvoice.html) = \['url' => [string](/API_docs/types/string.html), \]; + +*** +

[$payments.giveawayInfo](/API_docs/constructors/payments.giveawayInfo.html) = \['participating' => [Bool](/API_docs/types/Bool.html), 'preparing_results' => [Bool](/API_docs/types/Bool.html), 'start_date' => [int](/API_docs/types/int.html), 'joined_too_early_date' => [int](/API_docs/types/int.html), 'admin_disallowed_chat_id' => [long](/API_docs/types/long.html), 'disallowed_country' => [string](/API_docs/types/string.html), \]; + +*** +

[$payments.giveawayInfoResults](/API_docs/constructors/payments.giveawayInfoResults.html) = \['winner' => [Bool](/API_docs/types/Bool.html), 'refunded' => [Bool](/API_docs/types/Bool.html), 'start_date' => [int](/API_docs/types/int.html), 'gift_code_slug' => [string](/API_docs/types/string.html), 'finish_date' => [int](/API_docs/types/int.html), 'winners_count' => [int](/API_docs/types/int.html), 'activated_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$payments.paymentForm](/API_docs/constructors/payments.paymentForm.html) = \['can_save_credentials' => [Bool](/API_docs/types/Bool.html), 'password_missing' => [Bool](/API_docs/types/Bool.html), 'form_id' => [long](/API_docs/types/long.html), 'bot_id' => [long](/API_docs/types/long.html), 'title' => [string](/API_docs/types/string.html), 'description' => [string](/API_docs/types/string.html), 'photo' => [WebDocument](/API_docs/types/WebDocument.html), 'invoice' => [Invoice](/API_docs/types/Invoice.html), 'provider_id' => [long](/API_docs/types/long.html), 'url' => [string](/API_docs/types/string.html), 'native_provider' => [string](/API_docs/types/string.html), 'native_params' => [DataJSON](/API_docs/types/DataJSON.html), 'additional_methods' => \[[PaymentFormMethod](/API_docs/types/PaymentFormMethod.html)\], 'saved_info' => [PaymentRequestedInfo](/API_docs/types/PaymentRequestedInfo.html), 'saved_credentials' => \[[PaymentSavedCredentials](/API_docs/types/PaymentSavedCredentials.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$payments.paymentReceipt](/API_docs/constructors/payments.paymentReceipt.html) = \['date' => [int](/API_docs/types/int.html), 'bot_id' => [long](/API_docs/types/long.html), 'provider_id' => [long](/API_docs/types/long.html), 'title' => [string](/API_docs/types/string.html), 'description' => [string](/API_docs/types/string.html), 'photo' => [WebDocument](/API_docs/types/WebDocument.html), 'invoice' => [Invoice](/API_docs/types/Invoice.html), 'info' => [PaymentRequestedInfo](/API_docs/types/PaymentRequestedInfo.html), 'shipping' => [ShippingOption](/API_docs/types/ShippingOption.html), 'tip_amount' => [long](/API_docs/types/long.html), 'currency' => [string](/API_docs/types/string.html), 'total_amount' => [long](/API_docs/types/long.html), 'credentials_title' => [string](/API_docs/types/string.html), 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$payments.paymentResult](/API_docs/constructors/payments.paymentResult.html) = \['updates' => [Updates](/API_docs/types/Updates.html), \]; + +*** +

[$payments.paymentVerificationNeeded](/API_docs/constructors/payments.paymentVerificationNeeded.html) = \['url' => [string](/API_docs/types/string.html), \]; + +*** +

[$payments.savedInfo](/API_docs/constructors/payments.savedInfo.html) = \['has_saved_credentials' => [Bool](/API_docs/types/Bool.html), 'saved_info' => [PaymentRequestedInfo](/API_docs/types/PaymentRequestedInfo.html), \]; + +*** +

[$payments.validatedRequestedInfo](/API_docs/constructors/payments.validatedRequestedInfo.html) = \['id' => [string](/API_docs/types/string.html), 'shipping_options' => \[[ShippingOption](/API_docs/types/ShippingOption.html)\], \]; + +*** +

[$peerBlocked](/API_docs/constructors/peerBlocked.html) = \['peer_id' => [Peer](/API_docs/types/Peer.html), 'date' => [int](/API_docs/types/int.html), \]; + +*** +

[$peerChannel](/API_docs/constructors/peerChannel.html) = \['channel_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$peerChat](/API_docs/constructors/peerChat.html) = \['chat_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$peerColor](/API_docs/constructors/peerColor.html) = \['color' => [int](/API_docs/types/int.html), 'background_emoji_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$peerLocated](/API_docs/constructors/peerLocated.html) = \['peer' => [long](/API_docs/types/long.html), 'expires' => [int](/API_docs/types/int.html), 'distance' => [int](/API_docs/types/int.html), \]; + +*** +

[$peerNotifySettings](/API_docs/constructors/peerNotifySettings.html) = \['show_previews' => [Bool](/API_docs/types/Bool.html), 'silent' => [Bool](/API_docs/types/Bool.html), 'mute_until' => [int](/API_docs/types/int.html), 'ios_sound' => [NotificationSound](/API_docs/types/NotificationSound.html), 'android_sound' => [NotificationSound](/API_docs/types/NotificationSound.html), 'other_sound' => [NotificationSound](/API_docs/types/NotificationSound.html), 'stories_muted' => [Bool](/API_docs/types/Bool.html), 'stories_hide_sender' => [Bool](/API_docs/types/Bool.html), 'stories_ios_sound' => [NotificationSound](/API_docs/types/NotificationSound.html), 'stories_android_sound' => [NotificationSound](/API_docs/types/NotificationSound.html), 'stories_other_sound' => [NotificationSound](/API_docs/types/NotificationSound.html), \]; + +*** +

[$peerSelfLocated](/API_docs/constructors/peerSelfLocated.html) = \['expires' => [int](/API_docs/types/int.html), \]; + +*** +

[$peerSettings](/API_docs/constructors/peerSettings.html) = \['report_spam' => [Bool](/API_docs/types/Bool.html), 'add_contact' => [Bool](/API_docs/types/Bool.html), 'block_contact' => [Bool](/API_docs/types/Bool.html), 'share_contact' => [Bool](/API_docs/types/Bool.html), 'need_contacts_exception' => [Bool](/API_docs/types/Bool.html), 'report_geo' => [Bool](/API_docs/types/Bool.html), 'autoarchived' => [Bool](/API_docs/types/Bool.html), 'invite_members' => [Bool](/API_docs/types/Bool.html), 'request_chat_broadcast' => [Bool](/API_docs/types/Bool.html), 'business_bot_paused' => [Bool](/API_docs/types/Bool.html), 'business_bot_can_reply' => [Bool](/API_docs/types/Bool.html), 'geo_distance' => [int](/API_docs/types/int.html), 'request_chat_title' => [string](/API_docs/types/string.html), 'request_chat_date' => [int](/API_docs/types/int.html), 'business_bot_id' => [long](/API_docs/types/long.html), 'business_bot_manage_url' => [string](/API_docs/types/string.html), \]; + +*** +

[$peerStories](/API_docs/constructors/peerStories.html) = \['peer' => [long](/API_docs/types/long.html), 'max_read_id' => [int](/API_docs/types/int.html), 'stories' => \[[StoryItem](/API_docs/types/StoryItem.html)\], \]; + +*** +

[$peerUser](/API_docs/constructors/peerUser.html) = \['user_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$phone.exportedGroupCallInvite](/API_docs/constructors/phone.exportedGroupCallInvite.html) = \['link' => [string](/API_docs/types/string.html), \]; + +*** +

[$phone.groupCall](/API_docs/constructors/phone.groupCall.html) = \['call' => [GroupCall](/API_docs/types/GroupCall.html), 'participants' => \[[GroupCallParticipant](/API_docs/types/GroupCallParticipant.html)\], 'participants_next_offset' => [string](/API_docs/types/string.html), 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$phone.groupCallStreamChannels](/API_docs/constructors/phone.groupCallStreamChannels.html) = \['channels' => \[[GroupCallStreamChannel](/API_docs/types/GroupCallStreamChannel.html)\], \]; + +*** +

[$phone.groupCallStreamRtmpUrl](/API_docs/constructors/phone.groupCallStreamRtmpUrl.html) = \['url' => [string](/API_docs/types/string.html), 'key' => [string](/API_docs/types/string.html), \]; + +*** +

[$phone.groupParticipants](/API_docs/constructors/phone.groupParticipants.html) = \['count' => [int](/API_docs/types/int.html), 'participants' => \[[GroupCallParticipant](/API_docs/types/GroupCallParticipant.html)\], 'next_offset' => [string](/API_docs/types/string.html), 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], 'version' => [int](/API_docs/types/int.html), \]; + +*** +

[$phone.joinAsPeers](/API_docs/constructors/phone.joinAsPeers.html) = \['peers' => \[[Peer](/API_docs/types/Peer.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$phone.phoneCall](/API_docs/constructors/phone.phoneCall.html) = \['phone_call' => [PhoneCall](/API_docs/types/PhoneCall.html), 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$phoneCall](/API_docs/constructors/phoneCall.html) = \['p2p_allowed' => [Bool](/API_docs/types/Bool.html), 'video' => [Bool](/API_docs/types/Bool.html), 'id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'admin_id' => [long](/API_docs/types/long.html), 'participant_id' => [long](/API_docs/types/long.html), 'g_a_or_b' => [bytes](/API_docs/types/bytes.html), 'key_fingerprint' => [long](/API_docs/types/long.html), 'protocol' => [PhoneCallProtocol](/API_docs/types/PhoneCallProtocol.html), 'connections' => \[[PhoneConnection](/API_docs/types/PhoneConnection.html)\], 'start_date' => [int](/API_docs/types/int.html), 'custom_parameters' => [DataJSON](/API_docs/types/DataJSON.html), \]; + +*** +

[$phoneCallAccepted](/API_docs/constructors/phoneCallAccepted.html) = \['video' => [Bool](/API_docs/types/Bool.html), 'id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'admin_id' => [long](/API_docs/types/long.html), 'participant_id' => [long](/API_docs/types/long.html), 'g_b' => [bytes](/API_docs/types/bytes.html), 'protocol' => [PhoneCallProtocol](/API_docs/types/PhoneCallProtocol.html), \]; + +*** +

[$phoneCallDiscardReasonBusy](/API_docs/constructors/phoneCallDiscardReasonBusy.html) = \[\]; + +*** +

[$phoneCallDiscardReasonDisconnect](/API_docs/constructors/phoneCallDiscardReasonDisconnect.html) = \[\]; + +*** +

[$phoneCallDiscardReasonHangup](/API_docs/constructors/phoneCallDiscardReasonHangup.html) = \[\]; + +*** +

[$phoneCallDiscardReasonMissed](/API_docs/constructors/phoneCallDiscardReasonMissed.html) = \[\]; + +*** +

[$phoneCallDiscarded](/API_docs/constructors/phoneCallDiscarded.html) = \['need_rating' => [Bool](/API_docs/types/Bool.html), 'need_debug' => [Bool](/API_docs/types/Bool.html), 'video' => [Bool](/API_docs/types/Bool.html), 'id' => [long](/API_docs/types/long.html), 'reason' => [PhoneCallDiscardReason](/API_docs/types/PhoneCallDiscardReason.html), 'duration' => [int](/API_docs/types/int.html), \]; + +*** +

[$phoneCallEmpty](/API_docs/constructors/phoneCallEmpty.html) = \['id' => [long](/API_docs/types/long.html), \]; + +*** +

[$phoneCallProtocol](/API_docs/constructors/phoneCallProtocol.html) = \['udp_p2p' => [Bool](/API_docs/types/Bool.html), 'udp_reflector' => [Bool](/API_docs/types/Bool.html), 'min_layer' => [int](/API_docs/types/int.html), 'max_layer' => [int](/API_docs/types/int.html), 'library_versions' => \[[string](/API_docs/types/string.html)\], \]; + +*** +

[$phoneCallRequested](/API_docs/constructors/phoneCallRequested.html) = \['video' => [Bool](/API_docs/types/Bool.html), 'id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'admin_id' => [long](/API_docs/types/long.html), 'participant_id' => [long](/API_docs/types/long.html), 'g_a_hash' => [bytes](/API_docs/types/bytes.html), 'protocol' => [PhoneCallProtocol](/API_docs/types/PhoneCallProtocol.html), \]; + +*** +

[$phoneCallWaiting](/API_docs/constructors/phoneCallWaiting.html) = \['video' => [Bool](/API_docs/types/Bool.html), 'id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'admin_id' => [long](/API_docs/types/long.html), 'participant_id' => [long](/API_docs/types/long.html), 'protocol' => [PhoneCallProtocol](/API_docs/types/PhoneCallProtocol.html), 'receive_date' => [int](/API_docs/types/int.html), \]; + +*** +

[$phoneConnection](/API_docs/constructors/phoneConnection.html) = \['tcp' => [Bool](/API_docs/types/Bool.html), 'id' => [long](/API_docs/types/long.html), 'ip' => [string](/API_docs/types/string.html), 'ipv6' => [string](/API_docs/types/string.html), 'port' => [int](/API_docs/types/int.html), 'peer_tag' => [string](/API_docs/types/string.html), \]; + +*** +

[$phoneConnectionWebrtc](/API_docs/constructors/phoneConnectionWebrtc.html) = \['turn' => [Bool](/API_docs/types/Bool.html), 'stun' => [Bool](/API_docs/types/Bool.html), 'id' => [long](/API_docs/types/long.html), 'ip' => [string](/API_docs/types/string.html), 'ipv6' => [string](/API_docs/types/string.html), 'port' => [int](/API_docs/types/int.html), 'username' => [string](/API_docs/types/string.html), 'password' => [string](/API_docs/types/string.html), \]; + +*** +

[$photo](/API_docs/constructors/photo.html) = \['has_stickers' => [Bool](/API_docs/types/Bool.html), 'id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'file_reference' => [bytes](/API_docs/types/bytes.html), 'date' => [int](/API_docs/types/int.html), 'sizes' => \[[PhotoSize](/API_docs/types/PhotoSize.html)\], 'video_sizes' => \[[VideoSize](/API_docs/types/VideoSize.html)\], 'dc_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$photoCachedSize\_23](/API_docs/constructors/photoCachedSize_23.html) = \['type' => [string](/API_docs/types/string.html), 'location' => [FileLocation](/API_docs/types/FileLocation.html), 'w' => [int](/API_docs/types/int.html), 'h' => [int](/API_docs/types/int.html), 'bytes' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$photoEmpty](/API_docs/constructors/photoEmpty.html) = \['id' => [long](/API_docs/types/long.html), \]; + +*** +

[$photoPathSize](/API_docs/constructors/photoPathSize.html) = \['type' => [string](/API_docs/types/string.html), 'bytes' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$photoSize\_23](/API_docs/constructors/photoSize_23.html) = \['type' => [string](/API_docs/types/string.html), 'location' => [FileLocation](/API_docs/types/FileLocation.html), 'w' => [int](/API_docs/types/int.html), 'h' => [int](/API_docs/types/int.html), 'size' => [int](/API_docs/types/int.html), \]; + +*** +

[$photoSizeEmpty](/API_docs/constructors/photoSizeEmpty.html) = \['type' => [string](/API_docs/types/string.html), \]; + +*** +

[$photoSizeProgressive](/API_docs/constructors/photoSizeProgressive.html) = \['type' => [string](/API_docs/types/string.html), 'w' => [int](/API_docs/types/int.html), 'h' => [int](/API_docs/types/int.html), 'sizes' => \[[int](/API_docs/types/int.html)\], \]; + +*** +

[$photoStrippedSize](/API_docs/constructors/photoStrippedSize.html) = \['type' => [string](/API_docs/types/string.html), 'bytes' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$photos.photo](/API_docs/constructors/photos.photo.html) = \['photo' => [Photo](/API_docs/types/Photo.html), 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$photos.photos](/API_docs/constructors/photos.photos.html) = \['photos' => \[[Photo](/API_docs/types/Photo.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$photos.photosSlice](/API_docs/constructors/photos.photosSlice.html) = \['count' => [int](/API_docs/types/int.html), 'photos' => \[[Photo](/API_docs/types/Photo.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$poll](/API_docs/constructors/poll.html) = \['id' => [long](/API_docs/types/long.html), 'closed' => [Bool](/API_docs/types/Bool.html), 'public_voters' => [Bool](/API_docs/types/Bool.html), 'multiple_choice' => [Bool](/API_docs/types/Bool.html), 'quiz' => [Bool](/API_docs/types/Bool.html), 'question' => [TextWithEntities](/API_docs/types/TextWithEntities.html), 'answers' => \[[PollAnswer](/API_docs/types/PollAnswer.html)\], 'close_period' => [int](/API_docs/types/int.html), 'close_date' => [int](/API_docs/types/int.html), \]; + +*** +

[$pollAnswer](/API_docs/constructors/pollAnswer.html) = \['text' => [TextWithEntities](/API_docs/types/TextWithEntities.html), 'option' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$pollAnswerVoters](/API_docs/constructors/pollAnswerVoters.html) = \['chosen' => [Bool](/API_docs/types/Bool.html), 'correct' => [Bool](/API_docs/types/Bool.html), 'option' => [bytes](/API_docs/types/bytes.html), 'voters' => [int](/API_docs/types/int.html), \]; + +*** +

[$pollResults](/API_docs/constructors/pollResults.html) = \['min' => [Bool](/API_docs/types/Bool.html), 'results' => \[[PollAnswerVoters](/API_docs/types/PollAnswerVoters.html)\], 'total_voters' => [int](/API_docs/types/int.html), 'recent_voters' => \[[Peer](/API_docs/types/Peer.html)\], 'solution' => [string](/API_docs/types/string.html), 'solution_entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], \]; + +*** +

[$popularContact](/API_docs/constructors/popularContact.html) = \['client_id' => [long](/API_docs/types/long.html), 'importers' => [int](/API_docs/types/int.html), \]; + +*** +

[$postAddress](/API_docs/constructors/postAddress.html) = \['street_line1' => [string](/API_docs/types/string.html), 'street_line2' => [string](/API_docs/types/string.html), 'city' => [string](/API_docs/types/string.html), 'state' => [string](/API_docs/types/string.html), 'country_iso2' => [string](/API_docs/types/string.html), 'post_code' => [string](/API_docs/types/string.html), \]; + +*** +

[$postInteractionCountersMessage](/API_docs/constructors/postInteractionCountersMessage.html) = \['msg_id' => [int](/API_docs/types/int.html), 'views' => [int](/API_docs/types/int.html), 'forwards' => [int](/API_docs/types/int.html), 'reactions' => [int](/API_docs/types/int.html), \]; + +*** +

[$postInteractionCountersStory](/API_docs/constructors/postInteractionCountersStory.html) = \['story_id' => [int](/API_docs/types/int.html), 'views' => [int](/API_docs/types/int.html), 'forwards' => [int](/API_docs/types/int.html), 'reactions' => [int](/API_docs/types/int.html), \]; + +*** +

[$premium.boostsList](/API_docs/constructors/premium.boostsList.html) = \['count' => [int](/API_docs/types/int.html), 'boosts' => \[[Boost](/API_docs/types/Boost.html)\], 'next_offset' => [string](/API_docs/types/string.html), 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$premium.boostsStatus](/API_docs/constructors/premium.boostsStatus.html) = \['my_boost' => [Bool](/API_docs/types/Bool.html), 'level' => [int](/API_docs/types/int.html), 'current_level_boosts' => [int](/API_docs/types/int.html), 'boosts' => [int](/API_docs/types/int.html), 'gift_boosts' => [int](/API_docs/types/int.html), 'next_level_boosts' => [int](/API_docs/types/int.html), 'premium_audience' => [StatsPercentValue](/API_docs/types/StatsPercentValue.html), 'boost_url' => [string](/API_docs/types/string.html), 'prepaid_giveaways' => \[[PrepaidGiveaway](/API_docs/types/PrepaidGiveaway.html)\], 'my_boost_slots' => \[[int](/API_docs/types/int.html)\], \]; + +*** +

[$premium.myBoosts](/API_docs/constructors/premium.myBoosts.html) = \['my_boosts' => \[[MyBoost](/API_docs/types/MyBoost.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$premiumGiftCodeOption](/API_docs/constructors/premiumGiftCodeOption.html) = \['users' => [int](/API_docs/types/int.html), 'months' => [int](/API_docs/types/int.html), 'store_product' => [string](/API_docs/types/string.html), 'store_quantity' => [int](/API_docs/types/int.html), 'currency' => [string](/API_docs/types/string.html), 'amount' => [long](/API_docs/types/long.html), \]; + +*** +

[$premiumGiftOption](/API_docs/constructors/premiumGiftOption.html) = \['months' => [int](/API_docs/types/int.html), 'currency' => [string](/API_docs/types/string.html), 'amount' => [long](/API_docs/types/long.html), 'bot_url' => [string](/API_docs/types/string.html), 'store_product' => [string](/API_docs/types/string.html), \]; + +*** +

[$premiumSubscriptionOption](/API_docs/constructors/premiumSubscriptionOption.html) = \['current' => [Bool](/API_docs/types/Bool.html), 'can_purchase_upgrade' => [Bool](/API_docs/types/Bool.html), 'transaction' => [string](/API_docs/types/string.html), 'months' => [int](/API_docs/types/int.html), 'currency' => [string](/API_docs/types/string.html), 'amount' => [long](/API_docs/types/long.html), 'bot_url' => [string](/API_docs/types/string.html), 'store_product' => [string](/API_docs/types/string.html), \]; + +*** +

[$prepaidGiveaway](/API_docs/constructors/prepaidGiveaway.html) = \['id' => [long](/API_docs/types/long.html), 'months' => [int](/API_docs/types/int.html), 'quantity' => [int](/API_docs/types/int.html), 'date' => [int](/API_docs/types/int.html), \]; + +*** +

[$privacyKeyAbout](/API_docs/constructors/privacyKeyAbout.html) = \[\]; + +*** +

[$privacyKeyAddedByPhone](/API_docs/constructors/privacyKeyAddedByPhone.html) = \[\]; + +*** +

[$privacyKeyBirthday](/API_docs/constructors/privacyKeyBirthday.html) = \[\]; + +*** +

[$privacyKeyChatInvite](/API_docs/constructors/privacyKeyChatInvite.html) = \[\]; + +*** +

[$privacyKeyForwards](/API_docs/constructors/privacyKeyForwards.html) = \[\]; + +*** +

[$privacyKeyPhoneCall](/API_docs/constructors/privacyKeyPhoneCall.html) = \[\]; + +*** +

[$privacyKeyPhoneNumber](/API_docs/constructors/privacyKeyPhoneNumber.html) = \[\]; + +*** +

[$privacyKeyPhoneP2P](/API_docs/constructors/privacyKeyPhoneP2P.html) = \[\]; + +*** +

[$privacyKeyProfilePhoto](/API_docs/constructors/privacyKeyProfilePhoto.html) = \[\]; + +*** +

[$privacyKeyStatusTimestamp](/API_docs/constructors/privacyKeyStatusTimestamp.html) = \[\]; + +*** +

[$privacyKeyVoiceMessages](/API_docs/constructors/privacyKeyVoiceMessages.html) = \[\]; + +*** +

[$privacyValueAllowAll](/API_docs/constructors/privacyValueAllowAll.html) = \[\]; + +*** +

[$privacyValueAllowChatParticipants](/API_docs/constructors/privacyValueAllowChatParticipants.html) = \['chats' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$privacyValueAllowCloseFriends](/API_docs/constructors/privacyValueAllowCloseFriends.html) = \[\]; + +*** +

[$privacyValueAllowContacts](/API_docs/constructors/privacyValueAllowContacts.html) = \[\]; + +*** +

[$privacyValueAllowPremium](/API_docs/constructors/privacyValueAllowPremium.html) = \[\]; + +*** +

[$privacyValueAllowUsers](/API_docs/constructors/privacyValueAllowUsers.html) = \['users' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$privacyValueDisallowAll](/API_docs/constructors/privacyValueDisallowAll.html) = \[\]; + +*** +

[$privacyValueDisallowChatParticipants](/API_docs/constructors/privacyValueDisallowChatParticipants.html) = \['chats' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$privacyValueDisallowContacts](/API_docs/constructors/privacyValueDisallowContacts.html) = \[\]; + +*** +

[$privacyValueDisallowUsers](/API_docs/constructors/privacyValueDisallowUsers.html) = \['users' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$publicForwardMessage](/API_docs/constructors/publicForwardMessage.html) = \['message' => [Message](/API_docs/types/Message.html), \]; + +*** +

[$publicForwardStory](/API_docs/constructors/publicForwardStory.html) = \['peer' => [long](/API_docs/types/long.html), 'story' => [StoryItem](/API_docs/types/StoryItem.html), \]; + +*** +

[$quickReply](/API_docs/constructors/quickReply.html) = \['shortcut_id' => [int](/API_docs/types/int.html), 'shortcut' => [string](/API_docs/types/string.html), 'top_message' => [int](/API_docs/types/int.html), 'count' => [int](/API_docs/types/int.html), \]; + +*** +

[$reactionCount](/API_docs/constructors/reactionCount.html) = \['chosen_order' => [int](/API_docs/types/int.html), 'reaction' => [Reaction](/API_docs/types/Reaction.html), 'count' => [int](/API_docs/types/int.html), \]; + +*** +

[$reactionCustomEmoji](/API_docs/constructors/reactionCustomEmoji.html) = \['document_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$reactionEmoji](/API_docs/constructors/reactionEmoji.html) = \['emoticon' => [string](/API_docs/types/string.html), \]; + +*** +

[$reactionEmpty](/API_docs/constructors/reactionEmpty.html) = \[\]; + +*** +

[$reactionNotificationsFromAll](/API_docs/constructors/reactionNotificationsFromAll.html) = \[\]; + +*** +

[$reactionNotificationsFromContacts](/API_docs/constructors/reactionNotificationsFromContacts.html) = \[\]; + +*** +

[$reactionsNotifySettings](/API_docs/constructors/reactionsNotifySettings.html) = \['messages_notify_from' => [ReactionNotificationsFrom](/API_docs/types/ReactionNotificationsFrom.html), 'stories_notify_from' => [ReactionNotificationsFrom](/API_docs/types/ReactionNotificationsFrom.html), 'sound' => [NotificationSound](/API_docs/types/NotificationSound.html), 'show_previews' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$readParticipantDate](/API_docs/constructors/readParticipantDate.html) = \['user_id' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), \]; + +*** +

[$receivedNotifyMessage](/API_docs/constructors/receivedNotifyMessage.html) = \['id' => [int](/API_docs/types/int.html), \]; + +*** +

[$recentMeUrlChat](/API_docs/constructors/recentMeUrlChat.html) = \['url' => [string](/API_docs/types/string.html), 'chat_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$recentMeUrlChatInvite](/API_docs/constructors/recentMeUrlChatInvite.html) = \['url' => [string](/API_docs/types/string.html), 'chat_invite' => [ChatInvite](/API_docs/types/ChatInvite.html), \]; + +*** +

[$recentMeUrlStickerSet](/API_docs/constructors/recentMeUrlStickerSet.html) = \['url' => [string](/API_docs/types/string.html), 'set' => [StickerSetCovered](/API_docs/types/StickerSetCovered.html), \]; + +*** +

[$recentMeUrlUnknown](/API_docs/constructors/recentMeUrlUnknown.html) = \['url' => [string](/API_docs/types/string.html), \]; + +*** +

[$recentMeUrlUser](/API_docs/constructors/recentMeUrlUser.html) = \['url' => [string](/API_docs/types/string.html), 'user_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$replyInlineMarkup](/API_docs/constructors/replyInlineMarkup.html) = \['rows' => \[[KeyboardButtonRow](/API_docs/types/KeyboardButtonRow.html)\], \]; + +*** +

[$replyKeyboardForceReply](/API_docs/constructors/replyKeyboardForceReply.html) = \['single_use' => [Bool](/API_docs/types/Bool.html), 'selective' => [Bool](/API_docs/types/Bool.html), 'placeholder' => [string](/API_docs/types/string.html), \]; + +*** +

[$replyKeyboardHide](/API_docs/constructors/replyKeyboardHide.html) = \['selective' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$replyKeyboardMarkup](/API_docs/constructors/replyKeyboardMarkup.html) = \['resize' => [Bool](/API_docs/types/Bool.html), 'single_use' => [Bool](/API_docs/types/Bool.html), 'selective' => [Bool](/API_docs/types/Bool.html), 'persistent' => [Bool](/API_docs/types/Bool.html), 'rows' => \[[KeyboardButtonRow](/API_docs/types/KeyboardButtonRow.html)\], 'placeholder' => [string](/API_docs/types/string.html), \]; + +*** +

[$requestPeerTypeBroadcast](/API_docs/constructors/requestPeerTypeBroadcast.html) = \['creator' => [Bool](/API_docs/types/Bool.html), 'has_username' => [Bool](/API_docs/types/Bool.html), 'user_admin_rights' => [ChatAdminRights](/API_docs/types/ChatAdminRights.html), 'bot_admin_rights' => [ChatAdminRights](/API_docs/types/ChatAdminRights.html), \]; + +*** +

[$requestPeerTypeChat](/API_docs/constructors/requestPeerTypeChat.html) = \['creator' => [Bool](/API_docs/types/Bool.html), 'bot_participant' => [Bool](/API_docs/types/Bool.html), 'has_username' => [Bool](/API_docs/types/Bool.html), 'forum' => [Bool](/API_docs/types/Bool.html), 'user_admin_rights' => [ChatAdminRights](/API_docs/types/ChatAdminRights.html), 'bot_admin_rights' => [ChatAdminRights](/API_docs/types/ChatAdminRights.html), \]; + +*** +

[$requestPeerTypeUser](/API_docs/constructors/requestPeerTypeUser.html) = \['bot' => [Bool](/API_docs/types/Bool.html), 'premium' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$requestedPeerChannel](/API_docs/constructors/requestedPeerChannel.html) = \['channel_id' => [long](/API_docs/types/long.html), 'title' => [string](/API_docs/types/string.html), 'username' => [string](/API_docs/types/string.html), 'photo' => [Photo](/API_docs/types/Photo.html), \]; + +*** +

[$requestedPeerChat](/API_docs/constructors/requestedPeerChat.html) = \['chat_id' => [long](/API_docs/types/long.html), 'title' => [string](/API_docs/types/string.html), 'photo' => [Photo](/API_docs/types/Photo.html), \]; + +*** +

[$requestedPeerUser](/API_docs/constructors/requestedPeerUser.html) = \['user_id' => [long](/API_docs/types/long.html), 'first_name' => [string](/API_docs/types/string.html), 'last_name' => [string](/API_docs/types/string.html), 'username' => [string](/API_docs/types/string.html), 'photo' => [Photo](/API_docs/types/Photo.html), \]; + +*** +

[$restrictionReason](/API_docs/constructors/restrictionReason.html) = \['platform' => [string](/API_docs/types/string.html), 'reason' => [string](/API_docs/types/string.html), 'text' => [string](/API_docs/types/string.html), \]; + +*** +

[$savedDialog](/API_docs/constructors/savedDialog.html) = \['pinned' => [Bool](/API_docs/types/Bool.html), 'peer' => [long](/API_docs/types/long.html), 'top_message' => [int](/API_docs/types/int.html), \]; + +*** +

[$savedPhoneContact](/API_docs/constructors/savedPhoneContact.html) = \['phone' => [string](/API_docs/types/string.html), 'first_name' => [string](/API_docs/types/string.html), 'last_name' => [string](/API_docs/types/string.html), 'date' => [int](/API_docs/types/int.html), \]; + +*** +

[$savedReactionTag](/API_docs/constructors/savedReactionTag.html) = \['reaction' => [Reaction](/API_docs/types/Reaction.html), 'title' => [string](/API_docs/types/string.html), 'count' => [int](/API_docs/types/int.html), \]; + +*** +

[$searchResultPosition](/API_docs/constructors/searchResultPosition.html) = \['msg_id' => [int](/API_docs/types/int.html), 'date' => [int](/API_docs/types/int.html), 'offset' => [int](/API_docs/types/int.html), \]; + +*** +

[$searchResultsCalendarPeriod](/API_docs/constructors/searchResultsCalendarPeriod.html) = \['date' => [int](/API_docs/types/int.html), 'min_msg_id' => [int](/API_docs/types/int.html), 'max_msg_id' => [int](/API_docs/types/int.html), 'count' => [int](/API_docs/types/int.html), \]; + +*** +

[$secureCredentialsEncrypted](/API_docs/constructors/secureCredentialsEncrypted.html) = \['data' => [bytes](/API_docs/types/bytes.html), 'hash' => [bytes](/API_docs/types/bytes.html), 'secret' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$secureData](/API_docs/constructors/secureData.html) = \['data' => [bytes](/API_docs/types/bytes.html), 'data_hash' => [bytes](/API_docs/types/bytes.html), 'secret' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$secureFile](/API_docs/constructors/secureFile.html) = \['id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'size' => [long](/API_docs/types/long.html), 'dc_id' => [int](/API_docs/types/int.html), 'date' => [int](/API_docs/types/int.html), 'file_hash' => [bytes](/API_docs/types/bytes.html), 'secret' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$secureFileEmpty](/API_docs/constructors/secureFileEmpty.html) = \[\]; + +*** +

[$securePasswordKdfAlgoPBKDF2HMACSHA512iter100000](/API_docs/constructors/securePasswordKdfAlgoPBKDF2HMACSHA512iter100000.html) = \['salt' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$securePasswordKdfAlgoSHA512](/API_docs/constructors/securePasswordKdfAlgoSHA512.html) = \['salt' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$securePasswordKdfAlgoUnknown](/API_docs/constructors/securePasswordKdfAlgoUnknown.html) = \[\]; + +*** +

[$securePlainEmail](/API_docs/constructors/securePlainEmail.html) = \['email' => [string](/API_docs/types/string.html), \]; + +*** +

[$securePlainPhone](/API_docs/constructors/securePlainPhone.html) = \['phone' => [string](/API_docs/types/string.html), \]; + +*** +

[$secureRequiredType](/API_docs/constructors/secureRequiredType.html) = \['native_names' => [Bool](/API_docs/types/Bool.html), 'selfie_required' => [Bool](/API_docs/types/Bool.html), 'translation_required' => [Bool](/API_docs/types/Bool.html), 'type' => [SecureValueType](/API_docs/types/SecureValueType.html), \]; + +*** +

[$secureRequiredTypeOneOf](/API_docs/constructors/secureRequiredTypeOneOf.html) = \['types' => \[[SecureRequiredType](/API_docs/types/SecureRequiredType.html)\], \]; + +*** +

[$secureSecretSettings](/API_docs/constructors/secureSecretSettings.html) = \['secure_algo' => [SecurePasswordKdfAlgo](/API_docs/types/SecurePasswordKdfAlgo.html), 'secure_secret' => [bytes](/API_docs/types/bytes.html), 'secure_secret_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$secureValue](/API_docs/constructors/secureValue.html) = \['type' => [SecureValueType](/API_docs/types/SecureValueType.html), 'data' => [SecureData](/API_docs/types/SecureData.html), 'front_side' => [SecureFile](/API_docs/types/SecureFile.html), 'reverse_side' => [SecureFile](/API_docs/types/SecureFile.html), 'selfie' => [SecureFile](/API_docs/types/SecureFile.html), 'translation' => \[[SecureFile](/API_docs/types/SecureFile.html)\], 'files' => \[[SecureFile](/API_docs/types/SecureFile.html)\], 'plain_data' => [SecurePlainData](/API_docs/types/SecurePlainData.html), 'hash' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$secureValueError](/API_docs/constructors/secureValueError.html) = \['type' => [SecureValueType](/API_docs/types/SecureValueType.html), 'hash' => [bytes](/API_docs/types/bytes.html), 'text' => [string](/API_docs/types/string.html), \]; + +*** +

[$secureValueErrorData](/API_docs/constructors/secureValueErrorData.html) = \['type' => [SecureValueType](/API_docs/types/SecureValueType.html), 'data_hash' => [bytes](/API_docs/types/bytes.html), 'field' => [string](/API_docs/types/string.html), 'text' => [string](/API_docs/types/string.html), \]; + +*** +

[$secureValueErrorFile](/API_docs/constructors/secureValueErrorFile.html) = \['type' => [SecureValueType](/API_docs/types/SecureValueType.html), 'file_hash' => [bytes](/API_docs/types/bytes.html), 'text' => [string](/API_docs/types/string.html), \]; + +*** +

[$secureValueErrorFiles](/API_docs/constructors/secureValueErrorFiles.html) = \['type' => [SecureValueType](/API_docs/types/SecureValueType.html), 'file_hash' => \[[bytes](/API_docs/types/bytes.html)\], 'text' => [string](/API_docs/types/string.html), \]; + +*** +

[$secureValueErrorFrontSide](/API_docs/constructors/secureValueErrorFrontSide.html) = \['type' => [SecureValueType](/API_docs/types/SecureValueType.html), 'file_hash' => [bytes](/API_docs/types/bytes.html), 'text' => [string](/API_docs/types/string.html), \]; + +*** +

[$secureValueErrorReverseSide](/API_docs/constructors/secureValueErrorReverseSide.html) = \['type' => [SecureValueType](/API_docs/types/SecureValueType.html), 'file_hash' => [bytes](/API_docs/types/bytes.html), 'text' => [string](/API_docs/types/string.html), \]; + +*** +

[$secureValueErrorSelfie](/API_docs/constructors/secureValueErrorSelfie.html) = \['type' => [SecureValueType](/API_docs/types/SecureValueType.html), 'file_hash' => [bytes](/API_docs/types/bytes.html), 'text' => [string](/API_docs/types/string.html), \]; + +*** +

[$secureValueErrorTranslationFile](/API_docs/constructors/secureValueErrorTranslationFile.html) = \['type' => [SecureValueType](/API_docs/types/SecureValueType.html), 'file_hash' => [bytes](/API_docs/types/bytes.html), 'text' => [string](/API_docs/types/string.html), \]; + +*** +

[$secureValueErrorTranslationFiles](/API_docs/constructors/secureValueErrorTranslationFiles.html) = \['type' => [SecureValueType](/API_docs/types/SecureValueType.html), 'file_hash' => \[[bytes](/API_docs/types/bytes.html)\], 'text' => [string](/API_docs/types/string.html), \]; + +*** +

[$secureValueHash](/API_docs/constructors/secureValueHash.html) = \['type' => [SecureValueType](/API_docs/types/SecureValueType.html), 'hash' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$secureValueTypeAddress](/API_docs/constructors/secureValueTypeAddress.html) = \[\]; + +*** +

[$secureValueTypeBankStatement](/API_docs/constructors/secureValueTypeBankStatement.html) = \[\]; + +*** +

[$secureValueTypeDriverLicense](/API_docs/constructors/secureValueTypeDriverLicense.html) = \[\]; + +*** +

[$secureValueTypeEmail](/API_docs/constructors/secureValueTypeEmail.html) = \[\]; + +*** +

[$secureValueTypeIdentityCard](/API_docs/constructors/secureValueTypeIdentityCard.html) = \[\]; + +*** +

[$secureValueTypeInternalPassport](/API_docs/constructors/secureValueTypeInternalPassport.html) = \[\]; + +*** +

[$secureValueTypePassport](/API_docs/constructors/secureValueTypePassport.html) = \[\]; + +*** +

[$secureValueTypePassportRegistration](/API_docs/constructors/secureValueTypePassportRegistration.html) = \[\]; + +*** +

[$secureValueTypePersonalDetails](/API_docs/constructors/secureValueTypePersonalDetails.html) = \[\]; + +*** +

[$secureValueTypePhone](/API_docs/constructors/secureValueTypePhone.html) = \[\]; + +*** +

[$secureValueTypeRentalAgreement](/API_docs/constructors/secureValueTypeRentalAgreement.html) = \[\]; + +*** +

[$secureValueTypeTemporaryRegistration](/API_docs/constructors/secureValueTypeTemporaryRegistration.html) = \[\]; + +*** +

[$secureValueTypeUtilityBill](/API_docs/constructors/secureValueTypeUtilityBill.html) = \[\]; + +*** +

[$sendAsPeer](/API_docs/constructors/sendAsPeer.html) = \['premium_required' => [Bool](/API_docs/types/Bool.html), 'peer' => [long](/API_docs/types/long.html), \]; + +*** +

[$sendMessageCancelAction](/API_docs/constructors/sendMessageCancelAction.html) = \[\]; + +*** +

[$sendMessageChooseContactAction](/API_docs/constructors/sendMessageChooseContactAction.html) = \[\]; + +*** +

[$sendMessageChooseStickerAction](/API_docs/constructors/sendMessageChooseStickerAction.html) = \[\]; + +*** +

[$sendMessageEmojiInteraction](/API_docs/constructors/sendMessageEmojiInteraction.html) = \['emoticon' => [string](/API_docs/types/string.html), 'msg_id' => [int](/API_docs/types/int.html), 'interaction' => [DataJSON](/API_docs/types/DataJSON.html), \]; + +*** +

[$sendMessageEmojiInteractionSeen](/API_docs/constructors/sendMessageEmojiInteractionSeen.html) = \['emoticon' => [string](/API_docs/types/string.html), \]; + +*** +

[$sendMessageGamePlayAction](/API_docs/constructors/sendMessageGamePlayAction.html) = \[\]; + +*** +

[$sendMessageGeoLocationAction](/API_docs/constructors/sendMessageGeoLocationAction.html) = \[\]; + +*** +

[$sendMessageHistoryImportAction](/API_docs/constructors/sendMessageHistoryImportAction.html) = \['progress' => [int](/API_docs/types/int.html), \]; + +*** +

[$sendMessageRecordAudioAction](/API_docs/constructors/sendMessageRecordAudioAction.html) = \[\]; + +*** +

[$sendMessageRecordRoundAction](/API_docs/constructors/sendMessageRecordRoundAction.html) = \[\]; + +*** +

[$sendMessageRecordVideoAction](/API_docs/constructors/sendMessageRecordVideoAction.html) = \[\]; + +*** +

[$sendMessageTypingAction](/API_docs/constructors/sendMessageTypingAction.html) = \[\]; + +*** +

[$sendMessageUploadAudioAction\_17](/API_docs/constructors/sendMessageUploadAudioAction_17.html) = \[\]; + +*** +

[$sendMessageUploadDocumentAction\_17](/API_docs/constructors/sendMessageUploadDocumentAction_17.html) = \[\]; + +*** +

[$sendMessageUploadPhotoAction\_17](/API_docs/constructors/sendMessageUploadPhotoAction_17.html) = \[\]; + +*** +

[$sendMessageUploadRoundAction\_66](/API_docs/constructors/sendMessageUploadRoundAction_66.html) = \[\]; + +*** +

[$sendMessageUploadVideoAction\_17](/API_docs/constructors/sendMessageUploadVideoAction_17.html) = \[\]; + +*** +

[$shippingOption](/API_docs/constructors/shippingOption.html) = \['id' => [string](/API_docs/types/string.html), 'title' => [string](/API_docs/types/string.html), 'prices' => \[[LabeledPrice](/API_docs/types/LabeledPrice.html)\], \]; + +*** +

[$simpleWebViewResultUrl](/API_docs/constructors/simpleWebViewResultUrl.html) = \['url' => [string](/API_docs/types/string.html), \]; + +*** +

[$smsJob](/API_docs/constructors/smsJob.html) = \['job_id' => [string](/API_docs/types/string.html), 'phone_number' => [string](/API_docs/types/string.html), 'text' => [string](/API_docs/types/string.html), \]; + +*** +

[$smsjobs.eligibleToJoin](/API_docs/constructors/smsjobs.eligibleToJoin.html) = \['terms_url' => [string](/API_docs/types/string.html), 'monthly_sent_sms' => [int](/API_docs/types/int.html), \]; + +*** +

[$smsjobs.status](/API_docs/constructors/smsjobs.status.html) = \['allow_international' => [Bool](/API_docs/types/Bool.html), 'recent_sent' => [int](/API_docs/types/int.html), 'recent_since' => [int](/API_docs/types/int.html), 'recent_remains' => [int](/API_docs/types/int.html), 'total_sent' => [int](/API_docs/types/int.html), 'total_since' => [int](/API_docs/types/int.html), 'last_gift_slug' => [string](/API_docs/types/string.html), 'terms_url' => [string](/API_docs/types/string.html), \]; + +*** +

[$speakingInGroupCallAction](/API_docs/constructors/speakingInGroupCallAction.html) = \[\]; + +*** +

[$sponsoredMessage](/API_docs/constructors/sponsoredMessage.html) = \['recommended' => [Bool](/API_docs/types/Bool.html), 'can_report' => [Bool](/API_docs/types/Bool.html), 'url' => [string](/API_docs/types/string.html), 'title' => [string](/API_docs/types/string.html), 'message' => [string](/API_docs/types/string.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'photo' => [Photo](/API_docs/types/Photo.html), 'color' => [PeerColor](/API_docs/types/PeerColor.html), 'button_text' => [string](/API_docs/types/string.html), 'sponsor_info' => [string](/API_docs/types/string.html), 'additional_info' => [string](/API_docs/types/string.html), \]; + +*** +

[$sponsoredMessageReportOption](/API_docs/constructors/sponsoredMessageReportOption.html) = \['text' => [string](/API_docs/types/string.html), 'option' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$stats.broadcastRevenueStats](/API_docs/constructors/stats.broadcastRevenueStats.html) = \['top_hours_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'revenue_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'balances' => [BroadcastRevenueBalances](/API_docs/types/BroadcastRevenueBalances.html), 'usd_rate' => [double](/API_docs/types/double.html), \]; + +*** +

[$stats.broadcastRevenueTransactions](/API_docs/constructors/stats.broadcastRevenueTransactions.html) = \['count' => [int](/API_docs/types/int.html), 'transactions' => \[[BroadcastRevenueTransaction](/API_docs/types/BroadcastRevenueTransaction.html)\], \]; + +*** +

[$stats.broadcastRevenueWithdrawalUrl](/API_docs/constructors/stats.broadcastRevenueWithdrawalUrl.html) = \['url' => [string](/API_docs/types/string.html), \]; + +*** +

[$stats.broadcastStats](/API_docs/constructors/stats.broadcastStats.html) = \['period' => [StatsDateRangeDays](/API_docs/types/StatsDateRangeDays.html), 'followers' => [StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html), 'views_per_post' => [StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html), 'shares_per_post' => [StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html), 'reactions_per_post' => [StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html), 'views_per_story' => [StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html), 'shares_per_story' => [StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html), 'reactions_per_story' => [StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html), 'enabled_notifications' => [StatsPercentValue](/API_docs/types/StatsPercentValue.html), 'growth_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'followers_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'mute_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'top_hours_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'interactions_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'iv_interactions_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'views_by_source_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'new_followers_by_source_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'languages_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'reactions_by_emotion_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'story_interactions_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'story_reactions_by_emotion_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'recent_posts_interactions' => \[[PostInteractionCounters](/API_docs/types/PostInteractionCounters.html)\], \]; + +*** +

[$stats.megagroupStats](/API_docs/constructors/stats.megagroupStats.html) = \['period' => [StatsDateRangeDays](/API_docs/types/StatsDateRangeDays.html), 'members' => [StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html), 'messages' => [StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html), 'viewers' => [StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html), 'posters' => [StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html), 'growth_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'members_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'new_members_by_source_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'languages_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'messages_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'actions_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'top_hours_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'weekdays_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'top_posters' => \[[StatsGroupTopPoster](/API_docs/types/StatsGroupTopPoster.html)\], 'top_admins' => \[[StatsGroupTopAdmin](/API_docs/types/StatsGroupTopAdmin.html)\], 'top_inviters' => \[[StatsGroupTopInviter](/API_docs/types/StatsGroupTopInviter.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$stats.messageStats](/API_docs/constructors/stats.messageStats.html) = \['views_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'reactions_by_emotion_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), \]; + +*** +

[$stats.publicForwards](/API_docs/constructors/stats.publicForwards.html) = \['count' => [int](/API_docs/types/int.html), 'forwards' => \[[PublicForward](/API_docs/types/PublicForward.html)\], 'next_offset' => [string](/API_docs/types/string.html), 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$stats.storyStats](/API_docs/constructors/stats.storyStats.html) = \['views_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), 'reactions_by_emotion_graph' => [StatsGraph](/API_docs/types/StatsGraph.html), \]; + +*** +

[$statsAbsValueAndPrev](/API_docs/constructors/statsAbsValueAndPrev.html) = \['current' => [double](/API_docs/types/double.html), 'previous' => [double](/API_docs/types/double.html), \]; + +*** +

[$statsDateRangeDays](/API_docs/constructors/statsDateRangeDays.html) = \['min_date' => [int](/API_docs/types/int.html), 'max_date' => [int](/API_docs/types/int.html), \]; + +*** +

[$statsGraph](/API_docs/constructors/statsGraph.html) = \['json' => [DataJSON](/API_docs/types/DataJSON.html), 'zoom_token' => [string](/API_docs/types/string.html), \]; + +*** +

[$statsGraphAsync](/API_docs/constructors/statsGraphAsync.html) = \['token' => [string](/API_docs/types/string.html), \]; + +*** +

[$statsGraphError](/API_docs/constructors/statsGraphError.html) = \['error' => [string](/API_docs/types/string.html), \]; + +*** +

[$statsGroupTopAdmin](/API_docs/constructors/statsGroupTopAdmin.html) = \['user_id' => [long](/API_docs/types/long.html), 'deleted' => [int](/API_docs/types/int.html), 'kicked' => [int](/API_docs/types/int.html), 'banned' => [int](/API_docs/types/int.html), \]; + +*** +

[$statsGroupTopInviter](/API_docs/constructors/statsGroupTopInviter.html) = \['user_id' => [long](/API_docs/types/long.html), 'invitations' => [int](/API_docs/types/int.html), \]; + +*** +

[$statsGroupTopPoster](/API_docs/constructors/statsGroupTopPoster.html) = \['user_id' => [long](/API_docs/types/long.html), 'messages' => [int](/API_docs/types/int.html), 'avg_chars' => [int](/API_docs/types/int.html), \]; + +*** +

[$statsPercentValue](/API_docs/constructors/statsPercentValue.html) = \['part' => [double](/API_docs/types/double.html), 'total' => [double](/API_docs/types/double.html), \]; + +*** +

[$statsURL](/API_docs/constructors/statsURL.html) = \['url' => [string](/API_docs/types/string.html), \]; + +*** +

[$stickerKeyword](/API_docs/constructors/stickerKeyword.html) = \['document_id' => [long](/API_docs/types/long.html), 'keyword' => \[[string](/API_docs/types/string.html)\], \]; + +*** +

[$stickerPack](/API_docs/constructors/stickerPack.html) = \['emoticon' => [string](/API_docs/types/string.html), 'documents' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$stickerSet](/API_docs/constructors/stickerSet.html) = \['archived' => [Bool](/API_docs/types/Bool.html), 'official' => [Bool](/API_docs/types/Bool.html), 'masks' => [Bool](/API_docs/types/Bool.html), 'emojis' => [Bool](/API_docs/types/Bool.html), 'text_color' => [Bool](/API_docs/types/Bool.html), 'channel_emoji_status' => [Bool](/API_docs/types/Bool.html), 'creator' => [Bool](/API_docs/types/Bool.html), 'installed_date' => [int](/API_docs/types/int.html), 'id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'title' => [string](/API_docs/types/string.html), 'short_name' => [string](/API_docs/types/string.html), 'thumbs' => \[[PhotoSize](/API_docs/types/PhotoSize.html)\], 'thumb_dc_id' => [int](/API_docs/types/int.html), 'thumb_version' => [int](/API_docs/types/int.html), 'thumb_document_id' => [long](/API_docs/types/long.html), 'count' => [int](/API_docs/types/int.html), 'hash' => [int](/API_docs/types/int.html), \]; + +*** +

[$stickerSetCovered](/API_docs/constructors/stickerSetCovered.html) = \['set' => [StickerSet](/API_docs/types/StickerSet.html), 'cover' => [Document](/API_docs/types/Document.html), \]; + +*** +

[$stickerSetFullCovered](/API_docs/constructors/stickerSetFullCovered.html) = \['set' => [StickerSet](/API_docs/types/StickerSet.html), 'packs' => \[[StickerPack](/API_docs/types/StickerPack.html)\], 'keywords' => \[[StickerKeyword](/API_docs/types/StickerKeyword.html)\], 'documents' => \[[Document](/API_docs/types/Document.html)\], \]; + +*** +

[$stickerSetMultiCovered](/API_docs/constructors/stickerSetMultiCovered.html) = \['set' => [StickerSet](/API_docs/types/StickerSet.html), 'covers' => \[[Document](/API_docs/types/Document.html)\], \]; + +*** +

[$stickerSetNoCovered](/API_docs/constructors/stickerSetNoCovered.html) = \['set' => [StickerSet](/API_docs/types/StickerSet.html), \]; + +*** +

[$stickers.suggestedShortName](/API_docs/constructors/stickers.suggestedShortName.html) = \['short_name' => [string](/API_docs/types/string.html), \]; + +*** +

[$storage.fileGif](/API_docs/constructors/storage.fileGif.html) = \[\]; + +*** +

[$storage.fileJpeg](/API_docs/constructors/storage.fileJpeg.html) = \[\]; + +*** +

[$storage.fileMov](/API_docs/constructors/storage.fileMov.html) = \[\]; + +*** +

[$storage.fileMp3](/API_docs/constructors/storage.fileMp3.html) = \[\]; + +*** +

[$storage.fileMp4](/API_docs/constructors/storage.fileMp4.html) = \[\]; + +*** +

[$storage.filePartial](/API_docs/constructors/storage.filePartial.html) = \[\]; + +*** +

[$storage.filePdf](/API_docs/constructors/storage.filePdf.html) = \[\]; + +*** +

[$storage.filePng](/API_docs/constructors/storage.filePng.html) = \[\]; + +*** +

[$storage.fileUnknown](/API_docs/constructors/storage.fileUnknown.html) = \[\]; + +*** +

[$storage.fileWebp](/API_docs/constructors/storage.fileWebp.html) = \[\]; + +*** +

[$stories.allStories](/API_docs/constructors/stories.allStories.html) = \['has_more' => [Bool](/API_docs/types/Bool.html), 'count' => [int](/API_docs/types/int.html), 'state' => [string](/API_docs/types/string.html), 'peer_stories' => \[[PeerStories](/API_docs/types/PeerStories.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], 'stealth_mode' => [StoriesStealthMode](/API_docs/types/StoriesStealthMode.html), \]; + +*** +

[$stories.allStoriesNotModified](/API_docs/constructors/stories.allStoriesNotModified.html) = \['state' => [string](/API_docs/types/string.html), 'stealth_mode' => [StoriesStealthMode](/API_docs/types/StoriesStealthMode.html), \]; + +*** +

[$stories.peerStories](/API_docs/constructors/stories.peerStories.html) = \['stories' => [PeerStories](/API_docs/types/PeerStories.html), 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$stories.stories](/API_docs/constructors/stories.stories.html) = \['count' => [int](/API_docs/types/int.html), 'stories' => \[[StoryItem](/API_docs/types/StoryItem.html)\], 'pinned_to_top' => \[[int](/API_docs/types/int.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$stories.storyReactionsList](/API_docs/constructors/stories.storyReactionsList.html) = \['count' => [int](/API_docs/types/int.html), 'reactions' => \[[StoryReaction](/API_docs/types/StoryReaction.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], 'next_offset' => [string](/API_docs/types/string.html), \]; + +*** +

[$stories.storyViews](/API_docs/constructors/stories.storyViews.html) = \['views' => \[[StoryViews](/API_docs/types/StoryViews.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$stories.storyViewsList](/API_docs/constructors/stories.storyViewsList.html) = \['count' => [int](/API_docs/types/int.html), 'views_count' => [int](/API_docs/types/int.html), 'forwards_count' => [int](/API_docs/types/int.html), 'reactions_count' => [int](/API_docs/types/int.html), 'views' => \[[StoryView](/API_docs/types/StoryView.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], 'next_offset' => [string](/API_docs/types/string.html), \]; + +*** +

[$storiesStealthMode](/API_docs/constructors/storiesStealthMode.html) = \['active_until_date' => [int](/API_docs/types/int.html), 'cooldown_until_date' => [int](/API_docs/types/int.html), \]; + +*** +

[$storyFwdHeader](/API_docs/constructors/storyFwdHeader.html) = \['modified' => [Bool](/API_docs/types/Bool.html), 'from' => [Peer](/API_docs/types/Peer.html), 'from_name' => [string](/API_docs/types/string.html), 'story_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$storyItem](/API_docs/constructors/storyItem.html) = \['pinned' => [Bool](/API_docs/types/Bool.html), 'public' => [Bool](/API_docs/types/Bool.html), 'close_friends' => [Bool](/API_docs/types/Bool.html), 'min' => [Bool](/API_docs/types/Bool.html), 'noforwards' => [Bool](/API_docs/types/Bool.html), 'edited' => [Bool](/API_docs/types/Bool.html), 'contacts' => [Bool](/API_docs/types/Bool.html), 'selected_contacts' => [Bool](/API_docs/types/Bool.html), 'out' => [Bool](/API_docs/types/Bool.html), 'id' => [int](/API_docs/types/int.html), 'date' => [int](/API_docs/types/int.html), 'from_id' => [Peer](/API_docs/types/Peer.html), 'fwd_from' => [StoryFwdHeader](/API_docs/types/StoryFwdHeader.html), 'expire_date' => [int](/API_docs/types/int.html), 'caption' => [string](/API_docs/types/string.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'media' => [MessageMedia](/API_docs/types/MessageMedia.html), 'media_areas' => \[[MediaArea](/API_docs/types/MediaArea.html)\], 'privacy' => \[[PrivacyRule](/API_docs/types/PrivacyRule.html)\], 'views' => [StoryViews](/API_docs/types/StoryViews.html), 'sent_reaction' => [Reaction](/API_docs/types/Reaction.html), \]; + +*** +

[$storyItemDeleted](/API_docs/constructors/storyItemDeleted.html) = \['id' => [int](/API_docs/types/int.html), \]; + +*** +

[$storyItemSkipped](/API_docs/constructors/storyItemSkipped.html) = \['close_friends' => [Bool](/API_docs/types/Bool.html), 'id' => [int](/API_docs/types/int.html), 'date' => [int](/API_docs/types/int.html), 'expire_date' => [int](/API_docs/types/int.html), \]; + +*** +

[$storyReaction](/API_docs/constructors/storyReaction.html) = \['peer_id' => [Peer](/API_docs/types/Peer.html), 'date' => [int](/API_docs/types/int.html), 'reaction' => [Reaction](/API_docs/types/Reaction.html), \]; + +*** +

[$storyReactionPublicForward](/API_docs/constructors/storyReactionPublicForward.html) = \['message' => [Message](/API_docs/types/Message.html), \]; + +*** +

[$storyReactionPublicRepost](/API_docs/constructors/storyReactionPublicRepost.html) = \['peer_id' => [Peer](/API_docs/types/Peer.html), 'story' => [StoryItem](/API_docs/types/StoryItem.html), \]; + +*** +

[$storyView](/API_docs/constructors/storyView.html) = \['blocked' => [Bool](/API_docs/types/Bool.html), 'blocked_my_stories_from' => [Bool](/API_docs/types/Bool.html), 'user_id' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'reaction' => [Reaction](/API_docs/types/Reaction.html), \]; + +*** +

[$storyViewPublicForward](/API_docs/constructors/storyViewPublicForward.html) = \['blocked' => [Bool](/API_docs/types/Bool.html), 'blocked_my_stories_from' => [Bool](/API_docs/types/Bool.html), 'message' => [Message](/API_docs/types/Message.html), \]; + +*** +

[$storyViewPublicRepost](/API_docs/constructors/storyViewPublicRepost.html) = \['blocked' => [Bool](/API_docs/types/Bool.html), 'blocked_my_stories_from' => [Bool](/API_docs/types/Bool.html), 'peer_id' => [Peer](/API_docs/types/Peer.html), 'story' => [StoryItem](/API_docs/types/StoryItem.html), \]; + +*** +

[$storyViews](/API_docs/constructors/storyViews.html) = \['has_viewers' => [Bool](/API_docs/types/Bool.html), 'views_count' => [int](/API_docs/types/int.html), 'forwards_count' => [int](/API_docs/types/int.html), 'reactions' => \[[ReactionCount](/API_docs/types/ReactionCount.html)\], 'reactions_count' => [int](/API_docs/types/int.html), 'recent_viewers' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$textAnchor](/API_docs/constructors/textAnchor.html) = \['text' => [RichText](/API_docs/types/RichText.html), 'name' => [string](/API_docs/types/string.html), \]; + +*** +

[$textBold](/API_docs/constructors/textBold.html) = \['text' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$textConcat](/API_docs/constructors/textConcat.html) = \['texts' => \[[RichText](/API_docs/types/RichText.html)\], \]; + +*** +

[$textEmail](/API_docs/constructors/textEmail.html) = \['text' => [RichText](/API_docs/types/RichText.html), 'email' => [string](/API_docs/types/string.html), \]; + +*** +

[$textEmpty](/API_docs/constructors/textEmpty.html) = \[\]; + +*** +

[$textFixed](/API_docs/constructors/textFixed.html) = \['text' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$textImage](/API_docs/constructors/textImage.html) = \['document_id' => [long](/API_docs/types/long.html), 'w' => [int](/API_docs/types/int.html), 'h' => [int](/API_docs/types/int.html), \]; + +*** +

[$textItalic](/API_docs/constructors/textItalic.html) = \['text' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$textMarked](/API_docs/constructors/textMarked.html) = \['text' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$textPhone](/API_docs/constructors/textPhone.html) = \['text' => [RichText](/API_docs/types/RichText.html), 'phone' => [string](/API_docs/types/string.html), \]; + +*** +

[$textPlain](/API_docs/constructors/textPlain.html) = \['text' => [string](/API_docs/types/string.html), \]; + +*** +

[$textStrike](/API_docs/constructors/textStrike.html) = \['text' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$textSubscript](/API_docs/constructors/textSubscript.html) = \['text' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$textSuperscript](/API_docs/constructors/textSuperscript.html) = \['text' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$textUnderline](/API_docs/constructors/textUnderline.html) = \['text' => [RichText](/API_docs/types/RichText.html), \]; + +*** +

[$textUrl](/API_docs/constructors/textUrl.html) = \['text' => [RichText](/API_docs/types/RichText.html), 'url' => [string](/API_docs/types/string.html), 'webpage_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$textWithEntities](/API_docs/constructors/textWithEntities.html) = \['text' => [string](/API_docs/types/string.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], \]; + +*** +

[$theme](/API_docs/constructors/theme.html) = \['creator' => [Bool](/API_docs/types/Bool.html), 'default' => [Bool](/API_docs/types/Bool.html), 'for_chat' => [Bool](/API_docs/types/Bool.html), 'id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'slug' => [string](/API_docs/types/string.html), 'title' => [string](/API_docs/types/string.html), 'document' => [Document](/API_docs/types/Document.html), 'settings' => \[[ThemeSettings](/API_docs/types/ThemeSettings.html)\], 'emoticon' => [string](/API_docs/types/string.html), 'installs_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$themeSettings](/API_docs/constructors/themeSettings.html) = \['message_colors_animated' => [Bool](/API_docs/types/Bool.html), 'base_theme' => [BaseTheme](/API_docs/types/BaseTheme.html), 'accent_color' => [int](/API_docs/types/int.html), 'outbox_accent_color' => [int](/API_docs/types/int.html), 'message_colors' => \[[int](/API_docs/types/int.html)\], 'wallpaper' => [WallPaper](/API_docs/types/WallPaper.html), \]; + +*** +

[$timezone](/API_docs/constructors/timezone.html) = \['id' => [string](/API_docs/types/string.html), 'name' => [string](/API_docs/types/string.html), 'utc_offset' => [int](/API_docs/types/int.html), \]; + +*** +

[$topPeer](/API_docs/constructors/topPeer.html) = \['peer' => [long](/API_docs/types/long.html), 'rating' => [double](/API_docs/types/double.html), \]; + +*** +

[$topPeerCategoryBotsInline](/API_docs/constructors/topPeerCategoryBotsInline.html) = \[\]; + +*** +

[$topPeerCategoryBotsPM](/API_docs/constructors/topPeerCategoryBotsPM.html) = \[\]; + +*** +

[$topPeerCategoryChannels](/API_docs/constructors/topPeerCategoryChannels.html) = \[\]; + +*** +

[$topPeerCategoryCorrespondents](/API_docs/constructors/topPeerCategoryCorrespondents.html) = \[\]; + +*** +

[$topPeerCategoryForwardChats](/API_docs/constructors/topPeerCategoryForwardChats.html) = \[\]; + +*** +

[$topPeerCategoryForwardUsers](/API_docs/constructors/topPeerCategoryForwardUsers.html) = \[\]; + +*** +

[$topPeerCategoryGroups](/API_docs/constructors/topPeerCategoryGroups.html) = \[\]; + +*** +

[$topPeerCategoryPeers](/API_docs/constructors/topPeerCategoryPeers.html) = \['category' => [TopPeerCategory](/API_docs/types/TopPeerCategory.html), 'count' => [int](/API_docs/types/int.html), 'peers' => \[[TopPeer](/API_docs/types/TopPeer.html)\], \]; + +*** +

[$topPeerCategoryPhoneCalls](/API_docs/constructors/topPeerCategoryPhoneCalls.html) = \[\]; + +*** +

[$true](/API_docs/constructors/true.html) = \[\]; + +*** +

[$updateAttachMenuBots](/API_docs/constructors/updateAttachMenuBots.html) = \[\]; + +*** +

[$updateAutoSaveSettings](/API_docs/constructors/updateAutoSaveSettings.html) = \[\]; + +*** +

[$updateBotBusinessConnect](/API_docs/constructors/updateBotBusinessConnect.html) = \['connection' => [BotBusinessConnection](/API_docs/types/BotBusinessConnection.html), 'qts' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateBotCallbackQuery](/API_docs/constructors/updateBotCallbackQuery.html) = \['query_id' => [long](/API_docs/types/long.html), 'user_id' => [long](/API_docs/types/long.html), 'peer' => [long](/API_docs/types/long.html), 'msg_id' => [int](/API_docs/types/int.html), 'chat_instance' => [long](/API_docs/types/long.html), 'data' => [bytes](/API_docs/types/bytes.html), 'game_short_name' => [string](/API_docs/types/string.html), \]; + +*** +

[$updateBotChatBoost](/API_docs/constructors/updateBotChatBoost.html) = \['peer' => [long](/API_docs/types/long.html), 'boost' => [Boost](/API_docs/types/Boost.html), 'qts' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateBotChatInviteRequester](/API_docs/constructors/updateBotChatInviteRequester.html) = \['peer' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'user_id' => [long](/API_docs/types/long.html), 'about' => [string](/API_docs/types/string.html), 'invite' => [ExportedChatInvite](/API_docs/types/ExportedChatInvite.html), 'qts' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateBotCommands](/API_docs/constructors/updateBotCommands.html) = \['peer' => [long](/API_docs/types/long.html), 'bot_id' => [long](/API_docs/types/long.html), 'commands' => \[[BotCommand](/API_docs/types/BotCommand.html)\], \]; + +*** +

[$updateBotDeleteBusinessMessage](/API_docs/constructors/updateBotDeleteBusinessMessage.html) = \['connection_id' => [string](/API_docs/types/string.html), 'peer' => [long](/API_docs/types/long.html), 'messages' => \[[int](/API_docs/types/int.html)\], 'qts' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateBotEditBusinessMessage](/API_docs/constructors/updateBotEditBusinessMessage.html) = \['connection_id' => [string](/API_docs/types/string.html), 'message' => [Message](/API_docs/types/Message.html), 'reply_to_message' => [Message](/API_docs/types/Message.html), 'qts' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateBotInlineQuery](/API_docs/constructors/updateBotInlineQuery.html) = \['query_id' => [long](/API_docs/types/long.html), 'user_id' => [long](/API_docs/types/long.html), 'query' => [string](/API_docs/types/string.html), 'geo' => [GeoPoint](/API_docs/types/GeoPoint.html), 'peer_type' => [InlineQueryPeerType](/API_docs/types/InlineQueryPeerType.html), 'offset' => [string](/API_docs/types/string.html), \]; + +*** +

[$updateBotInlineSend](/API_docs/constructors/updateBotInlineSend.html) = \['user_id' => [long](/API_docs/types/long.html), 'query' => [string](/API_docs/types/string.html), 'geo' => [GeoPoint](/API_docs/types/GeoPoint.html), 'id' => [string](/API_docs/types/string.html), 'msg_id' => [InputBotInlineMessageID](/API_docs/types/InputBotInlineMessageID.html), \]; + +*** +

[$updateBotMenuButton](/API_docs/constructors/updateBotMenuButton.html) = \['bot_id' => [long](/API_docs/types/long.html), 'button' => [BotMenuButton](/API_docs/types/BotMenuButton.html), \]; + +*** +

[$updateBotMessageReaction](/API_docs/constructors/updateBotMessageReaction.html) = \['peer' => [long](/API_docs/types/long.html), 'msg_id' => [int](/API_docs/types/int.html), 'date' => [int](/API_docs/types/int.html), 'actor' => [Peer](/API_docs/types/Peer.html), 'old_reactions' => \[[Reaction](/API_docs/types/Reaction.html)\], 'new_reactions' => \[[Reaction](/API_docs/types/Reaction.html)\], 'qts' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateBotMessageReactions](/API_docs/constructors/updateBotMessageReactions.html) = \['peer' => [long](/API_docs/types/long.html), 'msg_id' => [int](/API_docs/types/int.html), 'date' => [int](/API_docs/types/int.html), 'reactions' => \[[ReactionCount](/API_docs/types/ReactionCount.html)\], 'qts' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateBotNewBusinessMessage](/API_docs/constructors/updateBotNewBusinessMessage.html) = \['connection_id' => [string](/API_docs/types/string.html), 'message' => [Message](/API_docs/types/Message.html), 'reply_to_message' => [Message](/API_docs/types/Message.html), 'qts' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateBotPrecheckoutQuery](/API_docs/constructors/updateBotPrecheckoutQuery.html) = \['query_id' => [long](/API_docs/types/long.html), 'user_id' => [long](/API_docs/types/long.html), 'payload' => [bytes](/API_docs/types/bytes.html), 'info' => [PaymentRequestedInfo](/API_docs/types/PaymentRequestedInfo.html), 'shipping_option_id' => [string](/API_docs/types/string.html), 'currency' => [string](/API_docs/types/string.html), 'total_amount' => [long](/API_docs/types/long.html), \]; + +*** +

[$updateBotShippingQuery](/API_docs/constructors/updateBotShippingQuery.html) = \['query_id' => [long](/API_docs/types/long.html), 'user_id' => [long](/API_docs/types/long.html), 'payload' => [bytes](/API_docs/types/bytes.html), 'shipping_address' => [PostAddress](/API_docs/types/PostAddress.html), \]; + +*** +

[$updateBotStopped](/API_docs/constructors/updateBotStopped.html) = \['user_id' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'stopped' => [Bool](/API_docs/types/Bool.html), 'qts' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateBotWebhookJSON](/API_docs/constructors/updateBotWebhookJSON.html) = \['data' => [DataJSON](/API_docs/types/DataJSON.html), \]; + +*** +

[$updateBotWebhookJSONQuery](/API_docs/constructors/updateBotWebhookJSONQuery.html) = \['query_id' => [long](/API_docs/types/long.html), 'data' => [DataJSON](/API_docs/types/DataJSON.html), 'timeout' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateChannel](/API_docs/constructors/updateChannel.html) = \['channel_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$updateChannelAvailableMessages](/API_docs/constructors/updateChannelAvailableMessages.html) = \['channel_id' => [long](/API_docs/types/long.html), 'available_min_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateChannelMessageForwards](/API_docs/constructors/updateChannelMessageForwards.html) = \['channel_id' => [long](/API_docs/types/long.html), 'id' => [int](/API_docs/types/int.html), 'forwards' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateChannelMessageViews](/API_docs/constructors/updateChannelMessageViews.html) = \['channel_id' => [long](/API_docs/types/long.html), 'id' => [int](/API_docs/types/int.html), 'views' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateChannelParticipant](/API_docs/constructors/updateChannelParticipant.html) = \['via_chatlist' => [Bool](/API_docs/types/Bool.html), 'channel_id' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'actor_id' => [long](/API_docs/types/long.html), 'user_id' => [long](/API_docs/types/long.html), 'prev_participant' => [ChannelParticipant](/API_docs/types/ChannelParticipant.html), 'new_participant' => [ChannelParticipant](/API_docs/types/ChannelParticipant.html), 'invite' => [ExportedChatInvite](/API_docs/types/ExportedChatInvite.html), 'qts' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateChannelPinnedTopic](/API_docs/constructors/updateChannelPinnedTopic.html) = \['pinned' => [Bool](/API_docs/types/Bool.html), 'channel_id' => [long](/API_docs/types/long.html), 'topic_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateChannelPinnedTopics](/API_docs/constructors/updateChannelPinnedTopics.html) = \['channel_id' => [long](/API_docs/types/long.html), 'order' => \[[int](/API_docs/types/int.html)\], \]; + +*** +

[$updateChannelReadMessagesContents](/API_docs/constructors/updateChannelReadMessagesContents.html) = \['channel_id' => [long](/API_docs/types/long.html), 'top_msg_id' => [int](/API_docs/types/int.html), 'messages' => \[[int](/API_docs/types/int.html)\], \]; + +*** +

[$updateChannelTooLong](/API_docs/constructors/updateChannelTooLong.html) = \['channel_id' => [long](/API_docs/types/long.html), 'pts' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateChannelUserTyping](/API_docs/constructors/updateChannelUserTyping.html) = \['channel_id' => [long](/API_docs/types/long.html), 'top_msg_id' => [int](/API_docs/types/int.html), 'from_id' => [Peer](/API_docs/types/Peer.html), 'action' => [SendMessageAction](/API_docs/types/SendMessageAction.html), \]; + +*** +

[$updateChannelViewForumAsMessages](/API_docs/constructors/updateChannelViewForumAsMessages.html) = \['channel_id' => [long](/API_docs/types/long.html), 'enabled' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$updateChannelWebPage](/API_docs/constructors/updateChannelWebPage.html) = \['channel_id' => [long](/API_docs/types/long.html), 'webpage' => [WebPage](/API_docs/types/WebPage.html), 'pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateChat](/API_docs/constructors/updateChat.html) = \['chat_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$updateChatDefaultBannedRights](/API_docs/constructors/updateChatDefaultBannedRights.html) = \['peer' => [long](/API_docs/types/long.html), 'default_banned_rights' => [ChatBannedRights](/API_docs/types/ChatBannedRights.html), 'version' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateChatParticipant](/API_docs/constructors/updateChatParticipant.html) = \['chat_id' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'actor_id' => [long](/API_docs/types/long.html), 'user_id' => [long](/API_docs/types/long.html), 'prev_participant' => [ChatParticipant](/API_docs/types/ChatParticipant.html), 'new_participant' => [ChatParticipant](/API_docs/types/ChatParticipant.html), 'invite' => [ExportedChatInvite](/API_docs/types/ExportedChatInvite.html), 'qts' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateChatParticipantAdd](/API_docs/constructors/updateChatParticipantAdd.html) = \['chat_id' => [long](/API_docs/types/long.html), 'user_id' => [long](/API_docs/types/long.html), 'inviter_id' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'version' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateChatParticipantAdmin](/API_docs/constructors/updateChatParticipantAdmin.html) = \['chat_id' => [long](/API_docs/types/long.html), 'user_id' => [long](/API_docs/types/long.html), 'is_admin' => [Bool](/API_docs/types/Bool.html), 'version' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateChatParticipantDelete](/API_docs/constructors/updateChatParticipantDelete.html) = \['chat_id' => [long](/API_docs/types/long.html), 'user_id' => [long](/API_docs/types/long.html), 'version' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateChatParticipants](/API_docs/constructors/updateChatParticipants.html) = \['participants' => [ChatParticipants](/API_docs/types/ChatParticipants.html), \]; + +*** +

[$updateChatUserTyping](/API_docs/constructors/updateChatUserTyping.html) = \['chat_id' => [long](/API_docs/types/long.html), 'from_id' => [Peer](/API_docs/types/Peer.html), 'action' => [SendMessageAction](/API_docs/types/SendMessageAction.html), \]; + +*** +

[$updateConfig](/API_docs/constructors/updateConfig.html) = \[\]; + +*** +

[$updateContactsReset](/API_docs/constructors/updateContactsReset.html) = \[\]; + +*** +

[$updateDcOptions](/API_docs/constructors/updateDcOptions.html) = \['dc_options' => \[[DcOption](/API_docs/types/DcOption.html)\], \]; + +*** +

[$updateDeleteChannelMessages](/API_docs/constructors/updateDeleteChannelMessages.html) = \['channel_id' => [long](/API_docs/types/long.html), 'messages' => \[[int](/API_docs/types/int.html)\], 'pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateDeleteMessages](/API_docs/constructors/updateDeleteMessages.html) = \['messages' => \[[int](/API_docs/types/int.html)\], 'pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateDeleteQuickReply](/API_docs/constructors/updateDeleteQuickReply.html) = \['shortcut_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateDeleteQuickReplyMessages](/API_docs/constructors/updateDeleteQuickReplyMessages.html) = \['shortcut_id' => [int](/API_docs/types/int.html), 'messages' => \[[int](/API_docs/types/int.html)\], \]; + +*** +

[$updateDeleteScheduledMessages](/API_docs/constructors/updateDeleteScheduledMessages.html) = \['peer' => [long](/API_docs/types/long.html), 'messages' => \[[int](/API_docs/types/int.html)\], \]; + +*** +

[$updateDialogFilter](/API_docs/constructors/updateDialogFilter.html) = \['id' => [int](/API_docs/types/int.html), 'filter' => [DialogFilter](/API_docs/types/DialogFilter.html), \]; + +*** +

[$updateDialogFilterOrder](/API_docs/constructors/updateDialogFilterOrder.html) = \['order' => \[[int](/API_docs/types/int.html)\], \]; + +*** +

[$updateDialogFilters](/API_docs/constructors/updateDialogFilters.html) = \[\]; + +*** +

[$updateDialogPinned](/API_docs/constructors/updateDialogPinned.html) = \['pinned' => [Bool](/API_docs/types/Bool.html), 'folder_id' => [int](/API_docs/types/int.html), 'peer' => [DialogPeer](/API_docs/types/DialogPeer.html), \]; + +*** +

[$updateDialogUnreadMark](/API_docs/constructors/updateDialogUnreadMark.html) = \['unread' => [Bool](/API_docs/types/Bool.html), 'peer' => [DialogPeer](/API_docs/types/DialogPeer.html), \]; + +*** +

[$updateDraftMessage](/API_docs/constructors/updateDraftMessage.html) = \['peer' => [long](/API_docs/types/long.html), 'top_msg_id' => [int](/API_docs/types/int.html), 'draft' => [DraftMessage](/API_docs/types/DraftMessage.html), \]; + +*** +

[$updateEditChannelMessage](/API_docs/constructors/updateEditChannelMessage.html) = \['message' => [Message](/API_docs/types/Message.html), 'pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateEditMessage](/API_docs/constructors/updateEditMessage.html) = \['message' => [Message](/API_docs/types/Message.html), 'pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateEncryptedChatTyping](/API_docs/constructors/updateEncryptedChatTyping.html) = \['chat_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateEncryptedMessagesRead](/API_docs/constructors/updateEncryptedMessagesRead.html) = \['chat_id' => [int](/API_docs/types/int.html), 'max_date' => [int](/API_docs/types/int.html), 'date' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateEncryption](/API_docs/constructors/updateEncryption.html) = \['chat' => [EncryptedChat](/API_docs/types/EncryptedChat.html), 'date' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateFavedStickers](/API_docs/constructors/updateFavedStickers.html) = \[\]; + +*** +

[$updateFolderPeers](/API_docs/constructors/updateFolderPeers.html) = \['folder_peers' => \[[FolderPeer](/API_docs/types/FolderPeer.html)\], 'pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateGeoLiveViewed](/API_docs/constructors/updateGeoLiveViewed.html) = \['peer' => [long](/API_docs/types/long.html), 'msg_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateGroupCall](/API_docs/constructors/updateGroupCall.html) = \['chat_id' => [long](/API_docs/types/long.html), 'call' => [GroupCall](/API_docs/types/GroupCall.html), \]; + +*** +

[$updateGroupCallConnection](/API_docs/constructors/updateGroupCallConnection.html) = \['presentation' => [Bool](/API_docs/types/Bool.html), 'params' => [DataJSON](/API_docs/types/DataJSON.html), \]; + +*** +

[$updateGroupCallParticipants](/API_docs/constructors/updateGroupCallParticipants.html) = \['call' => [InputGroupCall](/API_docs/types/InputGroupCall.html), 'participants' => \[[GroupCallParticipant](/API_docs/types/GroupCallParticipant.html)\], 'version' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateInlineBotCallbackQuery](/API_docs/constructors/updateInlineBotCallbackQuery.html) = \['query_id' => [long](/API_docs/types/long.html), 'user_id' => [long](/API_docs/types/long.html), 'msg_id' => [InputBotInlineMessageID](/API_docs/types/InputBotInlineMessageID.html), 'chat_instance' => [long](/API_docs/types/long.html), 'data' => [bytes](/API_docs/types/bytes.html), 'game_short_name' => [string](/API_docs/types/string.html), \]; + +*** +

[$updateLangPack](/API_docs/constructors/updateLangPack.html) = \['difference' => [LangPackDifference](/API_docs/types/LangPackDifference.html), \]; + +*** +

[$updateLangPackTooLong](/API_docs/constructors/updateLangPackTooLong.html) = \['lang_code' => [string](/API_docs/types/string.html), \]; + +*** +

[$updateLoginToken](/API_docs/constructors/updateLoginToken.html) = \[\]; + +*** +

[$updateMessageExtendedMedia](/API_docs/constructors/updateMessageExtendedMedia.html) = \['peer' => [long](/API_docs/types/long.html), 'msg_id' => [int](/API_docs/types/int.html), 'extended_media' => [MessageExtendedMedia](/API_docs/types/MessageExtendedMedia.html), \]; + +*** +

[$updateMessageID](/API_docs/constructors/updateMessageID.html) = \['id' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateMessagePoll](/API_docs/constructors/updateMessagePoll.html) = \['poll_id' => [long](/API_docs/types/long.html), 'poll' => [Poll](/API_docs/types/Poll.html), 'results' => [PollResults](/API_docs/types/PollResults.html), \]; + +*** +

[$updateMessagePollVote](/API_docs/constructors/updateMessagePollVote.html) = \['poll_id' => [long](/API_docs/types/long.html), 'peer' => [long](/API_docs/types/long.html), 'options' => \[[bytes](/API_docs/types/bytes.html)\], 'qts' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateMessageReactions](/API_docs/constructors/updateMessageReactions.html) = \['peer' => [long](/API_docs/types/long.html), 'msg_id' => [int](/API_docs/types/int.html), 'top_msg_id' => [int](/API_docs/types/int.html), 'reactions' => [MessageReactions](/API_docs/types/MessageReactions.html), \]; + +*** +

[$updateMoveStickerSetToTop](/API_docs/constructors/updateMoveStickerSetToTop.html) = \['masks' => [Bool](/API_docs/types/Bool.html), 'emojis' => [Bool](/API_docs/types/Bool.html), 'stickerset' => [long](/API_docs/types/long.html), \]; + +*** +

[$updateNewAuthorization](/API_docs/constructors/updateNewAuthorization.html) = \['unconfirmed' => [Bool](/API_docs/types/Bool.html), 'hash' => [long](/API_docs/types/long.html), 'date' => [int](/API_docs/types/int.html), 'device' => [string](/API_docs/types/string.html), 'location' => [string](/API_docs/types/string.html), \]; + +*** +

[$updateNewChannelMessage](/API_docs/constructors/updateNewChannelMessage.html) = \['message' => [Message](/API_docs/types/Message.html), 'pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateNewEncryptedMessage](/API_docs/constructors/updateNewEncryptedMessage.html) = \['message' => [EncryptedMessage](/API_docs/types/EncryptedMessage.html), 'qts' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateNewMessage](/API_docs/constructors/updateNewMessage.html) = \['message' => [Message](/API_docs/types/Message.html), 'pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateNewQuickReply](/API_docs/constructors/updateNewQuickReply.html) = \['quick_reply' => [QuickReply](/API_docs/types/QuickReply.html), \]; + +*** +

[$updateNewScheduledMessage](/API_docs/constructors/updateNewScheduledMessage.html) = \['message' => [Message](/API_docs/types/Message.html), \]; + +*** +

[$updateNewStickerSet](/API_docs/constructors/updateNewStickerSet.html) = \['stickerset' => [messages.StickerSet](/API_docs/types/messages.StickerSet.html), \]; + +*** +

[$updateNewStoryReaction](/API_docs/constructors/updateNewStoryReaction.html) = \['story_id' => [int](/API_docs/types/int.html), 'peer' => [long](/API_docs/types/long.html), 'reaction' => [Reaction](/API_docs/types/Reaction.html), \]; + +*** +

[$updateNotifySettings](/API_docs/constructors/updateNotifySettings.html) = \['peer' => [NotifyPeer](/API_docs/types/NotifyPeer.html), 'notify_settings' => [PeerNotifySettings](/API_docs/types/PeerNotifySettings.html), \]; + +*** +

[$updatePeerBlocked](/API_docs/constructors/updatePeerBlocked.html) = \['blocked' => [Bool](/API_docs/types/Bool.html), 'blocked_my_stories_from' => [Bool](/API_docs/types/Bool.html), 'peer_id' => [Peer](/API_docs/types/Peer.html), \]; + +*** +

[$updatePeerHistoryTTL](/API_docs/constructors/updatePeerHistoryTTL.html) = \['peer' => [long](/API_docs/types/long.html), 'ttl_period' => [int](/API_docs/types/int.html), \]; + +*** +

[$updatePeerLocated](/API_docs/constructors/updatePeerLocated.html) = \['peers' => \[[PeerLocated](/API_docs/types/PeerLocated.html)\], \]; + +*** +

[$updatePeerSettings](/API_docs/constructors/updatePeerSettings.html) = \['peer' => [long](/API_docs/types/long.html), 'settings' => [PeerSettings](/API_docs/types/PeerSettings.html), \]; + +*** +

[$updatePeerWallpaper](/API_docs/constructors/updatePeerWallpaper.html) = \['wallpaper_overridden' => [Bool](/API_docs/types/Bool.html), 'peer' => [long](/API_docs/types/long.html), 'wallpaper' => [WallPaper](/API_docs/types/WallPaper.html), \]; + +*** +

[$updatePendingJoinRequests](/API_docs/constructors/updatePendingJoinRequests.html) = \['peer' => [long](/API_docs/types/long.html), 'requests_pending' => [int](/API_docs/types/int.html), 'recent_requesters' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$updatePhoneCall](/API_docs/constructors/updatePhoneCall.html) = \['phone_call' => [PhoneCall](/API_docs/types/PhoneCall.html), \]; + +*** +

[$updatePhoneCallSignalingData](/API_docs/constructors/updatePhoneCallSignalingData.html) = \['phone_call_id' => [long](/API_docs/types/long.html), 'data' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$updatePinnedChannelMessages](/API_docs/constructors/updatePinnedChannelMessages.html) = \['pinned' => [Bool](/API_docs/types/Bool.html), 'channel_id' => [long](/API_docs/types/long.html), 'messages' => \[[int](/API_docs/types/int.html)\], 'pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$updatePinnedDialogs](/API_docs/constructors/updatePinnedDialogs.html) = \['folder_id' => [int](/API_docs/types/int.html), 'order' => \[[DialogPeer](/API_docs/types/DialogPeer.html)\], \]; + +*** +

[$updatePinnedMessages](/API_docs/constructors/updatePinnedMessages.html) = \['pinned' => [Bool](/API_docs/types/Bool.html), 'peer' => [long](/API_docs/types/long.html), 'messages' => \[[int](/API_docs/types/int.html)\], 'pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$updatePinnedSavedDialogs](/API_docs/constructors/updatePinnedSavedDialogs.html) = \['order' => \[[DialogPeer](/API_docs/types/DialogPeer.html)\], \]; + +*** +

[$updatePrivacy](/API_docs/constructors/updatePrivacy.html) = \['key' => [PrivacyKey](/API_docs/types/PrivacyKey.html), 'rules' => \[[PrivacyRule](/API_docs/types/PrivacyRule.html)\], \]; + +*** +

[$updatePtsChanged](/API_docs/constructors/updatePtsChanged.html) = \[\]; + +*** +

[$updateQuickReplies](/API_docs/constructors/updateQuickReplies.html) = \['quick_replies' => \[[QuickReply](/API_docs/types/QuickReply.html)\], \]; + +*** +

[$updateQuickReplyMessage](/API_docs/constructors/updateQuickReplyMessage.html) = \['message' => [Message](/API_docs/types/Message.html), \]; + +*** +

[$updateReadChannelDiscussionInbox](/API_docs/constructors/updateReadChannelDiscussionInbox.html) = \['channel_id' => [long](/API_docs/types/long.html), 'top_msg_id' => [int](/API_docs/types/int.html), 'read_max_id' => [int](/API_docs/types/int.html), 'broadcast_id' => [long](/API_docs/types/long.html), 'broadcast_post' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateReadChannelDiscussionOutbox](/API_docs/constructors/updateReadChannelDiscussionOutbox.html) = \['channel_id' => [long](/API_docs/types/long.html), 'top_msg_id' => [int](/API_docs/types/int.html), 'read_max_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateReadChannelInbox](/API_docs/constructors/updateReadChannelInbox.html) = \['folder_id' => [int](/API_docs/types/int.html), 'channel_id' => [long](/API_docs/types/long.html), 'max_id' => [int](/API_docs/types/int.html), 'still_unread_count' => [int](/API_docs/types/int.html), 'pts' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateReadChannelOutbox](/API_docs/constructors/updateReadChannelOutbox.html) = \['channel_id' => [long](/API_docs/types/long.html), 'max_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateReadFeaturedEmojiStickers](/API_docs/constructors/updateReadFeaturedEmojiStickers.html) = \[\]; + +*** +

[$updateReadFeaturedStickers](/API_docs/constructors/updateReadFeaturedStickers.html) = \[\]; + +*** +

[$updateReadHistoryInbox](/API_docs/constructors/updateReadHistoryInbox.html) = \['folder_id' => [int](/API_docs/types/int.html), 'peer' => [long](/API_docs/types/long.html), 'max_id' => [int](/API_docs/types/int.html), 'still_unread_count' => [int](/API_docs/types/int.html), 'pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateReadHistoryOutbox](/API_docs/constructors/updateReadHistoryOutbox.html) = \['peer' => [long](/API_docs/types/long.html), 'max_id' => [int](/API_docs/types/int.html), 'pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateReadMessagesContents](/API_docs/constructors/updateReadMessagesContents.html) = \['messages' => \[[int](/API_docs/types/int.html)\], 'pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), 'date' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateReadStories](/API_docs/constructors/updateReadStories.html) = \['peer' => [long](/API_docs/types/long.html), 'max_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateRecentEmojiStatuses](/API_docs/constructors/updateRecentEmojiStatuses.html) = \[\]; + +*** +

[$updateRecentReactions](/API_docs/constructors/updateRecentReactions.html) = \[\]; + +*** +

[$updateRecentStickers](/API_docs/constructors/updateRecentStickers.html) = \[\]; + +*** +

[$updateSavedDialogPinned](/API_docs/constructors/updateSavedDialogPinned.html) = \['pinned' => [Bool](/API_docs/types/Bool.html), 'peer' => [DialogPeer](/API_docs/types/DialogPeer.html), \]; + +*** +

[$updateSavedGifs](/API_docs/constructors/updateSavedGifs.html) = \[\]; + +*** +

[$updateSavedReactionTags](/API_docs/constructors/updateSavedReactionTags.html) = \[\]; + +*** +

[$updateSavedRingtones](/API_docs/constructors/updateSavedRingtones.html) = \[\]; + +*** +

[$updateSentStoryReaction](/API_docs/constructors/updateSentStoryReaction.html) = \['peer' => [long](/API_docs/types/long.html), 'story_id' => [int](/API_docs/types/int.html), 'reaction' => [Reaction](/API_docs/types/Reaction.html), \]; + +*** +

[$updateServiceNotification](/API_docs/constructors/updateServiceNotification.html) = \['popup' => [Bool](/API_docs/types/Bool.html), 'invert_media' => [Bool](/API_docs/types/Bool.html), 'inbox_date' => [int](/API_docs/types/int.html), 'type' => [string](/API_docs/types/string.html), 'message' => [string](/API_docs/types/string.html), 'media' => [MessageMedia](/API_docs/types/MessageMedia.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], \]; + +*** +

[$updateShort](/API_docs/constructors/updateShort.html) = \['update' => [Update](/API_docs/types/Update.html), 'date' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateShortChatMessage](/API_docs/constructors/updateShortChatMessage.html) = \['out' => [Bool](/API_docs/types/Bool.html), 'mentioned' => [Bool](/API_docs/types/Bool.html), 'media_unread' => [Bool](/API_docs/types/Bool.html), 'silent' => [Bool](/API_docs/types/Bool.html), 'id' => [int](/API_docs/types/int.html), 'from_id' => [long](/API_docs/types/long.html), 'chat_id' => [long](/API_docs/types/long.html), 'message' => [string](/API_docs/types/string.html), 'pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), 'date' => [int](/API_docs/types/int.html), 'fwd_from' => [MessageFwdHeader](/API_docs/types/MessageFwdHeader.html), 'via_bot_id' => [long](/API_docs/types/long.html), 'reply_to' => [MessageReplyHeader](/API_docs/types/MessageReplyHeader.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'ttl_period' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateShortMessage](/API_docs/constructors/updateShortMessage.html) = \['out' => [Bool](/API_docs/types/Bool.html), 'mentioned' => [Bool](/API_docs/types/Bool.html), 'media_unread' => [Bool](/API_docs/types/Bool.html), 'silent' => [Bool](/API_docs/types/Bool.html), 'id' => [int](/API_docs/types/int.html), 'user_id' => [long](/API_docs/types/long.html), 'message' => [string](/API_docs/types/string.html), 'pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), 'date' => [int](/API_docs/types/int.html), 'fwd_from' => [MessageFwdHeader](/API_docs/types/MessageFwdHeader.html), 'via_bot_id' => [long](/API_docs/types/long.html), 'reply_to' => [MessageReplyHeader](/API_docs/types/MessageReplyHeader.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'ttl_period' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateShortSentMessage](/API_docs/constructors/updateShortSentMessage.html) = \['out' => [Bool](/API_docs/types/Bool.html), 'id' => [int](/API_docs/types/int.html), 'pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), 'date' => [int](/API_docs/types/int.html), 'media' => [MessageMedia](/API_docs/types/MessageMedia.html), 'entities' => \[[MessageEntity](/API_docs/types/MessageEntity.html)\], 'ttl_period' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateSmsJob](/API_docs/constructors/updateSmsJob.html) = \['job_id' => [string](/API_docs/types/string.html), \]; + +*** +

[$updateStickerSets](/API_docs/constructors/updateStickerSets.html) = \['masks' => [Bool](/API_docs/types/Bool.html), 'emojis' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$updateStickerSetsOrder](/API_docs/constructors/updateStickerSetsOrder.html) = \['masks' => [Bool](/API_docs/types/Bool.html), 'emojis' => [Bool](/API_docs/types/Bool.html), 'order' => \[[long](/API_docs/types/long.html)\], \]; + +*** +

[$updateStoriesStealthMode](/API_docs/constructors/updateStoriesStealthMode.html) = \['stealth_mode' => [StoriesStealthMode](/API_docs/types/StoriesStealthMode.html), \]; + +*** +

[$updateStory](/API_docs/constructors/updateStory.html) = \['peer' => [long](/API_docs/types/long.html), 'story' => [StoryItem](/API_docs/types/StoryItem.html), \]; + +*** +

[$updateStoryID](/API_docs/constructors/updateStoryID.html) = \['id' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateTheme](/API_docs/constructors/updateTheme.html) = \['theme' => [Theme](/API_docs/types/Theme.html), \]; + +*** +

[$updateTranscribedAudio](/API_docs/constructors/updateTranscribedAudio.html) = \['pending' => [Bool](/API_docs/types/Bool.html), 'peer' => [long](/API_docs/types/long.html), 'msg_id' => [int](/API_docs/types/int.html), 'transcription_id' => [long](/API_docs/types/long.html), 'text' => [string](/API_docs/types/string.html), \]; + +*** +

[$updateUser](/API_docs/constructors/updateUser.html) = \['user_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$updateUserEmojiStatus](/API_docs/constructors/updateUserEmojiStatus.html) = \['user_id' => [long](/API_docs/types/long.html), 'emoji_status' => [EmojiStatus](/API_docs/types/EmojiStatus.html), \]; + +*** +

[$updateUserName](/API_docs/constructors/updateUserName.html) = \['user_id' => [long](/API_docs/types/long.html), 'first_name' => [string](/API_docs/types/string.html), 'last_name' => [string](/API_docs/types/string.html), 'usernames' => \[[Username](/API_docs/types/Username.html)\], \]; + +*** +

[$updateUserPhone](/API_docs/constructors/updateUserPhone.html) = \['user_id' => [long](/API_docs/types/long.html), 'phone' => [string](/API_docs/types/string.html), \]; + +*** +

[$updateUserStatus](/API_docs/constructors/updateUserStatus.html) = \['user_id' => [long](/API_docs/types/long.html), 'status' => [UserStatus](/API_docs/types/UserStatus.html), \]; + +*** +

[$updateUserTyping](/API_docs/constructors/updateUserTyping.html) = \['user_id' => [long](/API_docs/types/long.html), 'action' => [SendMessageAction](/API_docs/types/SendMessageAction.html), \]; + +*** +

[$updateWebPage](/API_docs/constructors/updateWebPage.html) = \['webpage' => [WebPage](/API_docs/types/WebPage.html), 'pts' => [int](/API_docs/types/int.html), 'pts_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$updateWebViewResultSent](/API_docs/constructors/updateWebViewResultSent.html) = \['query_id' => [long](/API_docs/types/long.html), \]; + +*** +

[$updates](/API_docs/constructors/updates.html) = \['updates' => \[[Update](/API_docs/types/Update.html)\], 'users' => \[[User](/API_docs/types/User.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'date' => [int](/API_docs/types/int.html), 'seq' => [int](/API_docs/types/int.html), \]; + +*** +

[$updates.channelDifference](/API_docs/constructors/updates.channelDifference.html) = \['final' => [Bool](/API_docs/types/Bool.html), 'pts' => [int](/API_docs/types/int.html), 'timeout' => [int](/API_docs/types/int.html), 'new_messages' => \[[Message](/API_docs/types/Message.html)\], 'other_updates' => \[[Update](/API_docs/types/Update.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$updates.channelDifferenceEmpty](/API_docs/constructors/updates.channelDifferenceEmpty.html) = \['final' => [Bool](/API_docs/types/Bool.html), 'pts' => [int](/API_docs/types/int.html), 'timeout' => [int](/API_docs/types/int.html), \]; + +*** +

[$updates.channelDifferenceTooLong](/API_docs/constructors/updates.channelDifferenceTooLong.html) = \['final' => [Bool](/API_docs/types/Bool.html), 'timeout' => [int](/API_docs/types/int.html), 'dialog' => [Dialog](/API_docs/types/Dialog.html), 'messages' => \[[Message](/API_docs/types/Message.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$updates.difference](/API_docs/constructors/updates.difference.html) = \['new_messages' => \[[Message](/API_docs/types/Message.html)\], 'new_encrypted_messages' => \[[EncryptedMessage](/API_docs/types/EncryptedMessage.html)\], 'other_updates' => \[[Update](/API_docs/types/Update.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], 'state' => [updates.State](/API_docs/types/updates.State.html), \]; + +*** +

[$updates.differenceEmpty](/API_docs/constructors/updates.differenceEmpty.html) = \['date' => [int](/API_docs/types/int.html), 'seq' => [int](/API_docs/types/int.html), \]; + +*** +

[$updates.differenceSlice](/API_docs/constructors/updates.differenceSlice.html) = \['new_messages' => \[[Message](/API_docs/types/Message.html)\], 'new_encrypted_messages' => \[[EncryptedMessage](/API_docs/types/EncryptedMessage.html)\], 'other_updates' => \[[Update](/API_docs/types/Update.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], 'intermediate_state' => [updates.State](/API_docs/types/updates.State.html), \]; + +*** +

[$updates.differenceTooLong](/API_docs/constructors/updates.differenceTooLong.html) = \['pts' => [int](/API_docs/types/int.html), \]; + +*** +

[$updates.state](/API_docs/constructors/updates.state.html) = \['pts' => [int](/API_docs/types/int.html), 'qts' => [int](/API_docs/types/int.html), 'date' => [int](/API_docs/types/int.html), 'seq' => [int](/API_docs/types/int.html), 'unread_count' => [int](/API_docs/types/int.html), \]; + +*** +

[$updatesCombined](/API_docs/constructors/updatesCombined.html) = \['updates' => \[[Update](/API_docs/types/Update.html)\], 'users' => \[[User](/API_docs/types/User.html)\], 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'date' => [int](/API_docs/types/int.html), 'seq_start' => [int](/API_docs/types/int.html), 'seq' => [int](/API_docs/types/int.html), \]; + +*** +

[$updatesTooLong](/API_docs/constructors/updatesTooLong.html) = \[\]; + +*** +

[$upload.cdnFile](/API_docs/constructors/upload.cdnFile.html) = \['bytes' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$upload.cdnFileReuploadNeeded](/API_docs/constructors/upload.cdnFileReuploadNeeded.html) = \['request_token' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$upload.file](/API_docs/constructors/upload.file.html) = \['type' => [storage.FileType](/API_docs/types/storage.FileType.html), 'mtime' => [int](/API_docs/types/int.html), 'bytes' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$upload.fileCdnRedirect](/API_docs/constructors/upload.fileCdnRedirect.html) = \['dc_id' => [int](/API_docs/types/int.html), 'file_token' => [string](/API_docs/types/string.html), 'encryption_key' => [string](/API_docs/types/string.html), 'encryption_iv' => [string](/API_docs/types/string.html), 'file_hashes' => \[[FileHash](/API_docs/types/FileHash.html)\], \]; + +*** +

[$upload.webFile](/API_docs/constructors/upload.webFile.html) = \['size' => [int](/API_docs/types/int.html), 'mime_type' => [string](/API_docs/types/string.html), 'file_type' => [storage.FileType](/API_docs/types/storage.FileType.html), 'mtime' => [int](/API_docs/types/int.html), 'bytes' => [bytes](/API_docs/types/bytes.html), \]; + +*** +

[$urlAuthResultAccepted](/API_docs/constructors/urlAuthResultAccepted.html) = \['url' => [string](/API_docs/types/string.html), \]; + +*** +

[$urlAuthResultDefault](/API_docs/constructors/urlAuthResultDefault.html) = \[\]; + +*** +

[$urlAuthResultRequest](/API_docs/constructors/urlAuthResultRequest.html) = \['request_write_access' => [Bool](/API_docs/types/Bool.html), 'bot' => [User](/API_docs/types/User.html), 'domain' => [string](/API_docs/types/string.html), \]; + +*** +

[$user](/API_docs/constructors/user.html) = \['self' => [Bool](/API_docs/types/Bool.html), 'contact' => [Bool](/API_docs/types/Bool.html), 'mutual_contact' => [Bool](/API_docs/types/Bool.html), 'deleted' => [Bool](/API_docs/types/Bool.html), 'bot' => [Bool](/API_docs/types/Bool.html), 'bot_chat_history' => [Bool](/API_docs/types/Bool.html), 'bot_nochats' => [Bool](/API_docs/types/Bool.html), 'verified' => [Bool](/API_docs/types/Bool.html), 'restricted' => [Bool](/API_docs/types/Bool.html), 'min' => [Bool](/API_docs/types/Bool.html), 'bot_inline_geo' => [Bool](/API_docs/types/Bool.html), 'support' => [Bool](/API_docs/types/Bool.html), 'scam' => [Bool](/API_docs/types/Bool.html), 'apply_min_photo' => [Bool](/API_docs/types/Bool.html), 'fake' => [Bool](/API_docs/types/Bool.html), 'bot_attach_menu' => [Bool](/API_docs/types/Bool.html), 'premium' => [Bool](/API_docs/types/Bool.html), 'attach_menu_enabled' => [Bool](/API_docs/types/Bool.html), 'bot_can_edit' => [Bool](/API_docs/types/Bool.html), 'close_friend' => [Bool](/API_docs/types/Bool.html), 'stories_hidden' => [Bool](/API_docs/types/Bool.html), 'stories_unavailable' => [Bool](/API_docs/types/Bool.html), 'contact_require_premium' => [Bool](/API_docs/types/Bool.html), 'bot_business' => [Bool](/API_docs/types/Bool.html), 'id' => [long](/API_docs/types/long.html), 'access_hash' => [long](/API_docs/types/long.html), 'first_name' => [string](/API_docs/types/string.html), 'last_name' => [string](/API_docs/types/string.html), 'username' => [string](/API_docs/types/string.html), 'phone' => [string](/API_docs/types/string.html), 'photo' => [UserProfilePhoto](/API_docs/types/UserProfilePhoto.html), 'status' => [UserStatus](/API_docs/types/UserStatus.html), 'bot_info_version' => [int](/API_docs/types/int.html), 'restriction_reason' => \[[RestrictionReason](/API_docs/types/RestrictionReason.html)\], 'bot_inline_placeholder' => [string](/API_docs/types/string.html), 'lang_code' => [string](/API_docs/types/string.html), 'emoji_status' => [EmojiStatus](/API_docs/types/EmojiStatus.html), 'usernames' => \[[Username](/API_docs/types/Username.html)\], 'stories_max_id' => [int](/API_docs/types/int.html), 'color' => [PeerColor](/API_docs/types/PeerColor.html), 'profile_color' => [PeerColor](/API_docs/types/PeerColor.html), \]; + +*** +

[$userEmpty](/API_docs/constructors/userEmpty.html) = \['id' => [long](/API_docs/types/long.html), \]; + +*** +

[$userFull](/API_docs/constructors/userFull.html) = \['blocked' => [Bool](/API_docs/types/Bool.html), 'phone_calls_available' => [Bool](/API_docs/types/Bool.html), 'phone_calls_private' => [Bool](/API_docs/types/Bool.html), 'can_pin_message' => [Bool](/API_docs/types/Bool.html), 'has_scheduled' => [Bool](/API_docs/types/Bool.html), 'video_calls_available' => [Bool](/API_docs/types/Bool.html), 'voice_messages_forbidden' => [Bool](/API_docs/types/Bool.html), 'translations_disabled' => [Bool](/API_docs/types/Bool.html), 'stories_pinned_available' => [Bool](/API_docs/types/Bool.html), 'blocked_my_stories_from' => [Bool](/API_docs/types/Bool.html), 'wallpaper_overridden' => [Bool](/API_docs/types/Bool.html), 'contact_require_premium' => [Bool](/API_docs/types/Bool.html), 'read_dates_private' => [Bool](/API_docs/types/Bool.html), 'sponsored_enabled' => [Bool](/API_docs/types/Bool.html), 'id' => [long](/API_docs/types/long.html), 'about' => [string](/API_docs/types/string.html), 'settings' => [PeerSettings](/API_docs/types/PeerSettings.html), 'personal_photo' => [Photo](/API_docs/types/Photo.html), 'profile_photo' => [Photo](/API_docs/types/Photo.html), 'fallback_photo' => [Photo](/API_docs/types/Photo.html), 'notify_settings' => [PeerNotifySettings](/API_docs/types/PeerNotifySettings.html), 'bot_info' => [BotInfo](/API_docs/types/BotInfo.html), 'pinned_msg_id' => [int](/API_docs/types/int.html), 'common_chats_count' => [int](/API_docs/types/int.html), 'folder_id' => [int](/API_docs/types/int.html), 'ttl_period' => [int](/API_docs/types/int.html), 'theme_emoticon' => [string](/API_docs/types/string.html), 'private_forward_name' => [string](/API_docs/types/string.html), 'bot_group_admin_rights' => [ChatAdminRights](/API_docs/types/ChatAdminRights.html), 'bot_broadcast_admin_rights' => [ChatAdminRights](/API_docs/types/ChatAdminRights.html), 'premium_gifts' => \[[PremiumGiftOption](/API_docs/types/PremiumGiftOption.html)\], 'wallpaper' => [WallPaper](/API_docs/types/WallPaper.html), 'stories' => [PeerStories](/API_docs/types/PeerStories.html), 'business_work_hours' => [BusinessWorkHours](/API_docs/types/BusinessWorkHours.html), 'business_location' => [BusinessLocation](/API_docs/types/BusinessLocation.html), 'business_greeting_message' => [BusinessGreetingMessage](/API_docs/types/BusinessGreetingMessage.html), 'business_away_message' => [BusinessAwayMessage](/API_docs/types/BusinessAwayMessage.html), 'business_intro' => [BusinessIntro](/API_docs/types/BusinessIntro.html), 'birthday' => [Birthday](/API_docs/types/Birthday.html), 'personal_channel_id' => [long](/API_docs/types/long.html), 'personal_channel_message' => [int](/API_docs/types/int.html), \]; + +*** +

[$userProfilePhoto](/API_docs/constructors/userProfilePhoto.html) = \['has_video' => [Bool](/API_docs/types/Bool.html), 'personal' => [Bool](/API_docs/types/Bool.html), 'photo_id' => [long](/API_docs/types/long.html), 'stripped_thumb' => [bytes](/API_docs/types/bytes.html), 'dc_id' => [int](/API_docs/types/int.html), \]; + +*** +

[$userProfilePhotoEmpty](/API_docs/constructors/userProfilePhotoEmpty.html) = \[\]; + +*** +

[$userStatusEmpty](/API_docs/constructors/userStatusEmpty.html) = \[\]; + +*** +

[$userStatusLastMonth](/API_docs/constructors/userStatusLastMonth.html) = \['by_me' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$userStatusLastWeek](/API_docs/constructors/userStatusLastWeek.html) = \['by_me' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$userStatusOffline](/API_docs/constructors/userStatusOffline.html) = \['was_online' => [int](/API_docs/types/int.html), \]; + +*** +

[$userStatusOnline](/API_docs/constructors/userStatusOnline.html) = \['expires' => [int](/API_docs/types/int.html), \]; + +*** +

[$userStatusRecently](/API_docs/constructors/userStatusRecently.html) = \['by_me' => [Bool](/API_docs/types/Bool.html), \]; + +*** +

[$username](/API_docs/constructors/username.html) = \['editable' => [Bool](/API_docs/types/Bool.html), 'active' => [Bool](/API_docs/types/Bool.html), 'username' => [string](/API_docs/types/string.html), \]; + +*** +

[$users.userFull](/API_docs/constructors/users.userFull.html) = \['full_user' => [UserFull](/API_docs/types/UserFull.html), 'chats' => \[[Chat](/API_docs/types/Chat.html)\], 'users' => \[[User](/API_docs/types/User.html)\], \]; + +*** +

[$videoSize](/API_docs/constructors/videoSize.html) = \['type' => [string](/API_docs/types/string.html), 'w' => [int](/API_docs/types/int.html), 'h' => [int](/API_docs/types/int.html), 'size' => [int](/API_docs/types/int.html), 'video_start_ts' => [double](/API_docs/types/double.html), \]; + +*** +

[$videoSizeEmojiMarkup](/API_docs/constructors/videoSizeEmojiMarkup.html) = \['emoji_id' => [long](/API_docs/types/long.html), 'background_colors' => \[[int](/API_docs/types/int.html)\], \]; + +*** +

[$videoSizeStickerMarkup](/API_docs/constructors/videoSizeStickerMarkup.html) = \['stickerset' => [InputStickerSet](/API_docs/types/InputStickerSet.html), 'sticker_id' => [long](/API_docs/types/long.html), 'background_colors' => \[[int](/API_docs/types/int.html)\], \]; + +*** +

[$wallPaper](/API_docs/constructors/wallPaper.html) = \['id' => [long](/API_docs/types/long.html), 'creator' => [Bool](/API_docs/types/Bool.html), 'default' => [Bool](/API_docs/types/Bool.html), 'pattern' => [Bool](/API_docs/types/Bool.html), 'dark' => [Bool](/API_docs/types/Bool.html), 'access_hash' => [long](/API_docs/types/long.html), 'slug' => [string](/API_docs/types/string.html), 'document' => [Document](/API_docs/types/Document.html), 'settings' => [WallPaperSettings](/API_docs/types/WallPaperSettings.html), \]; + +*** +

[$wallPaperNoFile](/API_docs/constructors/wallPaperNoFile.html) = \['id' => [long](/API_docs/types/long.html), 'default' => [Bool](/API_docs/types/Bool.html), 'dark' => [Bool](/API_docs/types/Bool.html), 'settings' => [WallPaperSettings](/API_docs/types/WallPaperSettings.html), \]; + +*** +

[$wallPaperSettings](/API_docs/constructors/wallPaperSettings.html) = \['blur' => [Bool](/API_docs/types/Bool.html), 'motion' => [Bool](/API_docs/types/Bool.html), 'background_color' => [int](/API_docs/types/int.html), 'second_background_color' => [int](/API_docs/types/int.html), 'third_background_color' => [int](/API_docs/types/int.html), 'fourth_background_color' => [int](/API_docs/types/int.html), 'intensity' => [int](/API_docs/types/int.html), 'rotation' => [int](/API_docs/types/int.html), 'emoticon' => [string](/API_docs/types/string.html), \]; + +*** +

[$webAuthorization](/API_docs/constructors/webAuthorization.html) = \['hash' => [long](/API_docs/types/long.html), 'bot_id' => [long](/API_docs/types/long.html), 'domain' => [string](/API_docs/types/string.html), 'browser' => [string](/API_docs/types/string.html), 'platform' => [string](/API_docs/types/string.html), 'date_created' => [int](/API_docs/types/int.html), 'date_active' => [int](/API_docs/types/int.html), 'ip' => [string](/API_docs/types/string.html), 'region' => [string](/API_docs/types/string.html), \]; + +*** +

[$webDocument](/API_docs/constructors/webDocument.html) = \['url' => [string](/API_docs/types/string.html), 'access_hash' => [long](/API_docs/types/long.html), 'size' => [int](/API_docs/types/int.html), 'mime_type' => [string](/API_docs/types/string.html), 'attributes' => \[[DocumentAttribute](/API_docs/types/DocumentAttribute.html)\], \]; + +*** +

[$webDocumentNoProxy](/API_docs/constructors/webDocumentNoProxy.html) = \['url' => [string](/API_docs/types/string.html), 'size' => [int](/API_docs/types/int.html), 'mime_type' => [string](/API_docs/types/string.html), 'attributes' => \[[DocumentAttribute](/API_docs/types/DocumentAttribute.html)\], \]; + +*** +

[$webPage](/API_docs/constructors/webPage.html) = \['has_large_media' => [Bool](/API_docs/types/Bool.html), 'id' => [long](/API_docs/types/long.html), 'url' => [string](/API_docs/types/string.html), 'display_url' => [string](/API_docs/types/string.html), 'hash' => [int](/API_docs/types/int.html), 'type' => [string](/API_docs/types/string.html), 'site_name' => [string](/API_docs/types/string.html), 'title' => [string](/API_docs/types/string.html), 'description' => [string](/API_docs/types/string.html), 'photo' => [Photo](/API_docs/types/Photo.html), 'embed_url' => [string](/API_docs/types/string.html), 'embed_type' => [string](/API_docs/types/string.html), 'embed_width' => [int](/API_docs/types/int.html), 'embed_height' => [int](/API_docs/types/int.html), 'duration' => [int](/API_docs/types/int.html), 'author' => [string](/API_docs/types/string.html), 'document' => [Document](/API_docs/types/Document.html), 'cached_page' => [Page](/API_docs/types/Page.html), 'attributes' => \[[WebPageAttribute](/API_docs/types/WebPageAttribute.html)\], \]; + +*** +

[$webPageAttributeStickerSet](/API_docs/constructors/webPageAttributeStickerSet.html) = \['emojis' => [Bool](/API_docs/types/Bool.html), 'text_color' => [Bool](/API_docs/types/Bool.html), 'stickers' => \[[Document](/API_docs/types/Document.html)\], \]; + +*** +

[$webPageAttributeStory](/API_docs/constructors/webPageAttributeStory.html) = \['peer' => [long](/API_docs/types/long.html), 'id' => [int](/API_docs/types/int.html), 'story' => [StoryItem](/API_docs/types/StoryItem.html), \]; + +*** +

[$webPageAttributeTheme](/API_docs/constructors/webPageAttributeTheme.html) = \['documents' => \[[Document](/API_docs/types/Document.html)\], 'settings' => [ThemeSettings](/API_docs/types/ThemeSettings.html), \]; + +*** +

[$webPageEmpty](/API_docs/constructors/webPageEmpty.html) = \['id' => [long](/API_docs/types/long.html), 'url' => [string](/API_docs/types/string.html), \]; + +*** +

[$webPageNotModified](/API_docs/constructors/webPageNotModified.html) = \['cached_page_views' => [int](/API_docs/types/int.html), \]; + +*** +

[$webPagePending](/API_docs/constructors/webPagePending.html) = \['id' => [long](/API_docs/types/long.html), 'url' => [string](/API_docs/types/string.html), 'date' => [int](/API_docs/types/int.html), \]; + +*** +

[$webViewMessageSent](/API_docs/constructors/webViewMessageSent.html) = \['msg_id' => [InputBotInlineMessageID](/API_docs/types/InputBotInlineMessageID.html), \]; + +*** +

[$webViewResultUrl](/API_docs/constructors/webViewResultUrl.html) = \['query_id' => [long](/API_docs/types/long.html), 'url' => [string](/API_docs/types/string.html), \]; + + diff --git a/docs/API_docs/constructors/inlineBotSwitchPM.md b/docs/API_docs/constructors/inlineBotSwitchPM.md new file mode 100644 index 0000000000..720bf921f1 --- /dev/null +++ b/docs/API_docs/constructors/inlineBotSwitchPM.md @@ -0,0 +1,30 @@ +--- +title: "inlineBotSwitchPM" +description: "The bot requested the user to message them in private" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inlineBotSwitchPM +[Back to constructors index](/API_docs/constructors/index.html) + + + +The bot requested the user to message them in private + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[string](/API_docs/types/string.html) | Yes|Text for the button that switches the user to a private chat with the bot and sends the bot a start message with the parameter `start_parameter` (can be empty)| +|start\_param|[string](/API_docs/types/string.html) | Yes|The parameter for the `/start parameter`| + + + +### Type: [InlineBotSwitchPM](/API_docs/types/InlineBotSwitchPM.html) + + +### Example: + +``` +$inlineBotSwitchPM = ['_' => 'inlineBotSwitchPM', 'text' => 'string', 'start_param' => 'string']; +``` diff --git a/docs/API_docs/constructors/inlineBotWebView.md b/docs/API_docs/constructors/inlineBotWebView.md new file mode 100644 index 0000000000..b4c874ca6e --- /dev/null +++ b/docs/API_docs/constructors/inlineBotWebView.md @@ -0,0 +1,30 @@ +--- +title: "inlineBotWebView" +description: "Specifies an inline mode mini app button, shown on top of the inline query results list." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inlineBotWebView +[Back to constructors index](/API_docs/constructors/index.html) + + + +Specifies an [inline mode mini app](https://core.telegram.org/api/bots/webapps#inline-mode-mini-apps) button, shown on top of the inline query results list. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[string](/API_docs/types/string.html) | Yes|Text of the button| +|url|[string](/API_docs/types/string.html) | Yes|Webapp URL| + + + +### Type: [InlineBotWebView](/API_docs/types/InlineBotWebView.html) + + +### Example: + +``` +$inlineBotWebView = ['_' => 'inlineBotWebView', 'text' => 'string', 'url' => 'string']; +``` diff --git a/docs/API_docs/constructors/inlineQueryPeerTypeBotPM.md b/docs/API_docs/constructors/inlineQueryPeerTypeBotPM.md new file mode 100644 index 0000000000..9dc44b1817 --- /dev/null +++ b/docs/API_docs/constructors/inlineQueryPeerTypeBotPM.md @@ -0,0 +1,24 @@ +--- +title: "inlineQueryPeerTypeBotPM" +description: "Peer type: private chat with a bot." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inlineQueryPeerTypeBotPM +[Back to constructors index](/API_docs/constructors/index.html) + + + +Peer type: private chat with a bot. + + + + +### Type: [InlineQueryPeerType](/API_docs/types/InlineQueryPeerType.html) + + +### Example: + +``` +$inlineQueryPeerTypeBotPM = ['_' => 'inlineQueryPeerTypeBotPM']; +``` diff --git a/docs/API_docs/constructors/inlineQueryPeerTypeBroadcast.md b/docs/API_docs/constructors/inlineQueryPeerTypeBroadcast.md new file mode 100644 index 0000000000..8ca800c7ba --- /dev/null +++ b/docs/API_docs/constructors/inlineQueryPeerTypeBroadcast.md @@ -0,0 +1,24 @@ +--- +title: "inlineQueryPeerTypeBroadcast" +description: "Peer type: channel" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inlineQueryPeerTypeBroadcast +[Back to constructors index](/API_docs/constructors/index.html) + + + +Peer type: [channel](https://core.telegram.org/api/channel) + + + + +### Type: [InlineQueryPeerType](/API_docs/types/InlineQueryPeerType.html) + + +### Example: + +``` +$inlineQueryPeerTypeBroadcast = ['_' => 'inlineQueryPeerTypeBroadcast']; +``` diff --git a/docs/API_docs/constructors/inlineQueryPeerTypeChat.md b/docs/API_docs/constructors/inlineQueryPeerTypeChat.md new file mode 100644 index 0000000000..bdb07e511f --- /dev/null +++ b/docs/API_docs/constructors/inlineQueryPeerTypeChat.md @@ -0,0 +1,24 @@ +--- +title: "inlineQueryPeerTypeChat" +description: "Peer type: chat" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inlineQueryPeerTypeChat +[Back to constructors index](/API_docs/constructors/index.html) + + + +Peer type: [chat](https://core.telegram.org/api/channel) + + + + +### Type: [InlineQueryPeerType](/API_docs/types/InlineQueryPeerType.html) + + +### Example: + +``` +$inlineQueryPeerTypeChat = ['_' => 'inlineQueryPeerTypeChat']; +``` diff --git a/docs/API_docs/constructors/inlineQueryPeerTypeMegagroup.md b/docs/API_docs/constructors/inlineQueryPeerTypeMegagroup.md new file mode 100644 index 0000000000..5f3a6cfcd2 --- /dev/null +++ b/docs/API_docs/constructors/inlineQueryPeerTypeMegagroup.md @@ -0,0 +1,24 @@ +--- +title: "inlineQueryPeerTypeMegagroup" +description: "Peer type: supergroup" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inlineQueryPeerTypeMegagroup +[Back to constructors index](/API_docs/constructors/index.html) + + + +Peer type: [supergroup](https://core.telegram.org/api/channel) + + + + +### Type: [InlineQueryPeerType](/API_docs/types/InlineQueryPeerType.html) + + +### Example: + +``` +$inlineQueryPeerTypeMegagroup = ['_' => 'inlineQueryPeerTypeMegagroup']; +``` diff --git a/docs/API_docs/constructors/inlineQueryPeerTypePM.md b/docs/API_docs/constructors/inlineQueryPeerTypePM.md new file mode 100644 index 0000000000..e55a4f7a0a --- /dev/null +++ b/docs/API_docs/constructors/inlineQueryPeerTypePM.md @@ -0,0 +1,24 @@ +--- +title: "inlineQueryPeerTypePM" +description: "Peer type: private chat" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inlineQueryPeerTypePM +[Back to constructors index](/API_docs/constructors/index.html) + + + +Peer type: private chat + + + + +### Type: [InlineQueryPeerType](/API_docs/types/InlineQueryPeerType.html) + + +### Example: + +``` +$inlineQueryPeerTypePM = ['_' => 'inlineQueryPeerTypePM']; +``` diff --git a/docs/API_docs/constructors/inlineQueryPeerTypeSameBotPM.md b/docs/API_docs/constructors/inlineQueryPeerTypeSameBotPM.md new file mode 100644 index 0000000000..5d4868fe35 --- /dev/null +++ b/docs/API_docs/constructors/inlineQueryPeerTypeSameBotPM.md @@ -0,0 +1,24 @@ +--- +title: "inlineQueryPeerTypeSameBotPM" +description: "Peer type: private chat with the bot itself" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inlineQueryPeerTypeSameBotPM +[Back to constructors index](/API_docs/constructors/index.html) + + + +Peer type: private chat with the bot itself + + + + +### Type: [InlineQueryPeerType](/API_docs/types/InlineQueryPeerType.html) + + +### Example: + +``` +$inlineQueryPeerTypeSameBotPM = ['_' => 'inlineQueryPeerTypeSameBotPM']; +``` diff --git a/docs/API_docs/constructors/inputAppEvent.md b/docs/API_docs/constructors/inputAppEvent.md new file mode 100644 index 0000000000..990792664a --- /dev/null +++ b/docs/API_docs/constructors/inputAppEvent.md @@ -0,0 +1,32 @@ +--- +title: "inputAppEvent" +description: "Event that occurred in the application." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputAppEvent +[Back to constructors index](/API_docs/constructors/index.html) + + + +Event that occurred in the application. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|time|[double](/API_docs/types/double.html) | Yes|Client's exact timestamp for the event| +|type|[string](/API_docs/types/string.html) | Yes|Type of event| +|peer|[long](/API_docs/types/long.html) | Yes|Arbitrary numeric value for more convenient selection of certain event types, or events referring to a certain object| +|data|[JSONValue](/API_docs/types/JSONValue.html) | Yes|Details of the event| + + + +### Type: [InputAppEvent](/API_docs/types/InputAppEvent.html) + + +### Example: + +``` +$inputAppEvent = ['_' => 'inputAppEvent', 'time' => double, 'type' => 'string', 'peer' => long, 'data' => JSONValue]; +``` diff --git a/docs/API_docs/constructors/inputBotAppID.md b/docs/API_docs/constructors/inputBotAppID.md new file mode 100644 index 0000000000..c9b5389f57 --- /dev/null +++ b/docs/API_docs/constructors/inputBotAppID.md @@ -0,0 +1,30 @@ +--- +title: "inputBotAppID" +description: "Used to fetch information about a direct link Mini App by its ID" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBotAppID +[Back to constructors index](/API_docs/constructors/index.html) + + + +Used to fetch information about a [direct link Mini App](https://core.telegram.org/api/bots/webapps#direct-link-mini-apps) by its ID + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|[direct link Mini App](https://core.telegram.org/api/bots/webapps#direct-link-mini-apps) ID.| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash, obtained from the [botApp](../constructors/botApp.html) constructor.| + + + +### Type: [InputBotApp](/API_docs/types/InputBotApp.html) + + +### Example: + +``` +$inputBotAppID = ['_' => 'inputBotAppID', 'id' => long, 'access_hash' => long]; +``` diff --git a/docs/API_docs/constructors/inputBotAppShortName.md b/docs/API_docs/constructors/inputBotAppShortName.md new file mode 100644 index 0000000000..5fbd5683cb --- /dev/null +++ b/docs/API_docs/constructors/inputBotAppShortName.md @@ -0,0 +1,30 @@ +--- +title: "inputBotAppShortName" +description: "Used to fetch information about a direct link Mini App by its short name" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBotAppShortName +[Back to constructors index](/API_docs/constructors/index.html) + + + +Used to fetch information about a [direct link Mini App](https://core.telegram.org/api/bots/webapps#direct-link-mini-apps) by its short name + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|bot\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Optional|ID of the bot that owns the bot mini app| +|short\_name|[string](/API_docs/types/string.html) | Yes|Short name, obtained from a [Direct Mini App deep link](https://core.telegram.org/api/links#direct-mini-app-links)| + + + +### Type: [InputBotApp](/API_docs/types/InputBotApp.html) + + +### Example: + +``` +$inputBotAppShortName = ['_' => 'inputBotAppShortName', 'bot_id' => InputUser, 'short_name' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputBotInlineMessageGame.md b/docs/API_docs/constructors/inputBotInlineMessageGame.md new file mode 100644 index 0000000000..bc8a62da23 --- /dev/null +++ b/docs/API_docs/constructors/inputBotInlineMessageGame.md @@ -0,0 +1,35 @@ +--- +title: "inputBotInlineMessageGame" +description: "A game" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBotInlineMessageGame +[Back to constructors index](/API_docs/constructors/index.html) + + + +A game + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Optional|Inline keyboard| + + + +### Type: [InputBotInlineMessage](/API_docs/types/InputBotInlineMessage.html) + + + +## Usage of reply_markup + +You can provide bot API reply_markup objects here. + + +### Example: + +``` +$inputBotInlineMessageGame = ['_' => 'inputBotInlineMessageGame', 'reply_markup' => ReplyMarkup]; +``` diff --git a/docs/API_docs/constructors/inputBotInlineMessageID.md b/docs/API_docs/constructors/inputBotInlineMessageID.md new file mode 100644 index 0000000000..1f1985d383 --- /dev/null +++ b/docs/API_docs/constructors/inputBotInlineMessageID.md @@ -0,0 +1,31 @@ +--- +title: "inputBotInlineMessageID" +description: "Represents a sent inline message from the perspective of a bot (legacy constructor)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBotInlineMessageID +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a sent inline message from the perspective of a bot (legacy constructor) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|dc\_id|[int](/API_docs/types/int.html) | Yes|DC ID to use when working with this inline message| +|id|[long](/API_docs/types/long.html) | Yes|ID of message, contains both the (32-bit, legacy) owner ID and the message ID, used only for Bot API backwards compatibility with 32-bit user ID.| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash of message| + + + +### Type: [InputBotInlineMessageID](/API_docs/types/InputBotInlineMessageID.html) + + +### Example: + +``` +$inputBotInlineMessageID = ['_' => 'inputBotInlineMessageID', 'dc_id' => int, 'id' => long, 'access_hash' => long]; +``` diff --git a/docs/API_docs/constructors/inputBotInlineMessageID64.md b/docs/API_docs/constructors/inputBotInlineMessageID64.md new file mode 100644 index 0000000000..efaef7a72d --- /dev/null +++ b/docs/API_docs/constructors/inputBotInlineMessageID64.md @@ -0,0 +1,32 @@ +--- +title: "inputBotInlineMessageID64" +description: "Represents a sent inline message from the perspective of a bot" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBotInlineMessageID64 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a sent inline message from the perspective of a bot + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|dc\_id|[int](/API_docs/types/int.html) | Yes|DC ID to use when working with this inline message| +|owner\_id|[long](/API_docs/types/long.html) | Yes|ID of the owner of this message| +|id|[int](/API_docs/types/int.html) | Yes|ID of message| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash of message| + + + +### Type: [InputBotInlineMessageID](/API_docs/types/InputBotInlineMessageID.html) + + +### Example: + +``` +$inputBotInlineMessageID64 = ['_' => 'inputBotInlineMessageID64', 'dc_id' => int, 'owner_id' => long, 'id' => int, 'access_hash' => long]; +``` diff --git a/docs/API_docs/constructors/inputBotInlineMessageMediaAuto.md b/docs/API_docs/constructors/inputBotInlineMessageMediaAuto.md new file mode 100644 index 0000000000..11caf76fd6 --- /dev/null +++ b/docs/API_docs/constructors/inputBotInlineMessageMediaAuto.md @@ -0,0 +1,93 @@ +--- +title: "inputBotInlineMessageMediaAuto" +description: "A media" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBotInlineMessageMediaAuto +[Back to constructors index](/API_docs/constructors/index.html) + + + +A media + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|invert\_media|[Bool](/API_docs/types/Bool.html) | Optional|If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.| +|message|[string](/API_docs/types/string.html) | Yes|Caption| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|[Message entities for styled text](https://core.telegram.org/api/entities)| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Optional|Inline keyboard| + + + +### Type: [InputBotInlineMessage](/API_docs/types/InputBotInlineMessage.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$inputBotInlineMessageMediaAuto = ['_' => 'inputBotInlineMessageMediaAuto', 'invert_media' => Bool, 'message' => 'string', 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'reply_markup' => ReplyMarkup]; +``` diff --git a/docs/API_docs/constructors/inputBotInlineMessageMediaContact.md b/docs/API_docs/constructors/inputBotInlineMessageMediaContact.md new file mode 100644 index 0000000000..b68c6e517b --- /dev/null +++ b/docs/API_docs/constructors/inputBotInlineMessageMediaContact.md @@ -0,0 +1,39 @@ +--- +title: "inputBotInlineMessageMediaContact" +description: "A contact" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBotInlineMessageMediaContact +[Back to constructors index](/API_docs/constructors/index.html) + + + +A contact + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|phone\_number|[string](/API_docs/types/string.html) | Yes|Phone number| +|first\_name|[string](/API_docs/types/string.html) | Yes|First name| +|last\_name|[string](/API_docs/types/string.html) | Yes|Last name| +|vcard|[string](/API_docs/types/string.html) | Yes|VCard info| +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Optional|Inline keyboard| + + + +### Type: [InputBotInlineMessage](/API_docs/types/InputBotInlineMessage.html) + + + +## Usage of reply_markup + +You can provide bot API reply_markup objects here. + + +### Example: + +``` +$inputBotInlineMessageMediaContact = ['_' => 'inputBotInlineMessageMediaContact', 'phone_number' => 'string', 'first_name' => 'string', 'last_name' => 'string', 'vcard' => 'string', 'reply_markup' => ReplyMarkup]; +``` diff --git a/docs/API_docs/constructors/inputBotInlineMessageMediaGeo.md b/docs/API_docs/constructors/inputBotInlineMessageMediaGeo.md new file mode 100644 index 0000000000..0f7bdbec29 --- /dev/null +++ b/docs/API_docs/constructors/inputBotInlineMessageMediaGeo.md @@ -0,0 +1,39 @@ +--- +title: "inputBotInlineMessageMediaGeo" +description: "Geolocation" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBotInlineMessageMediaGeo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Geolocation + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|geo\_point|[InputGeoPoint](/API_docs/types/InputGeoPoint.html) | Optional|Geolocation| +|heading|[int](/API_docs/types/int.html) | Optional|For [live locations](https://core.telegram.org/api/live-location), a direction in which the location moves, in degrees; 1-360| +|period|[int](/API_docs/types/int.html) | Optional|Validity period| +|proximity\_notification\_radius|[int](/API_docs/types/int.html) | Optional|For [live locations](https://core.telegram.org/api/live-location), a maximum distance to another chat member for proximity alerts, in meters (0-100000)| +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Optional|Reply markup for bot/inline keyboards| + + + +### Type: [InputBotInlineMessage](/API_docs/types/InputBotInlineMessage.html) + + + +## Usage of reply_markup + +You can provide bot API reply_markup objects here. + + +### Example: + +``` +$inputBotInlineMessageMediaGeo = ['_' => 'inputBotInlineMessageMediaGeo', 'geo_point' => InputGeoPoint, 'heading' => int, 'period' => int, 'proximity_notification_radius' => int, 'reply_markup' => ReplyMarkup]; +``` diff --git a/docs/API_docs/constructors/inputBotInlineMessageMediaInvoice.md b/docs/API_docs/constructors/inputBotInlineMessageMediaInvoice.md new file mode 100644 index 0000000000..79eb378d1d --- /dev/null +++ b/docs/API_docs/constructors/inputBotInlineMessageMediaInvoice.md @@ -0,0 +1,42 @@ +--- +title: "inputBotInlineMessageMediaInvoice" +description: "An invoice" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBotInlineMessageMediaInvoice +[Back to constructors index](/API_docs/constructors/index.html) + + + +An invoice + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|title|[string](/API_docs/types/string.html) | Yes|Product name, 1-32 characters| +|description|[string](/API_docs/types/string.html) | Yes|Product description, 1-255 characters| +|photo|[InputWebDocument](/API_docs/types/InputWebDocument.html) | Optional|Invoice photo| +|invoice|[Invoice](/API_docs/types/Invoice.html) | Yes|The invoice| +|payload|[bytes](/API_docs/types/bytes.html) | Yes|Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes.| +|provider|[string](/API_docs/types/string.html) | Yes|Payments provider token, obtained via [Botfather](https://t.me/botfather)| +|provider\_data|[DataJSON](/API_docs/types/DataJSON.html) | Yes|A JSON-serialized object for data about the invoice, which will be shared with the payment provider. A detailed description of the required fields should be provided by the payment provider.| +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Optional|Inline keyboard| + + + +### Type: [InputBotInlineMessage](/API_docs/types/InputBotInlineMessage.html) + + + +## Usage of reply_markup + +You can provide bot API reply_markup objects here. + + +### Example: + +``` +$inputBotInlineMessageMediaInvoice = ['_' => 'inputBotInlineMessageMediaInvoice', 'title' => 'string', 'description' => 'string', 'photo' => InputWebDocument, 'invoice' => Invoice, 'payload' => 'bytes', 'provider' => 'string', 'provider_data' => DataJSON, 'reply_markup' => ReplyMarkup]; +``` diff --git a/docs/API_docs/constructors/inputBotInlineMessageMediaVenue.md b/docs/API_docs/constructors/inputBotInlineMessageMediaVenue.md new file mode 100644 index 0000000000..aa5c3e72e3 --- /dev/null +++ b/docs/API_docs/constructors/inputBotInlineMessageMediaVenue.md @@ -0,0 +1,41 @@ +--- +title: "inputBotInlineMessageMediaVenue" +description: "Venue" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBotInlineMessageMediaVenue +[Back to constructors index](/API_docs/constructors/index.html) + + + +Venue + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|geo\_point|[InputGeoPoint](/API_docs/types/InputGeoPoint.html) | Optional|Geolocation| +|title|[string](/API_docs/types/string.html) | Yes|Venue name| +|address|[string](/API_docs/types/string.html) | Yes|Address| +|provider|[string](/API_docs/types/string.html) | Yes|Venue provider: currently only "foursquare" and "gplaces" (Google Places) need to be supported| +|venue\_id|[string](/API_docs/types/string.html) | Yes|Venue ID in the provider's database| +|venue\_type|[string](/API_docs/types/string.html) | Yes|Venue type in the provider's database| +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Optional|Inline keyboard| + + + +### Type: [InputBotInlineMessage](/API_docs/types/InputBotInlineMessage.html) + + + +## Usage of reply_markup + +You can provide bot API reply_markup objects here. + + +### Example: + +``` +$inputBotInlineMessageMediaVenue = ['_' => 'inputBotInlineMessageMediaVenue', 'geo_point' => InputGeoPoint, 'title' => 'string', 'address' => 'string', 'provider' => 'string', 'venue_id' => 'string', 'venue_type' => 'string', 'reply_markup' => ReplyMarkup]; +``` diff --git a/docs/API_docs/constructors/inputBotInlineMessageMediaWebPage.md b/docs/API_docs/constructors/inputBotInlineMessageMediaWebPage.md new file mode 100644 index 0000000000..896d59ec6b --- /dev/null +++ b/docs/API_docs/constructors/inputBotInlineMessageMediaWebPage.md @@ -0,0 +1,97 @@ +--- +title: "inputBotInlineMessageMediaWebPage" +description: "Specifies options that will be used to generate the link preview for the message, or even a standalone link preview without an attached message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBotInlineMessageMediaWebPage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Specifies options that will be used to generate the link preview for the message, or even a standalone link preview without an attached message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|invert\_media|[Bool](/API_docs/types/Bool.html) | Optional|If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.| +|force\_large\_media|[Bool](/API_docs/types/Bool.html) | Optional|If set, specifies that a large media preview should be used.| +|force\_small\_media|[Bool](/API_docs/types/Bool.html) | Optional|If set, specifies that a small media preview should be used.| +|optional|[Bool](/API_docs/types/Bool.html) | Optional|If **not** set, a `WEBPAGE_NOT_FOUND` RPC error will be emitted if a webpage preview cannot be generated for the specified `url`; otherwise, no error will be emitted (unless the provided message is also empty, in which case a `MESSAGE_EMPTY` will be emitted, instead).| +|message|[string](/API_docs/types/string.html) | Yes|The message, can be empty.| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|[Message entities for styled text](https://core.telegram.org/api/entities)| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|url|[string](/API_docs/types/string.html) | Yes|The URL to use for the link preview.| +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Optional|Inline keyboard| + + + +### Type: [InputBotInlineMessage](/API_docs/types/InputBotInlineMessage.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$inputBotInlineMessageMediaWebPage = ['_' => 'inputBotInlineMessageMediaWebPage', 'invert_media' => Bool, 'force_large_media' => Bool, 'force_small_media' => Bool, 'optional' => Bool, 'message' => 'string', 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'url' => 'string', 'reply_markup' => ReplyMarkup]; +``` diff --git a/docs/API_docs/constructors/inputBotInlineMessageText.md b/docs/API_docs/constructors/inputBotInlineMessageText.md new file mode 100644 index 0000000000..7e467cc774 --- /dev/null +++ b/docs/API_docs/constructors/inputBotInlineMessageText.md @@ -0,0 +1,94 @@ +--- +title: "inputBotInlineMessageText" +description: "Simple text message" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBotInlineMessageText +[Back to constructors index](/API_docs/constructors/index.html) + + + +Simple text message + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|no\_webpage|[Bool](/API_docs/types/Bool.html) | Optional|Disable webpage preview| +|invert\_media|[Bool](/API_docs/types/Bool.html) | Optional|If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.| +|message|[string](/API_docs/types/string.html) | Yes|Message| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|[Message entities for styled text](https://core.telegram.org/api/entities)| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Optional|Inline keyboard| + + + +### Type: [InputBotInlineMessage](/API_docs/types/InputBotInlineMessage.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$inputBotInlineMessageText = ['_' => 'inputBotInlineMessageText', 'no_webpage' => Bool, 'invert_media' => Bool, 'message' => 'string', 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'reply_markup' => ReplyMarkup]; +``` diff --git a/docs/API_docs/constructors/inputBotInlineResult.md b/docs/API_docs/constructors/inputBotInlineResult.md new file mode 100644 index 0000000000..475dcc5596 --- /dev/null +++ b/docs/API_docs/constructors/inputBotInlineResult.md @@ -0,0 +1,36 @@ +--- +title: "inputBotInlineResult" +description: "An inline bot result" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBotInlineResult +[Back to constructors index](/API_docs/constructors/index.html) + + + +An inline bot result + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[string](/API_docs/types/string.html) | Yes|ID of result| +|type|[string](/API_docs/types/string.html) | Yes|Result type (see [bot API docs](https://core.telegram.org/bots/api#inlinequeryresult))| +|title|[string](/API_docs/types/string.html) | Optional|Result title| +|description|[string](/API_docs/types/string.html) | Optional|Result description| +|url|[string](/API_docs/types/string.html) | Optional|URL of result| +|thumb|[InputWebDocument](/API_docs/types/InputWebDocument.html) | Optional|Thumbnail for result| +|content|[InputWebDocument](/API_docs/types/InputWebDocument.html) | Optional|Result contents| +|send\_message|[InputBotInlineMessage](/API_docs/types/InputBotInlineMessage.html) | Yes|Message to send when the result is selected| + + + +### Type: [InputBotInlineResult](/API_docs/types/InputBotInlineResult.html) + + +### Example: + +``` +$inputBotInlineResult = ['_' => 'inputBotInlineResult', 'id' => 'string', 'type' => 'string', 'title' => 'string', 'description' => 'string', 'url' => 'string', 'thumb' => InputWebDocument, 'content' => InputWebDocument, 'send_message' => InputBotInlineMessage]; +``` diff --git a/docs/API_docs/constructors/inputBotInlineResultDocument.md b/docs/API_docs/constructors/inputBotInlineResultDocument.md new file mode 100644 index 0000000000..4a98ae56cd --- /dev/null +++ b/docs/API_docs/constructors/inputBotInlineResultDocument.md @@ -0,0 +1,34 @@ +--- +title: "inputBotInlineResultDocument" +description: "Document (media of any type except for photos)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBotInlineResultDocument +[Back to constructors index](/API_docs/constructors/index.html) + + + +Document (media of any type except for photos) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[string](/API_docs/types/string.html) | Yes|Result ID| +|type|[string](/API_docs/types/string.html) | Yes|Result type (see [bot API docs](https://core.telegram.org/bots/api#inlinequeryresult))| +|title|[string](/API_docs/types/string.html) | Optional|Result title| +|description|[string](/API_docs/types/string.html) | Optional|Result description| +|document|[MessageMedia, Message, Update or InputDocument](/API_docs/types/InputDocument.html) | Optional|Document to send| +|send\_message|[InputBotInlineMessage](/API_docs/types/InputBotInlineMessage.html) | Yes|Message to send when the result is selected| + + + +### Type: [InputBotInlineResult](/API_docs/types/InputBotInlineResult.html) + + +### Example: + +``` +$inputBotInlineResultDocument = ['_' => 'inputBotInlineResultDocument', 'id' => 'string', 'type' => 'string', 'title' => 'string', 'description' => 'string', 'document' => InputDocument, 'send_message' => InputBotInlineMessage]; +``` diff --git a/docs/API_docs/constructors/inputBotInlineResultGame.md b/docs/API_docs/constructors/inputBotInlineResultGame.md new file mode 100644 index 0000000000..1800c80628 --- /dev/null +++ b/docs/API_docs/constructors/inputBotInlineResultGame.md @@ -0,0 +1,31 @@ +--- +title: "inputBotInlineResultGame" +description: "Game" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBotInlineResultGame +[Back to constructors index](/API_docs/constructors/index.html) + + + +Game + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[string](/API_docs/types/string.html) | Yes|Result ID| +|short\_name|[string](/API_docs/types/string.html) | Yes|Game short name| +|send\_message|[InputBotInlineMessage](/API_docs/types/InputBotInlineMessage.html) | Yes|Message to send when the result is selected| + + + +### Type: [InputBotInlineResult](/API_docs/types/InputBotInlineResult.html) + + +### Example: + +``` +$inputBotInlineResultGame = ['_' => 'inputBotInlineResultGame', 'id' => 'string', 'short_name' => 'string', 'send_message' => InputBotInlineMessage]; +``` diff --git a/docs/API_docs/constructors/inputBotInlineResultPhoto.md b/docs/API_docs/constructors/inputBotInlineResultPhoto.md new file mode 100644 index 0000000000..65117e7661 --- /dev/null +++ b/docs/API_docs/constructors/inputBotInlineResultPhoto.md @@ -0,0 +1,32 @@ +--- +title: "inputBotInlineResultPhoto" +description: "Photo" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBotInlineResultPhoto +[Back to constructors index](/API_docs/constructors/index.html) + + + +Photo + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[string](/API_docs/types/string.html) | Yes|Result ID| +|type|[string](/API_docs/types/string.html) | Yes|Result type (see [bot API docs](https://core.telegram.org/bots/api#inlinequeryresult))| +|photo|[MessageMedia, Message, Update or InputPhoto](/API_docs/types/InputPhoto.html) | Optional|Photo to send| +|send\_message|[InputBotInlineMessage](/API_docs/types/InputBotInlineMessage.html) | Yes|Message to send when the result is selected| + + + +### Type: [InputBotInlineResult](/API_docs/types/InputBotInlineResult.html) + + +### Example: + +``` +$inputBotInlineResultPhoto = ['_' => 'inputBotInlineResultPhoto', 'id' => 'string', 'type' => 'string', 'photo' => InputPhoto, 'send_message' => InputBotInlineMessage]; +``` diff --git a/docs/API_docs/constructors/inputBusinessAwayMessage.md b/docs/API_docs/constructors/inputBusinessAwayMessage.md new file mode 100644 index 0000000000..c86a3b5587 --- /dev/null +++ b/docs/API_docs/constructors/inputBusinessAwayMessage.md @@ -0,0 +1,30 @@ +--- +title: "inputBusinessAwayMessage" +description: "inputBusinessAwayMessage attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBusinessAwayMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|offline\_only|[Bool](/API_docs/types/Bool.html) | Optional| +|shortcut\_id|[int](/API_docs/types/int.html) | Yes| +|schedule|[BusinessAwayMessageSchedule](/API_docs/types/BusinessAwayMessageSchedule.html) | Yes| +|recipients|[InputBusinessRecipients](/API_docs/types/InputBusinessRecipients.html) | Yes| + + + +### Type: [InputBusinessAwayMessage](/API_docs/types/InputBusinessAwayMessage.html) + + +### Example: + +``` +$inputBusinessAwayMessage = ['_' => 'inputBusinessAwayMessage', 'offline_only' => Bool, 'shortcut_id' => int, 'schedule' => BusinessAwayMessageSchedule, 'recipients' => InputBusinessRecipients]; +``` diff --git a/docs/API_docs/constructors/inputBusinessBotRecipients.md b/docs/API_docs/constructors/inputBusinessBotRecipients.md new file mode 100644 index 0000000000..59827a16bc --- /dev/null +++ b/docs/API_docs/constructors/inputBusinessBotRecipients.md @@ -0,0 +1,33 @@ +--- +title: "inputBusinessBotRecipients" +description: "inputBusinessBotRecipients attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBusinessBotRecipients +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|existing\_chats|[Bool](/API_docs/types/Bool.html) | Optional| +|new\_chats|[Bool](/API_docs/types/Bool.html) | Optional| +|contacts|[Bool](/API_docs/types/Bool.html) | Optional| +|non\_contacts|[Bool](/API_docs/types/Bool.html) | Optional| +|exclude\_selected|[Bool](/API_docs/types/Bool.html) | Optional| +|users|Array of [Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Optional| +|exclude\_users|Array of [Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Optional| + + + +### Type: [InputBusinessBotRecipients](/API_docs/types/InputBusinessBotRecipients.html) + + +### Example: + +``` +$inputBusinessBotRecipients = ['_' => 'inputBusinessBotRecipients', 'existing_chats' => Bool, 'new_chats' => Bool, 'contacts' => Bool, 'non_contacts' => Bool, 'exclude_selected' => Bool, 'users' => [InputUser, InputUser], 'exclude_users' => [InputUser, InputUser]]; +``` diff --git a/docs/API_docs/constructors/inputBusinessChatLink.md b/docs/API_docs/constructors/inputBusinessChatLink.md new file mode 100644 index 0000000000..cedc7dfce2 --- /dev/null +++ b/docs/API_docs/constructors/inputBusinessChatLink.md @@ -0,0 +1,90 @@ +--- +title: "inputBusinessChatLink" +description: "inputBusinessChatLink attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBusinessChatLink +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|message|[string](/API_docs/types/string.html) | Yes| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|title|[string](/API_docs/types/string.html) | Optional| + + + +### Type: [InputBusinessChatLink](/API_docs/types/InputBusinessChatLink.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$inputBusinessChatLink = ['_' => 'inputBusinessChatLink', 'message' => 'string', 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'title' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputBusinessGreetingMessage.md b/docs/API_docs/constructors/inputBusinessGreetingMessage.md new file mode 100644 index 0000000000..1ed4d6695e --- /dev/null +++ b/docs/API_docs/constructors/inputBusinessGreetingMessage.md @@ -0,0 +1,29 @@ +--- +title: "inputBusinessGreetingMessage" +description: "inputBusinessGreetingMessage attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBusinessGreetingMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|shortcut\_id|[int](/API_docs/types/int.html) | Yes| +|recipients|[InputBusinessRecipients](/API_docs/types/InputBusinessRecipients.html) | Yes| +|no\_activity\_days|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [InputBusinessGreetingMessage](/API_docs/types/InputBusinessGreetingMessage.html) + + +### Example: + +``` +$inputBusinessGreetingMessage = ['_' => 'inputBusinessGreetingMessage', 'shortcut_id' => int, 'recipients' => InputBusinessRecipients, 'no_activity_days' => int]; +``` diff --git a/docs/API_docs/constructors/inputBusinessIntro.md b/docs/API_docs/constructors/inputBusinessIntro.md new file mode 100644 index 0000000000..658e5f7103 --- /dev/null +++ b/docs/API_docs/constructors/inputBusinessIntro.md @@ -0,0 +1,29 @@ +--- +title: "inputBusinessIntro" +description: "inputBusinessIntro attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBusinessIntro +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|title|[string](/API_docs/types/string.html) | Yes| +|description|[string](/API_docs/types/string.html) | Yes| +|sticker|[MessageMedia, Message, Update or InputDocument](/API_docs/types/InputDocument.html) | Optional| + + + +### Type: [InputBusinessIntro](/API_docs/types/InputBusinessIntro.html) + + +### Example: + +``` +$inputBusinessIntro = ['_' => 'inputBusinessIntro', 'title' => 'string', 'description' => 'string', 'sticker' => InputDocument]; +``` diff --git a/docs/API_docs/constructors/inputBusinessRecipients.md b/docs/API_docs/constructors/inputBusinessRecipients.md new file mode 100644 index 0000000000..7c7fee8ccd --- /dev/null +++ b/docs/API_docs/constructors/inputBusinessRecipients.md @@ -0,0 +1,32 @@ +--- +title: "inputBusinessRecipients" +description: "inputBusinessRecipients attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputBusinessRecipients +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|existing\_chats|[Bool](/API_docs/types/Bool.html) | Optional| +|new\_chats|[Bool](/API_docs/types/Bool.html) | Optional| +|contacts|[Bool](/API_docs/types/Bool.html) | Optional| +|non\_contacts|[Bool](/API_docs/types/Bool.html) | Optional| +|exclude\_selected|[Bool](/API_docs/types/Bool.html) | Optional| +|users|Array of [Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Optional| + + + +### Type: [InputBusinessRecipients](/API_docs/types/InputBusinessRecipients.html) + + +### Example: + +``` +$inputBusinessRecipients = ['_' => 'inputBusinessRecipients', 'existing_chats' => Bool, 'new_chats' => Bool, 'contacts' => Bool, 'non_contacts' => Bool, 'exclude_selected' => Bool, 'users' => [InputUser, InputUser]]; +``` diff --git a/docs/API_docs/constructors/inputChannel.md b/docs/API_docs/constructors/inputChannel.md new file mode 100644 index 0000000000..1118c8639c --- /dev/null +++ b/docs/API_docs/constructors/inputChannel.md @@ -0,0 +1,30 @@ +--- +title: "inputChannel" +description: "Represents a channel" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputChannel +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a channel + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel\_id|[long](/API_docs/types/long.html) | Yes|Channel ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash taken from the [channel](../constructors/channel.html) constructor| + + + +### Type: [InputChannel](/API_docs/types/InputChannel.html) + + +### Example: + +``` +$inputChannel = ['_' => 'inputChannel', 'channel_id' => long, 'access_hash' => long]; +``` diff --git a/docs/API_docs/constructors/inputChannelEmpty.md b/docs/API_docs/constructors/inputChannelEmpty.md new file mode 100644 index 0000000000..e0b5927dfc --- /dev/null +++ b/docs/API_docs/constructors/inputChannelEmpty.md @@ -0,0 +1,24 @@ +--- +title: "inputChannelEmpty" +description: "Represents the absence of a channel" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputChannelEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents the absence of a channel + + + + +### Type: [InputChannel](/API_docs/types/InputChannel.html) + + +### Example: + +``` +$inputChannelEmpty = ['_' => 'inputChannelEmpty']; +``` diff --git a/docs/API_docs/constructors/inputChannelFromMessage.md b/docs/API_docs/constructors/inputChannelFromMessage.md new file mode 100644 index 0000000000..b957d44f27 --- /dev/null +++ b/docs/API_docs/constructors/inputChannelFromMessage.md @@ -0,0 +1,31 @@ +--- +title: "inputChannelFromMessage" +description: "Defines a min channel that was seen in a certain message of a certain chat." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputChannelFromMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines a [min](https://core.telegram.org/api/min) channel that was seen in a certain message of a certain chat. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional|The chat where the channel was seen| +|msg\_id|[int](/API_docs/types/int.html) | Yes|The message ID in the chat where the channel was seen| +|channel\_id|[long](/API_docs/types/long.html) | Yes|The channel ID| + + + +### Type: [InputChannel](/API_docs/types/InputChannel.html) + + +### Example: + +``` +$inputChannelFromMessage = ['_' => 'inputChannelFromMessage', 'peer' => InputPeer, 'msg_id' => int, 'channel_id' => long]; +``` diff --git a/docs/API_docs/constructors/inputChatPhoto.md b/docs/API_docs/constructors/inputChatPhoto.md new file mode 100644 index 0000000000..aa0cec8daf --- /dev/null +++ b/docs/API_docs/constructors/inputChatPhoto.md @@ -0,0 +1,29 @@ +--- +title: "inputChatPhoto" +description: "Existing photo to be set as a chat profile photo." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputChatPhoto +[Back to constructors index](/API_docs/constructors/index.html) + + + +Existing photo to be set as a chat profile photo. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[MessageMedia, Message, Update or InputPhoto](/API_docs/types/InputPhoto.html) | Optional|Existing photo| + + + +### Type: [InputChatPhoto](/API_docs/types/InputChatPhoto.html) + + +### Example: + +``` +$inputChatPhoto = ['_' => 'inputChatPhoto', 'id' => InputPhoto]; +``` diff --git a/docs/API_docs/constructors/inputChatPhotoEmpty.md b/docs/API_docs/constructors/inputChatPhotoEmpty.md new file mode 100644 index 0000000000..7ef5a708c8 --- /dev/null +++ b/docs/API_docs/constructors/inputChatPhotoEmpty.md @@ -0,0 +1,24 @@ +--- +title: "inputChatPhotoEmpty" +description: "Empty constructor, remove group photo." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputChatPhotoEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor, remove group photo. + + + + +### Type: [InputChatPhoto](/API_docs/types/InputChatPhoto.html) + + +### Example: + +``` +$inputChatPhotoEmpty = ['_' => 'inputChatPhotoEmpty']; +``` diff --git a/docs/API_docs/constructors/inputChatUploadedPhoto.md b/docs/API_docs/constructors/inputChatUploadedPhoto.md new file mode 100644 index 0000000000..e5e2851e0e --- /dev/null +++ b/docs/API_docs/constructors/inputChatUploadedPhoto.md @@ -0,0 +1,34 @@ +--- +title: "inputChatUploadedPhoto" +description: "New photo to be set as group profile photo." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputChatUploadedPhoto +[Back to constructors index](/API_docs/constructors/index.html) + + + +New photo to be set as group profile photo. + +The `file`, `video` and `video_emoji_markup` flags are mutually exclusive. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|file|[File path or InputFile](/API_docs/types/InputFile.html) | Optional|File saved in parts using the method [upload.saveFilePart](../methods/upload.saveFilePart.html)| +|video|[File path or InputFile](/API_docs/types/InputFile.html) | Optional|Square video for animated profile picture| +|video\_start\_ts|[double](/API_docs/types/double.html) | Optional|Floating point UNIX timestamp in seconds, indicating the frame of the video/sticker that should be used as static preview; can only be used if `video` or `video_emoji_markup` is set.| +|video\_emoji\_markup|[VideoSize](/API_docs/types/VideoSize.html) | Optional|Animated sticker profile picture, must contain either a [videoSizeEmojiMarkup](../constructors/videoSizeEmojiMarkup.html) or a [videoSizeStickerMarkup](../constructors/videoSizeStickerMarkup.html) constructor.| + + + +### Type: [InputChatPhoto](/API_docs/types/InputChatPhoto.html) + + +### Example: + +``` +$inputChatUploadedPhoto = ['_' => 'inputChatUploadedPhoto', 'file' => InputFile, 'video' => InputFile, 'video_start_ts' => double, 'video_emoji_markup' => VideoSize]; +``` diff --git a/docs/API_docs/constructors/inputChatlistDialogFilter.md b/docs/API_docs/constructors/inputChatlistDialogFilter.md new file mode 100644 index 0000000000..62148c79d8 --- /dev/null +++ b/docs/API_docs/constructors/inputChatlistDialogFilter.md @@ -0,0 +1,29 @@ +--- +title: "inputChatlistDialogFilter" +description: "Folder ID" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputChatlistDialogFilter +[Back to constructors index](/API_docs/constructors/index.html) + + + +Folder ID + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|filter\_id|[int](/API_docs/types/int.html) | Yes|[Folder](https://core.telegram.org/api/folders) ID| + + + +### Type: [InputChatlist](/API_docs/types/InputChatlist.html) + + +### Example: + +``` +$inputChatlistDialogFilter = ['_' => 'inputChatlistDialogFilter', 'filter_id' => int]; +``` diff --git a/docs/API_docs/constructors/inputCheckPasswordEmpty.md b/docs/API_docs/constructors/inputCheckPasswordEmpty.md new file mode 100644 index 0000000000..f09fe04bb3 --- /dev/null +++ b/docs/API_docs/constructors/inputCheckPasswordEmpty.md @@ -0,0 +1,24 @@ +--- +title: "inputCheckPasswordEmpty" +description: "There is no password" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputCheckPasswordEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +There is no password + + + + +### Type: [InputCheckPasswordSRP](/API_docs/types/InputCheckPasswordSRP.html) + + +### Example: + +``` +$inputCheckPasswordEmpty = ['_' => 'inputCheckPasswordEmpty']; +``` diff --git a/docs/API_docs/constructors/inputCheckPasswordSRP.md b/docs/API_docs/constructors/inputCheckPasswordSRP.md new file mode 100644 index 0000000000..728130fecc --- /dev/null +++ b/docs/API_docs/constructors/inputCheckPasswordSRP.md @@ -0,0 +1,31 @@ +--- +title: "inputCheckPasswordSRP" +description: "Constructor for checking the validity of a 2FA SRP password (see SRP)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputCheckPasswordSRP +[Back to constructors index](/API_docs/constructors/index.html) + + + +Constructor for checking the validity of a 2FA SRP password (see [SRP](https://core.telegram.org/api/srp)) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|srp\_id|[long](/API_docs/types/long.html) | Yes|[SRP ID](https://core.telegram.org/api/srp)| +|A|[bytes](/API_docs/types/bytes.html) | Yes|`A` parameter (see [SRP](https://core.telegram.org/api/srp))| +|M1|[bytes](/API_docs/types/bytes.html) | Yes|`M1` parameter (see [SRP](https://core.telegram.org/api/srp))| + + + +### Type: [InputCheckPasswordSRP](/API_docs/types/InputCheckPasswordSRP.html) + + +### Example: + +``` +$inputCheckPasswordSRP = ['_' => 'inputCheckPasswordSRP', 'srp_id' => long, 'A' => 'bytes', 'M1' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/inputClientProxy.md b/docs/API_docs/constructors/inputClientProxy.md new file mode 100644 index 0000000000..4f3ceb8257 --- /dev/null +++ b/docs/API_docs/constructors/inputClientProxy.md @@ -0,0 +1,30 @@ +--- +title: "inputClientProxy" +description: "Info about an MTProxy used to connect." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputClientProxy +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about an [MTProxy](https://core.telegram.org/mtproto/mtproto-transports#transport-obfuscation) used to connect. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|address|[string](/API_docs/types/string.html) | Yes|Proxy address| +|port|[int](/API_docs/types/int.html) | Yes|Proxy port| + + + +### Type: [InputClientProxy](/API_docs/types/InputClientProxy.html) + + +### Example: + +``` +$inputClientProxy = ['_' => 'inputClientProxy', 'address' => 'string', 'port' => int]; +``` diff --git a/docs/API_docs/constructors/inputCollectiblePhone.md b/docs/API_docs/constructors/inputCollectiblePhone.md new file mode 100644 index 0000000000..b57071e929 --- /dev/null +++ b/docs/API_docs/constructors/inputCollectiblePhone.md @@ -0,0 +1,27 @@ +--- +title: "inputCollectiblePhone" +description: "inputCollectiblePhone attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputCollectiblePhone +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|phone|[string](/API_docs/types/string.html) | Yes| + + + +### Type: [InputCollectible](/API_docs/types/InputCollectible.html) + + +### Example: + +``` +$inputCollectiblePhone = ['_' => 'inputCollectiblePhone', 'phone' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputCollectibleUsername.md b/docs/API_docs/constructors/inputCollectibleUsername.md new file mode 100644 index 0000000000..47c104c90f --- /dev/null +++ b/docs/API_docs/constructors/inputCollectibleUsername.md @@ -0,0 +1,27 @@ +--- +title: "inputCollectibleUsername" +description: "inputCollectibleUsername attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputCollectibleUsername +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|username|[string](/API_docs/types/string.html) | Yes| + + + +### Type: [InputCollectible](/API_docs/types/InputCollectible.html) + + +### Example: + +``` +$inputCollectibleUsername = ['_' => 'inputCollectibleUsername', 'username' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputDialogPeer.md b/docs/API_docs/constructors/inputDialogPeer.md new file mode 100644 index 0000000000..e5ac837f98 --- /dev/null +++ b/docs/API_docs/constructors/inputDialogPeer.md @@ -0,0 +1,29 @@ +--- +title: "inputDialogPeer" +description: "A peer" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputDialogPeer +[Back to constructors index](/API_docs/constructors/index.html) + + + +A peer + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional|Peer| + + + +### Type: [InputDialogPeer](/API_docs/types/InputDialogPeer.html) + + +### Example: + +``` +$inputDialogPeer = ['_' => 'inputDialogPeer', 'peer' => InputPeer]; +``` diff --git a/docs/API_docs/constructors/inputDialogPeerFolder.md b/docs/API_docs/constructors/inputDialogPeerFolder.md new file mode 100644 index 0000000000..4447b87c0f --- /dev/null +++ b/docs/API_docs/constructors/inputDialogPeerFolder.md @@ -0,0 +1,29 @@ +--- +title: "inputDialogPeerFolder" +description: "All peers in a peer folder" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputDialogPeerFolder +[Back to constructors index](/API_docs/constructors/index.html) + + + +All peers in a [peer folder](https://core.telegram.org/api/folders#peer-folders) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|folder\_id|[int](/API_docs/types/int.html) | Yes|[Peer folder ID, for more info click here](https://core.telegram.org/api/folders#peer-folders)| + + + +### Type: [InputDialogPeer](/API_docs/types/InputDialogPeer.html) + + +### Example: + +``` +$inputDialogPeerFolder = ['_' => 'inputDialogPeerFolder', 'folder_id' => int]; +``` diff --git a/docs/API_docs/constructors/inputDocument.md b/docs/API_docs/constructors/inputDocument.md new file mode 100644 index 0000000000..9c97fa6964 --- /dev/null +++ b/docs/API_docs/constructors/inputDocument.md @@ -0,0 +1,31 @@ +--- +title: "inputDocument" +description: "Defines a document for subsequent interaction." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputDocument +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines a document for subsequent interaction. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Document ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|**access\_hash** parameter from the [document](../constructors/document.html) constructor| +|file\_reference|[bytes](/API_docs/types/bytes.html) | Yes|[File reference](https://core.telegram.org/api/file_reference)| + + + +### Type: [InputDocument](/API_docs/types/InputDocument.html) + + +### Example: + +``` +$inputDocument = ['_' => 'inputDocument', 'id' => long, 'access_hash' => long, 'file_reference' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/inputDocumentEmpty.md b/docs/API_docs/constructors/inputDocumentEmpty.md new file mode 100644 index 0000000000..e2d090889c --- /dev/null +++ b/docs/API_docs/constructors/inputDocumentEmpty.md @@ -0,0 +1,24 @@ +--- +title: "inputDocumentEmpty" +description: "Empty constructor." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputDocumentEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor. + + + + +### Type: [InputDocument](/API_docs/types/InputDocument.html) + + +### Example: + +``` +$inputDocumentEmpty = ['_' => 'inputDocumentEmpty']; +``` diff --git a/docs/API_docs/constructors/inputDocumentFileLocation.md b/docs/API_docs/constructors/inputDocumentFileLocation.md new file mode 100644 index 0000000000..02c6916d88 --- /dev/null +++ b/docs/API_docs/constructors/inputDocumentFileLocation.md @@ -0,0 +1,32 @@ +--- +title: "inputDocumentFileLocation" +description: "Document location (video, voice, audio, basically every type except photo)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputDocumentFileLocation +[Back to constructors index](/API_docs/constructors/index.html) + + + +Document location (video, voice, audio, basically every type except photo) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Document ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|**access\_hash** parameter from the [document](../constructors/document.html) constructor| +|file\_reference|[bytes](/API_docs/types/bytes.html) | Yes|[File reference](https://core.telegram.org/api/file_reference)| +|thumb\_size|[string](/API_docs/types/string.html) | Yes|Thumbnail size to download the thumbnail| + + + +### Type: [InputFileLocation](/API_docs/types/InputFileLocation.html) + + +### Example: + +``` +$inputDocumentFileLocation = ['_' => 'inputDocumentFileLocation', 'id' => long, 'access_hash' => long, 'file_reference' => 'bytes', 'thumb_size' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputEncryptedChat.md b/docs/API_docs/constructors/inputEncryptedChat.md new file mode 100644 index 0000000000..a410a151c4 --- /dev/null +++ b/docs/API_docs/constructors/inputEncryptedChat.md @@ -0,0 +1,30 @@ +--- +title: "inputEncryptedChat" +description: "Creates an encrypted chat." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputEncryptedChat +[Back to constructors index](/API_docs/constructors/index.html) + + + +Creates an encrypted chat. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chat\_id|[int](/API_docs/types/int.html) | Yes|Chat ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Checking sum from constructor [encryptedChat](../constructors/encryptedChat.html), [encryptedChatWaiting](../constructors/encryptedChatWaiting.html) or [encryptedChatRequested](../constructors/encryptedChatRequested.html)| + + + +### Type: [InputEncryptedChat](/API_docs/types/InputEncryptedChat.html) + + +### Example: + +``` +$inputEncryptedChat = ['_' => 'inputEncryptedChat', 'chat_id' => int, 'access_hash' => long]; +``` diff --git a/docs/API_docs/constructors/inputEncryptedFile.md b/docs/API_docs/constructors/inputEncryptedFile.md new file mode 100644 index 0000000000..5c706cabce --- /dev/null +++ b/docs/API_docs/constructors/inputEncryptedFile.md @@ -0,0 +1,30 @@ +--- +title: "inputEncryptedFile" +description: "Sets forwarded encrypted file for attachment." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputEncryptedFile +[Back to constructors index](/API_docs/constructors/index.html) + + + +Sets forwarded encrypted file for attachment. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|File ID, value of **id** parameter from [encryptedFile](../constructors/encryptedFile.html)| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Checking sum, value of **access\_hash** parameter from [encryptedFile](../constructors/encryptedFile.html)| + + + +### Type: [InputEncryptedFile](/API_docs/types/InputEncryptedFile.html) + + +### Example: + +``` +$inputEncryptedFile = ['_' => 'inputEncryptedFile', 'id' => long, 'access_hash' => long]; +``` diff --git a/docs/API_docs/constructors/inputEncryptedFileBigUploaded.md b/docs/API_docs/constructors/inputEncryptedFileBigUploaded.md new file mode 100644 index 0000000000..0a8f1005fd --- /dev/null +++ b/docs/API_docs/constructors/inputEncryptedFileBigUploaded.md @@ -0,0 +1,31 @@ +--- +title: "inputEncryptedFileBigUploaded" +description: "Assigns a new big encrypted file (over 10 MB in size), saved in parts using the method upload.saveBigFilePart." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputEncryptedFileBigUploaded +[Back to constructors index](/API_docs/constructors/index.html) + + + +Assigns a new big encrypted file (over 10 MB in size), saved in parts using the method [upload.saveBigFilePart](../methods/upload.saveBigFilePart.html). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Random file id, created by the client| +|parts|[int](/API_docs/types/int.html) | Yes|Number of saved parts| +|key\_fingerprint|[int](/API_docs/types/int.html) | Yes|32-bit imprint of the key used to encrypt the file| + + + +### Type: [InputEncryptedFile](/API_docs/types/InputEncryptedFile.html) + + +### Example: + +``` +$inputEncryptedFileBigUploaded = ['_' => 'inputEncryptedFileBigUploaded', 'id' => long, 'parts' => int, 'key_fingerprint' => int]; +``` diff --git a/docs/API_docs/constructors/inputEncryptedFileEmpty.md b/docs/API_docs/constructors/inputEncryptedFileEmpty.md new file mode 100644 index 0000000000..a747f22be7 --- /dev/null +++ b/docs/API_docs/constructors/inputEncryptedFileEmpty.md @@ -0,0 +1,24 @@ +--- +title: "inputEncryptedFileEmpty" +description: "Empty constructor." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputEncryptedFileEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor. + + + + +### Type: [InputEncryptedFile](/API_docs/types/InputEncryptedFile.html) + + +### Example: + +``` +$inputEncryptedFileEmpty = ['_' => 'inputEncryptedFileEmpty']; +``` diff --git a/docs/API_docs/constructors/inputEncryptedFileLocation.md b/docs/API_docs/constructors/inputEncryptedFileLocation.md new file mode 100644 index 0000000000..ffb83d5ff9 --- /dev/null +++ b/docs/API_docs/constructors/inputEncryptedFileLocation.md @@ -0,0 +1,30 @@ +--- +title: "inputEncryptedFileLocation" +description: "Location of encrypted secret chat file." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputEncryptedFileLocation +[Back to constructors index](/API_docs/constructors/index.html) + + + +Location of encrypted secret chat file. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|File ID, **id** parameter value from [encryptedFile](../constructors/encryptedFile.html)| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Checksum, **access\_hash** parameter value from [encryptedFile](../constructors/encryptedFile.html)| + + + +### Type: [InputFileLocation](/API_docs/types/InputFileLocation.html) + + +### Example: + +``` +$inputEncryptedFileLocation = ['_' => 'inputEncryptedFileLocation', 'id' => long, 'access_hash' => long]; +``` diff --git a/docs/API_docs/constructors/inputEncryptedFileUploaded.md b/docs/API_docs/constructors/inputEncryptedFileUploaded.md new file mode 100644 index 0000000000..640281d706 --- /dev/null +++ b/docs/API_docs/constructors/inputEncryptedFileUploaded.md @@ -0,0 +1,32 @@ +--- +title: "inputEncryptedFileUploaded" +description: "Sets new encrypted file saved by parts using upload.saveFilePart method." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputEncryptedFileUploaded +[Back to constructors index](/API_docs/constructors/index.html) + + + +Sets new encrypted file saved by parts using upload.saveFilePart method. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Random file ID created by client| +|parts|[int](/API_docs/types/int.html) | Yes|Number of saved parts| +|md5\_checksum|[string](/API_docs/types/string.html) | Yes|In case [md5-HASH](https://en.wikipedia.org/wiki/MD5) of the (already encrypted) file was transmitted, file content will be checked prior to use| +|key\_fingerprint|[int](/API_docs/types/int.html) | Yes|32-bit fingerprint of the key used to encrypt a file| + + + +### Type: [InputEncryptedFile](/API_docs/types/InputEncryptedFile.html) + + +### Example: + +``` +$inputEncryptedFileUploaded = ['_' => 'inputEncryptedFileUploaded', 'id' => long, 'parts' => int, 'md5_checksum' => 'string', 'key_fingerprint' => int]; +``` diff --git a/docs/API_docs/constructors/inputFile.md b/docs/API_docs/constructors/inputFile.md new file mode 100644 index 0000000000..0669737ce1 --- /dev/null +++ b/docs/API_docs/constructors/inputFile.md @@ -0,0 +1,32 @@ +--- +title: "inputFile" +description: "Defines a file saved in parts using the method upload.saveFilePart." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputFile +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines a file saved in parts using the method [upload.saveFilePart](../methods/upload.saveFilePart.html). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Random file identifier created by the client| +|parts|[int](/API_docs/types/int.html) | Yes|Number of parts saved| +|name|[string](/API_docs/types/string.html) | Yes|Full name of the file| +|md5\_checksum|[string](/API_docs/types/string.html) | Yes|In case the file's [md5-hash](https://en.wikipedia.org/wiki/MD5#MD5_hashes) was passed, contents of the file will be checked prior to use| + + + +### Type: [InputFile](/API_docs/types/InputFile.html) + + +### Example: + +``` +$inputFile = ['_' => 'inputFile', 'id' => long, 'parts' => int, 'name' => 'string', 'md5_checksum' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputFileBig.md b/docs/API_docs/constructors/inputFileBig.md new file mode 100644 index 0000000000..3a00636f0f --- /dev/null +++ b/docs/API_docs/constructors/inputFileBig.md @@ -0,0 +1,31 @@ +--- +title: "inputFileBig" +description: "Assigns a big file (over 10 MB in size), saved in part using the method upload.saveBigFilePart." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputFileBig +[Back to constructors index](/API_docs/constructors/index.html) + + + +Assigns a big file (over 10 MB in size), saved in part using the method [upload.saveBigFilePart](../methods/upload.saveBigFilePart.html). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Random file id, created by the client| +|parts|[int](/API_docs/types/int.html) | Yes|Number of parts saved| +|name|[string](/API_docs/types/string.html) | Yes|Full file name| + + + +### Type: [InputFile](/API_docs/types/InputFile.html) + + +### Example: + +``` +$inputFileBig = ['_' => 'inputFileBig', 'id' => long, 'parts' => int, 'name' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputFileLocation.md b/docs/API_docs/constructors/inputFileLocation.md new file mode 100644 index 0000000000..0fccfb105c --- /dev/null +++ b/docs/API_docs/constructors/inputFileLocation.md @@ -0,0 +1,32 @@ +--- +title: "inputFileLocation" +description: "DEPRECATED location of a photo" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputFileLocation +[Back to constructors index](/API_docs/constructors/index.html) + + + +DEPRECATED location of a photo + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|volume\_id|[long](/API_docs/types/long.html) | Yes|Server volume| +|local\_id|[int](/API_docs/types/int.html) | Yes|File identifier| +|secret|[long](/API_docs/types/long.html) | Yes|Check sum to access the file| +|file\_reference|[bytes](/API_docs/types/bytes.html) | Yes|[File reference](https://core.telegram.org/api/file_reference)| + + + +### Type: [InputFileLocation](/API_docs/types/InputFileLocation.html) + + +### Example: + +``` +$inputFileLocation = ['_' => 'inputFileLocation', 'volume_id' => long, 'local_id' => int, 'secret' => long, 'file_reference' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/inputFolderPeer.md b/docs/API_docs/constructors/inputFolderPeer.md new file mode 100644 index 0000000000..df6f5234f9 --- /dev/null +++ b/docs/API_docs/constructors/inputFolderPeer.md @@ -0,0 +1,30 @@ +--- +title: "inputFolderPeer" +description: "Peer in a folder" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputFolderPeer +[Back to constructors index](/API_docs/constructors/index.html) + + + +Peer in a folder + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional|Peer| +|folder\_id|[int](/API_docs/types/int.html) | Yes|[Peer folder ID, for more info click here](https://core.telegram.org/api/folders#peer-folders)| + + + +### Type: [InputFolderPeer](/API_docs/types/InputFolderPeer.html) + + +### Example: + +``` +$inputFolderPeer = ['_' => 'inputFolderPeer', 'peer' => InputPeer, 'folder_id' => int]; +``` diff --git a/docs/API_docs/constructors/inputGameID.md b/docs/API_docs/constructors/inputGameID.md new file mode 100644 index 0000000000..0f9626f785 --- /dev/null +++ b/docs/API_docs/constructors/inputGameID.md @@ -0,0 +1,30 @@ +--- +title: "inputGameID" +description: "Indicates an already sent game" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputGameID +[Back to constructors index](/API_docs/constructors/index.html) + + + +Indicates an already sent game + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|game ID from [Game](../types/Game.html) constructor| +|access\_hash|[long](/API_docs/types/long.html) | Yes|access hash from [Game](../types/Game.html) constructor| + + + +### Type: [InputGame](/API_docs/types/InputGame.html) + + +### Example: + +``` +$inputGameID = ['_' => 'inputGameID', 'id' => long, 'access_hash' => long]; +``` diff --git a/docs/API_docs/constructors/inputGameShortName.md b/docs/API_docs/constructors/inputGameShortName.md new file mode 100644 index 0000000000..70351d47eb --- /dev/null +++ b/docs/API_docs/constructors/inputGameShortName.md @@ -0,0 +1,30 @@ +--- +title: "inputGameShortName" +description: "Game by short name" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputGameShortName +[Back to constructors index](/API_docs/constructors/index.html) + + + +Game by short name + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|bot\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Optional|The bot that provides the game| +|short\_name|[string](/API_docs/types/string.html) | Yes|The game's short name, usually obtained from a [game link »](https://core.telegram.org/api/links#game-links)| + + + +### Type: [InputGame](/API_docs/types/InputGame.html) + + +### Example: + +``` +$inputGameShortName = ['_' => 'inputGameShortName', 'bot_id' => InputUser, 'short_name' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputGeoPoint.md b/docs/API_docs/constructors/inputGeoPoint.md new file mode 100644 index 0000000000..337ee7e081 --- /dev/null +++ b/docs/API_docs/constructors/inputGeoPoint.md @@ -0,0 +1,31 @@ +--- +title: "inputGeoPoint" +description: "Defines a GeoPoint by its coordinates." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputGeoPoint +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines a GeoPoint by its coordinates. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|lat|[double](/API_docs/types/double.html) | Yes|Latitude| +|long|[double](/API_docs/types/double.html) | Yes|Longitude| +|accuracy\_radius|[int](/API_docs/types/int.html) | Optional|The estimated horizontal accuracy of the location, in meters; as defined by the sender.| + + + +### Type: [InputGeoPoint](/API_docs/types/InputGeoPoint.html) + + +### Example: + +``` +$inputGeoPoint = ['_' => 'inputGeoPoint', 'lat' => double, 'long' => double, 'accuracy_radius' => int]; +``` diff --git a/docs/API_docs/constructors/inputGeoPointEmpty.md b/docs/API_docs/constructors/inputGeoPointEmpty.md new file mode 100644 index 0000000000..4f426be2d1 --- /dev/null +++ b/docs/API_docs/constructors/inputGeoPointEmpty.md @@ -0,0 +1,24 @@ +--- +title: "inputGeoPointEmpty" +description: "Empty GeoPoint constructor." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputGeoPointEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty GeoPoint constructor. + + + + +### Type: [InputGeoPoint](/API_docs/types/InputGeoPoint.html) + + +### Example: + +``` +$inputGeoPointEmpty = ['_' => 'inputGeoPointEmpty']; +``` diff --git a/docs/API_docs/constructors/inputGroupCall.md b/docs/API_docs/constructors/inputGroupCall.md new file mode 100644 index 0000000000..225940837c --- /dev/null +++ b/docs/API_docs/constructors/inputGroupCall.md @@ -0,0 +1,30 @@ +--- +title: "inputGroupCall" +description: "Points to a specific group call" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputGroupCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +Points to a specific group call + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Group call ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Group call access hash| + + + +### Type: [InputGroupCall](/API_docs/types/InputGroupCall.html) + + +### Example: + +``` +$inputGroupCall = ['_' => 'inputGroupCall', 'id' => long, 'access_hash' => long]; +``` diff --git a/docs/API_docs/constructors/inputGroupCallStream.md b/docs/API_docs/constructors/inputGroupCallStream.md new file mode 100644 index 0000000000..0b7a503aa1 --- /dev/null +++ b/docs/API_docs/constructors/inputGroupCallStream.md @@ -0,0 +1,33 @@ +--- +title: "inputGroupCallStream" +description: "Chunk of a livestream" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputGroupCallStream +[Back to constructors index](/API_docs/constructors/index.html) + + + +Chunk of a livestream + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | Yes|Livestream info| +|time\_ms|[long](/API_docs/types/long.html) | Yes|Timestamp in milliseconds| +|scale|[int](/API_docs/types/int.html) | Yes|Specifies the duration of the video segment to fetch in milliseconds, by bitshifting `1000` to the right `scale` times: `duration_ms := 1000 >> scale`| +|video\_channel|[int](/API_docs/types/int.html) | Optional|Selected video channel| +|video\_quality|[int](/API_docs/types/int.html) | Optional|Selected video quality (0 = lowest, 1 = medium, 2 = best)| + + + +### Type: [InputFileLocation](/API_docs/types/InputFileLocation.html) + + +### Example: + +``` +$inputGroupCallStream = ['_' => 'inputGroupCallStream', 'call' => InputGroupCall, 'time_ms' => long, 'scale' => int, 'video_channel' => int, 'video_quality' => int]; +``` diff --git a/docs/API_docs/constructors/inputInvoiceMessage.md b/docs/API_docs/constructors/inputInvoiceMessage.md new file mode 100644 index 0000000000..956267d306 --- /dev/null +++ b/docs/API_docs/constructors/inputInvoiceMessage.md @@ -0,0 +1,30 @@ +--- +title: "inputInvoiceMessage" +description: "An invoice contained in a messageMediaInvoice message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputInvoiceMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +An invoice contained in a [messageMediaInvoice](../constructors/messageMediaInvoice.html) message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional|Chat where the invoice was sent| +|msg\_id|[int](/API_docs/types/int.html) | Yes|Message ID| + + + +### Type: [InputInvoice](/API_docs/types/InputInvoice.html) + + +### Example: + +``` +$inputInvoiceMessage = ['_' => 'inputInvoiceMessage', 'peer' => InputPeer, 'msg_id' => int]; +``` diff --git a/docs/API_docs/constructors/inputInvoicePremiumGiftCode.md b/docs/API_docs/constructors/inputInvoicePremiumGiftCode.md new file mode 100644 index 0000000000..2e6c729128 --- /dev/null +++ b/docs/API_docs/constructors/inputInvoicePremiumGiftCode.md @@ -0,0 +1,30 @@ +--- +title: "inputInvoicePremiumGiftCode" +description: "Used if the user wishes to start a channel giveaway or send some giftcodes to members of a channel, in exchange for boosts." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputInvoicePremiumGiftCode +[Back to constructors index](/API_docs/constructors/index.html) + + + +Used if the user wishes to start a channel [giveaway](https://core.telegram.org/api/giveaways) or send some [giftcodes](https://core.telegram.org/api/giveaways) to members of a channel, in exchange for [boosts](https://core.telegram.org/api/boost). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|purpose|[InputStorePaymentPurpose](/API_docs/types/InputStorePaymentPurpose.html) | Yes|Should be populated with [inputStorePaymentPremiumGiveaway](../constructors/inputStorePaymentPremiumGiveaway.html) for [giveaways](https://core.telegram.org/api/giveaways) and [inputStorePaymentPremiumGiftCode](../constructors/inputStorePaymentPremiumGiftCode.html) for [gifts](https://core.telegram.org/api/giveaways).| +|option|[PremiumGiftCodeOption](/API_docs/types/PremiumGiftCodeOption.html) | Yes|Should be populated with one of the giveaway options returned by [payments.getPremiumGiftCodeOptions](../methods/payments.getPremiumGiftCodeOptions.html), see the [giveaways »](https://core.telegram.org/api/giveaways) documentation for more info.| + + + +### Type: [InputInvoice](/API_docs/types/InputInvoice.html) + + +### Example: + +``` +$inputInvoicePremiumGiftCode = ['_' => 'inputInvoicePremiumGiftCode', 'purpose' => InputStorePaymentPurpose, 'option' => PremiumGiftCodeOption]; +``` diff --git a/docs/API_docs/constructors/inputInvoiceSlug.md b/docs/API_docs/constructors/inputInvoiceSlug.md new file mode 100644 index 0000000000..29a6f4ad9c --- /dev/null +++ b/docs/API_docs/constructors/inputInvoiceSlug.md @@ -0,0 +1,29 @@ +--- +title: "inputInvoiceSlug" +description: "An invoice slug taken from an invoice deep link or from the premium_invoice_slug app config parameter »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputInvoiceSlug +[Back to constructors index](/API_docs/constructors/index.html) + + + +An invoice slug taken from an [invoice deep link](https://core.telegram.org/api/links#invoice-links) or from the [`premium_invoice_slug` app config parameter »](https://core.telegram.org/api/config#premium-invoice-slug) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|slug|[string](/API_docs/types/string.html) | Yes|The invoice slug| + + + +### Type: [InputInvoice](/API_docs/types/InputInvoice.html) + + +### Example: + +``` +$inputInvoiceSlug = ['_' => 'inputInvoiceSlug', 'slug' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputKeyboardButtonRequestPeer.md b/docs/API_docs/constructors/inputKeyboardButtonRequestPeer.md new file mode 100644 index 0000000000..ba8b082c53 --- /dev/null +++ b/docs/API_docs/constructors/inputKeyboardButtonRequestPeer.md @@ -0,0 +1,33 @@ +--- +title: "inputKeyboardButtonRequestPeer" +description: "inputKeyboardButtonRequestPeer attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputKeyboardButtonRequestPeer +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|name\_requested|[Bool](/API_docs/types/Bool.html) | Optional| +|username\_requested|[Bool](/API_docs/types/Bool.html) | Optional| +|photo\_requested|[Bool](/API_docs/types/Bool.html) | Optional| +|text|[string](/API_docs/types/string.html) | Yes| +|button\_id|[int](/API_docs/types/int.html) | Yes| +|peer\_type|[RequestPeerType](/API_docs/types/RequestPeerType.html) | Yes| +|max\_quantity|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [KeyboardButton](/API_docs/types/KeyboardButton.html) + + +### Example: + +``` +$inputKeyboardButtonRequestPeer = ['_' => 'inputKeyboardButtonRequestPeer', 'name_requested' => Bool, 'username_requested' => Bool, 'photo_requested' => Bool, 'text' => 'string', 'button_id' => int, 'peer_type' => RequestPeerType, 'max_quantity' => int]; +``` diff --git a/docs/API_docs/constructors/inputKeyboardButtonUrlAuth.md b/docs/API_docs/constructors/inputKeyboardButtonUrlAuth.md new file mode 100644 index 0000000000..622667417f --- /dev/null +++ b/docs/API_docs/constructors/inputKeyboardButtonUrlAuth.md @@ -0,0 +1,33 @@ +--- +title: "inputKeyboardButtonUrlAuth" +description: "Button to request a user to authorize via URL using Seamless Telegram Login." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputKeyboardButtonUrlAuth +[Back to constructors index](/API_docs/constructors/index.html) + + + +Button to request a user to [authorize](../methods/messages.acceptUrlAuth.html) via URL using [Seamless Telegram Login](https://telegram.org/blog/privacy-discussions-web-bots#meet-seamless-web-bots). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|request\_write\_access|[Bool](/API_docs/types/Bool.html) | Optional|Set this flag to request the permission for your bot to send messages to the user.| +|text|[string](/API_docs/types/string.html) | Yes|Button text| +|fwd\_text|[string](/API_docs/types/string.html) | Optional|New text of the button in forwarded messages.| +|url|[string](/API_docs/types/string.html) | Yes|An HTTP URL to be opened with user authorization data added to the query string when the button is pressed. If the user refuses to provide authorization data, the original URL without information about the user will be opened. The data added is the same as described in [Receiving authorization data](https://core.telegram.org/widgets/login#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](https://core.telegram.org/widgets/login#checking-authorization).| +|bot|[InputUser](/API_docs/types/InputUser.html) | Optional|Username of a bot, which will be used for user authorization. See [Setting up a bot](https://core.telegram.org/widgets/login#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](https://core.telegram.org/widgets/login#linking-your-domain-to-the-bot) for more details.| + + + +### Type: [KeyboardButton](/API_docs/types/KeyboardButton.html) + + +### Example: + +``` +$inputKeyboardButtonUrlAuth = ['_' => 'inputKeyboardButtonUrlAuth', 'request_write_access' => Bool, 'text' => 'string', 'fwd_text' => 'string', 'url' => 'string', 'bot' => InputUser]; +``` diff --git a/docs/API_docs/constructors/inputKeyboardButtonUserProfile.md b/docs/API_docs/constructors/inputKeyboardButtonUserProfile.md new file mode 100644 index 0000000000..f3e5ddfae9 --- /dev/null +++ b/docs/API_docs/constructors/inputKeyboardButtonUserProfile.md @@ -0,0 +1,30 @@ +--- +title: "inputKeyboardButtonUserProfile" +description: "Button that links directly to a user profile" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputKeyboardButtonUserProfile +[Back to constructors index](/API_docs/constructors/index.html) + + + +Button that links directly to a user profile + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[string](/API_docs/types/string.html) | Yes|Button text| +|user\_id|[InputUser](/API_docs/types/InputUser.html) | Optional|User ID| + + + +### Type: [KeyboardButton](/API_docs/types/KeyboardButton.html) + + +### Example: + +``` +$inputKeyboardButtonUserProfile = ['_' => 'inputKeyboardButtonUserProfile', 'text' => 'string', 'user_id' => InputUser]; +``` diff --git a/docs/API_docs/constructors/inputMediaAreaChannelPost.md b/docs/API_docs/constructors/inputMediaAreaChannelPost.md new file mode 100644 index 0000000000..51d4f310d4 --- /dev/null +++ b/docs/API_docs/constructors/inputMediaAreaChannelPost.md @@ -0,0 +1,31 @@ +--- +title: "inputMediaAreaChannelPost" +description: "Represents a channel post" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMediaAreaChannelPost +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a channel post + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|coordinates|[MediaAreaCoordinates](/API_docs/types/MediaAreaCoordinates.html) | Yes|The size and location of the media area corresponding to the location sticker on top of the story media.| +|channel|[InputChannel](/API_docs/types/InputChannel.html) | Optional|The channel that posted the message| +|msg\_id|[int](/API_docs/types/int.html) | Yes|ID of the channel message| + + + +### Type: [MediaArea](/API_docs/types/MediaArea.html) + + +### Example: + +``` +$inputMediaAreaChannelPost = ['_' => 'inputMediaAreaChannelPost', 'coordinates' => MediaAreaCoordinates, 'channel' => InputChannel, 'msg_id' => int]; +``` diff --git a/docs/API_docs/constructors/inputMediaAreaVenue.md b/docs/API_docs/constructors/inputMediaAreaVenue.md new file mode 100644 index 0000000000..1dd0774d6f --- /dev/null +++ b/docs/API_docs/constructors/inputMediaAreaVenue.md @@ -0,0 +1,31 @@ +--- +title: "inputMediaAreaVenue" +description: "Represents a location tag attached to a story, with additional venue information." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMediaAreaVenue +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a [location tag](https://core.telegram.org/api/stories#media-areas) attached to a [story](https://core.telegram.org/api/stories), with additional venue information. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|coordinates|[MediaAreaCoordinates](/API_docs/types/MediaAreaCoordinates.html) | Yes|The size and location of the media area corresponding to the location sticker on top of the story media.| +|query\_id|[long](/API_docs/types/long.html) | Yes|The `query_id` from [messages.botResults](../constructors/messages.botResults.html), see [here »](https://core.telegram.org/api/stories#media-areas) for more info.| +|result\_id|[string](/API_docs/types/string.html) | Yes|The `id` of the chosen result, see [here »](https://core.telegram.org/api/stories#media-areas) for more info.| + + + +### Type: [MediaArea](/API_docs/types/MediaArea.html) + + +### Example: + +``` +$inputMediaAreaVenue = ['_' => 'inputMediaAreaVenue', 'coordinates' => MediaAreaCoordinates, 'query_id' => long, 'result_id' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputMediaContact.md b/docs/API_docs/constructors/inputMediaContact.md new file mode 100644 index 0000000000..b499b55086 --- /dev/null +++ b/docs/API_docs/constructors/inputMediaContact.md @@ -0,0 +1,32 @@ +--- +title: "inputMediaContact" +description: "Phone book contact" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMediaContact +[Back to constructors index](/API_docs/constructors/index.html) + + + +Phone book contact + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|phone\_number|[string](/API_docs/types/string.html) | Yes|Phone number| +|first\_name|[string](/API_docs/types/string.html) | Yes|Contact's first name| +|last\_name|[string](/API_docs/types/string.html) | Yes|Contact's last name| +|vcard|[string](/API_docs/types/string.html) | Yes|Contact vcard| + + + +### Type: [InputMedia](/API_docs/types/InputMedia.html) + + +### Example: + +``` +$inputMediaContact = ['_' => 'inputMediaContact', 'phone_number' => 'string', 'first_name' => 'string', 'last_name' => 'string', 'vcard' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputMediaDice.md b/docs/API_docs/constructors/inputMediaDice.md new file mode 100644 index 0000000000..381dba3589 --- /dev/null +++ b/docs/API_docs/constructors/inputMediaDice.md @@ -0,0 +1,29 @@ +--- +title: "inputMediaDice" +description: "Send a dice-based animated sticker" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMediaDice +[Back to constructors index](/API_docs/constructors/index.html) + + + +Send a [dice-based animated sticker](https://core.telegram.org/api/dice) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|emoticon|[string](/API_docs/types/string.html) | Yes|The emoji, for now 🏀, 🎲 and 🎯 are supported| + + + +### Type: [InputMedia](/API_docs/types/InputMedia.html) + + +### Example: + +``` +$inputMediaDice = ['_' => 'inputMediaDice', 'emoticon' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputMediaDocument.md b/docs/API_docs/constructors/inputMediaDocument.md new file mode 100644 index 0000000000..54904cae7e --- /dev/null +++ b/docs/API_docs/constructors/inputMediaDocument.md @@ -0,0 +1,32 @@ +--- +title: "inputMediaDocument" +description: "Forwarded document" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMediaDocument +[Back to constructors index](/API_docs/constructors/index.html) + + + +Forwarded document + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|spoiler|[Bool](/API_docs/types/Bool.html) | Optional|Whether this media should be hidden behind a spoiler warning| +|id|[MessageMedia, Message, Update or InputDocument](/API_docs/types/InputDocument.html) | Optional|The document to be forwarded.| +|ttl\_seconds|[int](/API_docs/types/int.html) | Optional|Time to live of self-destructing document| +|query|[string](/API_docs/types/string.html) | Optional|Text query or emoji that was used by the user to find this sticker or GIF: used to improve search result relevance.| + + + +### Type: [InputMedia](/API_docs/types/InputMedia.html) + + +### Example: + +``` +$inputMediaDocument = ['_' => 'inputMediaDocument', 'spoiler' => Bool, 'id' => InputDocument, 'ttl_seconds' => int, 'query' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputMediaDocumentExternal.md b/docs/API_docs/constructors/inputMediaDocumentExternal.md new file mode 100644 index 0000000000..a2926b253a --- /dev/null +++ b/docs/API_docs/constructors/inputMediaDocumentExternal.md @@ -0,0 +1,31 @@ +--- +title: "inputMediaDocumentExternal" +description: "Document that will be downloaded by the telegram servers" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMediaDocumentExternal +[Back to constructors index](/API_docs/constructors/index.html) + + + +Document that will be downloaded by the telegram servers + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|spoiler|[Bool](/API_docs/types/Bool.html) | Optional|Whether this media should be hidden behind a spoiler warning| +|url|[string](/API_docs/types/string.html) | Yes|URL of the document| +|ttl\_seconds|[int](/API_docs/types/int.html) | Optional|Self-destruct time to live of document| + + + +### Type: [InputMedia](/API_docs/types/InputMedia.html) + + +### Example: + +``` +$inputMediaDocumentExternal = ['_' => 'inputMediaDocumentExternal', 'spoiler' => Bool, 'url' => 'string', 'ttl_seconds' => int]; +``` diff --git a/docs/API_docs/constructors/inputMediaEmpty.md b/docs/API_docs/constructors/inputMediaEmpty.md new file mode 100644 index 0000000000..ceeb947fd0 --- /dev/null +++ b/docs/API_docs/constructors/inputMediaEmpty.md @@ -0,0 +1,24 @@ +--- +title: "inputMediaEmpty" +description: "Empty media content of a message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMediaEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty media content of a message. + + + + +### Type: [InputMedia](/API_docs/types/InputMedia.html) + + +### Example: + +``` +$inputMediaEmpty = ['_' => 'inputMediaEmpty']; +``` diff --git a/docs/API_docs/constructors/inputMediaGame.md b/docs/API_docs/constructors/inputMediaGame.md new file mode 100644 index 0000000000..a92620ce18 --- /dev/null +++ b/docs/API_docs/constructors/inputMediaGame.md @@ -0,0 +1,29 @@ +--- +title: "inputMediaGame" +description: "A game" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMediaGame +[Back to constructors index](/API_docs/constructors/index.html) + + + +A game + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[InputGame](/API_docs/types/InputGame.html) | Yes|The game to forward| + + + +### Type: [InputMedia](/API_docs/types/InputMedia.html) + + +### Example: + +``` +$inputMediaGame = ['_' => 'inputMediaGame', 'id' => InputGame]; +``` diff --git a/docs/API_docs/constructors/inputMediaGeoLive.md b/docs/API_docs/constructors/inputMediaGeoLive.md new file mode 100644 index 0000000000..fa747c3524 --- /dev/null +++ b/docs/API_docs/constructors/inputMediaGeoLive.md @@ -0,0 +1,33 @@ +--- +title: "inputMediaGeoLive" +description: "Live geolocation" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMediaGeoLive +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Live geolocation](https://core.telegram.org/api/live-location) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|stopped|[Bool](/API_docs/types/Bool.html) | Optional|Whether sending of the geolocation was stopped| +|geo\_point|[InputGeoPoint](/API_docs/types/InputGeoPoint.html) | Optional|Current geolocation| +|heading|[int](/API_docs/types/int.html) | Optional|For [live locations](https://core.telegram.org/api/live-location), a direction in which the location moves, in degrees; 1-360.| +|period|[int](/API_docs/types/int.html) | Optional|Validity period of the current location| +|proximity\_notification\_radius|[int](/API_docs/types/int.html) | Optional|For [live locations](https://core.telegram.org/api/live-location), a maximum distance to another chat member for proximity alerts, in meters (0-100000)| + + + +### Type: [InputMedia](/API_docs/types/InputMedia.html) + + +### Example: + +``` +$inputMediaGeoLive = ['_' => 'inputMediaGeoLive', 'stopped' => Bool, 'geo_point' => InputGeoPoint, 'heading' => int, 'period' => int, 'proximity_notification_radius' => int]; +``` diff --git a/docs/API_docs/constructors/inputMediaGeoPoint.md b/docs/API_docs/constructors/inputMediaGeoPoint.md new file mode 100644 index 0000000000..3cb4de3d44 --- /dev/null +++ b/docs/API_docs/constructors/inputMediaGeoPoint.md @@ -0,0 +1,29 @@ +--- +title: "inputMediaGeoPoint" +description: "Map." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMediaGeoPoint +[Back to constructors index](/API_docs/constructors/index.html) + + + +Map. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|geo\_point|[InputGeoPoint](/API_docs/types/InputGeoPoint.html) | Optional|GeoPoint| + + + +### Type: [InputMedia](/API_docs/types/InputMedia.html) + + +### Example: + +``` +$inputMediaGeoPoint = ['_' => 'inputMediaGeoPoint', 'geo_point' => InputGeoPoint]; +``` diff --git a/docs/API_docs/constructors/inputMediaInvoice.md b/docs/API_docs/constructors/inputMediaInvoice.md new file mode 100644 index 0000000000..ce5868cb83 --- /dev/null +++ b/docs/API_docs/constructors/inputMediaInvoice.md @@ -0,0 +1,37 @@ +--- +title: "inputMediaInvoice" +description: "Generated invoice of a bot payment" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMediaInvoice +[Back to constructors index](/API_docs/constructors/index.html) + + + +Generated invoice of a [bot payment](https://core.telegram.org/bots/payments) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|title|[string](/API_docs/types/string.html) | Yes|Product name, 1-32 characters| +|description|[string](/API_docs/types/string.html) | Yes|Product description, 1-255 characters| +|photo|[InputWebDocument](/API_docs/types/InputWebDocument.html) | Optional|URL of the product photo for the invoice. Can be a photo of the goods or a marketing image for a service. People like it better when they see what they are paying for.| +|invoice|[Invoice](/API_docs/types/Invoice.html) | Yes|The actual invoice| +|payload|[bytes](/API_docs/types/bytes.html) | Yes|Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes.| +|provider|[string](/API_docs/types/string.html) | Yes|Payments provider token, obtained via [Botfather](https://t.me/botfather)| +|provider\_data|[DataJSON](/API_docs/types/DataJSON.html) | Yes|JSON-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\_param|[string](/API_docs/types/string.html) | Optional|Unique [bot deep links start parameter](https://core.telegram.org/api/links#bot-links). If present, forwarded copies of the sent message will have a URL button with a [deep link](https://core.telegram.org/api/links#bot-links) to the bot (instead of a Pay button), with the value used as the start parameter. If absent, forwarded copies of the sent message will have a Pay button, allowing multiple users to pay directly from the forwarded message, using the same invoice.| +|extended\_media|[MessageMedia, Message, Update or InputMedia](/API_docs/types/InputMedia.html) | Optional|Extended media| + + + +### Type: [InputMedia](/API_docs/types/InputMedia.html) + + +### Example: + +``` +$inputMediaInvoice = ['_' => 'inputMediaInvoice', 'title' => 'string', 'description' => 'string', 'photo' => InputWebDocument, 'invoice' => Invoice, 'payload' => 'bytes', 'provider' => 'string', 'provider_data' => DataJSON, 'start_param' => 'string', 'extended_media' => InputMedia]; +``` diff --git a/docs/API_docs/constructors/inputMediaPhoto.md b/docs/API_docs/constructors/inputMediaPhoto.md new file mode 100644 index 0000000000..d5aad56900 --- /dev/null +++ b/docs/API_docs/constructors/inputMediaPhoto.md @@ -0,0 +1,31 @@ +--- +title: "inputMediaPhoto" +description: "Forwarded photo" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMediaPhoto +[Back to constructors index](/API_docs/constructors/index.html) + + + +Forwarded photo + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|spoiler|[Bool](/API_docs/types/Bool.html) | Optional|Whether this media should be hidden behind a spoiler warning| +|id|[MessageMedia, Message, Update or InputPhoto](/API_docs/types/InputPhoto.html) | Optional|Photo to be forwarded| +|ttl\_seconds|[int](/API_docs/types/int.html) | Optional|Time to live in seconds of self-destructing photo| + + + +### Type: [InputMedia](/API_docs/types/InputMedia.html) + + +### Example: + +``` +$inputMediaPhoto = ['_' => 'inputMediaPhoto', 'spoiler' => Bool, 'id' => InputPhoto, 'ttl_seconds' => int]; +``` diff --git a/docs/API_docs/constructors/inputMediaPhotoExternal.md b/docs/API_docs/constructors/inputMediaPhotoExternal.md new file mode 100644 index 0000000000..6fa1eed5e8 --- /dev/null +++ b/docs/API_docs/constructors/inputMediaPhotoExternal.md @@ -0,0 +1,31 @@ +--- +title: "inputMediaPhotoExternal" +description: "New photo that will be uploaded by the server using the specified URL" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMediaPhotoExternal +[Back to constructors index](/API_docs/constructors/index.html) + + + +New photo that will be uploaded by the server using the specified URL + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|spoiler|[Bool](/API_docs/types/Bool.html) | Optional|Whether this media should be hidden behind a spoiler warning| +|url|[string](/API_docs/types/string.html) | Yes|URL of the photo| +|ttl\_seconds|[int](/API_docs/types/int.html) | Optional|Self-destruct time to live of photo| + + + +### Type: [InputMedia](/API_docs/types/InputMedia.html) + + +### Example: + +``` +$inputMediaPhotoExternal = ['_' => 'inputMediaPhotoExternal', 'spoiler' => Bool, 'url' => 'string', 'ttl_seconds' => int]; +``` diff --git a/docs/API_docs/constructors/inputMediaPoll.md b/docs/API_docs/constructors/inputMediaPoll.md new file mode 100644 index 0000000000..b7a35fd93a --- /dev/null +++ b/docs/API_docs/constructors/inputMediaPoll.md @@ -0,0 +1,32 @@ +--- +title: "inputMediaPoll" +description: "A poll" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMediaPoll +[Back to constructors index](/API_docs/constructors/index.html) + + + +A poll + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|poll|[Poll](/API_docs/types/Poll.html) | Yes|The poll to send| +|correct\_answers|Array of [bytes](/API_docs/types/bytes.html) | Optional|Correct answer IDs (for quiz polls)| +|solution|[string](/API_docs/types/string.html) | Optional|Explanation of quiz solution| +|solution\_entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|[Message entities for styled text](https://core.telegram.org/api/entities)| + + + +### Type: [InputMedia](/API_docs/types/InputMedia.html) + + +### Example: + +``` +$inputMediaPoll = ['_' => 'inputMediaPoll', 'poll' => Poll, 'correct_answers' => ['bytes', 'bytes'], 'solution' => 'string', 'solution_entities' => [MessageEntity, MessageEntity]]; +``` diff --git a/docs/API_docs/constructors/inputMediaStory.md b/docs/API_docs/constructors/inputMediaStory.md new file mode 100644 index 0000000000..49d5c859e1 --- /dev/null +++ b/docs/API_docs/constructors/inputMediaStory.md @@ -0,0 +1,30 @@ +--- +title: "inputMediaStory" +description: "Forwarded story" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMediaStory +[Back to constructors index](/API_docs/constructors/index.html) + + + +Forwarded story + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional|Peer where the story was posted| +|id|[int](/API_docs/types/int.html) | Yes|Story ID| + + + +### Type: [InputMedia](/API_docs/types/InputMedia.html) + + +### Example: + +``` +$inputMediaStory = ['_' => 'inputMediaStory', 'peer' => InputPeer, 'id' => int]; +``` diff --git a/docs/API_docs/constructors/inputMediaUploadedDocument.md b/docs/API_docs/constructors/inputMediaUploadedDocument.md new file mode 100644 index 0000000000..68f9ab56c9 --- /dev/null +++ b/docs/API_docs/constructors/inputMediaUploadedDocument.md @@ -0,0 +1,37 @@ +--- +title: "inputMediaUploadedDocument" +description: "New document" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMediaUploadedDocument +[Back to constructors index](/API_docs/constructors/index.html) + + + +New document + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|nosound\_video|[Bool](/API_docs/types/Bool.html) | Optional|Whether the specified document is a video file with no audio tracks (a GIF animation (even as MPEG4), for example)| +|force\_file|[Bool](/API_docs/types/Bool.html) | Optional|Force the media file to be uploaded as document| +|spoiler|[Bool](/API_docs/types/Bool.html) | Optional|Whether this media should be hidden behind a spoiler warning| +|file|[File path or InputFile](/API_docs/types/InputFile.html) | Yes|The [uploaded file](https://core.telegram.org/api/files)| +|thumb|[File path or InputFile](/API_docs/types/InputFile.html) | Optional|Thumbnail of the document, uploaded as for the file| +|mime\_type|[string](/API_docs/types/string.html) | Optional|MIME type of document| +|attributes|Array of [DocumentAttribute](/API_docs/types/DocumentAttribute.html) | Yes|Attributes that specify the type of the document (video, audio, voice, sticker, etc.)| +|stickers|Array of [MessageMedia, Message, Update or InputDocument](/API_docs/types/InputDocument.html) | Optional|Attached stickers| +|ttl\_seconds|[int](/API_docs/types/int.html) | Optional|Time to live in seconds of self-destructing document| + + + +### Type: [InputMedia](/API_docs/types/InputMedia.html) + + +### Example: + +``` +$inputMediaUploadedDocument = ['_' => 'inputMediaUploadedDocument', 'nosound_video' => Bool, 'force_file' => Bool, 'spoiler' => Bool, 'file' => InputFile, 'thumb' => InputFile, 'mime_type' => 'string', 'attributes' => [DocumentAttribute, DocumentAttribute], 'stickers' => [InputDocument, InputDocument], 'ttl_seconds' => int]; +``` diff --git a/docs/API_docs/constructors/inputMediaUploadedPhoto.md b/docs/API_docs/constructors/inputMediaUploadedPhoto.md new file mode 100644 index 0000000000..05f3c73cab --- /dev/null +++ b/docs/API_docs/constructors/inputMediaUploadedPhoto.md @@ -0,0 +1,32 @@ +--- +title: "inputMediaUploadedPhoto" +description: "Photo" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMediaUploadedPhoto +[Back to constructors index](/API_docs/constructors/index.html) + + + +Photo + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|spoiler|[Bool](/API_docs/types/Bool.html) | Optional|Whether this media should be hidden behind a spoiler warning| +|file|[File path or InputFile](/API_docs/types/InputFile.html) | Yes|The [uploaded file](https://core.telegram.org/api/files)| +|stickers|Array of [MessageMedia, Message, Update or InputDocument](/API_docs/types/InputDocument.html) | Optional|Attached mask stickers| +|ttl\_seconds|[int](/API_docs/types/int.html) | Optional|Time to live in seconds of self-destructing photo| + + + +### Type: [InputMedia](/API_docs/types/InputMedia.html) + + +### Example: + +``` +$inputMediaUploadedPhoto = ['_' => 'inputMediaUploadedPhoto', 'spoiler' => Bool, 'file' => InputFile, 'stickers' => [InputDocument, InputDocument], 'ttl_seconds' => int]; +``` diff --git a/docs/API_docs/constructors/inputMediaVenue.md b/docs/API_docs/constructors/inputMediaVenue.md new file mode 100644 index 0000000000..4dacc91d5e --- /dev/null +++ b/docs/API_docs/constructors/inputMediaVenue.md @@ -0,0 +1,34 @@ +--- +title: "inputMediaVenue" +description: "Can be used to send a venue geolocation." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMediaVenue +[Back to constructors index](/API_docs/constructors/index.html) + + + +Can be used to send a venue geolocation. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|geo\_point|[InputGeoPoint](/API_docs/types/InputGeoPoint.html) | Optional|Geolocation| +|title|[string](/API_docs/types/string.html) | Yes|Venue name| +|address|[string](/API_docs/types/string.html) | Yes|Physical address of the venue| +|provider|[string](/API_docs/types/string.html) | Yes|Venue provider: currently only "foursquare" and "gplaces" (Google Places) need to be supported| +|venue\_id|[string](/API_docs/types/string.html) | Yes|Venue ID in the provider's database| +|venue\_type|[string](/API_docs/types/string.html) | Yes|Venue type in the provider's database| + + + +### Type: [InputMedia](/API_docs/types/InputMedia.html) + + +### Example: + +``` +$inputMediaVenue = ['_' => 'inputMediaVenue', 'geo_point' => InputGeoPoint, 'title' => 'string', 'address' => 'string', 'provider' => 'string', 'venue_id' => 'string', 'venue_type' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputMediaWebPage.md b/docs/API_docs/constructors/inputMediaWebPage.md new file mode 100644 index 0000000000..3f1b0dbb98 --- /dev/null +++ b/docs/API_docs/constructors/inputMediaWebPage.md @@ -0,0 +1,32 @@ +--- +title: "inputMediaWebPage" +description: "Specifies options that will be used to generate the link preview for the caption, or even a standalone link preview without an attached message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMediaWebPage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Specifies options that will be used to generate the link preview for the caption, or even a standalone link preview without an attached message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|force\_large\_media|[Bool](/API_docs/types/Bool.html) | Optional|If set, specifies that a large media preview should be used.| +|force\_small\_media|[Bool](/API_docs/types/Bool.html) | Optional|If set, specifies that a small media preview should be used.| +|optional|[Bool](/API_docs/types/Bool.html) | Optional|If **not** set, a `WEBPAGE_NOT_FOUND` RPC error will be emitted if a webpage preview cannot be generated for the specified `url`; otherwise, no error will be emitted (unless the provided message is also empty, in which case a `MESSAGE_EMPTY` will be emitted, instead).| +|url|[string](/API_docs/types/string.html) | Yes|The URL to use for the link preview.| + + + +### Type: [InputMedia](/API_docs/types/InputMedia.html) + + +### Example: + +``` +$inputMediaWebPage = ['_' => 'inputMediaWebPage', 'force_large_media' => Bool, 'force_small_media' => Bool, 'optional' => Bool, 'url' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputMessageCallbackQuery.md b/docs/API_docs/constructors/inputMessageCallbackQuery.md new file mode 100644 index 0000000000..4c5157d674 --- /dev/null +++ b/docs/API_docs/constructors/inputMessageCallbackQuery.md @@ -0,0 +1,30 @@ +--- +title: "inputMessageCallbackQuery" +description: "Used by bots for fetching information about the message that originated a callback query" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessageCallbackQuery +[Back to constructors index](/API_docs/constructors/index.html) + + + +Used by bots for fetching information about the message that originated a callback query + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[int](/API_docs/types/int.html) | Yes|Message ID| +|query\_id|[long](/API_docs/types/long.html) | Yes|Callback query ID| + + + +### Type: [InputMessage](/API_docs/types/InputMessage.html) + + +### Example: + +``` +$inputMessageCallbackQuery = ['_' => 'inputMessageCallbackQuery', 'id' => int, 'query_id' => long]; +``` diff --git a/docs/API_docs/constructors/inputMessageEntityMentionName.md b/docs/API_docs/constructors/inputMessageEntityMentionName.md new file mode 100644 index 0000000000..77c59f039e --- /dev/null +++ b/docs/API_docs/constructors/inputMessageEntityMentionName.md @@ -0,0 +1,31 @@ +--- +title: "inputMessageEntityMentionName" +description: "Message entity that can be used to create a user user mention: received mentions use the messageEntityMentionName constructor, instead." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessageEntityMentionName +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message entity that can be used to create a user [user mention](https://core.telegram.org/api/mentions): received mentions use the [messageEntityMentionName](../constructors/messageEntityMentionName.html) constructor, instead. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|user\_id|[InputUser](/API_docs/types/InputUser.html) | Optional|Identifier of the user that was mentioned| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$inputMessageEntityMentionName = ['_' => 'inputMessageEntityMentionName', 'offset' => int, 'length' => int, 'user_id' => InputUser]; +``` diff --git a/docs/API_docs/constructors/inputMessageID.md b/docs/API_docs/constructors/inputMessageID.md new file mode 100644 index 0000000000..d252db9d7b --- /dev/null +++ b/docs/API_docs/constructors/inputMessageID.md @@ -0,0 +1,29 @@ +--- +title: "inputMessageID" +description: "Message by ID" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessageID +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message by ID + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[int](/API_docs/types/int.html) | Yes|Message ID| + + + +### Type: [InputMessage](/API_docs/types/InputMessage.html) + + +### Example: + +``` +$inputMessageID = ['_' => 'inputMessageID', 'id' => int]; +``` diff --git a/docs/API_docs/constructors/inputMessagePinned.md b/docs/API_docs/constructors/inputMessagePinned.md new file mode 100644 index 0000000000..0b6f4b565d --- /dev/null +++ b/docs/API_docs/constructors/inputMessagePinned.md @@ -0,0 +1,24 @@ +--- +title: "inputMessagePinned" +description: "Pinned message" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessagePinned +[Back to constructors index](/API_docs/constructors/index.html) + + + +Pinned message + + + + +### Type: [InputMessage](/API_docs/types/InputMessage.html) + + +### Example: + +``` +$inputMessagePinned = ['_' => 'inputMessagePinned']; +``` diff --git a/docs/API_docs/constructors/inputMessageReplyTo.md b/docs/API_docs/constructors/inputMessageReplyTo.md new file mode 100644 index 0000000000..0b3cd37762 --- /dev/null +++ b/docs/API_docs/constructors/inputMessageReplyTo.md @@ -0,0 +1,29 @@ +--- +title: "inputMessageReplyTo" +description: "Message to which the specified message replies to" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessageReplyTo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message to which the specified message replies to + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[int](/API_docs/types/int.html) | Yes|ID of the message that replies to the message we need| + + + +### Type: [InputMessage](/API_docs/types/InputMessage.html) + + +### Example: + +``` +$inputMessageReplyTo = ['_' => 'inputMessageReplyTo', 'id' => int]; +``` diff --git a/docs/API_docs/constructors/inputMessagesFilterChatPhotos.md b/docs/API_docs/constructors/inputMessagesFilterChatPhotos.md new file mode 100644 index 0000000000..aed48dd9e4 --- /dev/null +++ b/docs/API_docs/constructors/inputMessagesFilterChatPhotos.md @@ -0,0 +1,24 @@ +--- +title: "inputMessagesFilterChatPhotos" +description: "Return only chat photo changes" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessagesFilterChatPhotos +[Back to constructors index](/API_docs/constructors/index.html) + + + +Return only chat photo changes + + + + +### Type: [MessagesFilter](/API_docs/types/MessagesFilter.html) + + +### Example: + +``` +$inputMessagesFilterChatPhotos = ['_' => 'inputMessagesFilterChatPhotos']; +``` diff --git a/docs/API_docs/constructors/inputMessagesFilterContacts.md b/docs/API_docs/constructors/inputMessagesFilterContacts.md new file mode 100644 index 0000000000..da469d94b2 --- /dev/null +++ b/docs/API_docs/constructors/inputMessagesFilterContacts.md @@ -0,0 +1,24 @@ +--- +title: "inputMessagesFilterContacts" +description: "Return only messages containing contacts" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessagesFilterContacts +[Back to constructors index](/API_docs/constructors/index.html) + + + +Return only messages containing contacts + + + + +### Type: [MessagesFilter](/API_docs/types/MessagesFilter.html) + + +### Example: + +``` +$inputMessagesFilterContacts = ['_' => 'inputMessagesFilterContacts']; +``` diff --git a/docs/API_docs/constructors/inputMessagesFilterDocument.md b/docs/API_docs/constructors/inputMessagesFilterDocument.md new file mode 100644 index 0000000000..b1a5b37167 --- /dev/null +++ b/docs/API_docs/constructors/inputMessagesFilterDocument.md @@ -0,0 +1,24 @@ +--- +title: "inputMessagesFilterDocument" +description: "Filter for messages containing documents." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessagesFilterDocument +[Back to constructors index](/API_docs/constructors/index.html) + + + +Filter for messages containing documents. + + + + +### Type: [MessagesFilter](/API_docs/types/MessagesFilter.html) + + +### Example: + +``` +$inputMessagesFilterDocument = ['_' => 'inputMessagesFilterDocument']; +``` diff --git a/docs/API_docs/constructors/inputMessagesFilterEmpty.md b/docs/API_docs/constructors/inputMessagesFilterEmpty.md new file mode 100644 index 0000000000..517dac57c2 --- /dev/null +++ b/docs/API_docs/constructors/inputMessagesFilterEmpty.md @@ -0,0 +1,24 @@ +--- +title: "inputMessagesFilterEmpty" +description: "Filter is absent." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessagesFilterEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Filter is absent. + + + + +### Type: [MessagesFilter](/API_docs/types/MessagesFilter.html) + + +### Example: + +``` +$inputMessagesFilterEmpty = ['_' => 'inputMessagesFilterEmpty']; +``` diff --git a/docs/API_docs/constructors/inputMessagesFilterGeo.md b/docs/API_docs/constructors/inputMessagesFilterGeo.md new file mode 100644 index 0000000000..2346b73775 --- /dev/null +++ b/docs/API_docs/constructors/inputMessagesFilterGeo.md @@ -0,0 +1,24 @@ +--- +title: "inputMessagesFilterGeo" +description: "Return only messages containing geolocations" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessagesFilterGeo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Return only messages containing geolocations + + + + +### Type: [MessagesFilter](/API_docs/types/MessagesFilter.html) + + +### Example: + +``` +$inputMessagesFilterGeo = ['_' => 'inputMessagesFilterGeo']; +``` diff --git a/docs/API_docs/constructors/inputMessagesFilterGif.md b/docs/API_docs/constructors/inputMessagesFilterGif.md new file mode 100644 index 0000000000..b1a3d157d2 --- /dev/null +++ b/docs/API_docs/constructors/inputMessagesFilterGif.md @@ -0,0 +1,24 @@ +--- +title: "inputMessagesFilterGif" +description: "Return only messages containing gifs" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessagesFilterGif +[Back to constructors index](/API_docs/constructors/index.html) + + + +Return only messages containing gifs + + + + +### Type: [MessagesFilter](/API_docs/types/MessagesFilter.html) + + +### Example: + +``` +$inputMessagesFilterGif = ['_' => 'inputMessagesFilterGif']; +``` diff --git a/docs/API_docs/constructors/inputMessagesFilterMusic.md b/docs/API_docs/constructors/inputMessagesFilterMusic.md new file mode 100644 index 0000000000..3e54505ab1 --- /dev/null +++ b/docs/API_docs/constructors/inputMessagesFilterMusic.md @@ -0,0 +1,24 @@ +--- +title: "inputMessagesFilterMusic" +description: "Return only messages containing audio files" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessagesFilterMusic +[Back to constructors index](/API_docs/constructors/index.html) + + + +Return only messages containing audio files + + + + +### Type: [MessagesFilter](/API_docs/types/MessagesFilter.html) + + +### Example: + +``` +$inputMessagesFilterMusic = ['_' => 'inputMessagesFilterMusic']; +``` diff --git a/docs/API_docs/constructors/inputMessagesFilterMyMentions.md b/docs/API_docs/constructors/inputMessagesFilterMyMentions.md new file mode 100644 index 0000000000..ef2efc2637 --- /dev/null +++ b/docs/API_docs/constructors/inputMessagesFilterMyMentions.md @@ -0,0 +1,24 @@ +--- +title: "inputMessagesFilterMyMentions" +description: "Return only messages where the current user was mentioned." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessagesFilterMyMentions +[Back to constructors index](/API_docs/constructors/index.html) + + + +Return only messages where the current user was [mentioned](https://core.telegram.org/api/mentions). + + + + +### Type: [MessagesFilter](/API_docs/types/MessagesFilter.html) + + +### Example: + +``` +$inputMessagesFilterMyMentions = ['_' => 'inputMessagesFilterMyMentions']; +``` diff --git a/docs/API_docs/constructors/inputMessagesFilterPhoneCalls.md b/docs/API_docs/constructors/inputMessagesFilterPhoneCalls.md new file mode 100644 index 0000000000..5fd8a8d9cf --- /dev/null +++ b/docs/API_docs/constructors/inputMessagesFilterPhoneCalls.md @@ -0,0 +1,29 @@ +--- +title: "inputMessagesFilterPhoneCalls" +description: "Return only phone calls" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessagesFilterPhoneCalls +[Back to constructors index](/API_docs/constructors/index.html) + + + +Return only phone calls + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|missed|[Bool](/API_docs/types/Bool.html) | Optional|Return only missed phone calls| + + + +### Type: [MessagesFilter](/API_docs/types/MessagesFilter.html) + + +### Example: + +``` +$inputMessagesFilterPhoneCalls = ['_' => 'inputMessagesFilterPhoneCalls', 'missed' => Bool]; +``` diff --git a/docs/API_docs/constructors/inputMessagesFilterPhotoVideo.md b/docs/API_docs/constructors/inputMessagesFilterPhotoVideo.md new file mode 100644 index 0000000000..2f676921f3 --- /dev/null +++ b/docs/API_docs/constructors/inputMessagesFilterPhotoVideo.md @@ -0,0 +1,24 @@ +--- +title: "inputMessagesFilterPhotoVideo" +description: "Filter for messages containing photos or videos." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessagesFilterPhotoVideo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Filter for messages containing photos or videos. + + + + +### Type: [MessagesFilter](/API_docs/types/MessagesFilter.html) + + +### Example: + +``` +$inputMessagesFilterPhotoVideo = ['_' => 'inputMessagesFilterPhotoVideo']; +``` diff --git a/docs/API_docs/constructors/inputMessagesFilterPhotos.md b/docs/API_docs/constructors/inputMessagesFilterPhotos.md new file mode 100644 index 0000000000..ae7b6c36f7 --- /dev/null +++ b/docs/API_docs/constructors/inputMessagesFilterPhotos.md @@ -0,0 +1,24 @@ +--- +title: "inputMessagesFilterPhotos" +description: "Filter for messages containing photos." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessagesFilterPhotos +[Back to constructors index](/API_docs/constructors/index.html) + + + +Filter for messages containing photos. + + + + +### Type: [MessagesFilter](/API_docs/types/MessagesFilter.html) + + +### Example: + +``` +$inputMessagesFilterPhotos = ['_' => 'inputMessagesFilterPhotos']; +``` diff --git a/docs/API_docs/constructors/inputMessagesFilterPinned.md b/docs/API_docs/constructors/inputMessagesFilterPinned.md new file mode 100644 index 0000000000..43cee9dae1 --- /dev/null +++ b/docs/API_docs/constructors/inputMessagesFilterPinned.md @@ -0,0 +1,24 @@ +--- +title: "inputMessagesFilterPinned" +description: "Fetch only pinned messages" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessagesFilterPinned +[Back to constructors index](/API_docs/constructors/index.html) + + + +Fetch only pinned messages + + + + +### Type: [MessagesFilter](/API_docs/types/MessagesFilter.html) + + +### Example: + +``` +$inputMessagesFilterPinned = ['_' => 'inputMessagesFilterPinned']; +``` diff --git a/docs/API_docs/constructors/inputMessagesFilterRoundVideo.md b/docs/API_docs/constructors/inputMessagesFilterRoundVideo.md new file mode 100644 index 0000000000..5d7a265ab2 --- /dev/null +++ b/docs/API_docs/constructors/inputMessagesFilterRoundVideo.md @@ -0,0 +1,24 @@ +--- +title: "inputMessagesFilterRoundVideo" +description: "Return only round videos" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessagesFilterRoundVideo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Return only round videos + + + + +### Type: [MessagesFilter](/API_docs/types/MessagesFilter.html) + + +### Example: + +``` +$inputMessagesFilterRoundVideo = ['_' => 'inputMessagesFilterRoundVideo']; +``` diff --git a/docs/API_docs/constructors/inputMessagesFilterRoundVoice.md b/docs/API_docs/constructors/inputMessagesFilterRoundVoice.md new file mode 100644 index 0000000000..1a3cb91ba4 --- /dev/null +++ b/docs/API_docs/constructors/inputMessagesFilterRoundVoice.md @@ -0,0 +1,24 @@ +--- +title: "inputMessagesFilterRoundVoice" +description: "Return only round videos and voice notes" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessagesFilterRoundVoice +[Back to constructors index](/API_docs/constructors/index.html) + + + +Return only round videos and voice notes + + + + +### Type: [MessagesFilter](/API_docs/types/MessagesFilter.html) + + +### Example: + +``` +$inputMessagesFilterRoundVoice = ['_' => 'inputMessagesFilterRoundVoice']; +``` diff --git a/docs/API_docs/constructors/inputMessagesFilterUrl.md b/docs/API_docs/constructors/inputMessagesFilterUrl.md new file mode 100644 index 0000000000..72a4eccb01 --- /dev/null +++ b/docs/API_docs/constructors/inputMessagesFilterUrl.md @@ -0,0 +1,24 @@ +--- +title: "inputMessagesFilterUrl" +description: "Return only messages containing URLs" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessagesFilterUrl +[Back to constructors index](/API_docs/constructors/index.html) + + + +Return only messages containing URLs + + + + +### Type: [MessagesFilter](/API_docs/types/MessagesFilter.html) + + +### Example: + +``` +$inputMessagesFilterUrl = ['_' => 'inputMessagesFilterUrl']; +``` diff --git a/docs/API_docs/constructors/inputMessagesFilterVideo.md b/docs/API_docs/constructors/inputMessagesFilterVideo.md new file mode 100644 index 0000000000..799b85bb83 --- /dev/null +++ b/docs/API_docs/constructors/inputMessagesFilterVideo.md @@ -0,0 +1,24 @@ +--- +title: "inputMessagesFilterVideo" +description: "Filter for messages containing videos." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessagesFilterVideo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Filter for messages containing videos. + + + + +### Type: [MessagesFilter](/API_docs/types/MessagesFilter.html) + + +### Example: + +``` +$inputMessagesFilterVideo = ['_' => 'inputMessagesFilterVideo']; +``` diff --git a/docs/API_docs/constructors/inputMessagesFilterVoice.md b/docs/API_docs/constructors/inputMessagesFilterVoice.md new file mode 100644 index 0000000000..fb1586b37e --- /dev/null +++ b/docs/API_docs/constructors/inputMessagesFilterVoice.md @@ -0,0 +1,24 @@ +--- +title: "inputMessagesFilterVoice" +description: "Return only messages containing voice notes" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputMessagesFilterVoice +[Back to constructors index](/API_docs/constructors/index.html) + + + +Return only messages containing voice notes + + + + +### Type: [MessagesFilter](/API_docs/types/MessagesFilter.html) + + +### Example: + +``` +$inputMessagesFilterVoice = ['_' => 'inputMessagesFilterVoice']; +``` diff --git a/docs/API_docs/constructors/inputNotifyBroadcasts.md b/docs/API_docs/constructors/inputNotifyBroadcasts.md new file mode 100644 index 0000000000..6f9749adf4 --- /dev/null +++ b/docs/API_docs/constructors/inputNotifyBroadcasts.md @@ -0,0 +1,24 @@ +--- +title: "inputNotifyBroadcasts" +description: "All channels" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputNotifyBroadcasts +[Back to constructors index](/API_docs/constructors/index.html) + + + +All [channels](https://core.telegram.org/api/channel) + + + + +### Type: [InputNotifyPeer](/API_docs/types/InputNotifyPeer.html) + + +### Example: + +``` +$inputNotifyBroadcasts = ['_' => 'inputNotifyBroadcasts']; +``` diff --git a/docs/API_docs/constructors/inputNotifyChats.md b/docs/API_docs/constructors/inputNotifyChats.md new file mode 100644 index 0000000000..7ef4d48b0d --- /dev/null +++ b/docs/API_docs/constructors/inputNotifyChats.md @@ -0,0 +1,24 @@ +--- +title: "inputNotifyChats" +description: "Notifications generated by all groups." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputNotifyChats +[Back to constructors index](/API_docs/constructors/index.html) + + + +Notifications generated by all groups. + + + + +### Type: [InputNotifyPeer](/API_docs/types/InputNotifyPeer.html) + + +### Example: + +``` +$inputNotifyChats = ['_' => 'inputNotifyChats']; +``` diff --git a/docs/API_docs/constructors/inputNotifyForumTopic.md b/docs/API_docs/constructors/inputNotifyForumTopic.md new file mode 100644 index 0000000000..9ac7a433a5 --- /dev/null +++ b/docs/API_docs/constructors/inputNotifyForumTopic.md @@ -0,0 +1,30 @@ +--- +title: "inputNotifyForumTopic" +description: "Notifications generated by a topic in a forum." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputNotifyForumTopic +[Back to constructors index](/API_docs/constructors/index.html) + + + +Notifications generated by a [topic](https://core.telegram.org/api/forum#forum-topics) in a [forum](https://core.telegram.org/api/forum). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional|Forum ID| +|top\_msg\_id|[int](/API_docs/types/int.html) | Yes|[Topic ID](https://core.telegram.org/api/forum#forum-topics)| + + + +### Type: [InputNotifyPeer](/API_docs/types/InputNotifyPeer.html) + + +### Example: + +``` +$inputNotifyForumTopic = ['_' => 'inputNotifyForumTopic', 'peer' => InputPeer, 'top_msg_id' => int]; +``` diff --git a/docs/API_docs/constructors/inputNotifyPeer.md b/docs/API_docs/constructors/inputNotifyPeer.md new file mode 100644 index 0000000000..83a3ce31e7 --- /dev/null +++ b/docs/API_docs/constructors/inputNotifyPeer.md @@ -0,0 +1,29 @@ +--- +title: "inputNotifyPeer" +description: "Notifications generated by a certain user or group." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputNotifyPeer +[Back to constructors index](/API_docs/constructors/index.html) + + + +Notifications generated by a certain user or group. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional|User or group| + + + +### Type: [InputNotifyPeer](/API_docs/types/InputNotifyPeer.html) + + +### Example: + +``` +$inputNotifyPeer = ['_' => 'inputNotifyPeer', 'peer' => InputPeer]; +``` diff --git a/docs/API_docs/constructors/inputNotifyUsers.md b/docs/API_docs/constructors/inputNotifyUsers.md new file mode 100644 index 0000000000..870c36b1b4 --- /dev/null +++ b/docs/API_docs/constructors/inputNotifyUsers.md @@ -0,0 +1,24 @@ +--- +title: "inputNotifyUsers" +description: "Notifications generated by all users." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputNotifyUsers +[Back to constructors index](/API_docs/constructors/index.html) + + + +Notifications generated by all users. + + + + +### Type: [InputNotifyPeer](/API_docs/types/InputNotifyPeer.html) + + +### Example: + +``` +$inputNotifyUsers = ['_' => 'inputNotifyUsers']; +``` diff --git a/docs/API_docs/constructors/inputPaymentCredentials.md b/docs/API_docs/constructors/inputPaymentCredentials.md new file mode 100644 index 0000000000..0cff77bd33 --- /dev/null +++ b/docs/API_docs/constructors/inputPaymentCredentials.md @@ -0,0 +1,30 @@ +--- +title: "inputPaymentCredentials" +description: "Payment credentials" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPaymentCredentials +[Back to constructors index](/API_docs/constructors/index.html) + + + +Payment credentials + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|save|[Bool](/API_docs/types/Bool.html) | Optional|Save payment credential for future use| +|data|[DataJSON](/API_docs/types/DataJSON.html) | Yes|Payment credentials| + + + +### Type: [InputPaymentCredentials](/API_docs/types/InputPaymentCredentials.html) + + +### Example: + +``` +$inputPaymentCredentials = ['_' => 'inputPaymentCredentials', 'save' => Bool, 'data' => DataJSON]; +``` diff --git a/docs/API_docs/constructors/inputPaymentCredentialsApplePay.md b/docs/API_docs/constructors/inputPaymentCredentialsApplePay.md new file mode 100644 index 0000000000..6421858018 --- /dev/null +++ b/docs/API_docs/constructors/inputPaymentCredentialsApplePay.md @@ -0,0 +1,29 @@ +--- +title: "inputPaymentCredentialsApplePay" +description: "Apple pay payment credentials" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPaymentCredentialsApplePay +[Back to constructors index](/API_docs/constructors/index.html) + + + +Apple pay payment credentials + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|payment\_data|[DataJSON](/API_docs/types/DataJSON.html) | Yes|Payment data| + + + +### Type: [InputPaymentCredentials](/API_docs/types/InputPaymentCredentials.html) + + +### Example: + +``` +$inputPaymentCredentialsApplePay = ['_' => 'inputPaymentCredentialsApplePay', 'payment_data' => DataJSON]; +``` diff --git a/docs/API_docs/constructors/inputPaymentCredentialsGooglePay.md b/docs/API_docs/constructors/inputPaymentCredentialsGooglePay.md new file mode 100644 index 0000000000..cc0f83fca6 --- /dev/null +++ b/docs/API_docs/constructors/inputPaymentCredentialsGooglePay.md @@ -0,0 +1,29 @@ +--- +title: "inputPaymentCredentialsGooglePay" +description: "Google Pay payment credentials" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPaymentCredentialsGooglePay +[Back to constructors index](/API_docs/constructors/index.html) + + + +Google Pay payment credentials + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|payment\_token|[DataJSON](/API_docs/types/DataJSON.html) | Yes|Payment token| + + + +### Type: [InputPaymentCredentials](/API_docs/types/InputPaymentCredentials.html) + + +### Example: + +``` +$inputPaymentCredentialsGooglePay = ['_' => 'inputPaymentCredentialsGooglePay', 'payment_token' => DataJSON]; +``` diff --git a/docs/API_docs/constructors/inputPaymentCredentialsSaved.md b/docs/API_docs/constructors/inputPaymentCredentialsSaved.md new file mode 100644 index 0000000000..de2ebeda2f --- /dev/null +++ b/docs/API_docs/constructors/inputPaymentCredentialsSaved.md @@ -0,0 +1,30 @@ +--- +title: "inputPaymentCredentialsSaved" +description: "Saved payment credentials" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPaymentCredentialsSaved +[Back to constructors index](/API_docs/constructors/index.html) + + + +Saved payment credentials + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[string](/API_docs/types/string.html) | Yes|Credential ID| +|tmp\_password|[bytes](/API_docs/types/bytes.html) | Yes|Temporary password| + + + +### Type: [InputPaymentCredentials](/API_docs/types/InputPaymentCredentials.html) + + +### Example: + +``` +$inputPaymentCredentialsSaved = ['_' => 'inputPaymentCredentialsSaved', 'id' => 'string', 'tmp_password' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/inputPeerChannel.md b/docs/API_docs/constructors/inputPeerChannel.md new file mode 100644 index 0000000000..b56c487ecc --- /dev/null +++ b/docs/API_docs/constructors/inputPeerChannel.md @@ -0,0 +1,30 @@ +--- +title: "inputPeerChannel" +description: "Defines a channel for further interaction." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPeerChannel +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines a channel for further interaction. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel\_id|[long](/API_docs/types/long.html) | Yes|Channel identifier| +|access\_hash|[long](/API_docs/types/long.html) | Yes|**access\_hash** value from the [channel](../constructors/channel.html) constructor| + + + +### Type: [InputPeer](/API_docs/types/InputPeer.html) + + +### Example: + +``` +$inputPeerChannel = ['_' => 'inputPeerChannel', 'channel_id' => long, 'access_hash' => long]; +``` diff --git a/docs/API_docs/constructors/inputPeerChannelFromMessage.md b/docs/API_docs/constructors/inputPeerChannelFromMessage.md new file mode 100644 index 0000000000..bdba308148 --- /dev/null +++ b/docs/API_docs/constructors/inputPeerChannelFromMessage.md @@ -0,0 +1,31 @@ +--- +title: "inputPeerChannelFromMessage" +description: "Defines a min channel that was seen in a certain message of a certain chat." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPeerChannelFromMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines a [min](https://core.telegram.org/api/min) channel that was seen in a certain message of a certain chat. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional|The chat where the channel's message was seen| +|msg\_id|[int](/API_docs/types/int.html) | Yes|The message ID| +|channel\_id|[long](/API_docs/types/long.html) | Yes|The identifier of the channel that was seen| + + + +### Type: [InputPeer](/API_docs/types/InputPeer.html) + + +### Example: + +``` +$inputPeerChannelFromMessage = ['_' => 'inputPeerChannelFromMessage', 'peer' => InputPeer, 'msg_id' => int, 'channel_id' => long]; +``` diff --git a/docs/API_docs/constructors/inputPeerChat.md b/docs/API_docs/constructors/inputPeerChat.md new file mode 100644 index 0000000000..f41a202503 --- /dev/null +++ b/docs/API_docs/constructors/inputPeerChat.md @@ -0,0 +1,29 @@ +--- +title: "inputPeerChat" +description: "Defines a chat for further interaction." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPeerChat +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines a chat for further interaction. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chat\_id|[long](/API_docs/types/long.html) | Yes|Chat identifier| + + + +### Type: [InputPeer](/API_docs/types/InputPeer.html) + + +### Example: + +``` +$inputPeerChat = ['_' => 'inputPeerChat', 'chat_id' => long]; +``` diff --git a/docs/API_docs/constructors/inputPeerEmpty.md b/docs/API_docs/constructors/inputPeerEmpty.md new file mode 100644 index 0000000000..40195dff50 --- /dev/null +++ b/docs/API_docs/constructors/inputPeerEmpty.md @@ -0,0 +1,24 @@ +--- +title: "inputPeerEmpty" +description: "An empty constructor, no user or chat is defined." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPeerEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +An empty constructor, no user or chat is defined. + + + + +### Type: [InputPeer](/API_docs/types/InputPeer.html) + + +### Example: + +``` +$inputPeerEmpty = ['_' => 'inputPeerEmpty']; +``` diff --git a/docs/API_docs/constructors/inputPeerNotifySettings.md b/docs/API_docs/constructors/inputPeerNotifySettings.md new file mode 100644 index 0000000000..18110dd47b --- /dev/null +++ b/docs/API_docs/constructors/inputPeerNotifySettings.md @@ -0,0 +1,35 @@ +--- +title: "inputPeerNotifySettings" +description: "Notification settings." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPeerNotifySettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +Notification settings. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|show\_previews|[Bool](/API_docs/types/Bool.html) | Optional|If the text of the message shall be displayed in notification| +|silent|[Bool](/API_docs/types/Bool.html) | Optional|Peer was muted?| +|mute\_until|[int](/API_docs/types/int.html) | Optional|Date until which all notifications shall be switched off| +|sound|[NotificationSound](/API_docs/types/NotificationSound.html) | Optional|Identifier of an audio file to play for notifications.| +|stories\_muted|[Bool](/API_docs/types/Bool.html) | Optional|Whether story notifications should be disabled.| +|stories\_hide\_sender|[Bool](/API_docs/types/Bool.html) | Optional|Whether the sender name should be displayed in story notifications.| +|stories\_sound|[NotificationSound](/API_docs/types/NotificationSound.html) | Optional|Identifier of an audio file to play for story notifications.| + + + +### Type: [InputPeerNotifySettings](/API_docs/types/InputPeerNotifySettings.html) + + +### Example: + +``` +$inputPeerNotifySettings = ['_' => 'inputPeerNotifySettings', 'show_previews' => Bool, 'silent' => Bool, 'mute_until' => int, 'sound' => NotificationSound, 'stories_muted' => Bool, 'stories_hide_sender' => Bool, 'stories_sound' => NotificationSound]; +``` diff --git a/docs/API_docs/constructors/inputPeerPhotoFileLocation.md b/docs/API_docs/constructors/inputPeerPhotoFileLocation.md new file mode 100644 index 0000000000..a817c6b3c3 --- /dev/null +++ b/docs/API_docs/constructors/inputPeerPhotoFileLocation.md @@ -0,0 +1,31 @@ +--- +title: "inputPeerPhotoFileLocation" +description: "Location of profile photo of channel/group/supergroup/user" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPeerPhotoFileLocation +[Back to constructors index](/API_docs/constructors/index.html) + + + +Location of profile photo of channel/group/supergroup/user + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|big|[Bool](/API_docs/types/Bool.html) | Optional|Whether to download the high-quality version of the picture| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional|The peer whose profile picture should be downloaded| +|photo\_id|[long](/API_docs/types/long.html) | Yes|Photo ID| + + + +### Type: [InputFileLocation](/API_docs/types/InputFileLocation.html) + + +### Example: + +``` +$inputPeerPhotoFileLocation = ['_' => 'inputPeerPhotoFileLocation', 'big' => Bool, 'peer' => InputPeer, 'photo_id' => long]; +``` diff --git a/docs/API_docs/constructors/inputPeerSelf.md b/docs/API_docs/constructors/inputPeerSelf.md new file mode 100644 index 0000000000..e1b891ab8e --- /dev/null +++ b/docs/API_docs/constructors/inputPeerSelf.md @@ -0,0 +1,24 @@ +--- +title: "inputPeerSelf" +description: "Defines the current user." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPeerSelf +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines the current user. + + + + +### Type: [InputPeer](/API_docs/types/InputPeer.html) + + +### Example: + +``` +$inputPeerSelf = ['_' => 'inputPeerSelf']; +``` diff --git a/docs/API_docs/constructors/inputPeerUser.md b/docs/API_docs/constructors/inputPeerUser.md new file mode 100644 index 0000000000..319126e37c --- /dev/null +++ b/docs/API_docs/constructors/inputPeerUser.md @@ -0,0 +1,30 @@ +--- +title: "inputPeerUser" +description: "Defines a user for further interaction." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPeerUser +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines a user for further interaction. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|User identifier| +|access\_hash|[long](/API_docs/types/long.html) | Yes|**access\_hash** value from the [user](../constructors/user.html) constructor| + + + +### Type: [InputPeer](/API_docs/types/InputPeer.html) + + +### Example: + +``` +$inputPeerUser = ['_' => 'inputPeerUser', 'user_id' => long, 'access_hash' => long]; +``` diff --git a/docs/API_docs/constructors/inputPeerUserFromMessage.md b/docs/API_docs/constructors/inputPeerUserFromMessage.md new file mode 100644 index 0000000000..fdf6a60f57 --- /dev/null +++ b/docs/API_docs/constructors/inputPeerUserFromMessage.md @@ -0,0 +1,31 @@ +--- +title: "inputPeerUserFromMessage" +description: "Defines a min user that was seen in a certain message of a certain chat." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPeerUserFromMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines a [min](https://core.telegram.org/api/min) user that was seen in a certain message of a certain chat. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional|The chat where the user was seen| +|msg\_id|[int](/API_docs/types/int.html) | Yes|The message ID| +|user\_id|[long](/API_docs/types/long.html) | Yes|The identifier of the user that was seen| + + + +### Type: [InputPeer](/API_docs/types/InputPeer.html) + + +### Example: + +``` +$inputPeerUserFromMessage = ['_' => 'inputPeerUserFromMessage', 'peer' => InputPeer, 'msg_id' => int, 'user_id' => long]; +``` diff --git a/docs/API_docs/constructors/inputPhoneCall.md b/docs/API_docs/constructors/inputPhoneCall.md new file mode 100644 index 0000000000..41345a525d --- /dev/null +++ b/docs/API_docs/constructors/inputPhoneCall.md @@ -0,0 +1,30 @@ +--- +title: "inputPhoneCall" +description: "Phone call" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPhoneCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +Phone call + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Call ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash| + + + +### Type: [InputPhoneCall](/API_docs/types/InputPhoneCall.html) + + +### Example: + +``` +$inputPhoneCall = ['_' => 'inputPhoneCall', 'id' => long, 'access_hash' => long]; +``` diff --git a/docs/API_docs/constructors/inputPhoneContact.md b/docs/API_docs/constructors/inputPhoneContact.md new file mode 100644 index 0000000000..174a5e7106 --- /dev/null +++ b/docs/API_docs/constructors/inputPhoneContact.md @@ -0,0 +1,32 @@ +--- +title: "inputPhoneContact" +description: "Phone contact." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPhoneContact +[Back to constructors index](/API_docs/constructors/index.html) + + + +Phone contact. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|client\_id|[long](/API_docs/types/long.html) | Yes|An arbitrary 64-bit integer: it should be set, for example, to an incremental number when using [contacts.importContacts](../methods/contacts.importContacts.html), in order to retry importing only the contacts that weren't imported successfully, according to the client\_ids returned in [contacts.importedContacts](../constructors/contacts.importedContacts.html).`retry_contacts`.| +|phone|[string](/API_docs/types/string.html) | Yes|Phone number| +|first\_name|[string](/API_docs/types/string.html) | Yes|Contact's first name| +|last\_name|[string](/API_docs/types/string.html) | Yes|Contact's last name| + + + +### Type: [InputContact](/API_docs/types/InputContact.html) + + +### Example: + +``` +$inputPhoneContact = ['_' => 'inputPhoneContact', 'client_id' => long, 'phone' => 'string', 'first_name' => 'string', 'last_name' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputPhoto.md b/docs/API_docs/constructors/inputPhoto.md new file mode 100644 index 0000000000..04b18d3e4b --- /dev/null +++ b/docs/API_docs/constructors/inputPhoto.md @@ -0,0 +1,31 @@ +--- +title: "inputPhoto" +description: "Defines a photo for further interaction." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPhoto +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines a photo for further interaction. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Photo identifier| +|access\_hash|[long](/API_docs/types/long.html) | Yes|**access\_hash** value from the [photo](../constructors/photo.html) constructor| +|file\_reference|[bytes](/API_docs/types/bytes.html) | Yes|[File reference](https://core.telegram.org/api/file_reference)| + + + +### Type: [InputPhoto](/API_docs/types/InputPhoto.html) + + +### Example: + +``` +$inputPhoto = ['_' => 'inputPhoto', 'id' => long, 'access_hash' => long, 'file_reference' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/inputPhotoEmpty.md b/docs/API_docs/constructors/inputPhotoEmpty.md new file mode 100644 index 0000000000..2ec2204276 --- /dev/null +++ b/docs/API_docs/constructors/inputPhotoEmpty.md @@ -0,0 +1,24 @@ +--- +title: "inputPhotoEmpty" +description: "Empty constructor." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPhotoEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor. + + + + +### Type: [InputPhoto](/API_docs/types/InputPhoto.html) + + +### Example: + +``` +$inputPhotoEmpty = ['_' => 'inputPhotoEmpty']; +``` diff --git a/docs/API_docs/constructors/inputPhotoFileLocation.md b/docs/API_docs/constructors/inputPhotoFileLocation.md new file mode 100644 index 0000000000..5dc9dd62af --- /dev/null +++ b/docs/API_docs/constructors/inputPhotoFileLocation.md @@ -0,0 +1,32 @@ +--- +title: "inputPhotoFileLocation" +description: "Use this object to download a photo with upload.getFile method" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPhotoFileLocation +[Back to constructors index](/API_docs/constructors/index.html) + + + +Use this object to download a photo with [upload.getFile](../methods/upload.getFile.html) method + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Photo ID, obtained from the [photo](../constructors/photo.html) object| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Photo's access hash, obtained from the [photo](../constructors/photo.html) object| +|file\_reference|[bytes](/API_docs/types/bytes.html) | Yes|[File reference](https://core.telegram.org/api/file_reference)| +|thumb\_size|[string](/API_docs/types/string.html) | Yes|The [PhotoSize](../types/PhotoSize.html) to download: must be set to the `type` field of the desired PhotoSize object of the [photo](../constructors/photo.html)| + + + +### Type: [InputFileLocation](/API_docs/types/InputFileLocation.html) + + +### Example: + +``` +$inputPhotoFileLocation = ['_' => 'inputPhotoFileLocation', 'id' => long, 'access_hash' => long, 'file_reference' => 'bytes', 'thumb_size' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputPhotoLegacyFileLocation.md b/docs/API_docs/constructors/inputPhotoLegacyFileLocation.md new file mode 100644 index 0000000000..36ba1adc5a --- /dev/null +++ b/docs/API_docs/constructors/inputPhotoLegacyFileLocation.md @@ -0,0 +1,34 @@ +--- +title: "inputPhotoLegacyFileLocation" +description: "DEPRECATED legacy photo file location" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPhotoLegacyFileLocation +[Back to constructors index](/API_docs/constructors/index.html) + + + +DEPRECATED legacy photo file location + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Photo ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash| +|file\_reference|[bytes](/API_docs/types/bytes.html) | Yes|File reference| +|volume\_id|[long](/API_docs/types/long.html) | Yes|Volume ID| +|local\_id|[int](/API_docs/types/int.html) | Yes|Local ID| +|secret|[long](/API_docs/types/long.html) | Yes|Secret| + + + +### Type: [InputFileLocation](/API_docs/types/InputFileLocation.html) + + +### Example: + +``` +$inputPhotoLegacyFileLocation = ['_' => 'inputPhotoLegacyFileLocation', 'id' => long, 'access_hash' => long, 'file_reference' => 'bytes', 'volume_id' => long, 'local_id' => int, 'secret' => long]; +``` diff --git a/docs/API_docs/constructors/inputPrivacyKeyAbout.md b/docs/API_docs/constructors/inputPrivacyKeyAbout.md new file mode 100644 index 0000000000..aca846de12 --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyKeyAbout.md @@ -0,0 +1,24 @@ +--- +title: "inputPrivacyKeyAbout" +description: "Whether people can see your bio" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyKeyAbout +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether people can see your bio + + + + +### Type: [InputPrivacyKey](/API_docs/types/InputPrivacyKey.html) + + +### Example: + +``` +$inputPrivacyKeyAbout = ['_' => 'inputPrivacyKeyAbout']; +``` diff --git a/docs/API_docs/constructors/inputPrivacyKeyAddedByPhone.md b/docs/API_docs/constructors/inputPrivacyKeyAddedByPhone.md new file mode 100644 index 0000000000..3e55faf379 --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyKeyAddedByPhone.md @@ -0,0 +1,24 @@ +--- +title: "inputPrivacyKeyAddedByPhone" +description: "Whether people can add you to their contact list by your phone number" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyKeyAddedByPhone +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether people can add you to their contact list by your phone number + + + + +### Type: [InputPrivacyKey](/API_docs/types/InputPrivacyKey.html) + + +### Example: + +``` +$inputPrivacyKeyAddedByPhone = ['_' => 'inputPrivacyKeyAddedByPhone']; +``` diff --git a/docs/API_docs/constructors/inputPrivacyKeyBirthday.md b/docs/API_docs/constructors/inputPrivacyKeyBirthday.md new file mode 100644 index 0000000000..5cde39a874 --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyKeyBirthday.md @@ -0,0 +1,22 @@ +--- +title: "inputPrivacyKeyBirthday" +description: "inputPrivacyKeyBirthday attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyKeyBirthday +[Back to constructors index](/API_docs/constructors/index.html) + + + + + + +### Type: [InputPrivacyKey](/API_docs/types/InputPrivacyKey.html) + + +### Example: + +``` +$inputPrivacyKeyBirthday = ['_' => 'inputPrivacyKeyBirthday']; +``` diff --git a/docs/API_docs/constructors/inputPrivacyKeyChatInvite.md b/docs/API_docs/constructors/inputPrivacyKeyChatInvite.md new file mode 100644 index 0000000000..07868b74c8 --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyKeyChatInvite.md @@ -0,0 +1,24 @@ +--- +title: "inputPrivacyKeyChatInvite" +description: "Whether people will be able to invite you to chats" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyKeyChatInvite +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether people will be able to invite you to chats + + + + +### Type: [InputPrivacyKey](/API_docs/types/InputPrivacyKey.html) + + +### Example: + +``` +$inputPrivacyKeyChatInvite = ['_' => 'inputPrivacyKeyChatInvite']; +``` diff --git a/docs/API_docs/constructors/inputPrivacyKeyForwards.md b/docs/API_docs/constructors/inputPrivacyKeyForwards.md new file mode 100644 index 0000000000..049cfb9597 --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyKeyForwards.md @@ -0,0 +1,24 @@ +--- +title: "inputPrivacyKeyForwards" +description: "Whether messages forwarded from you will be anonymous" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyKeyForwards +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether messages forwarded from you will be [anonymous](https://telegram.org/blog/unsend-privacy-emoji#anonymous-forwarding) + + + + +### Type: [InputPrivacyKey](/API_docs/types/InputPrivacyKey.html) + + +### Example: + +``` +$inputPrivacyKeyForwards = ['_' => 'inputPrivacyKeyForwards']; +``` diff --git a/docs/API_docs/constructors/inputPrivacyKeyPhoneCall.md b/docs/API_docs/constructors/inputPrivacyKeyPhoneCall.md new file mode 100644 index 0000000000..1cdbd4ef06 --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyKeyPhoneCall.md @@ -0,0 +1,24 @@ +--- +title: "inputPrivacyKeyPhoneCall" +description: "Whether you will accept phone calls" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyKeyPhoneCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether you will accept phone calls + + + + +### Type: [InputPrivacyKey](/API_docs/types/InputPrivacyKey.html) + + +### Example: + +``` +$inputPrivacyKeyPhoneCall = ['_' => 'inputPrivacyKeyPhoneCall']; +``` diff --git a/docs/API_docs/constructors/inputPrivacyKeyPhoneNumber.md b/docs/API_docs/constructors/inputPrivacyKeyPhoneNumber.md new file mode 100644 index 0000000000..7e4c7120b8 --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyKeyPhoneNumber.md @@ -0,0 +1,24 @@ +--- +title: "inputPrivacyKeyPhoneNumber" +description: "Whether people will be able to see your phone number" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyKeyPhoneNumber +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether people will be able to see your phone number + + + + +### Type: [InputPrivacyKey](/API_docs/types/InputPrivacyKey.html) + + +### Example: + +``` +$inputPrivacyKeyPhoneNumber = ['_' => 'inputPrivacyKeyPhoneNumber']; +``` diff --git a/docs/API_docs/constructors/inputPrivacyKeyPhoneP2P.md b/docs/API_docs/constructors/inputPrivacyKeyPhoneP2P.md new file mode 100644 index 0000000000..6a65c40b12 --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyKeyPhoneP2P.md @@ -0,0 +1,24 @@ +--- +title: "inputPrivacyKeyPhoneP2P" +description: "Whether to allow P2P communication during VoIP calls" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyKeyPhoneP2P +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether to allow P2P communication during VoIP calls + + + + +### Type: [InputPrivacyKey](/API_docs/types/InputPrivacyKey.html) + + +### Example: + +``` +$inputPrivacyKeyPhoneP2P = ['_' => 'inputPrivacyKeyPhoneP2P']; +``` diff --git a/docs/API_docs/constructors/inputPrivacyKeyProfilePhoto.md b/docs/API_docs/constructors/inputPrivacyKeyProfilePhoto.md new file mode 100644 index 0000000000..e63504d89c --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyKeyProfilePhoto.md @@ -0,0 +1,24 @@ +--- +title: "inputPrivacyKeyProfilePhoto" +description: "Whether people will be able to see your profile picture" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyKeyProfilePhoto +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether people will be able to see your profile picture + + + + +### Type: [InputPrivacyKey](/API_docs/types/InputPrivacyKey.html) + + +### Example: + +``` +$inputPrivacyKeyProfilePhoto = ['_' => 'inputPrivacyKeyProfilePhoto']; +``` diff --git a/docs/API_docs/constructors/inputPrivacyKeyStatusTimestamp.md b/docs/API_docs/constructors/inputPrivacyKeyStatusTimestamp.md new file mode 100644 index 0000000000..f8915c5146 --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyKeyStatusTimestamp.md @@ -0,0 +1,24 @@ +--- +title: "inputPrivacyKeyStatusTimestamp" +description: "Whether people will be able to see your exact last online timestamp" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyKeyStatusTimestamp +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether people will be able to see your exact last online timestamp + + + + +### Type: [InputPrivacyKey](/API_docs/types/InputPrivacyKey.html) + + +### Example: + +``` +$inputPrivacyKeyStatusTimestamp = ['_' => 'inputPrivacyKeyStatusTimestamp']; +``` diff --git a/docs/API_docs/constructors/inputPrivacyKeyVoiceMessages.md b/docs/API_docs/constructors/inputPrivacyKeyVoiceMessages.md new file mode 100644 index 0000000000..3a2d87ae4b --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyKeyVoiceMessages.md @@ -0,0 +1,24 @@ +--- +title: "inputPrivacyKeyVoiceMessages" +description: "Whether people can send you voice messages" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyKeyVoiceMessages +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether people can send you voice messages + + + + +### Type: [InputPrivacyKey](/API_docs/types/InputPrivacyKey.html) + + +### Example: + +``` +$inputPrivacyKeyVoiceMessages = ['_' => 'inputPrivacyKeyVoiceMessages']; +``` diff --git a/docs/API_docs/constructors/inputPrivacyValueAllowAll.md b/docs/API_docs/constructors/inputPrivacyValueAllowAll.md new file mode 100644 index 0000000000..006bb0beca --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyValueAllowAll.md @@ -0,0 +1,24 @@ +--- +title: "inputPrivacyValueAllowAll" +description: "Allow all users" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyValueAllowAll +[Back to constructors index](/API_docs/constructors/index.html) + + + +Allow all users + + + + +### Type: [InputPrivacyRule](/API_docs/types/InputPrivacyRule.html) + + +### Example: + +``` +$inputPrivacyValueAllowAll = ['_' => 'inputPrivacyValueAllowAll']; +``` diff --git a/docs/API_docs/constructors/inputPrivacyValueAllowChatParticipants.md b/docs/API_docs/constructors/inputPrivacyValueAllowChatParticipants.md new file mode 100644 index 0000000000..879e8a5a36 --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyValueAllowChatParticipants.md @@ -0,0 +1,29 @@ +--- +title: "inputPrivacyValueAllowChatParticipants" +description: "Allow only participants of certain chats" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyValueAllowChatParticipants +[Back to constructors index](/API_docs/constructors/index.html) + + + +Allow only participants of certain chats + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chats|Array of [long](/API_docs/types/long.html) | Yes|Allowed chat IDs| + + + +### Type: [InputPrivacyRule](/API_docs/types/InputPrivacyRule.html) + + +### Example: + +``` +$inputPrivacyValueAllowChatParticipants = ['_' => 'inputPrivacyValueAllowChatParticipants', 'chats' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/inputPrivacyValueAllowCloseFriends.md b/docs/API_docs/constructors/inputPrivacyValueAllowCloseFriends.md new file mode 100644 index 0000000000..bfa6f93527 --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyValueAllowCloseFriends.md @@ -0,0 +1,24 @@ +--- +title: "inputPrivacyValueAllowCloseFriends" +description: "Allow only close friends »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyValueAllowCloseFriends +[Back to constructors index](/API_docs/constructors/index.html) + + + +Allow only [close friends »](https://core.telegram.org/api/privacy) + + + + +### Type: [InputPrivacyRule](/API_docs/types/InputPrivacyRule.html) + + +### Example: + +``` +$inputPrivacyValueAllowCloseFriends = ['_' => 'inputPrivacyValueAllowCloseFriends']; +``` diff --git a/docs/API_docs/constructors/inputPrivacyValueAllowContacts.md b/docs/API_docs/constructors/inputPrivacyValueAllowContacts.md new file mode 100644 index 0000000000..0513a7514e --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyValueAllowContacts.md @@ -0,0 +1,24 @@ +--- +title: "inputPrivacyValueAllowContacts" +description: "Allow only contacts" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyValueAllowContacts +[Back to constructors index](/API_docs/constructors/index.html) + + + +Allow only contacts + + + + +### Type: [InputPrivacyRule](/API_docs/types/InputPrivacyRule.html) + + +### Example: + +``` +$inputPrivacyValueAllowContacts = ['_' => 'inputPrivacyValueAllowContacts']; +``` diff --git a/docs/API_docs/constructors/inputPrivacyValueAllowPremium.md b/docs/API_docs/constructors/inputPrivacyValueAllowPremium.md new file mode 100644 index 0000000000..558ea08798 --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyValueAllowPremium.md @@ -0,0 +1,22 @@ +--- +title: "inputPrivacyValueAllowPremium" +description: "inputPrivacyValueAllowPremium attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyValueAllowPremium +[Back to constructors index](/API_docs/constructors/index.html) + + + + + + +### Type: [InputPrivacyRule](/API_docs/types/InputPrivacyRule.html) + + +### Example: + +``` +$inputPrivacyValueAllowPremium = ['_' => 'inputPrivacyValueAllowPremium']; +``` diff --git a/docs/API_docs/constructors/inputPrivacyValueAllowUsers.md b/docs/API_docs/constructors/inputPrivacyValueAllowUsers.md new file mode 100644 index 0000000000..986bbe4980 --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyValueAllowUsers.md @@ -0,0 +1,29 @@ +--- +title: "inputPrivacyValueAllowUsers" +description: "Allow only certain users" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyValueAllowUsers +[Back to constructors index](/API_docs/constructors/index.html) + + + +Allow only certain users + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|users|Array of [Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Yes|Allowed users| + + + +### Type: [InputPrivacyRule](/API_docs/types/InputPrivacyRule.html) + + +### Example: + +``` +$inputPrivacyValueAllowUsers = ['_' => 'inputPrivacyValueAllowUsers', 'users' => [InputUser, InputUser]]; +``` diff --git a/docs/API_docs/constructors/inputPrivacyValueDisallowAll.md b/docs/API_docs/constructors/inputPrivacyValueDisallowAll.md new file mode 100644 index 0000000000..c6a9a373fb --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyValueDisallowAll.md @@ -0,0 +1,24 @@ +--- +title: "inputPrivacyValueDisallowAll" +description: "Disallow all" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyValueDisallowAll +[Back to constructors index](/API_docs/constructors/index.html) + + + +Disallow all + + + + +### Type: [InputPrivacyRule](/API_docs/types/InputPrivacyRule.html) + + +### Example: + +``` +$inputPrivacyValueDisallowAll = ['_' => 'inputPrivacyValueDisallowAll']; +``` diff --git a/docs/API_docs/constructors/inputPrivacyValueDisallowChatParticipants.md b/docs/API_docs/constructors/inputPrivacyValueDisallowChatParticipants.md new file mode 100644 index 0000000000..9cb2fe9bf3 --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyValueDisallowChatParticipants.md @@ -0,0 +1,29 @@ +--- +title: "inputPrivacyValueDisallowChatParticipants" +description: "Disallow only participants of certain chats" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyValueDisallowChatParticipants +[Back to constructors index](/API_docs/constructors/index.html) + + + +Disallow only participants of certain chats + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chats|Array of [long](/API_docs/types/long.html) | Yes|Disallowed chat IDs| + + + +### Type: [InputPrivacyRule](/API_docs/types/InputPrivacyRule.html) + + +### Example: + +``` +$inputPrivacyValueDisallowChatParticipants = ['_' => 'inputPrivacyValueDisallowChatParticipants', 'chats' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/inputPrivacyValueDisallowContacts.md b/docs/API_docs/constructors/inputPrivacyValueDisallowContacts.md new file mode 100644 index 0000000000..b3cb129c31 --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyValueDisallowContacts.md @@ -0,0 +1,24 @@ +--- +title: "inputPrivacyValueDisallowContacts" +description: "Disallow only contacts" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyValueDisallowContacts +[Back to constructors index](/API_docs/constructors/index.html) + + + +Disallow only contacts + + + + +### Type: [InputPrivacyRule](/API_docs/types/InputPrivacyRule.html) + + +### Example: + +``` +$inputPrivacyValueDisallowContacts = ['_' => 'inputPrivacyValueDisallowContacts']; +``` diff --git a/docs/API_docs/constructors/inputPrivacyValueDisallowUsers.md b/docs/API_docs/constructors/inputPrivacyValueDisallowUsers.md new file mode 100644 index 0000000000..ce50b253a9 --- /dev/null +++ b/docs/API_docs/constructors/inputPrivacyValueDisallowUsers.md @@ -0,0 +1,29 @@ +--- +title: "inputPrivacyValueDisallowUsers" +description: "Disallow only certain users" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputPrivacyValueDisallowUsers +[Back to constructors index](/API_docs/constructors/index.html) + + + +Disallow only certain users + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|users|Array of [Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Yes|Users to disallow| + + + +### Type: [InputPrivacyRule](/API_docs/types/InputPrivacyRule.html) + + +### Example: + +``` +$inputPrivacyValueDisallowUsers = ['_' => 'inputPrivacyValueDisallowUsers', 'users' => [InputUser, InputUser]]; +``` diff --git a/docs/API_docs/constructors/inputQuickReplyShortcut.md b/docs/API_docs/constructors/inputQuickReplyShortcut.md new file mode 100644 index 0000000000..1eb144d750 --- /dev/null +++ b/docs/API_docs/constructors/inputQuickReplyShortcut.md @@ -0,0 +1,27 @@ +--- +title: "inputQuickReplyShortcut" +description: "inputQuickReplyShortcut attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputQuickReplyShortcut +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|shortcut|[string](/API_docs/types/string.html) | Yes| + + + +### Type: [InputQuickReplyShortcut](/API_docs/types/InputQuickReplyShortcut.html) + + +### Example: + +``` +$inputQuickReplyShortcut = ['_' => 'inputQuickReplyShortcut', 'shortcut' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputQuickReplyShortcutId.md b/docs/API_docs/constructors/inputQuickReplyShortcutId.md new file mode 100644 index 0000000000..83513d79a1 --- /dev/null +++ b/docs/API_docs/constructors/inputQuickReplyShortcutId.md @@ -0,0 +1,27 @@ +--- +title: "inputQuickReplyShortcutId" +description: "inputQuickReplyShortcutId attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputQuickReplyShortcutId +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|shortcut\_id|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [InputQuickReplyShortcut](/API_docs/types/InputQuickReplyShortcut.html) + + +### Example: + +``` +$inputQuickReplyShortcutId = ['_' => 'inputQuickReplyShortcutId', 'shortcut_id' => int]; +``` diff --git a/docs/API_docs/constructors/inputReplyToMessage.md b/docs/API_docs/constructors/inputReplyToMessage.md new file mode 100644 index 0000000000..2508f55965 --- /dev/null +++ b/docs/API_docs/constructors/inputReplyToMessage.md @@ -0,0 +1,34 @@ +--- +title: "inputReplyToMessage" +description: "Reply to a message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputReplyToMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Reply to a message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|reply\_to\_msg\_id|[int](/API_docs/types/int.html) | Yes|The message ID to reply to.| +|top\_msg\_id|[int](/API_docs/types/int.html) | Optional|This field must contain the topic ID **only** when replying to messages in forum topics different from the "General" topic (i.e. `reply_to_msg_id` is set and `reply_to_msg_id != topicID` and `topicID != 1`).
If the replied-to message is deleted before the method finishes execution, the value in this field will be used to send the message to the correct topic, instead of the "General" topic.| +|reply\_to\_peer\_id|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional|Used to reply to messages sent to another chat (specified here), can only be used for non-`protected` chats and messages.| +|quote\_text|[string](/API_docs/types/string.html) | Optional|Used to quote-reply to only a certain section (specified here) of the original message. The maximum UTF-8 length for quotes is specified in the [quote\_length\_max](https://core.telegram.org/api/config#quote-length-max) config key.| +|quote\_entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|[Message entities for styled text](https://core.telegram.org/api/entities) from the `quote_text` field.| +|quote\_offset|[int](/API_docs/types/int.html) | Optional|Offset of the message `quote_text` within the original message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length)).| + + + +### Type: [InputReplyTo](/API_docs/types/InputReplyTo.html) + + +### Example: + +``` +$inputReplyToMessage = ['_' => 'inputReplyToMessage', 'reply_to_msg_id' => int, 'top_msg_id' => int, 'reply_to_peer_id' => InputPeer, 'quote_text' => 'string', 'quote_entities' => [MessageEntity, MessageEntity], 'quote_offset' => int]; +``` diff --git a/docs/API_docs/constructors/inputReplyToStory.md b/docs/API_docs/constructors/inputReplyToStory.md new file mode 100644 index 0000000000..18575674a4 --- /dev/null +++ b/docs/API_docs/constructors/inputReplyToStory.md @@ -0,0 +1,30 @@ +--- +title: "inputReplyToStory" +description: "Reply to a story." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputReplyToStory +[Back to constructors index](/API_docs/constructors/index.html) + + + +Reply to a story. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional| +|story\_id|[int](/API_docs/types/int.html) | Yes|ID of the story to reply to.| + + + +### Type: [InputReplyTo](/API_docs/types/InputReplyTo.html) + + +### Example: + +``` +$inputReplyToStory = ['_' => 'inputReplyToStory', 'peer' => InputPeer, 'story_id' => int]; +``` diff --git a/docs/API_docs/constructors/inputReportReasonChildAbuse.md b/docs/API_docs/constructors/inputReportReasonChildAbuse.md new file mode 100644 index 0000000000..0b8f6b1d7f --- /dev/null +++ b/docs/API_docs/constructors/inputReportReasonChildAbuse.md @@ -0,0 +1,24 @@ +--- +title: "inputReportReasonChildAbuse" +description: "Report for child abuse" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputReportReasonChildAbuse +[Back to constructors index](/API_docs/constructors/index.html) + + + +Report for child abuse + + + + +### Type: [ReportReason](/API_docs/types/ReportReason.html) + + +### Example: + +``` +$inputReportReasonChildAbuse = ['_' => 'inputReportReasonChildAbuse']; +``` diff --git a/docs/API_docs/constructors/inputReportReasonCopyright.md b/docs/API_docs/constructors/inputReportReasonCopyright.md new file mode 100644 index 0000000000..274a97f098 --- /dev/null +++ b/docs/API_docs/constructors/inputReportReasonCopyright.md @@ -0,0 +1,24 @@ +--- +title: "inputReportReasonCopyright" +description: "Report for copyrighted content" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputReportReasonCopyright +[Back to constructors index](/API_docs/constructors/index.html) + + + +Report for copyrighted content + + + + +### Type: [ReportReason](/API_docs/types/ReportReason.html) + + +### Example: + +``` +$inputReportReasonCopyright = ['_' => 'inputReportReasonCopyright']; +``` diff --git a/docs/API_docs/constructors/inputReportReasonFake.md b/docs/API_docs/constructors/inputReportReasonFake.md new file mode 100644 index 0000000000..2de96805d9 --- /dev/null +++ b/docs/API_docs/constructors/inputReportReasonFake.md @@ -0,0 +1,24 @@ +--- +title: "inputReportReasonFake" +description: "Report for impersonation" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputReportReasonFake +[Back to constructors index](/API_docs/constructors/index.html) + + + +Report for impersonation + + + + +### Type: [ReportReason](/API_docs/types/ReportReason.html) + + +### Example: + +``` +$inputReportReasonFake = ['_' => 'inputReportReasonFake']; +``` diff --git a/docs/API_docs/constructors/inputReportReasonGeoIrrelevant.md b/docs/API_docs/constructors/inputReportReasonGeoIrrelevant.md new file mode 100644 index 0000000000..41d3193a95 --- /dev/null +++ b/docs/API_docs/constructors/inputReportReasonGeoIrrelevant.md @@ -0,0 +1,24 @@ +--- +title: "inputReportReasonGeoIrrelevant" +description: "Report an irrelevant geogroup" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputReportReasonGeoIrrelevant +[Back to constructors index](/API_docs/constructors/index.html) + + + +Report an irrelevant geogroup + + + + +### Type: [ReportReason](/API_docs/types/ReportReason.html) + + +### Example: + +``` +$inputReportReasonGeoIrrelevant = ['_' => 'inputReportReasonGeoIrrelevant']; +``` diff --git a/docs/API_docs/constructors/inputReportReasonIllegalDrugs.md b/docs/API_docs/constructors/inputReportReasonIllegalDrugs.md new file mode 100644 index 0000000000..1e1378f19a --- /dev/null +++ b/docs/API_docs/constructors/inputReportReasonIllegalDrugs.md @@ -0,0 +1,24 @@ +--- +title: "inputReportReasonIllegalDrugs" +description: "Report for illegal drugs" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputReportReasonIllegalDrugs +[Back to constructors index](/API_docs/constructors/index.html) + + + +Report for illegal drugs + + + + +### Type: [ReportReason](/API_docs/types/ReportReason.html) + + +### Example: + +``` +$inputReportReasonIllegalDrugs = ['_' => 'inputReportReasonIllegalDrugs']; +``` diff --git a/docs/API_docs/constructors/inputReportReasonOther.md b/docs/API_docs/constructors/inputReportReasonOther.md new file mode 100644 index 0000000000..ea052df844 --- /dev/null +++ b/docs/API_docs/constructors/inputReportReasonOther.md @@ -0,0 +1,24 @@ +--- +title: "inputReportReasonOther" +description: "Other" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputReportReasonOther +[Back to constructors index](/API_docs/constructors/index.html) + + + +Other + + + + +### Type: [ReportReason](/API_docs/types/ReportReason.html) + + +### Example: + +``` +$inputReportReasonOther = ['_' => 'inputReportReasonOther']; +``` diff --git a/docs/API_docs/constructors/inputReportReasonPersonalDetails.md b/docs/API_docs/constructors/inputReportReasonPersonalDetails.md new file mode 100644 index 0000000000..181b13e3a1 --- /dev/null +++ b/docs/API_docs/constructors/inputReportReasonPersonalDetails.md @@ -0,0 +1,24 @@ +--- +title: "inputReportReasonPersonalDetails" +description: "Report for divulgation of personal details" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputReportReasonPersonalDetails +[Back to constructors index](/API_docs/constructors/index.html) + + + +Report for divulgation of personal details + + + + +### Type: [ReportReason](/API_docs/types/ReportReason.html) + + +### Example: + +``` +$inputReportReasonPersonalDetails = ['_' => 'inputReportReasonPersonalDetails']; +``` diff --git a/docs/API_docs/constructors/inputReportReasonPornography.md b/docs/API_docs/constructors/inputReportReasonPornography.md new file mode 100644 index 0000000000..fc1d1c47a6 --- /dev/null +++ b/docs/API_docs/constructors/inputReportReasonPornography.md @@ -0,0 +1,24 @@ +--- +title: "inputReportReasonPornography" +description: "Report for pornography" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputReportReasonPornography +[Back to constructors index](/API_docs/constructors/index.html) + + + +Report for pornography + + + + +### Type: [ReportReason](/API_docs/types/ReportReason.html) + + +### Example: + +``` +$inputReportReasonPornography = ['_' => 'inputReportReasonPornography']; +``` diff --git a/docs/API_docs/constructors/inputReportReasonSpam.md b/docs/API_docs/constructors/inputReportReasonSpam.md new file mode 100644 index 0000000000..a408873903 --- /dev/null +++ b/docs/API_docs/constructors/inputReportReasonSpam.md @@ -0,0 +1,24 @@ +--- +title: "inputReportReasonSpam" +description: "Report for spam" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputReportReasonSpam +[Back to constructors index](/API_docs/constructors/index.html) + + + +Report for spam + + + + +### Type: [ReportReason](/API_docs/types/ReportReason.html) + + +### Example: + +``` +$inputReportReasonSpam = ['_' => 'inputReportReasonSpam']; +``` diff --git a/docs/API_docs/constructors/inputReportReasonViolence.md b/docs/API_docs/constructors/inputReportReasonViolence.md new file mode 100644 index 0000000000..7eb784303e --- /dev/null +++ b/docs/API_docs/constructors/inputReportReasonViolence.md @@ -0,0 +1,24 @@ +--- +title: "inputReportReasonViolence" +description: "Report for violence" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputReportReasonViolence +[Back to constructors index](/API_docs/constructors/index.html) + + + +Report for violence + + + + +### Type: [ReportReason](/API_docs/types/ReportReason.html) + + +### Example: + +``` +$inputReportReasonViolence = ['_' => 'inputReportReasonViolence']; +``` diff --git a/docs/API_docs/constructors/inputSecureFile.md b/docs/API_docs/constructors/inputSecureFile.md new file mode 100644 index 0000000000..9e0ac20c2a --- /dev/null +++ b/docs/API_docs/constructors/inputSecureFile.md @@ -0,0 +1,30 @@ +--- +title: "inputSecureFile" +description: "Pre-uploaded passport file, for more info see the passport docs »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputSecureFile +[Back to constructors index](/API_docs/constructors/index.html) + + + +Pre-uploaded [passport](https://core.telegram.org/passport) file, for more info [see the passport docs »](https://core.telegram.org/passport/encryption#inputsecurefile) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Secure file ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Secure file access hash| + + + +### Type: [InputSecureFile](/API_docs/types/InputSecureFile.html) + + +### Example: + +``` +$inputSecureFile = ['_' => 'inputSecureFile', 'id' => long, 'access_hash' => long]; +``` diff --git a/docs/API_docs/constructors/inputSecureFileLocation.md b/docs/API_docs/constructors/inputSecureFileLocation.md new file mode 100644 index 0000000000..98236f136b --- /dev/null +++ b/docs/API_docs/constructors/inputSecureFileLocation.md @@ -0,0 +1,30 @@ +--- +title: "inputSecureFileLocation" +description: "Location of encrypted telegram passport file." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputSecureFileLocation +[Back to constructors index](/API_docs/constructors/index.html) + + + +Location of encrypted telegram [passport](https://core.telegram.org/passport) file. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|File ID, **id** parameter value from [secureFile](../constructors/secureFile.html)| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Checksum, **access\_hash** parameter value from [secureFile](../constructors/secureFile.html)| + + + +### Type: [InputFileLocation](/API_docs/types/InputFileLocation.html) + + +### Example: + +``` +$inputSecureFileLocation = ['_' => 'inputSecureFileLocation', 'id' => long, 'access_hash' => long]; +``` diff --git a/docs/API_docs/constructors/inputSecureFileUploaded.md b/docs/API_docs/constructors/inputSecureFileUploaded.md new file mode 100644 index 0000000000..2e7bba5040 --- /dev/null +++ b/docs/API_docs/constructors/inputSecureFileUploaded.md @@ -0,0 +1,33 @@ +--- +title: "inputSecureFileUploaded" +description: "Uploaded secure file, for more info see the passport docs »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputSecureFileUploaded +[Back to constructors index](/API_docs/constructors/index.html) + + + +Uploaded secure file, for more info [see the passport docs »](https://core.telegram.org/passport/encryption#inputsecurefile) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Secure file ID| +|parts|[int](/API_docs/types/int.html) | Yes|Secure file part count| +|md5\_checksum|[string](/API_docs/types/string.html) | Yes|MD5 hash of encrypted uploaded file, to be checked server-side| +|file\_hash|[bytes](/API_docs/types/bytes.html) | Yes|File hash| +|secret|[bytes](/API_docs/types/bytes.html) | Yes|Secret| + + + +### Type: [InputSecureFile](/API_docs/types/InputSecureFile.html) + + +### Example: + +``` +$inputSecureFileUploaded = ['_' => 'inputSecureFileUploaded', 'id' => long, 'parts' => int, 'md5_checksum' => 'string', 'file_hash' => 'bytes', 'secret' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/inputSecureValue.md b/docs/API_docs/constructors/inputSecureValue.md new file mode 100644 index 0000000000..aac28bb8d5 --- /dev/null +++ b/docs/API_docs/constructors/inputSecureValue.md @@ -0,0 +1,36 @@ +--- +title: "inputSecureValue" +description: "Secure value, for more info see the passport docs »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputSecureValue +[Back to constructors index](/API_docs/constructors/index.html) + + + +Secure value, [for more info see the passport docs »](https://core.telegram.org/passport/encryption#encryption) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[SecureValueType](/API_docs/types/SecureValueType.html) | Yes|Secure [passport](https://core.telegram.org/passport) value type| +|data|[SecureData](/API_docs/types/SecureData.html) | Optional|Encrypted [Telegram Passport](https://core.telegram.org/passport) element data| +|front\_side|[InputSecureFile](/API_docs/types/InputSecureFile.html) | Optional|Encrypted [passport](https://core.telegram.org/passport) file with the front side of the document| +|reverse\_side|[InputSecureFile](/API_docs/types/InputSecureFile.html) | Optional|Encrypted [passport](https://core.telegram.org/passport) file with the reverse side of the document| +|selfie|[InputSecureFile](/API_docs/types/InputSecureFile.html) | Optional|Encrypted [passport](https://core.telegram.org/passport) file with a selfie of the user holding the document| +|translation|Array of [InputSecureFile](/API_docs/types/InputSecureFile.html) | Optional|Array of encrypted [passport](https://core.telegram.org/passport) files with translated versions of the provided documents| +|files|Array of [InputSecureFile](/API_docs/types/InputSecureFile.html) | Optional|Array of encrypted [passport](https://core.telegram.org/passport) files with photos the of the documents| +|plain\_data|[SecurePlainData](/API_docs/types/SecurePlainData.html) | Optional|Plaintext verified [passport](https://core.telegram.org/passport) data| + + + +### Type: [InputSecureValue](/API_docs/types/InputSecureValue.html) + + +### Example: + +``` +$inputSecureValue = ['_' => 'inputSecureValue', 'type' => SecureValueType, 'data' => SecureData, 'front_side' => InputSecureFile, 'reverse_side' => InputSecureFile, 'selfie' => InputSecureFile, 'translation' => [InputSecureFile, InputSecureFile], 'files' => [InputSecureFile, InputSecureFile], 'plain_data' => SecurePlainData]; +``` diff --git a/docs/API_docs/constructors/inputSingleMedia.md b/docs/API_docs/constructors/inputSingleMedia.md new file mode 100644 index 0000000000..7c314fed29 --- /dev/null +++ b/docs/API_docs/constructors/inputSingleMedia.md @@ -0,0 +1,92 @@ +--- +title: "inputSingleMedia" +description: "A single media in an album or grouped media sent with messages.sendMultiMedia." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputSingleMedia +[Back to constructors index](/API_docs/constructors/index.html) + + + +A single media in an [album or grouped media](https://core.telegram.org/api/files#albums-grouped-media) sent with [messages.sendMultiMedia](../methods/messages.sendMultiMedia.html). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|media|[MessageMedia, Message, Update or InputMedia](/API_docs/types/InputMedia.html) | Optional|The media| +|message|[string](/API_docs/types/string.html) | Yes|A caption for the media| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|Message [entities](https://core.telegram.org/api/entities) for styled text| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | + + + +### Type: [InputSingleMedia](/API_docs/types/InputSingleMedia.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$inputSingleMedia = ['_' => 'inputSingleMedia', 'media' => InputMedia, 'message' => 'string', 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', ]; +``` diff --git a/docs/API_docs/constructors/inputStickerSetAnimatedEmoji.md b/docs/API_docs/constructors/inputStickerSetAnimatedEmoji.md new file mode 100644 index 0000000000..690287b400 --- /dev/null +++ b/docs/API_docs/constructors/inputStickerSetAnimatedEmoji.md @@ -0,0 +1,24 @@ +--- +title: "inputStickerSetAnimatedEmoji" +description: "Animated emojis stickerset" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputStickerSetAnimatedEmoji +[Back to constructors index](/API_docs/constructors/index.html) + + + +Animated emojis stickerset + + + + +### Type: [InputStickerSet](/API_docs/types/InputStickerSet.html) + + +### Example: + +``` +$inputStickerSetAnimatedEmoji = ['_' => 'inputStickerSetAnimatedEmoji']; +``` diff --git a/docs/API_docs/constructors/inputStickerSetAnimatedEmojiAnimations.md b/docs/API_docs/constructors/inputStickerSetAnimatedEmojiAnimations.md new file mode 100644 index 0000000000..10d18cecdb --- /dev/null +++ b/docs/API_docs/constructors/inputStickerSetAnimatedEmojiAnimations.md @@ -0,0 +1,24 @@ +--- +title: "inputStickerSetAnimatedEmojiAnimations" +description: "Animated emoji reaction stickerset (contains animations to play when a user clicks on a given animated emoji)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputStickerSetAnimatedEmojiAnimations +[Back to constructors index](/API_docs/constructors/index.html) + + + +Animated emoji reaction stickerset (contains animations to play when a user clicks on a given animated emoji) + + + + +### Type: [InputStickerSet](/API_docs/types/InputStickerSet.html) + + +### Example: + +``` +$inputStickerSetAnimatedEmojiAnimations = ['_' => 'inputStickerSetAnimatedEmojiAnimations']; +``` diff --git a/docs/API_docs/constructors/inputStickerSetDice.md b/docs/API_docs/constructors/inputStickerSetDice.md new file mode 100644 index 0000000000..d2db1fd36f --- /dev/null +++ b/docs/API_docs/constructors/inputStickerSetDice.md @@ -0,0 +1,29 @@ +--- +title: "inputStickerSetDice" +description: "Used for fetching animated dice stickers" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputStickerSetDice +[Back to constructors index](/API_docs/constructors/index.html) + + + +Used for fetching [animated dice stickers](https://core.telegram.org/api/dice) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|emoticon|[string](/API_docs/types/string.html) | Yes|The emoji, for now 🏀, 🎲 and 🎯 are supported| + + + +### Type: [InputStickerSet](/API_docs/types/InputStickerSet.html) + + +### Example: + +``` +$inputStickerSetDice = ['_' => 'inputStickerSetDice', 'emoticon' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputStickerSetEmojiChannelDefaultStatuses.md b/docs/API_docs/constructors/inputStickerSetEmojiChannelDefaultStatuses.md new file mode 100644 index 0000000000..5e2fdbc0b3 --- /dev/null +++ b/docs/API_docs/constructors/inputStickerSetEmojiChannelDefaultStatuses.md @@ -0,0 +1,24 @@ +--- +title: "inputStickerSetEmojiChannelDefaultStatuses" +description: "Default custom emoji status stickerset for channel statuses" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputStickerSetEmojiChannelDefaultStatuses +[Back to constructors index](/API_docs/constructors/index.html) + + + +Default [custom emoji status](https://core.telegram.org/api/emoji-status) stickerset for channel statuses + + + + +### Type: [InputStickerSet](/API_docs/types/InputStickerSet.html) + + +### Example: + +``` +$inputStickerSetEmojiChannelDefaultStatuses = ['_' => 'inputStickerSetEmojiChannelDefaultStatuses']; +``` diff --git a/docs/API_docs/constructors/inputStickerSetEmojiDefaultStatuses.md b/docs/API_docs/constructors/inputStickerSetEmojiDefaultStatuses.md new file mode 100644 index 0000000000..62f289ad73 --- /dev/null +++ b/docs/API_docs/constructors/inputStickerSetEmojiDefaultStatuses.md @@ -0,0 +1,24 @@ +--- +title: "inputStickerSetEmojiDefaultStatuses" +description: "Default custom emoji status stickerset" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputStickerSetEmojiDefaultStatuses +[Back to constructors index](/API_docs/constructors/index.html) + + + +Default [custom emoji status](https://core.telegram.org/api/emoji-status) stickerset + + + + +### Type: [InputStickerSet](/API_docs/types/InputStickerSet.html) + + +### Example: + +``` +$inputStickerSetEmojiDefaultStatuses = ['_' => 'inputStickerSetEmojiDefaultStatuses']; +``` diff --git a/docs/API_docs/constructors/inputStickerSetEmojiDefaultTopicIcons.md b/docs/API_docs/constructors/inputStickerSetEmojiDefaultTopicIcons.md new file mode 100644 index 0000000000..818553b71c --- /dev/null +++ b/docs/API_docs/constructors/inputStickerSetEmojiDefaultTopicIcons.md @@ -0,0 +1,24 @@ +--- +title: "inputStickerSetEmojiDefaultTopicIcons" +description: "Default custom emoji stickerset for forum topic icons" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputStickerSetEmojiDefaultTopicIcons +[Back to constructors index](/API_docs/constructors/index.html) + + + +Default [custom emoji](https://core.telegram.org/api/custom-emoji) stickerset for [forum topic icons](https://core.telegram.org/api/forum#forum-topics) + + + + +### Type: [InputStickerSet](/API_docs/types/InputStickerSet.html) + + +### Example: + +``` +$inputStickerSetEmojiDefaultTopicIcons = ['_' => 'inputStickerSetEmojiDefaultTopicIcons']; +``` diff --git a/docs/API_docs/constructors/inputStickerSetEmojiGenericAnimations.md b/docs/API_docs/constructors/inputStickerSetEmojiGenericAnimations.md new file mode 100644 index 0000000000..ee81399c33 --- /dev/null +++ b/docs/API_docs/constructors/inputStickerSetEmojiGenericAnimations.md @@ -0,0 +1,24 @@ +--- +title: "inputStickerSetEmojiGenericAnimations" +description: "Generic animation stickerset containing animations to play when reacting to messages using a normal emoji without a custom animation" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputStickerSetEmojiGenericAnimations +[Back to constructors index](/API_docs/constructors/index.html) + + + +Generic animation stickerset containing animations to play when [reacting to messages using a normal emoji without a custom animation](https://core.telegram.org/api/reactions) + + + + +### Type: [InputStickerSet](/API_docs/types/InputStickerSet.html) + + +### Example: + +``` +$inputStickerSetEmojiGenericAnimations = ['_' => 'inputStickerSetEmojiGenericAnimations']; +``` diff --git a/docs/API_docs/constructors/inputStickerSetEmpty.md b/docs/API_docs/constructors/inputStickerSetEmpty.md new file mode 100644 index 0000000000..295d0df465 --- /dev/null +++ b/docs/API_docs/constructors/inputStickerSetEmpty.md @@ -0,0 +1,24 @@ +--- +title: "inputStickerSetEmpty" +description: "Empty constructor" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputStickerSetEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor + + + + +### Type: [InputStickerSet](/API_docs/types/InputStickerSet.html) + + +### Example: + +``` +$inputStickerSetEmpty = ['_' => 'inputStickerSetEmpty']; +``` diff --git a/docs/API_docs/constructors/inputStickerSetID.md b/docs/API_docs/constructors/inputStickerSetID.md new file mode 100644 index 0000000000..3910a81193 --- /dev/null +++ b/docs/API_docs/constructors/inputStickerSetID.md @@ -0,0 +1,30 @@ +--- +title: "inputStickerSetID" +description: "Stickerset by ID" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputStickerSetID +[Back to constructors index](/API_docs/constructors/index.html) + + + +Stickerset by ID + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash| + + + +### Type: [InputStickerSet](/API_docs/types/InputStickerSet.html) + + +### Example: + +``` +$inputStickerSetID = ['_' => 'inputStickerSetID', 'id' => long, 'access_hash' => long]; +``` diff --git a/docs/API_docs/constructors/inputStickerSetItem.md b/docs/API_docs/constructors/inputStickerSetItem.md new file mode 100644 index 0000000000..6d01a63156 --- /dev/null +++ b/docs/API_docs/constructors/inputStickerSetItem.md @@ -0,0 +1,32 @@ +--- +title: "inputStickerSetItem" +description: "Sticker in a stickerset" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputStickerSetItem +[Back to constructors index](/API_docs/constructors/index.html) + + + +Sticker in a stickerset + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|document|[MessageMedia, Message, Update or InputDocument](/API_docs/types/InputDocument.html) | Optional|The sticker| +|emoji|[string](/API_docs/types/string.html) | Yes|Associated emoji| +|mask\_coords|[MaskCoords](/API_docs/types/MaskCoords.html) | Optional|Coordinates for mask sticker| +|keywords|[string](/API_docs/types/string.html) | Optional|Set of keywords, separated by commas (can't be provided for mask stickers)| + + + +### Type: [InputStickerSetItem](/API_docs/types/InputStickerSetItem.html) + + +### Example: + +``` +$inputStickerSetItem = ['_' => 'inputStickerSetItem', 'document' => InputDocument, 'emoji' => 'string', 'mask_coords' => MaskCoords, 'keywords' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputStickerSetPremiumGifts.md b/docs/API_docs/constructors/inputStickerSetPremiumGifts.md new file mode 100644 index 0000000000..80702abfea --- /dev/null +++ b/docs/API_docs/constructors/inputStickerSetPremiumGifts.md @@ -0,0 +1,24 @@ +--- +title: "inputStickerSetPremiumGifts" +description: "Stickers to show when receiving a gifted Telegram Premium subscription" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputStickerSetPremiumGifts +[Back to constructors index](/API_docs/constructors/index.html) + + + +Stickers to show when receiving a gifted Telegram Premium subscription + + + + +### Type: [InputStickerSet](/API_docs/types/InputStickerSet.html) + + +### Example: + +``` +$inputStickerSetPremiumGifts = ['_' => 'inputStickerSetPremiumGifts']; +``` diff --git a/docs/API_docs/constructors/inputStickerSetShortName.md b/docs/API_docs/constructors/inputStickerSetShortName.md new file mode 100644 index 0000000000..bd66cab664 --- /dev/null +++ b/docs/API_docs/constructors/inputStickerSetShortName.md @@ -0,0 +1,29 @@ +--- +title: "inputStickerSetShortName" +description: "Stickerset by short name, from a stickerset deep link »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputStickerSetShortName +[Back to constructors index](/API_docs/constructors/index.html) + + + +Stickerset by short name, from a [stickerset deep link »](https://core.telegram.org/api/links#stickerset-links) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|short\_name|[string](/API_docs/types/string.html) | Yes|Short name from a [stickerset deep link »](https://core.telegram.org/api/links#stickerset-links)| + + + +### Type: [InputStickerSet](/API_docs/types/InputStickerSet.html) + + +### Example: + +``` +$inputStickerSetShortName = ['_' => 'inputStickerSetShortName', 'short_name' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputStickerSetThumb.md b/docs/API_docs/constructors/inputStickerSetThumb.md new file mode 100644 index 0000000000..3fb52b6fca --- /dev/null +++ b/docs/API_docs/constructors/inputStickerSetThumb.md @@ -0,0 +1,30 @@ +--- +title: "inputStickerSetThumb" +description: "Location of stickerset thumbnail (see files)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputStickerSetThumb +[Back to constructors index](/API_docs/constructors/index.html) + + + +Location of stickerset thumbnail (see [files](https://core.telegram.org/api/files)) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|stickerset|[InputStickerSet](/API_docs/types/InputStickerSet.html) | Optional|Sticker set| +|thumb\_version|[int](/API_docs/types/int.html) | Yes|Thumbnail version| + + + +### Type: [InputFileLocation](/API_docs/types/InputFileLocation.html) + + +### Example: + +``` +$inputStickerSetThumb = ['_' => 'inputStickerSetThumb', 'stickerset' => InputStickerSet, 'thumb_version' => int]; +``` diff --git a/docs/API_docs/constructors/inputStickeredMediaDocument.md b/docs/API_docs/constructors/inputStickeredMediaDocument.md new file mode 100644 index 0000000000..199b1df9b7 --- /dev/null +++ b/docs/API_docs/constructors/inputStickeredMediaDocument.md @@ -0,0 +1,29 @@ +--- +title: "inputStickeredMediaDocument" +description: "A document with stickers attached" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputStickeredMediaDocument +[Back to constructors index](/API_docs/constructors/index.html) + + + +A document with stickers attached + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[MessageMedia, Message, Update or InputDocument](/API_docs/types/InputDocument.html) | Optional|The document| + + + +### Type: [InputStickeredMedia](/API_docs/types/InputStickeredMedia.html) + + +### Example: + +``` +$inputStickeredMediaDocument = ['_' => 'inputStickeredMediaDocument', 'id' => InputDocument]; +``` diff --git a/docs/API_docs/constructors/inputStickeredMediaPhoto.md b/docs/API_docs/constructors/inputStickeredMediaPhoto.md new file mode 100644 index 0000000000..d252a8e973 --- /dev/null +++ b/docs/API_docs/constructors/inputStickeredMediaPhoto.md @@ -0,0 +1,29 @@ +--- +title: "inputStickeredMediaPhoto" +description: "A photo with stickers attached" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputStickeredMediaPhoto +[Back to constructors index](/API_docs/constructors/index.html) + + + +A photo with stickers attached + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[MessageMedia, Message, Update or InputPhoto](/API_docs/types/InputPhoto.html) | Optional|The photo| + + + +### Type: [InputStickeredMedia](/API_docs/types/InputStickeredMedia.html) + + +### Example: + +``` +$inputStickeredMediaPhoto = ['_' => 'inputStickeredMediaPhoto', 'id' => InputPhoto]; +``` diff --git a/docs/API_docs/constructors/inputStorePaymentGiftPremium.md b/docs/API_docs/constructors/inputStorePaymentGiftPremium.md new file mode 100644 index 0000000000..4b0d3b6654 --- /dev/null +++ b/docs/API_docs/constructors/inputStorePaymentGiftPremium.md @@ -0,0 +1,31 @@ +--- +title: "inputStorePaymentGiftPremium" +description: "Info about a gifted Telegram Premium purchase" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputStorePaymentGiftPremium +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about a gifted Telegram Premium purchase + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Optional|The user to which the Telegram Premium subscription was gifted| +|currency|[string](/API_docs/types/string.html) | Yes|Three-letter ISO 4217 [currency](https://core.telegram.org/bots/payments#supported-currencies) code| +|amount|[long](/API_docs/types/long.html) | Yes|Price 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](https://core.telegram.org/bots/payments/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).| + + + +### Type: [InputStorePaymentPurpose](/API_docs/types/InputStorePaymentPurpose.html) + + +### Example: + +``` +$inputStorePaymentGiftPremium = ['_' => 'inputStorePaymentGiftPremium', 'user_id' => InputUser, 'currency' => 'string', 'amount' => long]; +``` diff --git a/docs/API_docs/constructors/inputStorePaymentPremiumGiftCode.md b/docs/API_docs/constructors/inputStorePaymentPremiumGiftCode.md new file mode 100644 index 0000000000..47ad33c20c --- /dev/null +++ b/docs/API_docs/constructors/inputStorePaymentPremiumGiftCode.md @@ -0,0 +1,32 @@ +--- +title: "inputStorePaymentPremiumGiftCode" +description: "Used to gift Telegram Premium subscriptions only to some specific subscribers of a channel or to some of our contacts, see here » for more info on giveaways and gifts." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputStorePaymentPremiumGiftCode +[Back to constructors index](/API_docs/constructors/index.html) + + + +Used to gift [Telegram Premium](https://core.telegram.org/api/premium) subscriptions only to some specific subscribers of a channel or to some of our contacts, see [here »](https://core.telegram.org/api/giveaways) for more info on giveaways and gifts. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|users|Array of [Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Yes|The users that will receive the [Telegram Premium](https://core.telegram.org/api/premium) subscriptions.| +|boost\_peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional|If set, the gifts will be sent on behalf of a channel we are an admin of, which will also assign some [boosts](https://core.telegram.org/api/boost) to it. Otherwise, the gift will be sent directly from the currently logged in users, and we will gain some extra [boost slots](https://core.telegram.org/api/boost). See [here »](https://core.telegram.org/api/giveaways) for more info on giveaways and gifts.| +|currency|[string](/API_docs/types/string.html) | Yes|Three-letter ISO 4217 [currency](https://core.telegram.org/bots/payments#supported-currencies) code| +|amount|[long](/API_docs/types/long.html) | Yes|Total 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](https://core.telegram.org/bots/payments/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).| + + + +### Type: [InputStorePaymentPurpose](/API_docs/types/InputStorePaymentPurpose.html) + + +### Example: + +``` +$inputStorePaymentPremiumGiftCode = ['_' => 'inputStorePaymentPremiumGiftCode', 'users' => [InputUser, InputUser], 'boost_peer' => InputPeer, 'currency' => 'string', 'amount' => long]; +``` diff --git a/docs/API_docs/constructors/inputStorePaymentPremiumGiveaway.md b/docs/API_docs/constructors/inputStorePaymentPremiumGiveaway.md new file mode 100644 index 0000000000..d577a4a544 --- /dev/null +++ b/docs/API_docs/constructors/inputStorePaymentPremiumGiveaway.md @@ -0,0 +1,37 @@ +--- +title: "inputStorePaymentPremiumGiveaway" +description: "Used to pay for a giveaway, see here » for more info." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputStorePaymentPremiumGiveaway +[Back to constructors index](/API_docs/constructors/index.html) + + + +Used to pay for a [giveaway, see here »](https://core.telegram.org/api/giveaways) for more info. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|only\_new\_subscribers|[Bool](/API_docs/types/Bool.html) | Optional|If set, only new subscribers starting from the giveaway creation date will be able to participate to the giveaway.| +|winners\_are\_visible|[Bool](/API_docs/types/Bool.html) | Optional|If set, giveaway winners are public and will be listed in a [messageMediaGiveawayResults](../constructors/messageMediaGiveawayResults.html) message that will be automatically sent to the channel once the giveaway ends.| +|boost\_peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional|The channel starting the giveaway, that the user must join to participate, that will receive the giveaway [boosts](https://core.telegram.org/api/boost); see [here »](https://core.telegram.org/api/giveaways) for more info on giveaways.| +|additional\_peers|Array of [Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional|Additional channels that the user must join to participate to the giveaway can be specified here.| +|countries\_iso2|Array of [string](/API_docs/types/string.html) | Optional|The set of users that can participate to the giveaway can be restricted by passing here an explicit whitelist of up to [giveaway\_countries\_max](https://core.telegram.org/api/config#giveaway-countries-max) countries, specified as two-letter ISO 3166-1 alpha-2 country codes.| +|prize\_description|[string](/API_docs/types/string.html) | Optional|Can contain a textual description of additional giveaway prizes.| +|until\_date|[int](/API_docs/types/int.html) | Yes|The end date of the giveaway, must be at most [giveaway\_period\_max](https://core.telegram.org/api/config#giveaway-period-max) seconds in the future; see [here »](https://core.telegram.org/api/giveaways) for more info on giveaways.| +|currency|[string](/API_docs/types/string.html) | Yes|Three-letter ISO 4217 [currency](https://core.telegram.org/bots/payments#supported-currencies) code| +|amount|[long](/API_docs/types/long.html) | Yes|Total 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](https://core.telegram.org/bots/payments/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).| + + + +### Type: [InputStorePaymentPurpose](/API_docs/types/InputStorePaymentPurpose.html) + + +### Example: + +``` +$inputStorePaymentPremiumGiveaway = ['_' => 'inputStorePaymentPremiumGiveaway', 'only_new_subscribers' => Bool, 'winners_are_visible' => Bool, 'boost_peer' => InputPeer, 'additional_peers' => [InputPeer, InputPeer], 'countries_iso2' => ['string', 'string'], 'prize_description' => 'string', 'until_date' => int, 'currency' => 'string', 'amount' => long]; +``` diff --git a/docs/API_docs/constructors/inputStorePaymentPremiumSubscription.md b/docs/API_docs/constructors/inputStorePaymentPremiumSubscription.md new file mode 100644 index 0000000000..ce87e94bff --- /dev/null +++ b/docs/API_docs/constructors/inputStorePaymentPremiumSubscription.md @@ -0,0 +1,30 @@ +--- +title: "inputStorePaymentPremiumSubscription" +description: "Info about a Telegram Premium purchase" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputStorePaymentPremiumSubscription +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about a Telegram Premium purchase + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|restore|[Bool](/API_docs/types/Bool.html) | Optional|Pass true if this is a restore of a Telegram Premium purchase; only for the App Store| +|upgrade|[Bool](/API_docs/types/Bool.html) | Optional|Pass true if this is an upgrade from a monthly subscription to a yearly subscription; only for App Store| + + + +### Type: [InputStorePaymentPurpose](/API_docs/types/InputStorePaymentPurpose.html) + + +### Example: + +``` +$inputStorePaymentPremiumSubscription = ['_' => 'inputStorePaymentPremiumSubscription', 'restore' => Bool, 'upgrade' => Bool]; +``` diff --git a/docs/API_docs/constructors/inputTakeoutFileLocation.md b/docs/API_docs/constructors/inputTakeoutFileLocation.md new file mode 100644 index 0000000000..8bf1def1d7 --- /dev/null +++ b/docs/API_docs/constructors/inputTakeoutFileLocation.md @@ -0,0 +1,24 @@ +--- +title: "inputTakeoutFileLocation" +description: "Used to download a JSON file that will contain all personal data related to features that do not have a specialized takeout method yet, see here » for more info on the takeout API." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputTakeoutFileLocation +[Back to constructors index](/API_docs/constructors/index.html) + + + +Used to download a JSON file that will contain all personal data related to features that do not have a specialized [takeout method](https://core.telegram.org/api/takeout) yet, see [here »](https://core.telegram.org/api/takeout) for more info on the takeout API. + + + + +### Type: [InputFileLocation](/API_docs/types/InputFileLocation.html) + + +### Example: + +``` +$inputTakeoutFileLocation = ['_' => 'inputTakeoutFileLocation']; +``` diff --git a/docs/API_docs/constructors/inputTheme.md b/docs/API_docs/constructors/inputTheme.md new file mode 100644 index 0000000000..067ea88894 --- /dev/null +++ b/docs/API_docs/constructors/inputTheme.md @@ -0,0 +1,30 @@ +--- +title: "inputTheme" +description: "Theme" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputTheme +[Back to constructors index](/API_docs/constructors/index.html) + + + +Theme + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash| + + + +### Type: [InputTheme](/API_docs/types/InputTheme.html) + + +### Example: + +``` +$inputTheme = ['_' => 'inputTheme', 'id' => long, 'access_hash' => long]; +``` diff --git a/docs/API_docs/constructors/inputThemeSettings.md b/docs/API_docs/constructors/inputThemeSettings.md new file mode 100644 index 0000000000..3c4b08f370 --- /dev/null +++ b/docs/API_docs/constructors/inputThemeSettings.md @@ -0,0 +1,35 @@ +--- +title: "inputThemeSettings" +description: "Theme settings" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputThemeSettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +Theme settings + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|message\_colors\_animated|[Bool](/API_docs/types/Bool.html) | Optional|If set, the freeform gradient fill needs to be animated on every sent message| +|base\_theme|[BaseTheme](/API_docs/types/BaseTheme.html) | Yes|Default theme on which this theme is based| +|accent\_color|[int](/API_docs/types/int.html) | Yes|Accent color, ARGB format| +|outbox\_accent\_color|[int](/API_docs/types/int.html) | Optional|Accent color of outgoing messages in ARGB format| +|message\_colors|Array of [int](/API_docs/types/int.html) | Optional|The fill to be used as a background for outgoing messages, in RGB24 format.
If just one or two equal colors are provided, describes a solid fill of a background.
If two different colors are provided, describes the top and bottom colors of a 0-degree gradient.
If three or four colors are provided, describes a freeform gradient fill of a background.| +|wallpaper|[InputWallPaper](/API_docs/types/InputWallPaper.html) | Optional|[inputWallPaper](../constructors/inputWallPaper.html) or [inputWallPaperSlug](../constructors/inputWallPaper.html) when passing wallpaper files for [image](https://core.telegram.org/api/wallpapers#image-wallpapers) or [pattern](https://core.telegram.org/api/wallpapers#pattern-wallpapers) wallpapers, [inputWallPaperNoFile](../constructors/inputWallPaperNoFile.html) with `id=0` otherwise.| +|wallpaper\_settings|[WallPaperSettings](/API_docs/types/WallPaperSettings.html) | Optional|[Wallpaper](https://core.telegram.org/api/wallpapers) settings.| + + + +### Type: [InputThemeSettings](/API_docs/types/InputThemeSettings.html) + + +### Example: + +``` +$inputThemeSettings = ['_' => 'inputThemeSettings', 'message_colors_animated' => Bool, 'base_theme' => BaseTheme, 'accent_color' => int, 'outbox_accent_color' => int, 'message_colors' => [int, int], 'wallpaper' => InputWallPaper, 'wallpaper_settings' => WallPaperSettings]; +``` diff --git a/docs/API_docs/constructors/inputThemeSlug.md b/docs/API_docs/constructors/inputThemeSlug.md new file mode 100644 index 0000000000..c9078c1fa0 --- /dev/null +++ b/docs/API_docs/constructors/inputThemeSlug.md @@ -0,0 +1,29 @@ +--- +title: "inputThemeSlug" +description: "Theme by theme ID" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputThemeSlug +[Back to constructors index](/API_docs/constructors/index.html) + + + +Theme by theme ID + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|slug|[string](/API_docs/types/string.html) | Yes|Unique theme ID obtained from a [theme deep link »](https://core.telegram.org/api/links#theme-links)| + + + +### Type: [InputTheme](/API_docs/types/InputTheme.html) + + +### Example: + +``` +$inputThemeSlug = ['_' => 'inputThemeSlug', 'slug' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputUser.md b/docs/API_docs/constructors/inputUser.md new file mode 100644 index 0000000000..de31b5455c --- /dev/null +++ b/docs/API_docs/constructors/inputUser.md @@ -0,0 +1,30 @@ +--- +title: "inputUser" +description: "Defines a user for further interaction." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputUser +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines a user for further interaction. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|User identifier| +|access\_hash|[long](/API_docs/types/long.html) | Yes|**access\_hash** value from the [user](../constructors/user.html) constructor| + + + +### Type: [InputUser](/API_docs/types/InputUser.html) + + +### Example: + +``` +$inputUser = ['_' => 'inputUser', 'user_id' => long, 'access_hash' => long]; +``` diff --git a/docs/API_docs/constructors/inputUserEmpty.md b/docs/API_docs/constructors/inputUserEmpty.md new file mode 100644 index 0000000000..6c7bf93952 --- /dev/null +++ b/docs/API_docs/constructors/inputUserEmpty.md @@ -0,0 +1,24 @@ +--- +title: "inputUserEmpty" +description: "Empty constructor, does not define a user." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputUserEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor, does not define a user. + + + + +### Type: [InputUser](/API_docs/types/InputUser.html) + + +### Example: + +``` +$inputUserEmpty = ['_' => 'inputUserEmpty']; +``` diff --git a/docs/API_docs/constructors/inputUserFromMessage.md b/docs/API_docs/constructors/inputUserFromMessage.md new file mode 100644 index 0000000000..17d686d39f --- /dev/null +++ b/docs/API_docs/constructors/inputUserFromMessage.md @@ -0,0 +1,31 @@ +--- +title: "inputUserFromMessage" +description: "Defines a min user that was seen in a certain message of a certain chat." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputUserFromMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines a [min](https://core.telegram.org/api/min) user that was seen in a certain message of a certain chat. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional|The chat where the user was seen| +|msg\_id|[int](/API_docs/types/int.html) | Yes|The message ID| +|user\_id|[long](/API_docs/types/long.html) | Yes|The identifier of the user that was seen| + + + +### Type: [InputUser](/API_docs/types/InputUser.html) + + +### Example: + +``` +$inputUserFromMessage = ['_' => 'inputUserFromMessage', 'peer' => InputPeer, 'msg_id' => int, 'user_id' => long]; +``` diff --git a/docs/API_docs/constructors/inputUserSelf.md b/docs/API_docs/constructors/inputUserSelf.md new file mode 100644 index 0000000000..a0925ee67d --- /dev/null +++ b/docs/API_docs/constructors/inputUserSelf.md @@ -0,0 +1,24 @@ +--- +title: "inputUserSelf" +description: "Defines the current user." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputUserSelf +[Back to constructors index](/API_docs/constructors/index.html) + + + +Defines the current user. + + + + +### Type: [InputUser](/API_docs/types/InputUser.html) + + +### Example: + +``` +$inputUserSelf = ['_' => 'inputUserSelf']; +``` diff --git a/docs/API_docs/constructors/inputWallPaper.md b/docs/API_docs/constructors/inputWallPaper.md new file mode 100644 index 0000000000..08be735879 --- /dev/null +++ b/docs/API_docs/constructors/inputWallPaper.md @@ -0,0 +1,30 @@ +--- +title: "inputWallPaper" +description: "Wallpaper" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputWallPaper +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Wallpaper](https://core.telegram.org/api/wallpapers) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|[Wallpaper](https://core.telegram.org/api/wallpapers) ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash| + + + +### Type: [InputWallPaper](/API_docs/types/InputWallPaper.html) + + +### Example: + +``` +$inputWallPaper = ['_' => 'inputWallPaper', 'id' => long, 'access_hash' => long]; +``` diff --git a/docs/API_docs/constructors/inputWallPaperNoFile.md b/docs/API_docs/constructors/inputWallPaperNoFile.md new file mode 100644 index 0000000000..7320999aef --- /dev/null +++ b/docs/API_docs/constructors/inputWallPaperNoFile.md @@ -0,0 +1,29 @@ +--- +title: "inputWallPaperNoFile" +description: "Wallpaper with no file access hash, used for example when deleting (unsave=true) wallpapers using account.saveWallPaper, specifying just the wallpaper ID." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputWallPaperNoFile +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Wallpaper](https://core.telegram.org/api/wallpapers) with no file access hash, used for example when deleting (`unsave=true`) wallpapers using [account.saveWallPaper](../methods/account.saveWallPaper.html), specifying just the wallpaper ID. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Wallpaper ID| + + + +### Type: [InputWallPaper](/API_docs/types/InputWallPaper.html) + + +### Example: + +``` +$inputWallPaperNoFile = ['_' => 'inputWallPaperNoFile', 'id' => long]; +``` diff --git a/docs/API_docs/constructors/inputWallPaperSlug.md b/docs/API_docs/constructors/inputWallPaperSlug.md new file mode 100644 index 0000000000..2f6d085f63 --- /dev/null +++ b/docs/API_docs/constructors/inputWallPaperSlug.md @@ -0,0 +1,29 @@ +--- +title: "inputWallPaperSlug" +description: "Wallpaper by slug (a unique ID, obtained from a wallpaper link »)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputWallPaperSlug +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Wallpaper](https://core.telegram.org/api/wallpapers) by slug (a unique ID, obtained from a [wallpaper link »](https://core.telegram.org/api/links#wallpaper-links)) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|slug|[string](/API_docs/types/string.html) | Yes|Unique wallpaper ID| + + + +### Type: [InputWallPaper](/API_docs/types/InputWallPaper.html) + + +### Example: + +``` +$inputWallPaperSlug = ['_' => 'inputWallPaperSlug', 'slug' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputWebDocument.md b/docs/API_docs/constructors/inputWebDocument.md new file mode 100644 index 0000000000..92895c5ab0 --- /dev/null +++ b/docs/API_docs/constructors/inputWebDocument.md @@ -0,0 +1,32 @@ +--- +title: "inputWebDocument" +description: "The document" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputWebDocument +[Back to constructors index](/API_docs/constructors/index.html) + + + +The document + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|Remote document URL to be downloaded using the appropriate [method](https://core.telegram.org/api/files)| +|size|[int](/API_docs/types/int.html) | Yes|Remote file size| +|mime\_type|[string](/API_docs/types/string.html) | Yes|Mime type| +|attributes|Array of [DocumentAttribute](/API_docs/types/DocumentAttribute.html) | Yes|Attributes for media types| + + + +### Type: [InputWebDocument](/API_docs/types/InputWebDocument.html) + + +### Example: + +``` +$inputWebDocument = ['_' => 'inputWebDocument', 'url' => 'string', 'size' => int, 'mime_type' => 'string', 'attributes' => [DocumentAttribute, DocumentAttribute]]; +``` diff --git a/docs/API_docs/constructors/inputWebFileAudioAlbumThumbLocation.md b/docs/API_docs/constructors/inputWebFileAudioAlbumThumbLocation.md new file mode 100644 index 0000000000..4a6cce7a74 --- /dev/null +++ b/docs/API_docs/constructors/inputWebFileAudioAlbumThumbLocation.md @@ -0,0 +1,32 @@ +--- +title: "inputWebFileAudioAlbumThumbLocation" +description: "Used to download an album cover for any music file using upload.getWebFile, see the webfile docs for more info »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputWebFileAudioAlbumThumbLocation +[Back to constructors index](/API_docs/constructors/index.html) + + + +Used to download an album cover for any music file using [upload.getWebFile](../methods/upload.getWebFile.html), see the [webfile docs for more info »](https://core.telegram.org/api/files#downloading-webfiles). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|small|[Bool](/API_docs/types/Bool.html) | Optional|Used to return a thumbnail with `100x100` resolution (instead of the default `600x600`)| +|document|[MessageMedia, Message, Update or InputDocument](/API_docs/types/InputDocument.html) | Optional|The audio file in question: must NOT be provided in secret chats, provide the `title` and `performer` fields instead.| +|title|[string](/API_docs/types/string.html) | Optional|Song title: should only be used in secret chats, in normal chats provide `document` instead, as it has more lax rate limits.| +|performer|[string](/API_docs/types/string.html) | Optional|Song performer: should only be used in secret chats, in normal chats provide `document` instead, as it has more lax rate limits.| + + + +### Type: [InputWebFileLocation](/API_docs/types/InputWebFileLocation.html) + + +### Example: + +``` +$inputWebFileAudioAlbumThumbLocation = ['_' => 'inputWebFileAudioAlbumThumbLocation', 'small' => Bool, 'document' => InputDocument, 'title' => 'string', 'performer' => 'string']; +``` diff --git a/docs/API_docs/constructors/inputWebFileGeoPointLocation.md b/docs/API_docs/constructors/inputWebFileGeoPointLocation.md new file mode 100644 index 0000000000..22d912b283 --- /dev/null +++ b/docs/API_docs/constructors/inputWebFileGeoPointLocation.md @@ -0,0 +1,34 @@ +--- +title: "inputWebFileGeoPointLocation" +description: "Used to download a server-generated image with the map preview from a geoPoint, see the webfile docs for more info »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputWebFileGeoPointLocation +[Back to constructors index](/API_docs/constructors/index.html) + + + +Used to download a server-generated image with the map preview from a [geoPoint](../constructors/geoPoint.html), see the [webfile docs for more info »](https://core.telegram.org/api/files#downloading-webfiles). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|geo\_point|[InputGeoPoint](/API_docs/types/InputGeoPoint.html) | Optional|Generated from the `lat`, `long` and `accuracy_radius` parameters of the [geoPoint](../constructors/geoPoint.html)| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash of the [geoPoint](../constructors/geoPoint.html)| +|w|[int](/API_docs/types/int.html) | Yes|Map width in pixels before applying scale; 16-1024| +|h|[int](/API_docs/types/int.html) | Yes|Map height in pixels before applying scale; 16-1024| +|zoom|[int](/API_docs/types/int.html) | Yes|Map zoom level; 13-20| +|scale|[int](/API_docs/types/int.html) | Yes|Map scale; 1-3| + + + +### Type: [InputWebFileLocation](/API_docs/types/InputWebFileLocation.html) + + +### Example: + +``` +$inputWebFileGeoPointLocation = ['_' => 'inputWebFileGeoPointLocation', 'geo_point' => InputGeoPoint, 'access_hash' => long, 'w' => int, 'h' => int, 'zoom' => int, 'scale' => int]; +``` diff --git a/docs/API_docs/constructors/inputWebFileLocation.md b/docs/API_docs/constructors/inputWebFileLocation.md new file mode 100644 index 0000000000..6bf34ee8e8 --- /dev/null +++ b/docs/API_docs/constructors/inputWebFileLocation.md @@ -0,0 +1,30 @@ +--- +title: "inputWebFileLocation" +description: "Location of a remote HTTP(s) file" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: inputWebFileLocation +[Back to constructors index](/API_docs/constructors/index.html) + + + +Location of a remote HTTP(s) file + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|HTTP URL of file| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash| + + + +### Type: [InputWebFileLocation](/API_docs/types/InputWebFileLocation.html) + + +### Example: + +``` +$inputWebFileLocation = ['_' => 'inputWebFileLocation', 'url' => 'string', 'access_hash' => long]; +``` diff --git a/docs/API_docs/constructors/invoice.md b/docs/API_docs/constructors/invoice.md new file mode 100644 index 0000000000..5be1968d8d --- /dev/null +++ b/docs/API_docs/constructors/invoice.md @@ -0,0 +1,42 @@ +--- +title: "invoice" +description: "Invoice" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: invoice +[Back to constructors index](/API_docs/constructors/index.html) + + + +Invoice + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|test|[Bool](/API_docs/types/Bool.html) | Optional|Test invoice| +|name\_requested|[Bool](/API_docs/types/Bool.html) | Optional|Set this flag if you require the user's full name to complete the order| +|phone\_requested|[Bool](/API_docs/types/Bool.html) | Optional|Set this flag if you require the user's phone number to complete the order| +|email\_requested|[Bool](/API_docs/types/Bool.html) | Optional|Set this flag if you require the user's email address to complete the order| +|shipping\_address\_requested|[Bool](/API_docs/types/Bool.html) | Optional|Set this flag if you require the user's shipping address to complete the order| +|flexible|[Bool](/API_docs/types/Bool.html) | Optional|Set this flag if the final price depends on the shipping method| +|phone\_to\_provider|[Bool](/API_docs/types/Bool.html) | Optional|Set this flag if user's phone number should be sent to provider| +|email\_to\_provider|[Bool](/API_docs/types/Bool.html) | Optional|Set this flag if user's email address should be sent to provider| +|recurring|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a recurring payment| +|currency|[string](/API_docs/types/string.html) | Yes|Three-letter ISO 4217 [currency](https://core.telegram.org/bots/payments#supported-currencies) code| +|prices|Array of [LabeledPrice](/API_docs/types/LabeledPrice.html) | Yes|Price breakdown, a list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.)| +|max\_tip\_amount|[long](/API_docs/types/long.html) | Optional|The maximum accepted amount for tips 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](https://core.telegram.org/bots/payments/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).| +|suggested\_tip\_amounts|Array of [long](/API_docs/types/long.html) | Optional|A vector of suggested amounts of tips in the *smallest units* of the currency (integer, not float/double). At most 4 suggested tip amounts can be specified. The suggested tip amounts must be positive, passed in a strictly increased order and must not exceed `max_tip_amount`.| +|terms\_url|[string](/API_docs/types/string.html) | Optional|Terms of service URL| + + + +### Type: [Invoice](/API_docs/types/Invoice.html) + + +### Example: + +``` +$invoice = ['_' => 'invoice', 'test' => Bool, 'name_requested' => Bool, 'phone_requested' => Bool, 'email_requested' => Bool, 'shipping_address_requested' => Bool, 'flexible' => Bool, 'phone_to_provider' => Bool, 'email_to_provider' => Bool, 'recurring' => Bool, 'currency' => 'string', 'prices' => [LabeledPrice, LabeledPrice], 'max_tip_amount' => long, 'suggested_tip_amounts' => [long, long], 'terms_url' => 'string']; +``` diff --git a/docs/API_docs/constructors/jsonArray.md b/docs/API_docs/constructors/jsonArray.md new file mode 100644 index 0000000000..b99e508661 --- /dev/null +++ b/docs/API_docs/constructors/jsonArray.md @@ -0,0 +1,29 @@ +--- +title: "jsonArray" +description: "JSON array" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: jsonArray +[Back to constructors index](/API_docs/constructors/index.html) + + + +JSON array + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|value|Array of [JSONValue](/API_docs/types/JSONValue.html) | Yes|JSON values| + + + +### Type: [JSONValue](/API_docs/types/JSONValue.html) + + +### Example: + +``` +$jsonArray = ['_' => 'jsonArray', 'value' => [JSONValue, JSONValue]]; +``` diff --git a/docs/API_docs/constructors/jsonBool.md b/docs/API_docs/constructors/jsonBool.md new file mode 100644 index 0000000000..0bae8ac858 --- /dev/null +++ b/docs/API_docs/constructors/jsonBool.md @@ -0,0 +1,29 @@ +--- +title: "jsonBool" +description: "JSON boolean value" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: jsonBool +[Back to constructors index](/API_docs/constructors/index.html) + + + +JSON boolean value + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|value|[Bool](/API_docs/types/Bool.html) | Yes|Value| + + + +### Type: [JSONValue](/API_docs/types/JSONValue.html) + + +### Example: + +``` +$jsonBool = ['_' => 'jsonBool', 'value' => Bool]; +``` diff --git a/docs/API_docs/constructors/jsonNull.md b/docs/API_docs/constructors/jsonNull.md new file mode 100644 index 0000000000..0384cc7552 --- /dev/null +++ b/docs/API_docs/constructors/jsonNull.md @@ -0,0 +1,24 @@ +--- +title: "jsonNull" +description: "null JSON value" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: jsonNull +[Back to constructors index](/API_docs/constructors/index.html) + + + +null JSON value + + + + +### Type: [JSONValue](/API_docs/types/JSONValue.html) + + +### Example: + +``` +$jsonNull = ['_' => 'jsonNull']; +``` diff --git a/docs/API_docs/constructors/jsonNumber.md b/docs/API_docs/constructors/jsonNumber.md new file mode 100644 index 0000000000..57d44db390 --- /dev/null +++ b/docs/API_docs/constructors/jsonNumber.md @@ -0,0 +1,29 @@ +--- +title: "jsonNumber" +description: "JSON numeric value" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: jsonNumber +[Back to constructors index](/API_docs/constructors/index.html) + + + +JSON numeric value + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|value|[double](/API_docs/types/double.html) | Yes|Value| + + + +### Type: [JSONValue](/API_docs/types/JSONValue.html) + + +### Example: + +``` +$jsonNumber = ['_' => 'jsonNumber', 'value' => double]; +``` diff --git a/docs/API_docs/constructors/jsonObject.md b/docs/API_docs/constructors/jsonObject.md new file mode 100644 index 0000000000..63956b011b --- /dev/null +++ b/docs/API_docs/constructors/jsonObject.md @@ -0,0 +1,29 @@ +--- +title: "jsonObject" +description: "JSON object value" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: jsonObject +[Back to constructors index](/API_docs/constructors/index.html) + + + +JSON object value + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|value|Array of [JSONObjectValue](/API_docs/types/JSONObjectValue.html) | Yes|Values| + + + +### Type: [JSONValue](/API_docs/types/JSONValue.html) + + +### Example: + +``` +$jsonObject = ['_' => 'jsonObject', 'value' => [JSONObjectValue, JSONObjectValue]]; +``` diff --git a/docs/API_docs/constructors/jsonObjectValue.md b/docs/API_docs/constructors/jsonObjectValue.md new file mode 100644 index 0000000000..892a59d46c --- /dev/null +++ b/docs/API_docs/constructors/jsonObjectValue.md @@ -0,0 +1,30 @@ +--- +title: "jsonObjectValue" +description: "JSON key: value pair" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: jsonObjectValue +[Back to constructors index](/API_docs/constructors/index.html) + + + +JSON key: value pair + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|key|[string](/API_docs/types/string.html) | Yes|Key| +|value|[JSONValue](/API_docs/types/JSONValue.html) | Yes|Value| + + + +### Type: [JSONObjectValue](/API_docs/types/JSONObjectValue.html) + + +### Example: + +``` +$jsonObjectValue = ['_' => 'jsonObjectValue', 'key' => 'string', 'value' => JSONValue]; +``` diff --git a/docs/API_docs/constructors/jsonString.md b/docs/API_docs/constructors/jsonString.md new file mode 100644 index 0000000000..8b12df0872 --- /dev/null +++ b/docs/API_docs/constructors/jsonString.md @@ -0,0 +1,29 @@ +--- +title: "jsonString" +description: "JSON string" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: jsonString +[Back to constructors index](/API_docs/constructors/index.html) + + + +JSON string + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|value|[string](/API_docs/types/string.html) | Yes|Value| + + + +### Type: [JSONValue](/API_docs/types/JSONValue.html) + + +### Example: + +``` +$jsonString = ['_' => 'jsonString', 'value' => 'string']; +``` diff --git a/docs/API_docs/constructors/keyboardButton.md b/docs/API_docs/constructors/keyboardButton.md new file mode 100644 index 0000000000..98acd1fea4 --- /dev/null +++ b/docs/API_docs/constructors/keyboardButton.md @@ -0,0 +1,29 @@ +--- +title: "keyboardButton" +description: "Bot keyboard button" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: keyboardButton +[Back to constructors index](/API_docs/constructors/index.html) + + + +Bot keyboard button + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[string](/API_docs/types/string.html) | Yes|Button text| + + + +### Type: [KeyboardButton](/API_docs/types/KeyboardButton.html) + + +### Example: + +``` +$keyboardButton = ['_' => 'keyboardButton', 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/keyboardButtonBuy.md b/docs/API_docs/constructors/keyboardButtonBuy.md new file mode 100644 index 0000000000..aacf550cc0 --- /dev/null +++ b/docs/API_docs/constructors/keyboardButtonBuy.md @@ -0,0 +1,29 @@ +--- +title: "keyboardButtonBuy" +description: "Button to buy a product" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: keyboardButtonBuy +[Back to constructors index](/API_docs/constructors/index.html) + + + +Button to buy a product + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[string](/API_docs/types/string.html) | Yes|Button text| + + + +### Type: [KeyboardButton](/API_docs/types/KeyboardButton.html) + + +### Example: + +``` +$keyboardButtonBuy = ['_' => 'keyboardButtonBuy', 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/keyboardButtonCallback.md b/docs/API_docs/constructors/keyboardButtonCallback.md new file mode 100644 index 0000000000..1236bbe759 --- /dev/null +++ b/docs/API_docs/constructors/keyboardButtonCallback.md @@ -0,0 +1,31 @@ +--- +title: "keyboardButtonCallback" +description: "Callback button" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: keyboardButtonCallback +[Back to constructors index](/API_docs/constructors/index.html) + + + +Callback button + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|requires\_password|[Bool](/API_docs/types/Bool.html) | Optional|Whether the user should verify his identity by entering his [2FA SRP parameters](https://core.telegram.org/api/srp) to the [messages.getBotCallbackAnswer](../methods/messages.getBotCallbackAnswer.html) method. NOTE: telegram and the bot WILL NOT have access to the plaintext password, thanks to [SRP](https://core.telegram.org/api/srp). This button is mainly used by the official [@botfather](https://t.me/botfather) bot, for verifying the user's identity before transferring ownership of a bot to another user.| +|text|[string](/API_docs/types/string.html) | Yes|Button text| +|data|[bytes](/API_docs/types/bytes.html) | Yes|Callback data| + + + +### Type: [KeyboardButton](/API_docs/types/KeyboardButton.html) + + +### Example: + +``` +$keyboardButtonCallback = ['_' => 'keyboardButtonCallback', 'requires_password' => Bool, 'text' => 'string', 'data' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/keyboardButtonGame.md b/docs/API_docs/constructors/keyboardButtonGame.md new file mode 100644 index 0000000000..4bf18b1e23 --- /dev/null +++ b/docs/API_docs/constructors/keyboardButtonGame.md @@ -0,0 +1,29 @@ +--- +title: "keyboardButtonGame" +description: "Button to start a game" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: keyboardButtonGame +[Back to constructors index](/API_docs/constructors/index.html) + + + +Button to start a game + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[string](/API_docs/types/string.html) | Yes|Button text| + + + +### Type: [KeyboardButton](/API_docs/types/KeyboardButton.html) + + +### Example: + +``` +$keyboardButtonGame = ['_' => 'keyboardButtonGame', 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/keyboardButtonRequestGeoLocation.md b/docs/API_docs/constructors/keyboardButtonRequestGeoLocation.md new file mode 100644 index 0000000000..bdb26e502c --- /dev/null +++ b/docs/API_docs/constructors/keyboardButtonRequestGeoLocation.md @@ -0,0 +1,29 @@ +--- +title: "keyboardButtonRequestGeoLocation" +description: "Button to request a user's geolocation" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: keyboardButtonRequestGeoLocation +[Back to constructors index](/API_docs/constructors/index.html) + + + +Button to request a user's geolocation + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[string](/API_docs/types/string.html) | Yes|Button text| + + + +### Type: [KeyboardButton](/API_docs/types/KeyboardButton.html) + + +### Example: + +``` +$keyboardButtonRequestGeoLocation = ['_' => 'keyboardButtonRequestGeoLocation', 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/keyboardButtonRequestPeer.md b/docs/API_docs/constructors/keyboardButtonRequestPeer.md new file mode 100644 index 0000000000..1bec3a447c --- /dev/null +++ b/docs/API_docs/constructors/keyboardButtonRequestPeer.md @@ -0,0 +1,32 @@ +--- +title: "keyboardButtonRequestPeer" +description: "Prompts the user to select and share one or more peers with the bot using messages.sendBotRequestedPeer" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: keyboardButtonRequestPeer +[Back to constructors index](/API_docs/constructors/index.html) + + + +Prompts the user to select and share one or more peers with the bot using [messages.sendBotRequestedPeer](../methods/messages.sendBotRequestedPeer.html) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[string](/API_docs/types/string.html) | Yes|Button text| +|button\_id|[int](/API_docs/types/int.html) | Yes|Button ID, to be passed to [messages.sendBotRequestedPeer](../methods/messages.sendBotRequestedPeer.html).| +|peer\_type|[RequestPeerType](/API_docs/types/RequestPeerType.html) | Yes|Filtering criteria to use for the peer selection list shown to the user.
The list should display all existing peers of the specified type, and should also offer an option for the user to create and immediately use one or more (up to `max_quantity`) peers of the specified type, if needed.| +|max\_quantity|[int](/API_docs/types/int.html) | Yes|Maximum number of peers that can be chosne.| + + + +### Type: [KeyboardButton](/API_docs/types/KeyboardButton.html) + + +### Example: + +``` +$keyboardButtonRequestPeer = ['_' => 'keyboardButtonRequestPeer', 'text' => 'string', 'button_id' => int, 'peer_type' => RequestPeerType, 'max_quantity' => int]; +``` diff --git a/docs/API_docs/constructors/keyboardButtonRequestPhone.md b/docs/API_docs/constructors/keyboardButtonRequestPhone.md new file mode 100644 index 0000000000..9a8b100914 --- /dev/null +++ b/docs/API_docs/constructors/keyboardButtonRequestPhone.md @@ -0,0 +1,29 @@ +--- +title: "keyboardButtonRequestPhone" +description: "Button to request a user's phone number" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: keyboardButtonRequestPhone +[Back to constructors index](/API_docs/constructors/index.html) + + + +Button to request a user's phone number + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[string](/API_docs/types/string.html) | Yes|Button text| + + + +### Type: [KeyboardButton](/API_docs/types/KeyboardButton.html) + + +### Example: + +``` +$keyboardButtonRequestPhone = ['_' => 'keyboardButtonRequestPhone', 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/keyboardButtonRequestPoll.md b/docs/API_docs/constructors/keyboardButtonRequestPoll.md new file mode 100644 index 0000000000..102018c72e --- /dev/null +++ b/docs/API_docs/constructors/keyboardButtonRequestPoll.md @@ -0,0 +1,30 @@ +--- +title: "keyboardButtonRequestPoll" +description: "A button that allows the user to create and send a poll when pressed; available only in private" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: keyboardButtonRequestPoll +[Back to constructors index](/API_docs/constructors/index.html) + + + +A button that allows the user to create and send a poll when pressed; available only in private + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|quiz|[Bool](/API_docs/types/Bool.html) | Optional|If set, only quiz polls can be sent| +|text|[string](/API_docs/types/string.html) | Yes|Button text| + + + +### Type: [KeyboardButton](/API_docs/types/KeyboardButton.html) + + +### Example: + +``` +$keyboardButtonRequestPoll = ['_' => 'keyboardButtonRequestPoll', 'quiz' => Bool, 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/keyboardButtonRow.md b/docs/API_docs/constructors/keyboardButtonRow.md new file mode 100644 index 0000000000..50f6704f59 --- /dev/null +++ b/docs/API_docs/constructors/keyboardButtonRow.md @@ -0,0 +1,29 @@ +--- +title: "keyboardButtonRow" +description: "Inline keyboard row" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: keyboardButtonRow +[Back to constructors index](/API_docs/constructors/index.html) + + + +Inline keyboard row + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|buttons|Array of [KeyboardButton](/API_docs/types/KeyboardButton.html) | Yes|Bot or inline keyboard buttons| + + + +### Type: [KeyboardButtonRow](/API_docs/types/KeyboardButtonRow.html) + + +### Example: + +``` +$keyboardButtonRow = ['_' => 'keyboardButtonRow', 'buttons' => [KeyboardButton, KeyboardButton]]; +``` diff --git a/docs/API_docs/constructors/keyboardButtonSimpleWebView.md b/docs/API_docs/constructors/keyboardButtonSimpleWebView.md new file mode 100644 index 0000000000..b928533d44 --- /dev/null +++ b/docs/API_docs/constructors/keyboardButtonSimpleWebView.md @@ -0,0 +1,32 @@ +--- +title: "keyboardButtonSimpleWebView" +description: "Button to open a bot mini app using messages.requestSimpleWebView, without sending user information to the web app." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: keyboardButtonSimpleWebView +[Back to constructors index](/API_docs/constructors/index.html) + + + +Button to open a [bot mini app](https://core.telegram.org/api/bots/webapps) using [messages.requestSimpleWebView](../methods/messages.requestSimpleWebView.html), without sending user information to the web app. + +Can only be sent or received as part of a reply keyboard, use [keyboardButtonWebView](../constructors/keyboardButtonWebView.html) for inline keyboards. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[string](/API_docs/types/string.html) | Yes|Button text| +|url|[string](/API_docs/types/string.html) | Yes|[Web app URL](https://core.telegram.org/api/bots/webapps)| + + + +### Type: [KeyboardButton](/API_docs/types/KeyboardButton.html) + + +### Example: + +``` +$keyboardButtonSimpleWebView = ['_' => 'keyboardButtonSimpleWebView', 'text' => 'string', 'url' => 'string']; +``` diff --git a/docs/API_docs/constructors/keyboardButtonSwitchInline.md b/docs/API_docs/constructors/keyboardButtonSwitchInline.md new file mode 100644 index 0000000000..95a4821d85 --- /dev/null +++ b/docs/API_docs/constructors/keyboardButtonSwitchInline.md @@ -0,0 +1,32 @@ +--- +title: "keyboardButtonSwitchInline" +description: "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." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: keyboardButtonSwitchInline +[Back to constructors index](/API_docs/constructors/index.html) + + + +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. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|same\_peer|[Bool](/API_docs/types/Bool.html) | Optional|If set, pressing the button will insert the bot's username and the specified inline `query` in the current chat's input field.| +|text|[string](/API_docs/types/string.html) | Yes|Button label| +|query|[string](/API_docs/types/string.html) | Yes|The inline query to use| +|peer\_types|Array of [InlineQueryPeerType](/API_docs/types/InlineQueryPeerType.html) | Optional|Filter to use when selecting chats.| + + + +### Type: [KeyboardButton](/API_docs/types/KeyboardButton.html) + + +### Example: + +``` +$keyboardButtonSwitchInline = ['_' => 'keyboardButtonSwitchInline', 'same_peer' => Bool, 'text' => 'string', 'query' => 'string', 'peer_types' => [InlineQueryPeerType, InlineQueryPeerType]]; +``` diff --git a/docs/API_docs/constructors/keyboardButtonUrl.md b/docs/API_docs/constructors/keyboardButtonUrl.md new file mode 100644 index 0000000000..e386ce25af --- /dev/null +++ b/docs/API_docs/constructors/keyboardButtonUrl.md @@ -0,0 +1,30 @@ +--- +title: "keyboardButtonUrl" +description: "URL button" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: keyboardButtonUrl +[Back to constructors index](/API_docs/constructors/index.html) + + + +URL button + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[string](/API_docs/types/string.html) | Yes|Button label| +|url|[string](/API_docs/types/string.html) | Yes|URL| + + + +### Type: [KeyboardButton](/API_docs/types/KeyboardButton.html) + + +### Example: + +``` +$keyboardButtonUrl = ['_' => 'keyboardButtonUrl', 'text' => 'string', 'url' => 'string']; +``` diff --git a/docs/API_docs/constructors/keyboardButtonUrlAuth.md b/docs/API_docs/constructors/keyboardButtonUrlAuth.md new file mode 100644 index 0000000000..5c896b24e4 --- /dev/null +++ b/docs/API_docs/constructors/keyboardButtonUrlAuth.md @@ -0,0 +1,32 @@ +--- +title: "keyboardButtonUrlAuth" +description: "Button to request a user to authorize via URL using Seamless Telegram Login. When the user clicks on such a button, messages.requestUrlAuth should be called, providing the button_id and the ID of the container message. The returned urlAuthResultRequest object will contain more details about the authorization request (request_write_access if the bot would like to send messages to the user along with the username of the bot which will be used for user authorization). Finally, the user can choose to call messages.acceptUrlAuth to get a urlAuthResultAccepted with the URL to open instead of the url of this constructor, or a urlAuthResultDefault, in which case the url of this constructor must be opened, instead. If the user refuses the authorization request but still wants to open the link, the url of this constructor must be used." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: keyboardButtonUrlAuth +[Back to constructors index](/API_docs/constructors/index.html) + + + +Button to request a user to authorize via URL using [Seamless Telegram Login](https://telegram.org/blog/privacy-discussions-web-bots#meet-seamless-web-bots). When the user clicks on such a button, [messages.requestUrlAuth](../methods/messages.requestUrlAuth.html) should be called, providing the `button_id` and the ID of the container message. The returned [urlAuthResultRequest](../constructors/urlAuthResultRequest.html) object will contain more details about the authorization request (`request_write_access` if the bot would like to send messages to the user along with the username of the bot which will be used for user authorization). Finally, the user can choose to call [messages.acceptUrlAuth](../methods/messages.acceptUrlAuth.html) to get a [urlAuthResultAccepted](../constructors/urlAuthResultAccepted.html) with the URL to open instead of the `url` of this constructor, or a [urlAuthResultDefault](../constructors/urlAuthResultDefault.html), in which case the `url` of this constructor must be opened, instead. If the user refuses the authorization request but still wants to open the link, the `url` of this constructor must be used. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[string](/API_docs/types/string.html) | Yes|Button label| +|fwd\_text|[string](/API_docs/types/string.html) | Optional|New text of the button in forwarded messages.| +|url|[string](/API_docs/types/string.html) | Yes|An HTTP URL to be opened with user authorization data added to the query string when the button is pressed. If the user refuses to provide authorization data, the original URL without information about the user will be opened. The data added is the same as described in [Receiving authorization data](https://core.telegram.org/widgets/login#receiving-authorization-data).

**NOTE**: Services must **always** check the hash of the received data to verify the authentication and the integrity of the data as described in [Checking authorization](https://core.telegram.org/widgets/login#checking-authorization).| +|button\_id|[int](/API_docs/types/int.html) | Yes|ID of the button to pass to [messages.requestUrlAuth](../methods/messages.requestUrlAuth.html)| + + + +### Type: [KeyboardButton](/API_docs/types/KeyboardButton.html) + + +### Example: + +``` +$keyboardButtonUrlAuth = ['_' => 'keyboardButtonUrlAuth', 'text' => 'string', 'fwd_text' => 'string', 'url' => 'string', 'button_id' => int]; +``` diff --git a/docs/API_docs/constructors/keyboardButtonUserProfile.md b/docs/API_docs/constructors/keyboardButtonUserProfile.md new file mode 100644 index 0000000000..6ac6bd6c30 --- /dev/null +++ b/docs/API_docs/constructors/keyboardButtonUserProfile.md @@ -0,0 +1,30 @@ +--- +title: "keyboardButtonUserProfile" +description: "Button that links directly to a user profile" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: keyboardButtonUserProfile +[Back to constructors index](/API_docs/constructors/index.html) + + + +Button that links directly to a user profile + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[string](/API_docs/types/string.html) | Yes|Button text| +|user\_id|[long](/API_docs/types/long.html) | Yes|User ID| + + + +### Type: [KeyboardButton](/API_docs/types/KeyboardButton.html) + + +### Example: + +``` +$keyboardButtonUserProfile = ['_' => 'keyboardButtonUserProfile', 'text' => 'string', 'user_id' => long]; +``` diff --git a/docs/API_docs/constructors/keyboardButtonWebView.md b/docs/API_docs/constructors/keyboardButtonWebView.md new file mode 100644 index 0000000000..3cf80f3863 --- /dev/null +++ b/docs/API_docs/constructors/keyboardButtonWebView.md @@ -0,0 +1,32 @@ +--- +title: "keyboardButtonWebView" +description: "Button to open a bot mini app using messages.requestWebView, sending over user information after user confirmation." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: keyboardButtonWebView +[Back to constructors index](/API_docs/constructors/index.html) + + + +Button to open a [bot mini app](https://core.telegram.org/api/bots/webapps) using [messages.requestWebView](../methods/messages.requestWebView.html), sending over user information after user confirmation. + +Can only be sent or received as part of an inline keyboard, use [keyboardButtonSimpleWebView](../constructors/keyboardButtonSimpleWebView.html) for reply keyboards. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[string](/API_docs/types/string.html) | Yes|Button text| +|url|[string](/API_docs/types/string.html) | Yes|[Web app url](https://core.telegram.org/api/bots/webapps)| + + + +### Type: [KeyboardButton](/API_docs/types/KeyboardButton.html) + + +### Example: + +``` +$keyboardButtonWebView = ['_' => 'keyboardButtonWebView', 'text' => 'string', 'url' => 'string']; +``` diff --git a/docs/API_docs/constructors/labeledPrice.md b/docs/API_docs/constructors/labeledPrice.md new file mode 100644 index 0000000000..7af5f521a7 --- /dev/null +++ b/docs/API_docs/constructors/labeledPrice.md @@ -0,0 +1,30 @@ +--- +title: "labeledPrice" +description: "This object represents a portion of the price for goods or services." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: labeledPrice +[Back to constructors index](/API_docs/constructors/index.html) + + + +This object represents a portion of the price for goods or services. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|label|[string](/API_docs/types/string.html) | Yes|Portion label| +|amount|[long](/API_docs/types/long.html) | Yes|Price 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](https://core.telegram.org/bots/payments/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).| + + + +### Type: [LabeledPrice](/API_docs/types/LabeledPrice.html) + + +### Example: + +``` +$labeledPrice = ['_' => 'labeledPrice', 'label' => 'string', 'amount' => long]; +``` diff --git a/docs/API_docs/constructors/langPackDifference.md b/docs/API_docs/constructors/langPackDifference.md new file mode 100644 index 0000000000..acd2da97b0 --- /dev/null +++ b/docs/API_docs/constructors/langPackDifference.md @@ -0,0 +1,32 @@ +--- +title: "langPackDifference" +description: "Changes to the app's localization pack" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: langPackDifference +[Back to constructors index](/API_docs/constructors/index.html) + + + +Changes to the app's localization pack + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|lang\_code|[string](/API_docs/types/string.html) | Yes|Language code| +|from\_version|[int](/API_docs/types/int.html) | Yes|Previous version number| +|version|[int](/API_docs/types/int.html) | Yes|New version number| +|strings|Array of [LangPackString](/API_docs/types/LangPackString.html) | Yes|Localized strings| + + + +### Type: [LangPackDifference](/API_docs/types/LangPackDifference.html) + + +### Example: + +``` +$langPackDifference = ['_' => 'langPackDifference', 'lang_code' => 'string', 'from_version' => int, 'version' => int, 'strings' => [LangPackString, LangPackString]]; +``` diff --git a/docs/API_docs/constructors/langPackLanguage.md b/docs/API_docs/constructors/langPackLanguage.md new file mode 100644 index 0000000000..f4a92cc87d --- /dev/null +++ b/docs/API_docs/constructors/langPackLanguage.md @@ -0,0 +1,39 @@ +--- +title: "langPackLanguage" +description: "Identifies a localization pack" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: langPackLanguage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Identifies a localization pack + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|official|[Bool](/API_docs/types/Bool.html) | Optional|Whether the language pack is official| +|rtl|[Bool](/API_docs/types/Bool.html) | Optional|Is this a localization pack for an RTL language| +|beta|[Bool](/API_docs/types/Bool.html) | Optional|Is this a beta localization pack?| +|name|[string](/API_docs/types/string.html) | Yes|Language name| +|native\_name|[string](/API_docs/types/string.html) | Yes|Language name in the language itself| +|lang\_code|[string](/API_docs/types/string.html) | Yes|Language code (pack identifier)| +|base\_lang\_code|[string](/API_docs/types/string.html) | Optional|Identifier 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 packs| +|plural\_code|[string](/API_docs/types/string.html) | Yes|A language code to be used to apply plural forms. See [https://www.unicode.org/cldr/charts/latest/supplemental/language\_plural\_rules.html](https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html) for more info| +|strings\_count|[int](/API_docs/types/int.html) | Yes|Total number of non-deleted strings from the language pack| +|translated\_count|[int](/API_docs/types/int.html) | Yes|Total number of translated strings from the language pack| +|translations\_url|[string](/API_docs/types/string.html) | Yes|Link to language translation interface; empty for custom local language packs| + + + +### Type: [LangPackLanguage](/API_docs/types/LangPackLanguage.html) + + +### Example: + +``` +$langPackLanguage = ['_' => 'langPackLanguage', 'official' => Bool, 'rtl' => Bool, 'beta' => Bool, 'name' => 'string', 'native_name' => 'string', 'lang_code' => 'string', 'base_lang_code' => 'string', 'plural_code' => 'string', 'strings_count' => int, 'translated_count' => int, 'translations_url' => 'string']; +``` diff --git a/docs/API_docs/constructors/langPackString.md b/docs/API_docs/constructors/langPackString.md new file mode 100644 index 0000000000..45853f6d59 --- /dev/null +++ b/docs/API_docs/constructors/langPackString.md @@ -0,0 +1,30 @@ +--- +title: "langPackString" +description: "Translated localization string" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: langPackString +[Back to constructors index](/API_docs/constructors/index.html) + + + +Translated localization string + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|key|[string](/API_docs/types/string.html) | Yes|Language key| +|value|[string](/API_docs/types/string.html) | Yes|Value| + + + +### Type: [LangPackString](/API_docs/types/LangPackString.html) + + +### Example: + +``` +$langPackString = ['_' => 'langPackString', 'key' => 'string', 'value' => 'string']; +``` diff --git a/docs/API_docs/constructors/langPackStringDeleted.md b/docs/API_docs/constructors/langPackStringDeleted.md new file mode 100644 index 0000000000..e371d75276 --- /dev/null +++ b/docs/API_docs/constructors/langPackStringDeleted.md @@ -0,0 +1,29 @@ +--- +title: "langPackStringDeleted" +description: "Deleted localization string" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: langPackStringDeleted +[Back to constructors index](/API_docs/constructors/index.html) + + + +Deleted localization string + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|key|[string](/API_docs/types/string.html) | Yes|Localization key| + + + +### Type: [LangPackString](/API_docs/types/LangPackString.html) + + +### Example: + +``` +$langPackStringDeleted = ['_' => 'langPackStringDeleted', 'key' => 'string']; +``` diff --git a/docs/API_docs/constructors/langPackStringPluralized.md b/docs/API_docs/constructors/langPackStringPluralized.md new file mode 100644 index 0000000000..4b66414172 --- /dev/null +++ b/docs/API_docs/constructors/langPackStringPluralized.md @@ -0,0 +1,35 @@ +--- +title: "langPackStringPluralized" +description: "A language pack string which has different forms based on the number of some object it mentions. See https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html for more info" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: langPackStringPluralized +[Back to constructors index](/API_docs/constructors/index.html) + + + +A language pack string which has different forms based on the number of some object it mentions. See [https://www.unicode.org/cldr/charts/latest/supplemental/language\_plural\_rules.html](https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html) for more info + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|key|[string](/API_docs/types/string.html) | Yes|Localization key| +|zero\_value|[string](/API_docs/types/string.html) | Optional|Value for zero objects| +|one\_value|[string](/API_docs/types/string.html) | Optional|Value for one object| +|two\_value|[string](/API_docs/types/string.html) | Optional|Value for two objects| +|few\_value|[string](/API_docs/types/string.html) | Optional|Value for a few objects| +|many\_value|[string](/API_docs/types/string.html) | Optional|Value for many objects| +|other\_value|[string](/API_docs/types/string.html) | Yes|Default value| + + + +### Type: [LangPackString](/API_docs/types/LangPackString.html) + + +### Example: + +``` +$langPackStringPluralized = ['_' => 'langPackStringPluralized', 'key' => 'string', 'zero_value' => 'string', 'one_value' => 'string', 'two_value' => 'string', 'few_value' => 'string', 'many_value' => 'string', 'other_value' => 'string']; +``` diff --git a/docs/API_docs/constructors/maskCoords.md b/docs/API_docs/constructors/maskCoords.md new file mode 100644 index 0000000000..1fb53b4438 --- /dev/null +++ b/docs/API_docs/constructors/maskCoords.md @@ -0,0 +1,39 @@ +--- +title: "maskCoords" +description: "Position on a photo where a mask should be placed when attaching stickers to media »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: maskCoords +[Back to constructors index](/API_docs/constructors/index.html) + + + +Position on a photo where a mask should be placed when [attaching stickers to media »](https://core.telegram.org/api/stickers#attached-stickers) + +The `n` position indicates where the mask should be placed: + +- 0 => Relative to the forehead +- 1 => Relative to the eyes +- 2 => Relative to the mouth +- 3 => Relative to the chin + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|n|[int](/API_docs/types/int.html) | Yes|Part of the face, relative to which the mask should be placed| +|x|[double](/API_docs/types/double.html) | Yes|Shift by X-axis measured in widths of the mask scaled to the face size, from left to right. (For example, -1.0 will place the mask just to the left of the default mask position)| +|y|[double](/API_docs/types/double.html) | Yes|Shift by Y-axis measured in widths of the mask scaled to the face size, from left to right. (For example, -1.0 will place the mask just below the default mask position)| +|zoom|[double](/API_docs/types/double.html) | Yes|Mask scaling coefficient. (For example, 2.0 means a doubled size)| + + + +### Type: [MaskCoords](/API_docs/types/MaskCoords.html) + + +### Example: + +``` +$maskCoords = ['_' => 'maskCoords', 'n' => int, 'x' => double, 'y' => double, 'zoom' => double]; +``` diff --git a/docs/API_docs/constructors/mediaAreaChannelPost.md b/docs/API_docs/constructors/mediaAreaChannelPost.md new file mode 100644 index 0000000000..8bd00ed10e --- /dev/null +++ b/docs/API_docs/constructors/mediaAreaChannelPost.md @@ -0,0 +1,31 @@ +--- +title: "mediaAreaChannelPost" +description: "Represents a channel post." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: mediaAreaChannelPost +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a channel post. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|coordinates|[MediaAreaCoordinates](/API_docs/types/MediaAreaCoordinates.html) | Yes|The size and location of the media area corresponding to the location sticker on top of the story media.| +|channel\_id|[long](/API_docs/types/long.html) | Yes|The channel that posted the message| +|msg\_id|[int](/API_docs/types/int.html) | Yes|ID of the channel message| + + + +### Type: [MediaArea](/API_docs/types/MediaArea.html) + + +### Example: + +``` +$mediaAreaChannelPost = ['_' => 'mediaAreaChannelPost', 'coordinates' => MediaAreaCoordinates, 'channel_id' => long, 'msg_id' => int]; +``` diff --git a/docs/API_docs/constructors/mediaAreaCoordinates.md b/docs/API_docs/constructors/mediaAreaCoordinates.md new file mode 100644 index 0000000000..14bbce208d --- /dev/null +++ b/docs/API_docs/constructors/mediaAreaCoordinates.md @@ -0,0 +1,33 @@ +--- +title: "mediaAreaCoordinates" +description: "Coordinates and size of a clicable rectangular area on top of a story." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: mediaAreaCoordinates +[Back to constructors index](/API_docs/constructors/index.html) + + + +Coordinates and size of a clicable rectangular area on top of a story. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|x|[double](/API_docs/types/double.html) | Yes|The abscissa of the rectangle's center, as a percentage of the media width (0-100).| +|y|[double](/API_docs/types/double.html) | Yes|The ordinate of the rectangle's center, as a percentage of the media height (0-100).| +|w|[double](/API_docs/types/double.html) | Yes|The width of the rectangle, as a percentage of the media width (0-100).| +|h|[double](/API_docs/types/double.html) | Yes|The height of the rectangle, as a percentage of the media height (0-100).| +|rotation|[double](/API_docs/types/double.html) | Yes|Clockwise rotation angle of the rectangle, in degrees (0-360).| + + + +### Type: [MediaAreaCoordinates](/API_docs/types/MediaAreaCoordinates.html) + + +### Example: + +``` +$mediaAreaCoordinates = ['_' => 'mediaAreaCoordinates', 'x' => double, 'y' => double, 'w' => double, 'h' => double, 'rotation' => double]; +``` diff --git a/docs/API_docs/constructors/mediaAreaGeoPoint.md b/docs/API_docs/constructors/mediaAreaGeoPoint.md new file mode 100644 index 0000000000..69666696de --- /dev/null +++ b/docs/API_docs/constructors/mediaAreaGeoPoint.md @@ -0,0 +1,30 @@ +--- +title: "mediaAreaGeoPoint" +description: "Represents a geolocation tag attached to a story." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: mediaAreaGeoPoint +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a geolocation tag attached to a [story](https://core.telegram.org/api/stories). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|coordinates|[MediaAreaCoordinates](/API_docs/types/MediaAreaCoordinates.html) | Yes|The size and position of the media area corresponding to the location sticker on top of the story media.| +|geo|[GeoPoint](/API_docs/types/GeoPoint.html) | Optional|Coordinates of the geolocation tag.| + + + +### Type: [MediaArea](/API_docs/types/MediaArea.html) + + +### Example: + +``` +$mediaAreaGeoPoint = ['_' => 'mediaAreaGeoPoint', 'coordinates' => MediaAreaCoordinates, 'geo' => GeoPoint]; +``` diff --git a/docs/API_docs/constructors/mediaAreaSuggestedReaction.md b/docs/API_docs/constructors/mediaAreaSuggestedReaction.md new file mode 100644 index 0000000000..d77dd289aa --- /dev/null +++ b/docs/API_docs/constructors/mediaAreaSuggestedReaction.md @@ -0,0 +1,32 @@ +--- +title: "mediaAreaSuggestedReaction" +description: "Represents a reaction bubble." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: mediaAreaSuggestedReaction +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a reaction bubble. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|dark|[Bool](/API_docs/types/Bool.html) | Optional|Whether the reaction bubble has a dark background.| +|flipped|[Bool](/API_docs/types/Bool.html) | Optional|Whether the reaction bubble is mirrored (see [here »](https://core.telegram.org/api/stories#reactions) for more info).| +|coordinates|[MediaAreaCoordinates](/API_docs/types/MediaAreaCoordinates.html) | Yes|The coordinates of the media area corresponding to the reaction button.| +|reaction|[Reaction](/API_docs/types/Reaction.html) | Optional|The reaction that should be sent when this area is clicked.| + + + +### Type: [MediaArea](/API_docs/types/MediaArea.html) + + +### Example: + +``` +$mediaAreaSuggestedReaction = ['_' => 'mediaAreaSuggestedReaction', 'dark' => Bool, 'flipped' => Bool, 'coordinates' => MediaAreaCoordinates, 'reaction' => Reaction]; +``` diff --git a/docs/API_docs/constructors/mediaAreaVenue.md b/docs/API_docs/constructors/mediaAreaVenue.md new file mode 100644 index 0000000000..a61600eac9 --- /dev/null +++ b/docs/API_docs/constructors/mediaAreaVenue.md @@ -0,0 +1,35 @@ +--- +title: "mediaAreaVenue" +description: "Represents a location tag attached to a story, with additional venue information." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: mediaAreaVenue +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a location tag attached to a [story](https://core.telegram.org/api/stories), with additional venue information. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|coordinates|[MediaAreaCoordinates](/API_docs/types/MediaAreaCoordinates.html) | Yes|The size and location of the media area corresponding to the location sticker on top of the story media.| +|geo|[GeoPoint](/API_docs/types/GeoPoint.html) | Optional|Coordinates of the venue| +|title|[string](/API_docs/types/string.html) | Yes|Venue name| +|address|[string](/API_docs/types/string.html) | Yes|Address| +|provider|[string](/API_docs/types/string.html) | Yes|Venue provider: currently only "foursquare" needs to be supported.| +|venue\_id|[string](/API_docs/types/string.html) | Yes|Venue ID in the provider's database| +|venue\_type|[string](/API_docs/types/string.html) | Yes|Venue type in the provider's database| + + + +### Type: [MediaArea](/API_docs/types/MediaArea.html) + + +### Example: + +``` +$mediaAreaVenue = ['_' => 'mediaAreaVenue', 'coordinates' => MediaAreaCoordinates, 'geo' => GeoPoint, 'title' => 'string', 'address' => 'string', 'provider' => 'string', 'venue_id' => 'string', 'venue_type' => 'string']; +``` diff --git a/docs/API_docs/constructors/message.md b/docs/API_docs/constructors/message.md new file mode 100644 index 0000000000..5129cb8729 --- /dev/null +++ b/docs/API_docs/constructors/message.md @@ -0,0 +1,125 @@ +--- +title: "message" +description: "A message" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: message +[Back to constructors index](/API_docs/constructors/index.html) + + + +A message + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|out|[Bool](/API_docs/types/Bool.html) | Optional|Is this an outgoing message| +|mentioned|[Bool](/API_docs/types/Bool.html) | Optional|Whether we were [mentioned](https://core.telegram.org/api/mentions) in this message| +|media\_unread|[Bool](/API_docs/types/Bool.html) | Optional|Whether there are unread media attachments in this message| +|silent|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a silent message (no notification triggered)| +|post|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a channel post| +|from\_scheduled|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a [scheduled message](https://core.telegram.org/api/scheduled-messages)| +|legacy|[Bool](/API_docs/types/Bool.html) | Optional|This is a legacy message: it has to be refetched with the new layer| +|edit\_hide|[Bool](/API_docs/types/Bool.html) | Optional|Whether the message should be shown as not modified to the user, even if an edit date is present| +|pinned|[Bool](/API_docs/types/Bool.html) | Optional|Whether this message is [pinned](https://core.telegram.org/api/pin)| +|noforwards|[Bool](/API_docs/types/Bool.html) | Optional|Whether this message is [protected](https://telegram.org/blog/protected-content-delete-by-date-and-more) and thus cannot be forwarded; clients should also prevent users from saving attached media (i.e. videos should only be streamed, photos should be kept in RAM, et cetera).| +|invert\_media|[Bool](/API_docs/types/Bool.html) | Optional|If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.| +|offline|[Bool](/API_docs/types/Bool.html) | Optional| +|id|[int](/API_docs/types/int.html) | Yes|ID of the message| +|from\_id|[Peer](/API_docs/types/Peer.html) | Optional|ID of the sender of the message| +|from\_boosts\_applied|[int](/API_docs/types/int.html) | Optional| +|peer\_id|[Peer](/API_docs/types/Peer.html) | Yes|Peer ID, the chat where this message was sent| +|saved\_peer\_id|[Peer](/API_docs/types/Peer.html) | Optional|Messages fetched from a [saved messages dialog »](https://core.telegram.org/api/saved-messages) will have `peer`=[inputPeerSelf](../constructors/inputPeerSelf.html) and the `saved_peer_id` flag set to the ID of the saved dialog.
| +|fwd\_from|[MessageFwdHeader](/API_docs/types/MessageFwdHeader.html) | Optional|Info about forwarded messages| +|via\_bot\_id|[long](/API_docs/types/long.html) | Optional|ID of the inline bot that generated the message| +|via\_business\_bot\_id|[long](/API_docs/types/long.html) | Optional| +|reply\_to|[MessageReplyHeader](/API_docs/types/MessageReplyHeader.html) | Optional|Reply information| +|date|[int](/API_docs/types/int.html) | Yes|Date of the message| +|message|[string](/API_docs/types/string.html) | Yes|The message| +|media|[MessageMedia](/API_docs/types/MessageMedia.html) | Optional|Media attachment| +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Optional|Reply markup (bot/inline keyboards)| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|Message [entities](https://core.telegram.org/api/entities) for styled text| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|views|[int](/API_docs/types/int.html) | Optional|View count for channel posts| +|forwards|[int](/API_docs/types/int.html) | Optional|Forward counter| +|replies|[MessageReplies](/API_docs/types/MessageReplies.html) | Optional|Info about [post comments (for channels) or message replies (for groups)](https://core.telegram.org/api/threads)| +|edit\_date|[int](/API_docs/types/int.html) | Optional|Last edit date of this message| +|post\_author|[string](/API_docs/types/string.html) | Optional|Name of the author of this message for channel posts (with signatures enabled)| +|grouped\_id|[long](/API_docs/types/long.html) | Optional|Multiple media messages sent using [messages.sendMultiMedia](../methods/messages.sendMultiMedia.html) with the same grouped ID indicate an [album or media group](https://core.telegram.org/api/files#albums-grouped-media)| +|reactions|[MessageReactions](/API_docs/types/MessageReactions.html) | Optional|Reactions to this message| +|restriction\_reason|Array of [RestrictionReason](/API_docs/types/RestrictionReason.html) | Optional|Contains the reason why access to this message must be restricted.| +|ttl\_period|[int](/API_docs/types/int.html) | Optional|Time To Live of the message, once message.date+message.ttl\_period === time(), the message will be deleted on the server, and must be deleted locally as well.| +|quick\_reply\_shortcut\_id|[int](/API_docs/types/int.html) | Optional| + + + +### Type: [Message](/API_docs/types/Message.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$message = ['_' => 'message', 'out' => Bool, 'mentioned' => Bool, 'media_unread' => Bool, 'silent' => Bool, 'post' => Bool, 'from_scheduled' => Bool, 'legacy' => Bool, 'edit_hide' => Bool, 'pinned' => Bool, 'noforwards' => Bool, 'invert_media' => Bool, 'offline' => Bool, 'id' => int, 'from_id' => Peer, 'from_boosts_applied' => int, 'peer_id' => Peer, 'saved_peer_id' => Peer, 'fwd_from' => MessageFwdHeader, 'via_bot_id' => long, 'via_business_bot_id' => long, 'reply_to' => MessageReplyHeader, 'date' => int, 'message' => 'string', 'media' => MessageMedia, 'reply_markup' => ReplyMarkup, 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'views' => int, 'forwards' => int, 'replies' => MessageReplies, 'edit_date' => int, 'post_author' => 'string', 'grouped_id' => long, 'reactions' => MessageReactions, 'restriction_reason' => [RestrictionReason, RestrictionReason], 'ttl_period' => int, 'quick_reply_shortcut_id' => int]; +``` diff --git a/docs/API_docs/constructors/messageActionBoostApply.md b/docs/API_docs/constructors/messageActionBoostApply.md new file mode 100644 index 0000000000..707dcd2784 --- /dev/null +++ b/docs/API_docs/constructors/messageActionBoostApply.md @@ -0,0 +1,27 @@ +--- +title: "messageActionBoostApply" +description: "messageActionBoostApply attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionBoostApply +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|boosts|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionBoostApply = ['_' => 'messageActionBoostApply', 'boosts' => int]; +``` diff --git a/docs/API_docs/constructors/messageActionBotAllowed.md b/docs/API_docs/constructors/messageActionBotAllowed.md new file mode 100644 index 0000000000..e45e3cb23d --- /dev/null +++ b/docs/API_docs/constructors/messageActionBotAllowed.md @@ -0,0 +1,34 @@ +--- +title: "messageActionBotAllowed" +description: "We have given the bot permission to send us direct messages." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionBotAllowed +[Back to constructors index](/API_docs/constructors/index.html) + + + +We have given the bot permission to send us direct messages. + +The optional fields specify how did we authorize the bot to send us messages. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|attach\_menu|[Bool](/API_docs/types/Bool.html) | Optional|We have authorized the bot to send us messages by installing the bot's [attachment menu](https://core.telegram.org/api/bots/attach).| +|from\_request|[Bool](/API_docs/types/Bool.html) | Optional|We have allowed the bot to send us messages using [bots.allowSendMessage »](../methods/bots.allowSendMessage.html).| +|domain|[string](/API_docs/types/string.html) | Optional|We have authorized the bot to send us messages by logging into a website via [Telegram Login »](https://core.telegram.org/widgets/login); this field contains the domain name of the website on which the user has logged in.| +|app|[BotApp](/API_docs/types/BotApp.html) | Optional|We have authorized the bot to send us messages by opening the specified [bot mini app](https://core.telegram.org/api/bots/webapps).| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionBotAllowed = ['_' => 'messageActionBotAllowed', 'attach_menu' => Bool, 'from_request' => Bool, 'domain' => 'string', 'app' => BotApp]; +``` diff --git a/docs/API_docs/constructors/messageActionChannelCreate.md b/docs/API_docs/constructors/messageActionChannelCreate.md new file mode 100644 index 0000000000..d0d0488dce --- /dev/null +++ b/docs/API_docs/constructors/messageActionChannelCreate.md @@ -0,0 +1,29 @@ +--- +title: "messageActionChannelCreate" +description: "The channel was created" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionChannelCreate +[Back to constructors index](/API_docs/constructors/index.html) + + + +The channel was created + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|title|[string](/API_docs/types/string.html) | Yes|Original channel/supergroup title| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionChannelCreate = ['_' => 'messageActionChannelCreate', 'title' => 'string']; +``` diff --git a/docs/API_docs/constructors/messageActionChannelMigrateFrom.md b/docs/API_docs/constructors/messageActionChannelMigrateFrom.md new file mode 100644 index 0000000000..fcfdb0ad82 --- /dev/null +++ b/docs/API_docs/constructors/messageActionChannelMigrateFrom.md @@ -0,0 +1,30 @@ +--- +title: "messageActionChannelMigrateFrom" +description: "Indicates the channel was migrated from the specified chat" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionChannelMigrateFrom +[Back to constructors index](/API_docs/constructors/index.html) + + + +Indicates the channel was [migrated](https://core.telegram.org/api/channel) from the specified chat + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|title|[string](/API_docs/types/string.html) | Yes|The old chat title| +|chat\_id|[long](/API_docs/types/long.html) | Yes|The old chat ID| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionChannelMigrateFrom = ['_' => 'messageActionChannelMigrateFrom', 'title' => 'string', 'chat_id' => long]; +``` diff --git a/docs/API_docs/constructors/messageActionChatAddUser.md b/docs/API_docs/constructors/messageActionChatAddUser.md new file mode 100644 index 0000000000..1add132aff --- /dev/null +++ b/docs/API_docs/constructors/messageActionChatAddUser.md @@ -0,0 +1,29 @@ +--- +title: "messageActionChatAddUser" +description: "New member in the group" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionChatAddUser +[Back to constructors index](/API_docs/constructors/index.html) + + + +New member in the group + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|users|Array of [long](/API_docs/types/long.html) | Yes|Users that were invited to the chat| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionChatAddUser = ['_' => 'messageActionChatAddUser', 'users' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/messageActionChatCreate.md b/docs/API_docs/constructors/messageActionChatCreate.md new file mode 100644 index 0000000000..cade391c34 --- /dev/null +++ b/docs/API_docs/constructors/messageActionChatCreate.md @@ -0,0 +1,30 @@ +--- +title: "messageActionChatCreate" +description: "Group created" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionChatCreate +[Back to constructors index](/API_docs/constructors/index.html) + + + +Group created + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|title|[string](/API_docs/types/string.html) | Yes|Group name| +|users|Array of [long](/API_docs/types/long.html) | Yes|List of group members| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionChatCreate = ['_' => 'messageActionChatCreate', 'title' => 'string', 'users' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/messageActionChatDeletePhoto.md b/docs/API_docs/constructors/messageActionChatDeletePhoto.md new file mode 100644 index 0000000000..257b245067 --- /dev/null +++ b/docs/API_docs/constructors/messageActionChatDeletePhoto.md @@ -0,0 +1,24 @@ +--- +title: "messageActionChatDeletePhoto" +description: "Group profile photo removed." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionChatDeletePhoto +[Back to constructors index](/API_docs/constructors/index.html) + + + +Group profile photo removed. + + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionChatDeletePhoto = ['_' => 'messageActionChatDeletePhoto']; +``` diff --git a/docs/API_docs/constructors/messageActionChatDeleteUser.md b/docs/API_docs/constructors/messageActionChatDeleteUser.md new file mode 100644 index 0000000000..40a329fae1 --- /dev/null +++ b/docs/API_docs/constructors/messageActionChatDeleteUser.md @@ -0,0 +1,29 @@ +--- +title: "messageActionChatDeleteUser" +description: "User left the group." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionChatDeleteUser +[Back to constructors index](/API_docs/constructors/index.html) + + + +User left the group. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|Leaving user ID| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionChatDeleteUser = ['_' => 'messageActionChatDeleteUser', 'user_id' => long]; +``` diff --git a/docs/API_docs/constructors/messageActionChatEditPhoto.md b/docs/API_docs/constructors/messageActionChatEditPhoto.md new file mode 100644 index 0000000000..f04708aab7 --- /dev/null +++ b/docs/API_docs/constructors/messageActionChatEditPhoto.md @@ -0,0 +1,29 @@ +--- +title: "messageActionChatEditPhoto" +description: "Group profile changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionChatEditPhoto +[Back to constructors index](/API_docs/constructors/index.html) + + + +Group profile changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|photo|[Photo](/API_docs/types/Photo.html) | Optional|New group profile photo| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionChatEditPhoto = ['_' => 'messageActionChatEditPhoto', 'photo' => Photo]; +``` diff --git a/docs/API_docs/constructors/messageActionChatEditTitle.md b/docs/API_docs/constructors/messageActionChatEditTitle.md new file mode 100644 index 0000000000..c513dc6e19 --- /dev/null +++ b/docs/API_docs/constructors/messageActionChatEditTitle.md @@ -0,0 +1,29 @@ +--- +title: "messageActionChatEditTitle" +description: "Group name changed." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionChatEditTitle +[Back to constructors index](/API_docs/constructors/index.html) + + + +Group name changed. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|title|[string](/API_docs/types/string.html) | Yes|New group name| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionChatEditTitle = ['_' => 'messageActionChatEditTitle', 'title' => 'string']; +``` diff --git a/docs/API_docs/constructors/messageActionChatJoinedByLink.md b/docs/API_docs/constructors/messageActionChatJoinedByLink.md new file mode 100644 index 0000000000..3dff95e851 --- /dev/null +++ b/docs/API_docs/constructors/messageActionChatJoinedByLink.md @@ -0,0 +1,29 @@ +--- +title: "messageActionChatJoinedByLink" +description: "A user joined the chat via an invite link" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionChatJoinedByLink +[Back to constructors index](/API_docs/constructors/index.html) + + + +A user joined the chat via an invite link + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|inviter\_id|[long](/API_docs/types/long.html) | Yes|ID of the user that created the invite link| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionChatJoinedByLink = ['_' => 'messageActionChatJoinedByLink', 'inviter_id' => long]; +``` diff --git a/docs/API_docs/constructors/messageActionChatJoinedByRequest.md b/docs/API_docs/constructors/messageActionChatJoinedByRequest.md new file mode 100644 index 0000000000..5b26d01cce --- /dev/null +++ b/docs/API_docs/constructors/messageActionChatJoinedByRequest.md @@ -0,0 +1,24 @@ +--- +title: "messageActionChatJoinedByRequest" +description: "A user was accepted into the group by an admin" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionChatJoinedByRequest +[Back to constructors index](/API_docs/constructors/index.html) + + + +A user was accepted into the group by an admin + + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionChatJoinedByRequest = ['_' => 'messageActionChatJoinedByRequest']; +``` diff --git a/docs/API_docs/constructors/messageActionChatMigrateTo.md b/docs/API_docs/constructors/messageActionChatMigrateTo.md new file mode 100644 index 0000000000..3e1335db5c --- /dev/null +++ b/docs/API_docs/constructors/messageActionChatMigrateTo.md @@ -0,0 +1,29 @@ +--- +title: "messageActionChatMigrateTo" +description: "Indicates the chat was migrated to the specified supergroup" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionChatMigrateTo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Indicates the chat was [migrated](https://core.telegram.org/api/channel) to the specified supergroup + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel\_id|[long](/API_docs/types/long.html) | Yes|The supergroup it was migrated to| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionChatMigrateTo = ['_' => 'messageActionChatMigrateTo', 'channel_id' => long]; +``` diff --git a/docs/API_docs/constructors/messageActionContactSignUp.md b/docs/API_docs/constructors/messageActionContactSignUp.md new file mode 100644 index 0000000000..25fe4ca0b6 --- /dev/null +++ b/docs/API_docs/constructors/messageActionContactSignUp.md @@ -0,0 +1,24 @@ +--- +title: "messageActionContactSignUp" +description: "A contact just signed up to telegram" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionContactSignUp +[Back to constructors index](/API_docs/constructors/index.html) + + + +A contact just signed up to telegram + + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionContactSignUp = ['_' => 'messageActionContactSignUp']; +``` diff --git a/docs/API_docs/constructors/messageActionCustomAction.md b/docs/API_docs/constructors/messageActionCustomAction.md new file mode 100644 index 0000000000..30d3985b2d --- /dev/null +++ b/docs/API_docs/constructors/messageActionCustomAction.md @@ -0,0 +1,29 @@ +--- +title: "messageActionCustomAction" +description: "Custom action (most likely not supported by the current layer, an upgrade might be needed)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionCustomAction +[Back to constructors index](/API_docs/constructors/index.html) + + + +Custom action (most likely not supported by the current layer, an upgrade might be needed) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|message|[string](/API_docs/types/string.html) | Yes|Action message| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionCustomAction = ['_' => 'messageActionCustomAction', 'message' => 'string']; +``` diff --git a/docs/API_docs/constructors/messageActionEmpty.md b/docs/API_docs/constructors/messageActionEmpty.md new file mode 100644 index 0000000000..d4fd120b13 --- /dev/null +++ b/docs/API_docs/constructors/messageActionEmpty.md @@ -0,0 +1,24 @@ +--- +title: "messageActionEmpty" +description: "Empty constructor." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor. + + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionEmpty = ['_' => 'messageActionEmpty']; +``` diff --git a/docs/API_docs/constructors/messageActionGameScore.md b/docs/API_docs/constructors/messageActionGameScore.md new file mode 100644 index 0000000000..88cf8e7dea --- /dev/null +++ b/docs/API_docs/constructors/messageActionGameScore.md @@ -0,0 +1,30 @@ +--- +title: "messageActionGameScore" +description: "Someone scored in a game" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionGameScore +[Back to constructors index](/API_docs/constructors/index.html) + + + +Someone scored in a game + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|game\_id|[long](/API_docs/types/long.html) | Yes|Game ID| +|score|[int](/API_docs/types/int.html) | Yes|Score| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionGameScore = ['_' => 'messageActionGameScore', 'game_id' => long, 'score' => int]; +``` diff --git a/docs/API_docs/constructors/messageActionGeoProximityReached.md b/docs/API_docs/constructors/messageActionGeoProximityReached.md new file mode 100644 index 0000000000..a2bd5e21ad --- /dev/null +++ b/docs/API_docs/constructors/messageActionGeoProximityReached.md @@ -0,0 +1,31 @@ +--- +title: "messageActionGeoProximityReached" +description: "A user of the chat is now in proximity of another user" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionGeoProximityReached +[Back to constructors index](/API_docs/constructors/index.html) + + + +A user of the chat is now in proximity of another user + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|from\_id|[Peer](/API_docs/types/Peer.html) | Yes|The user or chat that is now in proximity of `to_id`| +|to\_id|[Peer](/API_docs/types/Peer.html) | Yes|The user or chat that subscribed to [live geolocation proximity alerts](https://core.telegram.org/api/live-location#proximity-alert)| +|distance|[int](/API_docs/types/int.html) | Yes|Distance, in meters (0-100000)| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionGeoProximityReached = ['_' => 'messageActionGeoProximityReached', 'from_id' => Peer, 'to_id' => Peer, 'distance' => int]; +``` diff --git a/docs/API_docs/constructors/messageActionGiftCode.md b/docs/API_docs/constructors/messageActionGiftCode.md new file mode 100644 index 0000000000..414513b456 --- /dev/null +++ b/docs/API_docs/constructors/messageActionGiftCode.md @@ -0,0 +1,37 @@ +--- +title: "messageActionGiftCode" +description: "Contains a Telegram Premium giftcode link." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionGiftCode +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains a [Telegram Premium giftcode link](https://core.telegram.org/api/links#premium-giftcode-links). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|via\_giveaway|[Bool](/API_docs/types/Bool.html) | Optional|If set, this gift code was received from a [giveaway »](https://core.telegram.org/api/giveaways) started by a channel we're subscribed to.| +|unclaimed|[Bool](/API_docs/types/Bool.html) | Optional|If set, the link was not [redeemed](https://core.telegram.org/api/links#premium-giftcode-links) yet.| +|boost\_peer|[Peer](/API_docs/types/Peer.html) | Optional|Identifier of the channel that created the gift code [either directly or through a giveaway](https://core.telegram.org/api/giveaways): if we import this giftcode link, we will also automatically [boost](https://core.telegram.org/api/boost) this channel.| +|months|[int](/API_docs/types/int.html) | Yes|Duration in months of the gifted [Telegram Premium subscription](https://core.telegram.org/api/premium).| +|slug|[string](/API_docs/types/string.html) | Yes|Slug of the [Telegram Premium giftcode link](https://core.telegram.org/api/links#premium-giftcode-links)| +|currency|[string](/API_docs/types/string.html) | Optional|Three-letter ISO 4217 [currency](https://core.telegram.org/bots/payments#supported-currencies) code| +|amount|[long](/API_docs/types/long.html) | Optional|Total 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](https://core.telegram.org/bots/payments/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).| +|crypto\_currency|[string](/API_docs/types/string.html) | Optional|If set, the gift was made using the specified cryptocurrency.| +|crypto\_amount|[long](/API_docs/types/long.html) | Optional|If `crypto_currency` is set, contains the paid amount, in the smallest units of the cryptocurrency.| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionGiftCode = ['_' => 'messageActionGiftCode', 'via_giveaway' => Bool, 'unclaimed' => Bool, 'boost_peer' => Peer, 'months' => int, 'slug' => 'string', 'currency' => 'string', 'amount' => long, 'crypto_currency' => 'string', 'crypto_amount' => long]; +``` diff --git a/docs/API_docs/constructors/messageActionGiftPremium.md b/docs/API_docs/constructors/messageActionGiftPremium.md new file mode 100644 index 0000000000..4318c49223 --- /dev/null +++ b/docs/API_docs/constructors/messageActionGiftPremium.md @@ -0,0 +1,33 @@ +--- +title: "messageActionGiftPremium" +description: "Info about a gifted Telegram Premium subscription" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionGiftPremium +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about a gifted Telegram Premium subscription + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|currency|[string](/API_docs/types/string.html) | Yes|Three-letter ISO 4217 [currency](https://core.telegram.org/bots/payments#supported-currencies) code| +|amount|[long](/API_docs/types/long.html) | Yes|Price of the gift 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](https://core.telegram.org/bots/payments/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).| +|months|[int](/API_docs/types/int.html) | Yes|Duration of the gifted Telegram Premium subscription| +|crypto\_currency|[string](/API_docs/types/string.html) | Optional|If the gift was bought using a cryptocurrency, the cryptocurrency name.| +|crypto\_amount|[long](/API_docs/types/long.html) | Optional|If the gift was bought using a cryptocurrency, price of the gift in the smallest units of a cryptocurrency.| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionGiftPremium = ['_' => 'messageActionGiftPremium', 'currency' => 'string', 'amount' => long, 'months' => int, 'crypto_currency' => 'string', 'crypto_amount' => long]; +``` diff --git a/docs/API_docs/constructors/messageActionGiveawayLaunch.md b/docs/API_docs/constructors/messageActionGiveawayLaunch.md new file mode 100644 index 0000000000..f43c4d2cd4 --- /dev/null +++ b/docs/API_docs/constructors/messageActionGiveawayLaunch.md @@ -0,0 +1,24 @@ +--- +title: "messageActionGiveawayLaunch" +description: "A giveaway was started." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionGiveawayLaunch +[Back to constructors index](/API_docs/constructors/index.html) + + + +A [giveaway](https://core.telegram.org/api/giveaways) was started. + + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionGiveawayLaunch = ['_' => 'messageActionGiveawayLaunch']; +``` diff --git a/docs/API_docs/constructors/messageActionGiveawayResults.md b/docs/API_docs/constructors/messageActionGiveawayResults.md new file mode 100644 index 0000000000..a5c8a62c35 --- /dev/null +++ b/docs/API_docs/constructors/messageActionGiveawayResults.md @@ -0,0 +1,30 @@ +--- +title: "messageActionGiveawayResults" +description: "A giveaway has ended." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionGiveawayResults +[Back to constructors index](/API_docs/constructors/index.html) + + + +A [giveaway](https://core.telegram.org/api/giveaways) has ended. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|winners\_count|[int](/API_docs/types/int.html) | Yes|Number of winners in the giveaway| +|unclaimed\_count|[int](/API_docs/types/int.html) | Yes|Number of undistributed prizes| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionGiveawayResults = ['_' => 'messageActionGiveawayResults', 'winners_count' => int, 'unclaimed_count' => int]; +``` diff --git a/docs/API_docs/constructors/messageActionGroupCall.md b/docs/API_docs/constructors/messageActionGroupCall.md new file mode 100644 index 0000000000..cbb2d4b06f --- /dev/null +++ b/docs/API_docs/constructors/messageActionGroupCall.md @@ -0,0 +1,30 @@ +--- +title: "messageActionGroupCall" +description: "The group call has ended" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionGroupCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +The group call has ended + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | Yes|Group call| +|duration|[int](/API_docs/types/int.html) | Optional|Group call duration| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionGroupCall = ['_' => 'messageActionGroupCall', 'call' => InputGroupCall, 'duration' => int]; +``` diff --git a/docs/API_docs/constructors/messageActionGroupCallScheduled.md b/docs/API_docs/constructors/messageActionGroupCallScheduled.md new file mode 100644 index 0000000000..2ef451991a --- /dev/null +++ b/docs/API_docs/constructors/messageActionGroupCallScheduled.md @@ -0,0 +1,30 @@ +--- +title: "messageActionGroupCallScheduled" +description: "A group call was scheduled" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionGroupCallScheduled +[Back to constructors index](/API_docs/constructors/index.html) + + + +A group call was scheduled + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | Yes|The group call| +|schedule\_date|[int](/API_docs/types/int.html) | Yes|When is this group call scheduled to start| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionGroupCallScheduled = ['_' => 'messageActionGroupCallScheduled', 'call' => InputGroupCall, 'schedule_date' => int]; +``` diff --git a/docs/API_docs/constructors/messageActionHistoryClear.md b/docs/API_docs/constructors/messageActionHistoryClear.md new file mode 100644 index 0000000000..43473dff6c --- /dev/null +++ b/docs/API_docs/constructors/messageActionHistoryClear.md @@ -0,0 +1,24 @@ +--- +title: "messageActionHistoryClear" +description: "Chat history was cleared" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionHistoryClear +[Back to constructors index](/API_docs/constructors/index.html) + + + +Chat history was cleared + + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionHistoryClear = ['_' => 'messageActionHistoryClear']; +``` diff --git a/docs/API_docs/constructors/messageActionInviteToGroupCall.md b/docs/API_docs/constructors/messageActionInviteToGroupCall.md new file mode 100644 index 0000000000..c50fb15518 --- /dev/null +++ b/docs/API_docs/constructors/messageActionInviteToGroupCall.md @@ -0,0 +1,30 @@ +--- +title: "messageActionInviteToGroupCall" +description: "A set of users was invited to the group call" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionInviteToGroupCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +A set of users was invited to the group call + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | Yes|The group call| +|users|Array of [long](/API_docs/types/long.html) | Yes|The invited users| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionInviteToGroupCall = ['_' => 'messageActionInviteToGroupCall', 'call' => InputGroupCall, 'users' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/messageActionPaymentSent.md b/docs/API_docs/constructors/messageActionPaymentSent.md new file mode 100644 index 0000000000..07e5fefc9f --- /dev/null +++ b/docs/API_docs/constructors/messageActionPaymentSent.md @@ -0,0 +1,33 @@ +--- +title: "messageActionPaymentSent" +description: "A payment was sent" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionPaymentSent +[Back to constructors index](/API_docs/constructors/index.html) + + + +A payment was sent + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|recurring\_init|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is the first payment of a recurring payment we just subscribed to| +|recurring\_used|[Bool](/API_docs/types/Bool.html) | Optional|Whether this payment is part of a recurring payment| +|currency|[string](/API_docs/types/string.html) | Yes|Three-letter ISO 4217 [currency](https://core.telegram.org/bots/payments#supported-currencies) code| +|total\_amount|[long](/API_docs/types/long.html) | Yes|Price 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](https://core.telegram.org/bots/payments/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).| +|invoice\_slug|[string](/API_docs/types/string.html) | Optional|An invoice slug taken from an [invoice deep link](https://core.telegram.org/api/links#invoice-links) or from the [`premium_invoice_slug` app config parameter »](https://core.telegram.org/api/config#premium-invoice-slug)| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionPaymentSent = ['_' => 'messageActionPaymentSent', 'recurring_init' => Bool, 'recurring_used' => Bool, 'currency' => 'string', 'total_amount' => long, 'invoice_slug' => 'string']; +``` diff --git a/docs/API_docs/constructors/messageActionPaymentSentMe.md b/docs/API_docs/constructors/messageActionPaymentSentMe.md new file mode 100644 index 0000000000..8d09a77d90 --- /dev/null +++ b/docs/API_docs/constructors/messageActionPaymentSentMe.md @@ -0,0 +1,36 @@ +--- +title: "messageActionPaymentSentMe" +description: "A user just sent a payment to me (a bot)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionPaymentSentMe +[Back to constructors index](/API_docs/constructors/index.html) + + + +A user just sent a payment to me (a bot) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|recurring\_init|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is the first payment of a recurring payment we just subscribed to| +|recurring\_used|[Bool](/API_docs/types/Bool.html) | Optional|Whether this payment is part of a recurring payment| +|currency|[string](/API_docs/types/string.html) | Yes|Three-letter ISO 4217 [currency](https://core.telegram.org/bots/payments#supported-currencies) code| +|total\_amount|[long](/API_docs/types/long.html) | Yes|Price 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](https://core.telegram.org/bots/payments/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).| +|payload|[bytes](/API_docs/types/bytes.html) | Yes|Bot specified invoice payload| +|info|[PaymentRequestedInfo](/API_docs/types/PaymentRequestedInfo.html) | Optional|Order info provided by the user| +|shipping\_option\_id|[string](/API_docs/types/string.html) | Optional|Identifier of the shipping option chosen by the user| +|charge|[PaymentCharge](/API_docs/types/PaymentCharge.html) | Yes|Provider payment identifier| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionPaymentSentMe = ['_' => 'messageActionPaymentSentMe', 'recurring_init' => Bool, 'recurring_used' => Bool, 'currency' => 'string', 'total_amount' => long, 'payload' => 'bytes', 'info' => PaymentRequestedInfo, 'shipping_option_id' => 'string', 'charge' => PaymentCharge]; +``` diff --git a/docs/API_docs/constructors/messageActionPhoneCall.md b/docs/API_docs/constructors/messageActionPhoneCall.md new file mode 100644 index 0000000000..9f3e7bbae2 --- /dev/null +++ b/docs/API_docs/constructors/messageActionPhoneCall.md @@ -0,0 +1,32 @@ +--- +title: "messageActionPhoneCall" +description: "A phone call" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionPhoneCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +A phone call + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|video|[Bool](/API_docs/types/Bool.html) | Optional|Is this a video call?| +|call\_id|[long](/API_docs/types/long.html) | Yes|Call ID| +|reason|[PhoneCallDiscardReason](/API_docs/types/PhoneCallDiscardReason.html) | Optional|If the call has ended, the reason why it ended| +|duration|[int](/API_docs/types/int.html) | Optional|Duration of the call in seconds| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionPhoneCall = ['_' => 'messageActionPhoneCall', 'video' => Bool, 'call_id' => long, 'reason' => PhoneCallDiscardReason, 'duration' => int]; +``` diff --git a/docs/API_docs/constructors/messageActionPinMessage.md b/docs/API_docs/constructors/messageActionPinMessage.md new file mode 100644 index 0000000000..d232ed1fb0 --- /dev/null +++ b/docs/API_docs/constructors/messageActionPinMessage.md @@ -0,0 +1,24 @@ +--- +title: "messageActionPinMessage" +description: "A message was pinned" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionPinMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +A message was pinned + + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionPinMessage = ['_' => 'messageActionPinMessage']; +``` diff --git a/docs/API_docs/constructors/messageActionRequestedPeer.md b/docs/API_docs/constructors/messageActionRequestedPeer.md new file mode 100644 index 0000000000..9ad862b6bc --- /dev/null +++ b/docs/API_docs/constructors/messageActionRequestedPeer.md @@ -0,0 +1,30 @@ +--- +title: "messageActionRequestedPeer" +description: "Contains info about one or more peers that the user shared with the bot after clicking on a keyboardButtonRequestPeer button." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionRequestedPeer +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains info about one or more peers that the user shared with the bot after clicking on a [keyboardButtonRequestPeer](../constructors/keyboardButtonRequestPeer.html) button. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|button\_id|[int](/API_docs/types/int.html) | Yes|`button_id` contained in the [keyboardButtonRequestPeer](../constructors/keyboardButtonRequestPeer.html)| +|peers|Array of [Peer](/API_docs/types/Peer.html) | Yes|The shared peers| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionRequestedPeer = ['_' => 'messageActionRequestedPeer', 'button_id' => int, 'peers' => [Peer, Peer]]; +``` diff --git a/docs/API_docs/constructors/messageActionRequestedPeerSentMe.md b/docs/API_docs/constructors/messageActionRequestedPeerSentMe.md new file mode 100644 index 0000000000..1cced97b0d --- /dev/null +++ b/docs/API_docs/constructors/messageActionRequestedPeerSentMe.md @@ -0,0 +1,28 @@ +--- +title: "messageActionRequestedPeerSentMe" +description: "messageActionRequestedPeerSentMe attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionRequestedPeerSentMe +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|button\_id|[int](/API_docs/types/int.html) | Yes| +|peers|Array of [RequestedPeer](/API_docs/types/RequestedPeer.html) | Yes| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionRequestedPeerSentMe = ['_' => 'messageActionRequestedPeerSentMe', 'button_id' => int, 'peers' => [RequestedPeer, RequestedPeer]]; +``` diff --git a/docs/API_docs/constructors/messageActionScreenshotTaken.md b/docs/API_docs/constructors/messageActionScreenshotTaken.md new file mode 100644 index 0000000000..9932af8fd0 --- /dev/null +++ b/docs/API_docs/constructors/messageActionScreenshotTaken.md @@ -0,0 +1,24 @@ +--- +title: "messageActionScreenshotTaken" +description: "A screenshot of the chat was taken" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionScreenshotTaken +[Back to constructors index](/API_docs/constructors/index.html) + + + +A screenshot of the chat was taken + + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionScreenshotTaken = ['_' => 'messageActionScreenshotTaken']; +``` diff --git a/docs/API_docs/constructors/messageActionSecureValuesSent.md b/docs/API_docs/constructors/messageActionSecureValuesSent.md new file mode 100644 index 0000000000..28ad5a5f0b --- /dev/null +++ b/docs/API_docs/constructors/messageActionSecureValuesSent.md @@ -0,0 +1,29 @@ +--- +title: "messageActionSecureValuesSent" +description: "Request for secure telegram passport values was sent" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionSecureValuesSent +[Back to constructors index](/API_docs/constructors/index.html) + + + +Request for secure [telegram passport](https://core.telegram.org/passport) values was sent + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|types|Array of [SecureValueType](/API_docs/types/SecureValueType.html) | Yes|Secure value types| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionSecureValuesSent = ['_' => 'messageActionSecureValuesSent', 'types' => [SecureValueType, SecureValueType]]; +``` diff --git a/docs/API_docs/constructors/messageActionSecureValuesSentMe.md b/docs/API_docs/constructors/messageActionSecureValuesSentMe.md new file mode 100644 index 0000000000..822d206ffd --- /dev/null +++ b/docs/API_docs/constructors/messageActionSecureValuesSentMe.md @@ -0,0 +1,30 @@ +--- +title: "messageActionSecureValuesSentMe" +description: "Secure telegram passport values were received" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionSecureValuesSentMe +[Back to constructors index](/API_docs/constructors/index.html) + + + +Secure [telegram passport](https://core.telegram.org/passport) values were received + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|values|Array of [SecureValue](/API_docs/types/SecureValue.html) | Yes|Vector with information about documents and other Telegram Passport elements that were shared with the bot| +|credentials|[SecureCredentialsEncrypted](/API_docs/types/SecureCredentialsEncrypted.html) | Yes|Encrypted credentials required to decrypt the data| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionSecureValuesSentMe = ['_' => 'messageActionSecureValuesSentMe', 'values' => [SecureValue, SecureValue], 'credentials' => SecureCredentialsEncrypted]; +``` diff --git a/docs/API_docs/constructors/messageActionSetChatTheme.md b/docs/API_docs/constructors/messageActionSetChatTheme.md new file mode 100644 index 0000000000..126ddcda2c --- /dev/null +++ b/docs/API_docs/constructors/messageActionSetChatTheme.md @@ -0,0 +1,29 @@ +--- +title: "messageActionSetChatTheme" +description: "The chat theme was changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionSetChatTheme +[Back to constructors index](/API_docs/constructors/index.html) + + + +The chat theme was changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|emoticon|[string](/API_docs/types/string.html) | Yes|The emoji that identifies a chat theme| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionSetChatTheme = ['_' => 'messageActionSetChatTheme', 'emoticon' => 'string']; +``` diff --git a/docs/API_docs/constructors/messageActionSetChatWallPaper.md b/docs/API_docs/constructors/messageActionSetChatWallPaper.md new file mode 100644 index 0000000000..97bb43e80f --- /dev/null +++ b/docs/API_docs/constructors/messageActionSetChatWallPaper.md @@ -0,0 +1,31 @@ +--- +title: "messageActionSetChatWallPaper" +description: "The wallpaper » of the current chat was changed." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionSetChatWallPaper +[Back to constructors index](/API_docs/constructors/index.html) + + + +The [wallpaper »](https://core.telegram.org/api/wallpapers) of the current chat was changed. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|same|[Bool](/API_docs/types/Bool.html) | Optional|If set, indicates the user applied a [wallpaper »](https://core.telegram.org/api/wallpapers) previously sent by the other user in a [messageActionSetChatWallPaper](../constructors/messageActionSetChatWallPaper.html) message.| +|for\_both|[Bool](/API_docs/types/Bool.html) | Optional|If set, indicates the wallpaper was forcefully applied for both sides, without explicit confirmation from the other side.
If the message is incoming, and we did not like the new wallpaper the other user has chosen for us, we can re-set our previous wallpaper just on our side, by invoking [messages.setChatWallPaper](../methods/messages.setChatWallPaper.html), providing only the `revert` flag (and obviously the `peer` parameter).| +|wallpaper|[WallPaper](/API_docs/types/WallPaper.html) | Yes|New [wallpaper](https://core.telegram.org/api/wallpapers)| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionSetChatWallPaper = ['_' => 'messageActionSetChatWallPaper', 'same' => Bool, 'for_both' => Bool, 'wallpaper' => WallPaper]; +``` diff --git a/docs/API_docs/constructors/messageActionSetMessagesTTL.md b/docs/API_docs/constructors/messageActionSetMessagesTTL.md new file mode 100644 index 0000000000..f4d18dca25 --- /dev/null +++ b/docs/API_docs/constructors/messageActionSetMessagesTTL.md @@ -0,0 +1,30 @@ +--- +title: "messageActionSetMessagesTTL" +description: "The Time-To-Live of messages in this chat was changed." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionSetMessagesTTL +[Back to constructors index](/API_docs/constructors/index.html) + + + +The Time-To-Live of messages in this chat was changed. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|period|[int](/API_docs/types/int.html) | Yes|New Time-To-Live of all messages sent in this chat; if 0, autodeletion was disabled.| +|auto\_setting\_from|[long](/API_docs/types/long.html) | Optional|If set, the chat TTL setting was set not due to a manual change by one of participants, but automatically because one of the participants has the [default TTL settings enabled »](../methods/messages.setDefaultHistoryTTL.html). For example, when a user writes to us for the first time and we have set a default messages TTL of 1 week, this service message (with `auto_setting_from=our_userid`) will be emitted before our first message.| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionSetMessagesTTL = ['_' => 'messageActionSetMessagesTTL', 'period' => int, 'auto_setting_from' => long]; +``` diff --git a/docs/API_docs/constructors/messageActionSuggestProfilePhoto.md b/docs/API_docs/constructors/messageActionSuggestProfilePhoto.md new file mode 100644 index 0000000000..8f85be2102 --- /dev/null +++ b/docs/API_docs/constructors/messageActionSuggestProfilePhoto.md @@ -0,0 +1,29 @@ +--- +title: "messageActionSuggestProfilePhoto" +description: "A new profile picture was suggested using photos.uploadContactProfilePhoto." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionSuggestProfilePhoto +[Back to constructors index](/API_docs/constructors/index.html) + + + +A new profile picture was suggested using [photos.uploadContactProfilePhoto](../methods/photos.uploadContactProfilePhoto.html). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|photo|[Photo](/API_docs/types/Photo.html) | Optional|The photo that the user suggested we set as profile picture.| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionSuggestProfilePhoto = ['_' => 'messageActionSuggestProfilePhoto', 'photo' => Photo]; +``` diff --git a/docs/API_docs/constructors/messageActionTopicCreate.md b/docs/API_docs/constructors/messageActionTopicCreate.md new file mode 100644 index 0000000000..053db88ef6 --- /dev/null +++ b/docs/API_docs/constructors/messageActionTopicCreate.md @@ -0,0 +1,31 @@ +--- +title: "messageActionTopicCreate" +description: "A forum topic was created." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionTopicCreate +[Back to constructors index](/API_docs/constructors/index.html) + + + +A [forum topic](https://core.telegram.org/api/forum#forum-topics) was created. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|title|[string](/API_docs/types/string.html) | Yes|Topic name.| +|icon\_color|[int](/API_docs/types/int.html) | Yes|If no custom emoji icon is specified, specifies the color of the fallback topic icon (RGB), one of `0x6FB9F0`, `0xFFD67E`, `0xCB86DB`, `0x8EEE98`, `0xFF93B2`, or `0xFB6F5F`.| +|icon\_emoji\_id|[long](/API_docs/types/long.html) | Optional|ID of the [custom emoji](https://core.telegram.org/api/custom-emoji) used as topic icon.| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionTopicCreate = ['_' => 'messageActionTopicCreate', 'title' => 'string', 'icon_color' => int, 'icon_emoji_id' => long]; +``` diff --git a/docs/API_docs/constructors/messageActionTopicEdit.md b/docs/API_docs/constructors/messageActionTopicEdit.md new file mode 100644 index 0000000000..70b3746e72 --- /dev/null +++ b/docs/API_docs/constructors/messageActionTopicEdit.md @@ -0,0 +1,32 @@ +--- +title: "messageActionTopicEdit" +description: "Forum topic information was edited." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionTopicEdit +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Forum topic](https://core.telegram.org/api/forum#forum-topics) information was edited. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|title|[string](/API_docs/types/string.html) | Optional|New topic title.| +|icon\_emoji\_id|[long](/API_docs/types/long.html) | Optional|ID of the new [custom emoji](https://core.telegram.org/api/custom-emoji) used as topic icon, or if it was removed.| +|closed|[Bool](/API_docs/types/Bool.html) | Optional|Whether the topic was opened or closed.| +|hidden|[Bool](/API_docs/types/Bool.html) | Optional|Whether the topic was hidden or unhidden (only valid for the "General" topic, `id=1`).| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionTopicEdit = ['_' => 'messageActionTopicEdit', 'title' => 'string', 'icon_emoji_id' => long, 'closed' => Bool, 'hidden' => Bool]; +``` diff --git a/docs/API_docs/constructors/messageActionWebViewDataSent.md b/docs/API_docs/constructors/messageActionWebViewDataSent.md new file mode 100644 index 0000000000..d98e99462d --- /dev/null +++ b/docs/API_docs/constructors/messageActionWebViewDataSent.md @@ -0,0 +1,31 @@ +--- +title: "messageActionWebViewDataSent" +description: "Data from an opened reply keyboard bot mini app was relayed to the bot that owns it (user side service message)." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionWebViewDataSent +[Back to constructors index](/API_docs/constructors/index.html) + + + +Data from an opened [reply keyboard bot mini app](https://core.telegram.org/api/bots/webapps) was relayed to the bot that owns it (user side service message). + +Clients should display a service message with the text `Data from the «$text» button was transferred to the bot.` + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[string](/API_docs/types/string.html) | Yes|Text of the [keyboardButtonSimpleWebView](../constructors/keyboardButtonSimpleWebView.html) that was pressed to open the web app.| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionWebViewDataSent = ['_' => 'messageActionWebViewDataSent', 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/messageActionWebViewDataSentMe.md b/docs/API_docs/constructors/messageActionWebViewDataSentMe.md new file mode 100644 index 0000000000..b2ae80ccbf --- /dev/null +++ b/docs/API_docs/constructors/messageActionWebViewDataSentMe.md @@ -0,0 +1,30 @@ +--- +title: "messageActionWebViewDataSentMe" +description: "Data from an opened reply keyboard bot mini app was relayed to the bot that owns it (bot side service message)." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageActionWebViewDataSentMe +[Back to constructors index](/API_docs/constructors/index.html) + + + +Data from an opened [reply keyboard bot mini app](https://core.telegram.org/api/bots/webapps) was relayed to the bot that owns it (bot side service message). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[string](/API_docs/types/string.html) | Yes|Text of the [keyboardButtonSimpleWebView](../constructors/keyboardButtonSimpleWebView.html) that was pressed to open the web app.| +|data|[string](/API_docs/types/string.html) | Yes|Relayed data.| + + + +### Type: [MessageAction](/API_docs/types/MessageAction.html) + + +### Example: + +``` +$messageActionWebViewDataSentMe = ['_' => 'messageActionWebViewDataSentMe', 'text' => 'string', 'data' => 'string']; +``` diff --git a/docs/API_docs/constructors/messageEmpty.md b/docs/API_docs/constructors/messageEmpty.md new file mode 100644 index 0000000000..af627d6d1b --- /dev/null +++ b/docs/API_docs/constructors/messageEmpty.md @@ -0,0 +1,30 @@ +--- +title: "messageEmpty" +description: "Empty constructor, non-existent message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor, non-existent message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[int](/API_docs/types/int.html) | Yes|Message identifier| +|peer\_id|[Peer](/API_docs/types/Peer.html) | Optional|Peer ID, the chat where this message was sent| + + + +### Type: [Message](/API_docs/types/Message.html) + + +### Example: + +``` +$messageEmpty = ['_' => 'messageEmpty', 'id' => int, 'peer_id' => Peer]; +``` diff --git a/docs/API_docs/constructors/messageEntityBankCard.md b/docs/API_docs/constructors/messageEntityBankCard.md new file mode 100644 index 0000000000..789a31e2dc --- /dev/null +++ b/docs/API_docs/constructors/messageEntityBankCard.md @@ -0,0 +1,30 @@ +--- +title: "messageEntityBankCard" +description: "Indicates a credit card number" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntityBankCard +[Back to constructors index](/API_docs/constructors/index.html) + + + +Indicates a credit card number + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntityBankCard = ['_' => 'messageEntityBankCard', 'offset' => int, 'length' => int]; +``` diff --git a/docs/API_docs/constructors/messageEntityBlockquote.md b/docs/API_docs/constructors/messageEntityBlockquote.md new file mode 100644 index 0000000000..e69319b3b9 --- /dev/null +++ b/docs/API_docs/constructors/messageEntityBlockquote.md @@ -0,0 +1,30 @@ +--- +title: "messageEntityBlockquote" +description: "Message entity representing a block quote." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntityBlockquote +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message entity representing a block quote. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntityBlockquote = ['_' => 'messageEntityBlockquote', 'offset' => int, 'length' => int]; +``` diff --git a/docs/API_docs/constructors/messageEntityBold.md b/docs/API_docs/constructors/messageEntityBold.md new file mode 100644 index 0000000000..933fa92d67 --- /dev/null +++ b/docs/API_docs/constructors/messageEntityBold.md @@ -0,0 +1,30 @@ +--- +title: "messageEntityBold" +description: "Message entity representing bold text." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntityBold +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message entity representing **bold text**. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntityBold = ['_' => 'messageEntityBold', 'offset' => int, 'length' => int]; +``` diff --git a/docs/API_docs/constructors/messageEntityBotCommand.md b/docs/API_docs/constructors/messageEntityBotCommand.md new file mode 100644 index 0000000000..0d2a4a1733 --- /dev/null +++ b/docs/API_docs/constructors/messageEntityBotCommand.md @@ -0,0 +1,30 @@ +--- +title: "messageEntityBotCommand" +description: "Message entity representing a bot /command" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntityBotCommand +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message entity representing a bot /command + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntityBotCommand = ['_' => 'messageEntityBotCommand', 'offset' => int, 'length' => int]; +``` diff --git a/docs/API_docs/constructors/messageEntityCashtag.md b/docs/API_docs/constructors/messageEntityCashtag.md new file mode 100644 index 0000000000..61217300f8 --- /dev/null +++ b/docs/API_docs/constructors/messageEntityCashtag.md @@ -0,0 +1,30 @@ +--- +title: "messageEntityCashtag" +description: "Message entity representing a $cashtag." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntityCashtag +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message entity representing a **$cashtag**. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntityCashtag = ['_' => 'messageEntityCashtag', 'offset' => int, 'length' => int]; +``` diff --git a/docs/API_docs/constructors/messageEntityCode.md b/docs/API_docs/constructors/messageEntityCode.md new file mode 100644 index 0000000000..bb1313bea2 --- /dev/null +++ b/docs/API_docs/constructors/messageEntityCode.md @@ -0,0 +1,30 @@ +--- +title: "messageEntityCode" +description: "Message entity representing a codeblock." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntityCode +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message entity representing a `codeblock`. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntityCode = ['_' => 'messageEntityCode', 'offset' => int, 'length' => int]; +``` diff --git a/docs/API_docs/constructors/messageEntityCustomEmoji.md b/docs/API_docs/constructors/messageEntityCustomEmoji.md new file mode 100644 index 0000000000..633a8f84a1 --- /dev/null +++ b/docs/API_docs/constructors/messageEntityCustomEmoji.md @@ -0,0 +1,32 @@ +--- +title: "messageEntityCustomEmoji" +description: "Represents a custom emoji." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntityCustomEmoji +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a custom emoji. +Note that this entity must wrap exactly one regular emoji (the one contained in [documentAttributeCustomEmoji](../constructors/documentAttributeCustomEmoji.html).`alt`) in the related text, otherwise the server will ignore it. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|document\_id|[long](/API_docs/types/long.html) | Yes|Document ID of the [custom emoji](https://core.telegram.org/api/custom-emoji), use [messages.getCustomEmojiDocuments](../methods/messages.getCustomEmojiDocuments.html) to fetch the emoji animation and the actual emoji it represents.| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntityCustomEmoji = ['_' => 'messageEntityCustomEmoji', 'offset' => int, 'length' => int, 'document_id' => long]; +``` diff --git a/docs/API_docs/constructors/messageEntityEmail.md b/docs/API_docs/constructors/messageEntityEmail.md new file mode 100644 index 0000000000..b96db42298 --- /dev/null +++ b/docs/API_docs/constructors/messageEntityEmail.md @@ -0,0 +1,30 @@ +--- +title: "messageEntityEmail" +description: "Message entity representing an ." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntityEmail +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message entity representing an . + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntityEmail = ['_' => 'messageEntityEmail', 'offset' => int, 'length' => int]; +``` diff --git a/docs/API_docs/constructors/messageEntityHashtag.md b/docs/API_docs/constructors/messageEntityHashtag.md new file mode 100644 index 0000000000..6d80c7dce0 --- /dev/null +++ b/docs/API_docs/constructors/messageEntityHashtag.md @@ -0,0 +1,30 @@ +--- +title: "messageEntityHashtag" +description: "#hashtag message entity" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntityHashtag +[Back to constructors index](/API_docs/constructors/index.html) + + + +**\#hashtag** message entity + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntityHashtag = ['_' => 'messageEntityHashtag', 'offset' => int, 'length' => int]; +``` diff --git a/docs/API_docs/constructors/messageEntityItalic.md b/docs/API_docs/constructors/messageEntityItalic.md new file mode 100644 index 0000000000..bd25ceade0 --- /dev/null +++ b/docs/API_docs/constructors/messageEntityItalic.md @@ -0,0 +1,30 @@ +--- +title: "messageEntityItalic" +description: "Message entity representing italic text." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntityItalic +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message entity representing *italic text*. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntityItalic = ['_' => 'messageEntityItalic', 'offset' => int, 'length' => int]; +``` diff --git a/docs/API_docs/constructors/messageEntityMention.md b/docs/API_docs/constructors/messageEntityMention.md new file mode 100644 index 0000000000..9dd6d6ca8c --- /dev/null +++ b/docs/API_docs/constructors/messageEntityMention.md @@ -0,0 +1,30 @@ +--- +title: "messageEntityMention" +description: "Message entity mentioning a user by @username; messageEntityMentionName can also be used to mention users by their ID." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntityMention +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message entity [mentioning](https://core.telegram.org/api/mentions) a user by `@username`; [messageEntityMentionName](../constructors/messageEntityMentionName.html) can also be used to mention users by their ID. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntityMention = ['_' => 'messageEntityMention', 'offset' => int, 'length' => int]; +``` diff --git a/docs/API_docs/constructors/messageEntityMentionName.md b/docs/API_docs/constructors/messageEntityMentionName.md new file mode 100644 index 0000000000..3af34c53b1 --- /dev/null +++ b/docs/API_docs/constructors/messageEntityMentionName.md @@ -0,0 +1,31 @@ +--- +title: "messageEntityMentionName" +description: "Message entity representing a user mention: for creating a mention use inputMessageEntityMentionName." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntityMentionName +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message entity representing a [user mention](https://core.telegram.org/api/mentions): for *creating* a mention use [inputMessageEntityMentionName](../constructors/inputMessageEntityMentionName.html). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|user\_id|[long](/API_docs/types/long.html) | Yes|Identifier of the user that was mentioned| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntityMentionName = ['_' => 'messageEntityMentionName', 'offset' => int, 'length' => int, 'user_id' => long]; +``` diff --git a/docs/API_docs/constructors/messageEntityPhone.md b/docs/API_docs/constructors/messageEntityPhone.md new file mode 100644 index 0000000000..259f596040 --- /dev/null +++ b/docs/API_docs/constructors/messageEntityPhone.md @@ -0,0 +1,30 @@ +--- +title: "messageEntityPhone" +description: "Message entity representing a phone number." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntityPhone +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message entity representing a phone number. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntityPhone = ['_' => 'messageEntityPhone', 'offset' => int, 'length' => int]; +``` diff --git a/docs/API_docs/constructors/messageEntityPre.md b/docs/API_docs/constructors/messageEntityPre.md new file mode 100644 index 0000000000..f1d38528dd --- /dev/null +++ b/docs/API_docs/constructors/messageEntityPre.md @@ -0,0 +1,31 @@ +--- +title: "messageEntityPre" +description: "Message entity representing a preformatted codeblock, allowing the user to specify a programming language for the codeblock." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntityPre +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message entity representing a preformatted `codeblock`, allowing the user to specify a programming language for the codeblock. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|language|[string](/API_docs/types/string.html) | Yes|Programming language of the code| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntityPre = ['_' => 'messageEntityPre', 'offset' => int, 'length' => int, 'language' => 'string']; +``` diff --git a/docs/API_docs/constructors/messageEntitySpoiler.md b/docs/API_docs/constructors/messageEntitySpoiler.md new file mode 100644 index 0000000000..4bc8b0c8da --- /dev/null +++ b/docs/API_docs/constructors/messageEntitySpoiler.md @@ -0,0 +1,30 @@ +--- +title: "messageEntitySpoiler" +description: "Message entity representing a spoiler" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntitySpoiler +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message entity representing a spoiler + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntitySpoiler = ['_' => 'messageEntitySpoiler', 'offset' => int, 'length' => int]; +``` diff --git a/docs/API_docs/constructors/messageEntityStrike.md b/docs/API_docs/constructors/messageEntityStrike.md new file mode 100644 index 0000000000..546fbbf46f --- /dev/null +++ b/docs/API_docs/constructors/messageEntityStrike.md @@ -0,0 +1,30 @@ +--- +title: "messageEntityStrike" +description: "Message entity representing strikethrough text." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntityStrike +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message entity representing strikethrough text. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntityStrike = ['_' => 'messageEntityStrike', 'offset' => int, 'length' => int]; +``` diff --git a/docs/API_docs/constructors/messageEntityTextUrl.md b/docs/API_docs/constructors/messageEntityTextUrl.md new file mode 100644 index 0000000000..985009f453 --- /dev/null +++ b/docs/API_docs/constructors/messageEntityTextUrl.md @@ -0,0 +1,33 @@ +--- +title: "messageEntityTextUrl" +description: "Message entity representing a text url: for in-text urls like use messageEntityUrl." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntityTextUrl +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message entity representing a [text url](https://google.com): for in-text urls like use [messageEntityUrl](../constructors/messageEntityUrl.html). + +Note that an additional confirmation popup with the full URL must be displayed to the user before opening this link, unless the domain satisfies the conditions specified in the [domain whitelist documentation »](https://core.telegram.org/api/config#whitelisted-domains). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|url|[string](/API_docs/types/string.html) | Yes|The actual URL| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntityTextUrl = ['_' => 'messageEntityTextUrl', 'offset' => int, 'length' => int, 'url' => 'string']; +``` diff --git a/docs/API_docs/constructors/messageEntityUnderline.md b/docs/API_docs/constructors/messageEntityUnderline.md new file mode 100644 index 0000000000..b3b4e7cd62 --- /dev/null +++ b/docs/API_docs/constructors/messageEntityUnderline.md @@ -0,0 +1,30 @@ +--- +title: "messageEntityUnderline" +description: "Message entity representing underlined text." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntityUnderline +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message entity representing underlined text. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntityUnderline = ['_' => 'messageEntityUnderline', 'offset' => int, 'length' => int]; +``` diff --git a/docs/API_docs/constructors/messageEntityUnknown.md b/docs/API_docs/constructors/messageEntityUnknown.md new file mode 100644 index 0000000000..0c060ad4f2 --- /dev/null +++ b/docs/API_docs/constructors/messageEntityUnknown.md @@ -0,0 +1,30 @@ +--- +title: "messageEntityUnknown" +description: "Unknown message entity" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntityUnknown +[Back to constructors index](/API_docs/constructors/index.html) + + + +Unknown message entity + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntityUnknown = ['_' => 'messageEntityUnknown', 'offset' => int, 'length' => int]; +``` diff --git a/docs/API_docs/constructors/messageEntityUrl.md b/docs/API_docs/constructors/messageEntityUrl.md new file mode 100644 index 0000000000..da5d16906d --- /dev/null +++ b/docs/API_docs/constructors/messageEntityUrl.md @@ -0,0 +1,30 @@ +--- +title: "messageEntityUrl" +description: "Message entity representing an in-text url: ; for text urls, use messageEntityTextUrl." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageEntityUrl +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message entity representing an in-text url: ; for [text urls](https://google.com), use [messageEntityTextUrl](../constructors/messageEntityTextUrl.html). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|offset|[int](/API_docs/types/int.html) | Yes|Offset of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| +|length|[int](/API_docs/types/int.html) | Yes|Length of message entity within message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length))| + + + +### Type: [MessageEntity](/API_docs/types/MessageEntity.html) + + +### Example: + +``` +$messageEntityUrl = ['_' => 'messageEntityUrl', 'offset' => int, 'length' => int]; +``` diff --git a/docs/API_docs/constructors/messageExtendedMedia.md b/docs/API_docs/constructors/messageExtendedMedia.md new file mode 100644 index 0000000000..1dcd1a8647 --- /dev/null +++ b/docs/API_docs/constructors/messageExtendedMedia.md @@ -0,0 +1,29 @@ +--- +title: "messageExtendedMedia" +description: "Extended media" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageExtendedMedia +[Back to constructors index](/API_docs/constructors/index.html) + + + +Extended media + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|media|[MessageMedia](/API_docs/types/MessageMedia.html) | Optional|Media| + + + +### Type: [MessageExtendedMedia](/API_docs/types/MessageExtendedMedia.html) + + +### Example: + +``` +$messageExtendedMedia = ['_' => 'messageExtendedMedia', 'media' => MessageMedia]; +``` diff --git a/docs/API_docs/constructors/messageExtendedMediaPreview.md b/docs/API_docs/constructors/messageExtendedMediaPreview.md new file mode 100644 index 0000000000..3d3b2b11d0 --- /dev/null +++ b/docs/API_docs/constructors/messageExtendedMediaPreview.md @@ -0,0 +1,32 @@ +--- +title: "messageExtendedMediaPreview" +description: "Extended media preview" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageExtendedMediaPreview +[Back to constructors index](/API_docs/constructors/index.html) + + + +Extended media preview + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|w|[int](/API_docs/types/int.html) | Optional|Width| +|h|[int](/API_docs/types/int.html) | Optional|Height| +|thumb|[PhotoSize](/API_docs/types/PhotoSize.html) | Optional|Thumbnail| +|video\_duration|[int](/API_docs/types/int.html) | Optional|Video duration| + + + +### Type: [MessageExtendedMedia](/API_docs/types/MessageExtendedMedia.html) + + +### Example: + +``` +$messageExtendedMediaPreview = ['_' => 'messageExtendedMediaPreview', 'w' => int, 'h' => int, 'thumb' => PhotoSize, 'video_duration' => int]; +``` diff --git a/docs/API_docs/constructors/messageFwdHeader.md b/docs/API_docs/constructors/messageFwdHeader.md new file mode 100644 index 0000000000..da72d05d9c --- /dev/null +++ b/docs/API_docs/constructors/messageFwdHeader.md @@ -0,0 +1,41 @@ +--- +title: "messageFwdHeader" +description: "Info about a forwarded message" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageFwdHeader +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about a forwarded message + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|imported|[Bool](/API_docs/types/Bool.html) | Optional|Whether this message was [imported from a foreign chat service, click here for more info »](https://core.telegram.org/api/import)| +|saved\_out|[Bool](/API_docs/types/Bool.html) | Optional|Only for messages forwarded to [saved messages »](https://core.telegram.org/api/saved-messages), set if the original message was outgoing (though the message may have been originally outgoing even if this flag is not set, if `from_id` points to the current user).| +|from\_id|[Peer](/API_docs/types/Peer.html) | Optional|The ID of the user that originally sent the message| +|from\_name|[string](/API_docs/types/string.html) | Optional|The name of the user that originally sent the message| +|date|[int](/API_docs/types/int.html) | Yes|When was the message originally sent| +|channel\_post|[int](/API_docs/types/int.html) | Optional|ID of the channel message that was forwarded| +|post\_author|[string](/API_docs/types/string.html) | Optional|For channels and if signatures are enabled, author of the channel message| +|saved\_from\_peer|[Peer](/API_docs/types/Peer.html) | Optional|Only for messages forwarded to [saved messages »](https://core.telegram.org/api/saved-messages), contains the dialog where the message was originally sent.| +|saved\_from\_msg\_id|[int](/API_docs/types/int.html) | Optional|Only for messages forwarded to [saved messages »](https://core.telegram.org/api/saved-messages), contains the original ID of the message in `saved_from_peer`.| +|saved\_from\_id|[Peer](/API_docs/types/Peer.html) | Optional|Only for forwarded messages reforwarded to [saved messages »](https://core.telegram.org/api/saved-messages), contains the sender of the original message (i.e. if user A sends a message, then user B forwards it somewhere, then user C saves it to saved messages, this field will contain the ID of user B and `from_id` will contain the ID of user A).| +|saved\_from\_name|[string](/API_docs/types/string.html) | Optional|Only for forwarded messages from users with forward privacy enabled, sent by users with forward privacy enabled, reforwarded to [saved messages »](https://core.telegram.org/api/saved-messages), contains the sender of the original message (i.e. if user A (fwd privacy enabled) sends a message, then user B (fwd privacy enabled) forwards it somewhere, then user C saves it to saved messages, this field will contain the name of user B and `from_name` will contain the name of user A).| +|saved\_date|[int](/API_docs/types/int.html) | Optional|Only for forwarded messages reforwarded to [saved messages »](https://core.telegram.org/api/saved-messages), indicates when was the original message sent (i.e. if user A sends a message @ unixtime 1, then user B forwards it somewhere @ unixtime 2, then user C saves it to saved messages @ unixtime 3, this field will contain 2, `date` will contain 1 and the `date` of the containing [message](../constructors/message.html) will contain 3).| +|psa\_type|[string](/API_docs/types/string.html) | Optional|PSA type| + + + +### Type: [MessageFwdHeader](/API_docs/types/MessageFwdHeader.html) + + +### Example: + +``` +$messageFwdHeader = ['_' => 'messageFwdHeader', 'imported' => Bool, 'saved_out' => Bool, 'from_id' => Peer, 'from_name' => 'string', 'date' => int, 'channel_post' => int, 'post_author' => 'string', 'saved_from_peer' => Peer, 'saved_from_msg_id' => int, 'saved_from_id' => Peer, 'saved_from_name' => 'string', 'saved_date' => int, 'psa_type' => 'string']; +``` diff --git a/docs/API_docs/constructors/messageMediaContact.md b/docs/API_docs/constructors/messageMediaContact.md new file mode 100644 index 0000000000..921755044c --- /dev/null +++ b/docs/API_docs/constructors/messageMediaContact.md @@ -0,0 +1,33 @@ +--- +title: "messageMediaContact" +description: "Attached contact." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageMediaContact +[Back to constructors index](/API_docs/constructors/index.html) + + + +Attached contact. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|phone\_number|[string](/API_docs/types/string.html) | Yes|Phone number| +|first\_name|[string](/API_docs/types/string.html) | Yes|Contact's first name| +|last\_name|[string](/API_docs/types/string.html) | Yes|Contact's last name| +|vcard|[string](/API_docs/types/string.html) | Yes|VCARD of contact| +|user\_id|[long](/API_docs/types/long.html) | Yes|User identifier or `0`, if the user with the given phone number is not registered| + + + +### Type: [MessageMedia](/API_docs/types/MessageMedia.html) + + +### Example: + +``` +$messageMediaContact = ['_' => 'messageMediaContact', 'phone_number' => 'string', 'first_name' => 'string', 'last_name' => 'string', 'vcard' => 'string', 'user_id' => long]; +``` diff --git a/docs/API_docs/constructors/messageMediaDice.md b/docs/API_docs/constructors/messageMediaDice.md new file mode 100644 index 0000000000..0c332153a8 --- /dev/null +++ b/docs/API_docs/constructors/messageMediaDice.md @@ -0,0 +1,30 @@ +--- +title: "messageMediaDice" +description: "Dice-based animated sticker" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageMediaDice +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Dice-based animated sticker](https://core.telegram.org/api/dice) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|value|[int](/API_docs/types/int.html) | Yes|[Dice value](https://core.telegram.org/api/dice)| +|emoticon|[string](/API_docs/types/string.html) | Yes|The emoji, for now 🏀, 🎲 and 🎯 are supported| + + + +### Type: [MessageMedia](/API_docs/types/MessageMedia.html) + + +### Example: + +``` +$messageMediaDice = ['_' => 'messageMediaDice', 'value' => int, 'emoticon' => 'string']; +``` diff --git a/docs/API_docs/constructors/messageMediaDocument.md b/docs/API_docs/constructors/messageMediaDocument.md new file mode 100644 index 0000000000..e697ab5b3c --- /dev/null +++ b/docs/API_docs/constructors/messageMediaDocument.md @@ -0,0 +1,36 @@ +--- +title: "messageMediaDocument" +description: "Document (video, audio, voice, sticker, any media type except photo)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageMediaDocument +[Back to constructors index](/API_docs/constructors/index.html) + + + +Document (video, audio, voice, sticker, any media type except photo) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|nopremium|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a normal sticker, if not set this is a premium sticker and a premium sticker animation must be played.| +|spoiler|[Bool](/API_docs/types/Bool.html) | Optional|Whether this media should be hidden behind a spoiler warning| +|video|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a video.| +|round|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a round video.| +|voice|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a voice message.| +|document|[Document](/API_docs/types/Document.html) | Optional|Attached document| +|alt\_document|[Document](/API_docs/types/Document.html) | Optional|Currently only used for story videos, may contain an alternative version of the story video, explicitly encoded using H.264 (in MPEG4 transport) at a lower resolution than `document`.| +|ttl\_seconds|[int](/API_docs/types/int.html) | Optional|Time to live of self-destructing document| + + + +### Type: [MessageMedia](/API_docs/types/MessageMedia.html) + + +### Example: + +``` +$messageMediaDocument = ['_' => 'messageMediaDocument', 'nopremium' => Bool, 'spoiler' => Bool, 'video' => Bool, 'round' => Bool, 'voice' => Bool, 'document' => Document, 'alt_document' => Document, 'ttl_seconds' => int]; +``` diff --git a/docs/API_docs/constructors/messageMediaEmpty.md b/docs/API_docs/constructors/messageMediaEmpty.md new file mode 100644 index 0000000000..c80e4b21ad --- /dev/null +++ b/docs/API_docs/constructors/messageMediaEmpty.md @@ -0,0 +1,24 @@ +--- +title: "messageMediaEmpty" +description: "Empty constructor." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageMediaEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor. + + + + +### Type: [MessageMedia](/API_docs/types/MessageMedia.html) + + +### Example: + +``` +$messageMediaEmpty = ['_' => 'messageMediaEmpty']; +``` diff --git a/docs/API_docs/constructors/messageMediaGame.md b/docs/API_docs/constructors/messageMediaGame.md new file mode 100644 index 0000000000..2662405b02 --- /dev/null +++ b/docs/API_docs/constructors/messageMediaGame.md @@ -0,0 +1,29 @@ +--- +title: "messageMediaGame" +description: "Telegram game" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageMediaGame +[Back to constructors index](/API_docs/constructors/index.html) + + + +Telegram game + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|game|[Game](/API_docs/types/Game.html) | Yes|Game| + + + +### Type: [MessageMedia](/API_docs/types/MessageMedia.html) + + +### Example: + +``` +$messageMediaGame = ['_' => 'messageMediaGame', 'game' => Game]; +``` diff --git a/docs/API_docs/constructors/messageMediaGeo.md b/docs/API_docs/constructors/messageMediaGeo.md new file mode 100644 index 0000000000..51a72ed4b9 --- /dev/null +++ b/docs/API_docs/constructors/messageMediaGeo.md @@ -0,0 +1,29 @@ +--- +title: "messageMediaGeo" +description: "Attached map." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageMediaGeo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Attached map. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|geo|[GeoPoint](/API_docs/types/GeoPoint.html) | Optional|GeoPoint| + + + +### Type: [MessageMedia](/API_docs/types/MessageMedia.html) + + +### Example: + +``` +$messageMediaGeo = ['_' => 'messageMediaGeo', 'geo' => GeoPoint]; +``` diff --git a/docs/API_docs/constructors/messageMediaGeoLive.md b/docs/API_docs/constructors/messageMediaGeoLive.md new file mode 100644 index 0000000000..d8c5868f7e --- /dev/null +++ b/docs/API_docs/constructors/messageMediaGeoLive.md @@ -0,0 +1,32 @@ +--- +title: "messageMediaGeoLive" +description: "Indicates a live geolocation" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageMediaGeoLive +[Back to constructors index](/API_docs/constructors/index.html) + + + +Indicates a [live geolocation](https://core.telegram.org/api/live-location) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|geo|[GeoPoint](/API_docs/types/GeoPoint.html) | Optional|Geolocation| +|heading|[int](/API_docs/types/int.html) | Optional|For [live locations](https://core.telegram.org/api/live-location), a direction in which the location moves, in degrees; 1-360| +|period|[int](/API_docs/types/int.html) | Yes|Validity period of provided geolocation| +|proximity\_notification\_radius|[int](/API_docs/types/int.html) | Optional|For [live locations](https://core.telegram.org/api/live-location), a maximum distance to another chat member for proximity alerts, in meters (0-100000).| + + + +### Type: [MessageMedia](/API_docs/types/MessageMedia.html) + + +### Example: + +``` +$messageMediaGeoLive = ['_' => 'messageMediaGeoLive', 'geo' => GeoPoint, 'heading' => int, 'period' => int, 'proximity_notification_radius' => int]; +``` diff --git a/docs/API_docs/constructors/messageMediaGiveaway.md b/docs/API_docs/constructors/messageMediaGiveaway.md new file mode 100644 index 0000000000..0e2c973e57 --- /dev/null +++ b/docs/API_docs/constructors/messageMediaGiveaway.md @@ -0,0 +1,36 @@ +--- +title: "messageMediaGiveaway" +description: "Contains info about a giveaway, see here » for more info." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageMediaGiveaway +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains info about a [giveaway, see here »](https://core.telegram.org/api/giveaways) for more info. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|only\_new\_subscribers|[Bool](/API_docs/types/Bool.html) | Optional|If set, only new subscribers starting from the giveaway creation date will be able to participate to the giveaway.| +|winners\_are\_visible|[Bool](/API_docs/types/Bool.html) | Optional|If set, giveaway winners are public and will be listed in a [messageMediaGiveawayResults](../constructors/messageMediaGiveawayResults.html) message that will be automatically sent to the channel once the giveaway ends.| +|channels|Array of [long](/API_docs/types/long.html) | Yes|The channels that the user must join to participate in the giveaway.| +|countries\_iso2|Array of [string](/API_docs/types/string.html) | Optional|If set, only users residing in these countries can participate in the giveaway, (specified as a list of two-letter ISO 3166-1 alpha-2 country codes); otherwise there are no country-based limitations.| +|prize\_description|[string](/API_docs/types/string.html) | Optional|Can contain a textual description of additional giveaway prizes.| +|quantity|[int](/API_docs/types/int.html) | Yes|Number of [Telegram Premium](https://core.telegram.org/api/premium) subscriptions given away.| +|months|[int](/API_docs/types/int.html) | Yes|Duration in months of each [Telegram Premium](https://core.telegram.org/api/premium) subscription in the giveaway.| +|until\_date|[int](/API_docs/types/int.html) | Yes|The end date of the giveaway.| + + + +### Type: [MessageMedia](/API_docs/types/MessageMedia.html) + + +### Example: + +``` +$messageMediaGiveaway = ['_' => 'messageMediaGiveaway', 'only_new_subscribers' => Bool, 'winners_are_visible' => Bool, 'channels' => [long, long], 'countries_iso2' => ['string', 'string'], 'prize_description' => 'string', 'quantity' => int, 'months' => int, 'until_date' => int]; +``` diff --git a/docs/API_docs/constructors/messageMediaGiveawayResults.md b/docs/API_docs/constructors/messageMediaGiveawayResults.md new file mode 100644 index 0000000000..945e494b98 --- /dev/null +++ b/docs/API_docs/constructors/messageMediaGiveawayResults.md @@ -0,0 +1,39 @@ +--- +title: "messageMediaGiveawayResults" +description: "A giveaway with public winners has finished, this constructor contains info about the winners." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageMediaGiveawayResults +[Back to constructors index](/API_docs/constructors/index.html) + + + +A [giveaway](https://core.telegram.org/api/giveaways) with public winners has finished, this constructor contains info about the winners. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|only\_new\_subscribers|[Bool](/API_docs/types/Bool.html) | Optional|If set, only new subscribers starting from the giveaway creation date participated in the giveaway.| +|refunded|[Bool](/API_docs/types/Bool.html) | Optional|If set, the giveaway was canceled and was fully refunded.| +|channel\_id|[long](/API_docs/types/long.html) | Yes|ID of the channel that was automatically [boosted](https://core.telegram.org/api/boost) by the winners of the giveaway for duration of the Premium subscription.| +|additional\_peers\_count|[int](/API_docs/types/int.html) | Optional|Number of other channels that participated in the giveaway.| +|launch\_msg\_id|[int](/API_docs/types/int.html) | Yes|Identifier of the message with the giveaway in `channel_id`.| +|winners\_count|[int](/API_docs/types/int.html) | Yes|Total number of winners in the giveaway.| +|unclaimed\_count|[int](/API_docs/types/int.html) | Yes|Number of not-yet-claimed prizes.| +|winners|Array of [long](/API_docs/types/long.html) | Yes|Up to 100 user identifiers of the winners of the giveaway.| +|months|[int](/API_docs/types/int.html) | Yes|Duration in months of each [Telegram Premium](https://core.telegram.org/api/premium) subscription in the giveaway.| +|prize\_description|[string](/API_docs/types/string.html) | Optional|Can contain a textual description of additional giveaway prizes.| +|until\_date|[int](/API_docs/types/int.html) | Yes|Point in time (Unix timestamp) when the winners were selected. May be bigger than winners selection date specified in initial parameters of the giveaway.| + + + +### Type: [MessageMedia](/API_docs/types/MessageMedia.html) + + +### Example: + +``` +$messageMediaGiveawayResults = ['_' => 'messageMediaGiveawayResults', 'only_new_subscribers' => Bool, 'refunded' => Bool, 'channel_id' => long, 'additional_peers_count' => int, 'launch_msg_id' => int, 'winners_count' => int, 'unclaimed_count' => int, 'winners' => [long, long], 'months' => int, 'prize_description' => 'string', 'until_date' => int]; +``` diff --git a/docs/API_docs/constructors/messageMediaInvoice.md b/docs/API_docs/constructors/messageMediaInvoice.md new file mode 100644 index 0000000000..982732b2c4 --- /dev/null +++ b/docs/API_docs/constructors/messageMediaInvoice.md @@ -0,0 +1,38 @@ +--- +title: "messageMediaInvoice" +description: "Invoice" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageMediaInvoice +[Back to constructors index](/API_docs/constructors/index.html) + + + +Invoice + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|shipping\_address\_requested|[Bool](/API_docs/types/Bool.html) | Optional|Whether the shipping address was requested| +|test|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is an example invoice| +|title|[string](/API_docs/types/string.html) | Yes|Product name, 1-32 characters| +|description|[string](/API_docs/types/string.html) | Yes|Product description, 1-255 characters| +|photo|[WebDocument](/API_docs/types/WebDocument.html) | Optional|URL of the product photo for the invoice. Can be a photo of the goods or a marketing image for a service. People like it better when they see what they are paying for.| +|receipt\_msg\_id|[int](/API_docs/types/int.html) | Optional|Message ID of receipt: if set, clients should change the text of the first [keyboardButtonBuy](../constructors/keyboardButtonBuy.html) button always attached to the [message](../constructors/message.html) to a localized version of the word `Receipt`| +|currency|[string](/API_docs/types/string.html) | Yes|Three-letter ISO 4217 [currency](https://core.telegram.org/bots/payments#supported-currencies) code| +|total\_amount|[long](/API_docs/types/long.html) | Yes|Total 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](https://core.telegram.org/bots/payments/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).| +|start\_param|[string](/API_docs/types/string.html) | Yes|Unique bot deep-linking parameter that can be used to generate this invoice| +|extended\_media|[MessageExtendedMedia](/API_docs/types/MessageExtendedMedia.html) | Optional|Extended media| + + + +### Type: [MessageMedia](/API_docs/types/MessageMedia.html) + + +### Example: + +``` +$messageMediaInvoice = ['_' => 'messageMediaInvoice', 'shipping_address_requested' => Bool, 'test' => Bool, 'title' => 'string', 'description' => 'string', 'photo' => WebDocument, 'receipt_msg_id' => int, 'currency' => 'string', 'total_amount' => long, 'start_param' => 'string', 'extended_media' => MessageExtendedMedia]; +``` diff --git a/docs/API_docs/constructors/messageMediaPhoto.md b/docs/API_docs/constructors/messageMediaPhoto.md new file mode 100644 index 0000000000..5a1c3fc69f --- /dev/null +++ b/docs/API_docs/constructors/messageMediaPhoto.md @@ -0,0 +1,31 @@ +--- +title: "messageMediaPhoto" +description: "Attached photo." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageMediaPhoto +[Back to constructors index](/API_docs/constructors/index.html) + + + +Attached photo. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|spoiler|[Bool](/API_docs/types/Bool.html) | Optional|Whether this media should be hidden behind a spoiler warning| +|photo|[Photo](/API_docs/types/Photo.html) | Optional|Photo| +|ttl\_seconds|[int](/API_docs/types/int.html) | Optional|Time to live in seconds of self-destructing photo| + + + +### Type: [MessageMedia](/API_docs/types/MessageMedia.html) + + +### Example: + +``` +$messageMediaPhoto = ['_' => 'messageMediaPhoto', 'spoiler' => Bool, 'photo' => Photo, 'ttl_seconds' => int]; +``` diff --git a/docs/API_docs/constructors/messageMediaPoll.md b/docs/API_docs/constructors/messageMediaPoll.md new file mode 100644 index 0000000000..719b86fe44 --- /dev/null +++ b/docs/API_docs/constructors/messageMediaPoll.md @@ -0,0 +1,30 @@ +--- +title: "messageMediaPoll" +description: "Poll" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageMediaPoll +[Back to constructors index](/API_docs/constructors/index.html) + + + +Poll + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|poll|[Poll](/API_docs/types/Poll.html) | Yes|The poll| +|results|[PollResults](/API_docs/types/PollResults.html) | Yes|The results of the poll| + + + +### Type: [MessageMedia](/API_docs/types/MessageMedia.html) + + +### Example: + +``` +$messageMediaPoll = ['_' => 'messageMediaPoll', 'poll' => Poll, 'results' => PollResults]; +``` diff --git a/docs/API_docs/constructors/messageMediaStory.md b/docs/API_docs/constructors/messageMediaStory.md new file mode 100644 index 0000000000..891ba82837 --- /dev/null +++ b/docs/API_docs/constructors/messageMediaStory.md @@ -0,0 +1,32 @@ +--- +title: "messageMediaStory" +description: "Represents a forwarded story or a story mention." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageMediaStory +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a forwarded [story](https://core.telegram.org/api/stories) or a story mention. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|via\_mention|[Bool](/API_docs/types/Bool.html) | Optional|If set, indicates that this someone has mentioned us in this story (i.e. by tagging us in the description) or vice versa, we have mentioned the other peer (if the message is outgoing).| +|peer|[long](/API_docs/types/long.html) | Yes|Peer that posted the story.| +|id|[int](/API_docs/types/int.html) | Yes|Story ID| +|story|[StoryItem](/API_docs/types/StoryItem.html) | Optional|The story itself, if absent fetch it using [stories.getStoriesByID](../methods/stories.getStoriesByID.html) and the `peer`/`id` parameters specified above.| + + + +### Type: [MessageMedia](/API_docs/types/MessageMedia.html) + + +### Example: + +``` +$messageMediaStory = ['_' => 'messageMediaStory', 'via_mention' => Bool, 'peer' => long, 'id' => int, 'story' => StoryItem]; +``` diff --git a/docs/API_docs/constructors/messageMediaUnsupported.md b/docs/API_docs/constructors/messageMediaUnsupported.md new file mode 100644 index 0000000000..8da4f1464d --- /dev/null +++ b/docs/API_docs/constructors/messageMediaUnsupported.md @@ -0,0 +1,24 @@ +--- +title: "messageMediaUnsupported" +description: "Current version of the client does not support this media type." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageMediaUnsupported +[Back to constructors index](/API_docs/constructors/index.html) + + + +Current version of the client does not support this media type. + + + + +### Type: [MessageMedia](/API_docs/types/MessageMedia.html) + + +### Example: + +``` +$messageMediaUnsupported = ['_' => 'messageMediaUnsupported']; +``` diff --git a/docs/API_docs/constructors/messageMediaVenue.md b/docs/API_docs/constructors/messageMediaVenue.md new file mode 100644 index 0000000000..7a19576bfd --- /dev/null +++ b/docs/API_docs/constructors/messageMediaVenue.md @@ -0,0 +1,34 @@ +--- +title: "messageMediaVenue" +description: "Venue" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageMediaVenue +[Back to constructors index](/API_docs/constructors/index.html) + + + +Venue + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|geo|[GeoPoint](/API_docs/types/GeoPoint.html) | Optional|Geolocation of venue| +|title|[string](/API_docs/types/string.html) | Yes|Venue name| +|address|[string](/API_docs/types/string.html) | Yes|Address| +|provider|[string](/API_docs/types/string.html) | Yes|Venue provider: currently only "foursquare" and "gplaces" (Google Places) need to be supported| +|venue\_id|[string](/API_docs/types/string.html) | Yes|Venue ID in the provider's database| +|venue\_type|[string](/API_docs/types/string.html) | Yes|Venue type in the provider's database| + + + +### Type: [MessageMedia](/API_docs/types/MessageMedia.html) + + +### Example: + +``` +$messageMediaVenue = ['_' => 'messageMediaVenue', 'geo' => GeoPoint, 'title' => 'string', 'address' => 'string', 'provider' => 'string', 'venue_id' => 'string', 'venue_type' => 'string']; +``` diff --git a/docs/API_docs/constructors/messageMediaWebPage.md b/docs/API_docs/constructors/messageMediaWebPage.md new file mode 100644 index 0000000000..6501c523ad --- /dev/null +++ b/docs/API_docs/constructors/messageMediaWebPage.md @@ -0,0 +1,33 @@ +--- +title: "messageMediaWebPage" +description: "Preview of webpage" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageMediaWebPage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Preview of webpage + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|force\_large\_media|[Bool](/API_docs/types/Bool.html) | Optional|If set, specifies that a large media preview should be used.| +|force\_small\_media|[Bool](/API_docs/types/Bool.html) | Optional|If set, specifies that a small media preview should be used.| +|manual|[Bool](/API_docs/types/Bool.html) | Optional|If set, indicates that the URL used for the webpage preview was specified manually using [inputMediaWebPage](../constructors/inputMediaWebPage.html), and may not be related to any of the URLs specified in the message.| +|safe|[Bool](/API_docs/types/Bool.html) | Optional|If set, the webpage can be opened directly without user confirmation; otherwise, user confirmation is required, showing the exact URL that will be opened.| +|webpage|[WebPage](/API_docs/types/WebPage.html) | Optional|Webpage preview| + + + +### Type: [MessageMedia](/API_docs/types/MessageMedia.html) + + +### Example: + +``` +$messageMediaWebPage = ['_' => 'messageMediaWebPage', 'force_large_media' => Bool, 'force_small_media' => Bool, 'manual' => Bool, 'safe' => Bool, 'webpage' => WebPage]; +``` diff --git a/docs/API_docs/constructors/messagePeerReaction.md b/docs/API_docs/constructors/messagePeerReaction.md new file mode 100644 index 0000000000..d2beca765b --- /dev/null +++ b/docs/API_docs/constructors/messagePeerReaction.md @@ -0,0 +1,34 @@ +--- +title: "messagePeerReaction" +description: "How a certain peer reacted to the message" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messagePeerReaction +[Back to constructors index](/API_docs/constructors/index.html) + + + +How a certain peer reacted to the message + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|big|[Bool](/API_docs/types/Bool.html) | Optional|Whether the specified [message reaction »](https://core.telegram.org/api/reactions) should elicit a bigger and longer reaction| +|unread|[Bool](/API_docs/types/Bool.html) | Optional|Whether the reaction wasn't yet marked as read by the current user| +|my|[Bool](/API_docs/types/Bool.html) | Optional|Starting from layer 159, [messages.sendReaction](../methods/messages.sendReaction.html) will send reactions from the peer (user or channel) specified using [messages.saveDefaultSendAs](../methods/messages.saveDefaultSendAs.html).
If set, this flag indicates that this reaction was sent by us, even if the `peer` doesn't point to the current account.| +|peer\_id|[Peer](/API_docs/types/Peer.html) | Yes|Peer that reacted to the message| +|date|[int](/API_docs/types/int.html) | Yes|When was this reaction added| +|reaction|[Reaction](/API_docs/types/Reaction.html) | Optional|Reaction emoji| + + + +### Type: [MessagePeerReaction](/API_docs/types/MessagePeerReaction.html) + + +### Example: + +``` +$messagePeerReaction = ['_' => 'messagePeerReaction', 'big' => Bool, 'unread' => Bool, 'my' => Bool, 'peer_id' => Peer, 'date' => int, 'reaction' => Reaction]; +``` diff --git a/docs/API_docs/constructors/messagePeerVote.md b/docs/API_docs/constructors/messagePeerVote.md new file mode 100644 index 0000000000..7bd7a5e3c9 --- /dev/null +++ b/docs/API_docs/constructors/messagePeerVote.md @@ -0,0 +1,31 @@ +--- +title: "messagePeerVote" +description: "How a peer voted in a poll" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messagePeerVote +[Back to constructors index](/API_docs/constructors/index.html) + + + +How a peer voted in a poll + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|Peer ID| +|option|[bytes](/API_docs/types/bytes.html) | Yes|The option chosen by the peer| +|date|[int](/API_docs/types/int.html) | Yes|When did the peer cast the vote| + + + +### Type: [MessagePeerVote](/API_docs/types/MessagePeerVote.html) + + +### Example: + +``` +$messagePeerVote = ['_' => 'messagePeerVote', 'peer' => long, 'option' => 'bytes', 'date' => int]; +``` diff --git a/docs/API_docs/constructors/messagePeerVoteInputOption.md b/docs/API_docs/constructors/messagePeerVoteInputOption.md new file mode 100644 index 0000000000..3dbb321252 --- /dev/null +++ b/docs/API_docs/constructors/messagePeerVoteInputOption.md @@ -0,0 +1,30 @@ +--- +title: "messagePeerVoteInputOption" +description: "How a peer voted in a poll (reduced constructor, returned if an option was provided to messages.getPollVotes)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messagePeerVoteInputOption +[Back to constructors index](/API_docs/constructors/index.html) + + + +How a peer voted in a poll (reduced constructor, returned if an `option` was provided to [messages.getPollVotes](../methods/messages.getPollVotes.html)) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|The peer that voted for the queried `option`| +|date|[int](/API_docs/types/int.html) | Yes|When did the peer cast the vote| + + + +### Type: [MessagePeerVote](/API_docs/types/MessagePeerVote.html) + + +### Example: + +``` +$messagePeerVoteInputOption = ['_' => 'messagePeerVoteInputOption', 'peer' => long, 'date' => int]; +``` diff --git a/docs/API_docs/constructors/messagePeerVoteMultiple.md b/docs/API_docs/constructors/messagePeerVoteMultiple.md new file mode 100644 index 0000000000..0191971066 --- /dev/null +++ b/docs/API_docs/constructors/messagePeerVoteMultiple.md @@ -0,0 +1,31 @@ +--- +title: "messagePeerVoteMultiple" +description: "How a peer voted in a multiple-choice poll" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messagePeerVoteMultiple +[Back to constructors index](/API_docs/constructors/index.html) + + + +How a peer voted in a multiple-choice poll + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|Peer ID| +|options|Array of [bytes](/API_docs/types/bytes.html) | Yes|Options chosen by the peer| +|date|[int](/API_docs/types/int.html) | Yes|When did the peer cast their votes| + + + +### Type: [MessagePeerVote](/API_docs/types/MessagePeerVote.html) + + +### Example: + +``` +$messagePeerVoteMultiple = ['_' => 'messagePeerVoteMultiple', 'peer' => long, 'options' => ['bytes', 'bytes'], 'date' => int]; +``` diff --git a/docs/API_docs/constructors/messageRange.md b/docs/API_docs/constructors/messageRange.md new file mode 100644 index 0000000000..1d98cf44a9 --- /dev/null +++ b/docs/API_docs/constructors/messageRange.md @@ -0,0 +1,30 @@ +--- +title: "messageRange" +description: "Indicates a range of chat messages" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageRange +[Back to constructors index](/API_docs/constructors/index.html) + + + +Indicates a range of chat messages + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|min\_id|[int](/API_docs/types/int.html) | Yes|Start of range (message ID)| +|max\_id|[int](/API_docs/types/int.html) | Yes|End of range (message ID)| + + + +### Type: [MessageRange](/API_docs/types/MessageRange.html) + + +### Example: + +``` +$messageRange = ['_' => 'messageRange', 'min_id' => int, 'max_id' => int]; +``` diff --git a/docs/API_docs/constructors/messageReactions.md b/docs/API_docs/constructors/messageReactions.md new file mode 100644 index 0000000000..3b6f835b1f --- /dev/null +++ b/docs/API_docs/constructors/messageReactions.md @@ -0,0 +1,33 @@ +--- +title: "messageReactions" +description: "Message reactions »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageReactions +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Message reactions »](https://core.telegram.org/api/reactions) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|min|[Bool](/API_docs/types/Bool.html) | Optional|Similar to [min](https://core.telegram.org/api/min) objects, used for [message reaction »](https://core.telegram.org/api/reactions) constructors that are the same for all users so they don't have the reactions sent by the current user (you can use [messages.getMessagesReactions](../methods/messages.getMessagesReactions.html) to get the full reaction info).| +|can\_see\_list|[Bool](/API_docs/types/Bool.html) | Optional|Whether [messages.getMessageReactionsList](../methods/messages.getMessageReactionsList.html) can be used to see how each specific peer reacted to the message| +|reactions\_as\_tags|[Bool](/API_docs/types/Bool.html) | Optional| +|results|Array of [ReactionCount](/API_docs/types/ReactionCount.html) | Yes|Reactions| +|recent\_reactions|Array of [MessagePeerReaction](/API_docs/types/MessagePeerReaction.html) | Optional|List of recent peers and their reactions| + + + +### Type: [MessageReactions](/API_docs/types/MessageReactions.html) + + +### Example: + +``` +$messageReactions = ['_' => 'messageReactions', 'min' => Bool, 'can_see_list' => Bool, 'reactions_as_tags' => Bool, 'results' => [ReactionCount, ReactionCount], 'recent_reactions' => [MessagePeerReaction, MessagePeerReaction]]; +``` diff --git a/docs/API_docs/constructors/messageReplies.md b/docs/API_docs/constructors/messageReplies.md new file mode 100644 index 0000000000..ef6058ea9f --- /dev/null +++ b/docs/API_docs/constructors/messageReplies.md @@ -0,0 +1,35 @@ +--- +title: "messageReplies" +description: "Info about the comment section of a channel post, or a simple message thread" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageReplies +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about [the comment section of a channel post, or a simple message thread](https://core.telegram.org/api/threads) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|comments|[Bool](/API_docs/types/Bool.html) | Optional|Whether this constructor contains information about the [comment section of a channel post, or a simple message thread](https://core.telegram.org/api/threads)| +|replies|[int](/API_docs/types/int.html) | Yes|Contains the total number of replies in this thread or comment section.| +|replies\_pts|[int](/API_docs/types/int.html) | Yes|[PTS](https://core.telegram.org/api/updates) of the message that started this thread.| +|recent\_repliers|Array of [Peer](/API_docs/types/Peer.html) | Optional|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.| +|channel\_id|[long](/API_docs/types/long.html) | Optional|For channel post comments, contains the ID of the associated [discussion supergroup](https://core.telegram.org/api/discussion)| +|max\_id|[int](/API_docs/types/int.html) | Optional|ID of the latest message in this thread or comment section.| +|read\_max\_id|[int](/API_docs/types/int.html) | Optional|Contains the ID of the latest read message in this thread or comment section.| + + + +### Type: [MessageReplies](/API_docs/types/MessageReplies.html) + + +### Example: + +``` +$messageReplies = ['_' => 'messageReplies', 'comments' => Bool, 'replies' => int, 'replies_pts' => int, 'recent_repliers' => [Peer, Peer], 'channel_id' => long, 'max_id' => int, 'read_max_id' => int]; +``` diff --git a/docs/API_docs/constructors/messageReplyHeader.md b/docs/API_docs/constructors/messageReplyHeader.md new file mode 100644 index 0000000000..f3767076ae --- /dev/null +++ b/docs/API_docs/constructors/messageReplyHeader.md @@ -0,0 +1,39 @@ +--- +title: "messageReplyHeader" +description: "Message replies and thread information" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageReplyHeader +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message replies and [thread](https://core.telegram.org/api/threads) information + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|reply\_to\_scheduled|[Bool](/API_docs/types/Bool.html) | Optional|This is a reply to a scheduled message.| +|forum\_topic|[Bool](/API_docs/types/Bool.html) | Optional|Whether this message was sent in a [forum topic](https://core.telegram.org/api/forum#forum-topics) (except for the General topic).| +|quote|[Bool](/API_docs/types/Bool.html) | Optional|Whether this message is quoting a part of another message.| +|reply\_to\_msg\_id|[int](/API_docs/types/int.html) | Optional|ID of message to which this message is replying| +|reply\_to\_peer\_id|[Peer](/API_docs/types/Peer.html) | Optional|For replies sent in [channel discussion threads](https://core.telegram.org/api/threads) of which the current user is not a member, the discussion group ID| +|reply\_from|[MessageFwdHeader](/API_docs/types/MessageFwdHeader.html) | Optional|When replying to a message sent by a certain peer to another chat, contains info about the peer that originally sent the message to that other chat.| +|reply\_media|[MessageMedia](/API_docs/types/MessageMedia.html) | Optional|When replying to a media sent by a certain peer to another chat, contains the media of the replied-to message.| +|reply\_to\_top\_id|[int](/API_docs/types/int.html) | Optional|ID of the message that started this [message thread](https://core.telegram.org/api/threads)| +|quote\_text|[string](/API_docs/types/string.html) | Optional|Used to quote-reply to only a certain section (specified here) of the original message.| +|quote\_entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|[Message entities for styled text](https://core.telegram.org/api/entities) from the `quote_text` field.| +|quote\_offset|[int](/API_docs/types/int.html) | Optional|Offset of the message `quote_text` within the original message (in [UTF-16 code units](https://core.telegram.org/api/entities#entity-length)).| + + + +### Type: [MessageReplyHeader](/API_docs/types/MessageReplyHeader.html) + + +### Example: + +``` +$messageReplyHeader = ['_' => 'messageReplyHeader', 'reply_to_scheduled' => Bool, 'forum_topic' => Bool, 'quote' => Bool, 'reply_to_msg_id' => int, 'reply_to_peer_id' => Peer, 'reply_from' => MessageFwdHeader, 'reply_media' => MessageMedia, 'reply_to_top_id' => int, 'quote_text' => 'string', 'quote_entities' => [MessageEntity, MessageEntity], 'quote_offset' => int]; +``` diff --git a/docs/API_docs/constructors/messageReplyStoryHeader.md b/docs/API_docs/constructors/messageReplyStoryHeader.md new file mode 100644 index 0000000000..afa17f5792 --- /dev/null +++ b/docs/API_docs/constructors/messageReplyStoryHeader.md @@ -0,0 +1,30 @@ +--- +title: "messageReplyStoryHeader" +description: "Represents a reply to a story" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageReplyStoryHeader +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a reply to a [story](https://core.telegram.org/api/stories) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes| +|story\_id|[int](/API_docs/types/int.html) | Yes|Story ID| + + + +### Type: [MessageReplyHeader](/API_docs/types/MessageReplyHeader.html) + + +### Example: + +``` +$messageReplyStoryHeader = ['_' => 'messageReplyStoryHeader', 'peer' => long, 'story_id' => int]; +``` diff --git a/docs/API_docs/constructors/messageService.md b/docs/API_docs/constructors/messageService.md new file mode 100644 index 0000000000..f4ab80e58b --- /dev/null +++ b/docs/API_docs/constructors/messageService.md @@ -0,0 +1,41 @@ +--- +title: "messageService" +description: "Indicates a service message" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageService +[Back to constructors index](/API_docs/constructors/index.html) + + + +Indicates a service message + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|out|[Bool](/API_docs/types/Bool.html) | Optional|Whether the message is outgoing| +|mentioned|[Bool](/API_docs/types/Bool.html) | Optional|Whether we were mentioned in the message| +|media\_unread|[Bool](/API_docs/types/Bool.html) | Optional|Whether the message contains unread media| +|silent|[Bool](/API_docs/types/Bool.html) | Optional|Whether the message is silent| +|post|[Bool](/API_docs/types/Bool.html) | Optional|Whether it's a channel post| +|legacy|[Bool](/API_docs/types/Bool.html) | Optional|This is a legacy message: it has to be refetched with the new layer| +|id|[int](/API_docs/types/int.html) | Yes|Message ID| +|from\_id|[Peer](/API_docs/types/Peer.html) | Optional|ID of the sender of this message| +|peer\_id|[Peer](/API_docs/types/Peer.html) | Yes|Sender of service message| +|reply\_to|[MessageReplyHeader](/API_docs/types/MessageReplyHeader.html) | Optional|Reply (thread) information| +|date|[int](/API_docs/types/int.html) | Yes|Message date| +|action|[MessageAction](/API_docs/types/MessageAction.html) | Optional|Event connected with the service message| +|ttl\_period|[int](/API_docs/types/int.html) | Optional|Time To Live of the message, once message.date+message.ttl\_period === time(), the message will be deleted on the server, and must be deleted locally as well.| + + + +### Type: [Message](/API_docs/types/Message.html) + + +### Example: + +``` +$messageService = ['_' => 'messageService', 'out' => Bool, 'mentioned' => Bool, 'media_unread' => Bool, 'silent' => Bool, 'post' => Bool, 'legacy' => Bool, 'id' => int, 'from_id' => Peer, 'peer_id' => Peer, 'reply_to' => MessageReplyHeader, 'date' => int, 'action' => MessageAction, 'ttl_period' => int]; +``` diff --git a/docs/API_docs/constructors/messageViews.md b/docs/API_docs/constructors/messageViews.md new file mode 100644 index 0000000000..79273dab2e --- /dev/null +++ b/docs/API_docs/constructors/messageViews.md @@ -0,0 +1,31 @@ +--- +title: "messageViews" +description: "View, forward counter + info about replies of a specific message" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: messageViews +[Back to constructors index](/API_docs/constructors/index.html) + + + +View, forward counter + info about replies of a specific message + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|views|[int](/API_docs/types/int.html) | Optional|View count of message| +|forwards|[int](/API_docs/types/int.html) | Optional|Forward count of message| +|replies|[MessageReplies](/API_docs/types/MessageReplies.html) | Optional|Reply and [thread](https://core.telegram.org/api/threads) information of message| + + + +### Type: [MessageViews](/API_docs/types/MessageViews.html) + + +### Example: + +``` +$messageViews = ['_' => 'messageViews', 'views' => int, 'forwards' => int, 'replies' => MessageReplies]; +``` diff --git a/docs/API_docs/constructors/messages.affectedFoundMessages.md b/docs/API_docs/constructors/messages.affectedFoundMessages.md new file mode 100644 index 0000000000..85ef437758 --- /dev/null +++ b/docs/API_docs/constructors/messages.affectedFoundMessages.md @@ -0,0 +1,33 @@ +--- +title: "messages.affectedFoundMessages" +description: "Messages found and affected by changes" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_affectedFoundMessages.html +--- +# Constructor: messages.affectedFoundMessages +[Back to constructors index](/API_docs/constructors/index.html) + + + +Messages found and affected by changes + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|pts|[int](/API_docs/types/int.html) | Yes|[Event count after generation](https://core.telegram.org/api/updates)| +|pts\_count|[int](/API_docs/types/int.html) | Yes|[Number of events that were generated](https://core.telegram.org/api/updates)| +|offset|[int](/API_docs/types/int.html) | Yes|If bigger than zero, the request must be repeated to remove more messages| +|messages|Array of [int](/API_docs/types/int.html) | Yes|Affected message IDs| + + + +### Type: [messages.AffectedFoundMessages](/API_docs/types/messages.AffectedFoundMessages.html) + + +### Example: + +``` +$messages_affectedFoundMessages = ['_' => 'messages.affectedFoundMessages', 'pts' => int, 'pts_count' => int, 'offset' => int, 'messages' => [int, int]]; +``` diff --git a/docs/API_docs/constructors/messages.affectedHistory.md b/docs/API_docs/constructors/messages.affectedHistory.md new file mode 100644 index 0000000000..58207638b5 --- /dev/null +++ b/docs/API_docs/constructors/messages.affectedHistory.md @@ -0,0 +1,32 @@ +--- +title: "messages.affectedHistory" +description: "Affected part of communication history with the user or in a chat." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_affectedHistory.html +--- +# Constructor: messages.affectedHistory +[Back to constructors index](/API_docs/constructors/index.html) + + + +Affected part of communication history with the user or in a chat. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|pts|[int](/API_docs/types/int.html) | Yes|Number of events occurred in a text box| +|pts\_count|[int](/API_docs/types/int.html) | Yes|Number of affected events| +|offset|[int](/API_docs/types/int.html) | Yes|If a parameter contains positive value, it is necessary to repeat the method call using the given value; during the proceeding of all the history the value itself shall gradually decrease| + + + +### Type: [messages.AffectedHistory](/API_docs/types/messages.AffectedHistory.html) + + +### Example: + +``` +$messages_affectedHistory = ['_' => 'messages.affectedHistory', 'pts' => int, 'pts_count' => int, 'offset' => int]; +``` diff --git a/docs/API_docs/constructors/messages.affectedMessages.md b/docs/API_docs/constructors/messages.affectedMessages.md new file mode 100644 index 0000000000..16bda3b883 --- /dev/null +++ b/docs/API_docs/constructors/messages.affectedMessages.md @@ -0,0 +1,31 @@ +--- +title: "messages.affectedMessages" +description: "Events affected by operation" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_affectedMessages.html +--- +# Constructor: messages.affectedMessages +[Back to constructors index](/API_docs/constructors/index.html) + + + +Events affected by operation + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|pts|[int](/API_docs/types/int.html) | Yes|[Event count after generation](https://core.telegram.org/api/updates)| +|pts\_count|[int](/API_docs/types/int.html) | Yes|[Number of events that were generated](https://core.telegram.org/api/updates)| + + + +### Type: [messages.AffectedMessages](/API_docs/types/messages.AffectedMessages.html) + + +### Example: + +``` +$messages_affectedMessages = ['_' => 'messages.affectedMessages', 'pts' => int, 'pts_count' => int]; +``` diff --git a/docs/API_docs/constructors/messages.allStickers.md b/docs/API_docs/constructors/messages.allStickers.md new file mode 100644 index 0000000000..b052ac3835 --- /dev/null +++ b/docs/API_docs/constructors/messages.allStickers.md @@ -0,0 +1,31 @@ +--- +title: "messages.allStickers" +description: "Info about all installed stickers" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_allStickers.html +--- +# Constructor: messages.allStickers +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about all installed stickers + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hash|[long](/API_docs/types/long.html) | Yes|[Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation)| +|sets|Array of [StickerSet](/API_docs/types/StickerSet.html) | Yes|All stickersets| + + + +### Type: [messages.AllStickers](/API_docs/types/messages.AllStickers.html) + + +### Example: + +``` +$messages_allStickers = ['_' => 'messages.allStickers', 'hash' => long, 'sets' => [StickerSet, StickerSet]]; +``` diff --git a/docs/API_docs/constructors/messages.allStickersNotModified.md b/docs/API_docs/constructors/messages.allStickersNotModified.md new file mode 100644 index 0000000000..9a456b062e --- /dev/null +++ b/docs/API_docs/constructors/messages.allStickersNotModified.md @@ -0,0 +1,25 @@ +--- +title: "messages.allStickersNotModified" +description: "Info about all installed stickers hasn't changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_allStickersNotModified.html +--- +# Constructor: messages.allStickersNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about all installed stickers hasn't changed + + + + +### Type: [messages.AllStickers](/API_docs/types/messages.AllStickers.html) + + +### Example: + +``` +$messages_allStickersNotModified = ['_' => 'messages.allStickersNotModified']; +``` diff --git a/docs/API_docs/constructors/messages.archivedStickers.md b/docs/API_docs/constructors/messages.archivedStickers.md new file mode 100644 index 0000000000..e82ea65e16 --- /dev/null +++ b/docs/API_docs/constructors/messages.archivedStickers.md @@ -0,0 +1,31 @@ +--- +title: "messages.archivedStickers" +description: "Archived stickersets" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_archivedStickers.html +--- +# Constructor: messages.archivedStickers +[Back to constructors index](/API_docs/constructors/index.html) + + + +Archived stickersets + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Number of archived stickers| +|sets|Array of [StickerSetCovered](/API_docs/types/StickerSetCovered.html) | Yes|Archived stickersets| + + + +### Type: [messages.ArchivedStickers](/API_docs/types/messages.ArchivedStickers.html) + + +### Example: + +``` +$messages_archivedStickers = ['_' => 'messages.archivedStickers', 'count' => int, 'sets' => [StickerSetCovered, StickerSetCovered]]; +``` diff --git a/docs/API_docs/constructors/messages.availableReactions.md b/docs/API_docs/constructors/messages.availableReactions.md new file mode 100644 index 0000000000..1b919a1b4f --- /dev/null +++ b/docs/API_docs/constructors/messages.availableReactions.md @@ -0,0 +1,31 @@ +--- +title: "messages.availableReactions" +description: "Animations and metadata associated with message reactions »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_availableReactions.html +--- +# Constructor: messages.availableReactions +[Back to constructors index](/API_docs/constructors/index.html) + + + +Animations and metadata associated with [message reactions »](https://core.telegram.org/api/reactions) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hash|[int](/API_docs/types/int.html) | Yes| +|reactions|Array of [AvailableReaction](/API_docs/types/AvailableReaction.html) | Yes|Animations and metadata associated with [message reactions »](https://core.telegram.org/api/reactions)| + + + +### Type: [messages.AvailableReactions](/API_docs/types/messages.AvailableReactions.html) + + +### Example: + +``` +$messages_availableReactions = ['_' => 'messages.availableReactions', 'hash' => int, 'reactions' => [AvailableReaction, AvailableReaction]]; +``` diff --git a/docs/API_docs/constructors/messages.availableReactionsNotModified.md b/docs/API_docs/constructors/messages.availableReactionsNotModified.md new file mode 100644 index 0000000000..2a618e4071 --- /dev/null +++ b/docs/API_docs/constructors/messages.availableReactionsNotModified.md @@ -0,0 +1,25 @@ +--- +title: "messages.availableReactionsNotModified" +description: "No new reactions are available" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_availableReactionsNotModified.html +--- +# Constructor: messages.availableReactionsNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +No new reactions are available + + + + +### Type: [messages.AvailableReactions](/API_docs/types/messages.AvailableReactions.html) + + +### Example: + +``` +$messages_availableReactionsNotModified = ['_' => 'messages.availableReactionsNotModified']; +``` diff --git a/docs/API_docs/constructors/messages.botApp.md b/docs/API_docs/constructors/messages.botApp.md new file mode 100644 index 0000000000..719218e864 --- /dev/null +++ b/docs/API_docs/constructors/messages.botApp.md @@ -0,0 +1,33 @@ +--- +title: "messages.botApp" +description: "Contains information about a direct link Mini App" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_botApp.html +--- +# Constructor: messages.botApp +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains information about a [direct link Mini App](https://core.telegram.org/api/bots/webapps#direct-link-mini-apps) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|inactive|[Bool](/API_docs/types/Bool.html) | Optional|Whether the web app was never used by the user, and confirmation must be asked from the user before opening it.| +|request\_write\_access|[Bool](/API_docs/types/Bool.html) | Optional|The bot is asking permission to send messages to the user: if the user agrees, set the `write_allowed` flag when invoking [messages.requestAppWebView](../methods/messages.requestAppWebView.html).| +|has\_settings|[Bool](/API_docs/types/Bool.html) | Optional|Deprecated flag, can be ignored.| +|app|[BotApp](/API_docs/types/BotApp.html) | Yes|Bot app information| + + + +### Type: [messages.BotApp](/API_docs/types/messages.BotApp.html) + + +### Example: + +``` +$messages_botApp = ['_' => 'messages.botApp', 'inactive' => Bool, 'request_write_access' => Bool, 'has_settings' => Bool, 'app' => BotApp]; +``` diff --git a/docs/API_docs/constructors/messages.botCallbackAnswer.md b/docs/API_docs/constructors/messages.botCallbackAnswer.md new file mode 100644 index 0000000000..38056e6a89 --- /dev/null +++ b/docs/API_docs/constructors/messages.botCallbackAnswer.md @@ -0,0 +1,35 @@ +--- +title: "messages.botCallbackAnswer" +description: "Callback answer sent by the bot in response to a button press" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_botCallbackAnswer.html +--- +# Constructor: messages.botCallbackAnswer +[Back to constructors index](/API_docs/constructors/index.html) + + + +Callback answer sent by the bot in response to a button press + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|alert|[Bool](/API_docs/types/Bool.html) | Optional|Whether an alert should be shown to the user instead of a toast notification| +|has\_url|[Bool](/API_docs/types/Bool.html) | Optional|Whether an URL is present| +|native\_ui|[Bool](/API_docs/types/Bool.html) | Optional|Whether to show games in WebView or in native UI.| +|message|[string](/API_docs/types/string.html) | Optional|Alert to show| +|url|[string](/API_docs/types/string.html) | Optional|URL to open| +|cache\_time|[int](/API_docs/types/int.html) | Yes|For how long should this answer be cached| + + + +### Type: [messages.BotCallbackAnswer](/API_docs/types/messages.BotCallbackAnswer.html) + + +### Example: + +``` +$messages_botCallbackAnswer = ['_' => 'messages.botCallbackAnswer', 'alert' => Bool, 'has_url' => Bool, 'native_ui' => Bool, 'message' => 'string', 'url' => 'string', 'cache_time' => int]; +``` diff --git a/docs/API_docs/constructors/messages.botResults.md b/docs/API_docs/constructors/messages.botResults.md new file mode 100644 index 0000000000..dd0aea6f89 --- /dev/null +++ b/docs/API_docs/constructors/messages.botResults.md @@ -0,0 +1,37 @@ +--- +title: "messages.botResults" +description: "Result of a query to an inline bot" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_botResults.html +--- +# Constructor: messages.botResults +[Back to constructors index](/API_docs/constructors/index.html) + + + +Result of a query to an inline bot + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|gallery|[Bool](/API_docs/types/Bool.html) | Optional|Whether the result is a picture gallery| +|query\_id|[long](/API_docs/types/long.html) | Yes|Query ID| +|next\_offset|[string](/API_docs/types/string.html) | Optional|The next offset to use when navigating through results| +|switch\_pm|[InlineBotSwitchPM](/API_docs/types/InlineBotSwitchPM.html) | Optional|Shown as a button on top of the remaining inline result list; if clicked, redirects the user to a private chat with the bot with the specified start parameter.| +|switch\_webview|[InlineBotWebView](/API_docs/types/InlineBotWebView.html) | Optional|Shown as a button on top of the remaining inline result list; if clicked, opens the specified [inline mode mini app](https://core.telegram.org/api/bots/webapps#inline-mode-mini-apps).| +|results|Array of [BotInlineResult](/API_docs/types/BotInlineResult.html) | Yes|The results| +|cache\_time|[int](/API_docs/types/int.html) | Yes|Caching validity of the results| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users mentioned in the results| + + + +### Type: [messages.BotResults](/API_docs/types/messages.BotResults.html) + + +### Example: + +``` +$messages_botResults = ['_' => 'messages.botResults', 'gallery' => Bool, 'query_id' => long, 'next_offset' => 'string', 'switch_pm' => InlineBotSwitchPM, 'switch_webview' => InlineBotWebView, 'results' => [BotInlineResult, BotInlineResult], 'cache_time' => int, 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.channelMessages.md b/docs/API_docs/constructors/messages.channelMessages.md new file mode 100644 index 0000000000..d5b7e20f6a --- /dev/null +++ b/docs/API_docs/constructors/messages.channelMessages.md @@ -0,0 +1,37 @@ +--- +title: "messages.channelMessages" +description: "Channel messages" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_channelMessages.html +--- +# Constructor: messages.channelMessages +[Back to constructors index](/API_docs/constructors/index.html) + + + +Channel messages + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|inexact|[Bool](/API_docs/types/Bool.html) | Optional|If set, returned results may be inexact| +|pts|[int](/API_docs/types/int.html) | Yes|[Event count after generation](https://core.telegram.org/api/updates)| +|count|[int](/API_docs/types/int.html) | Yes|Total number of results were found server-side (may not be all included here)| +|offset\_id\_offset|[int](/API_docs/types/int.html) | Optional|Indicates 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}`.| +|messages|Array of [Message](/API_docs/types/Message.html) | Yes|Found messages| +|topics|Array of [ForumTopic](/API_docs/types/ForumTopic.html) | Yes|[Forum topic](https://core.telegram.org/api/forum#forum-topics) information| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users| + + + +### Type: [messages.Messages](/API_docs/types/messages.Messages.html) + + +### Example: + +``` +$messages_channelMessages = ['_' => 'messages.channelMessages', 'inexact' => Bool, 'pts' => int, 'count' => int, 'offset_id_offset' => int, 'messages' => [Message, Message], 'topics' => [ForumTopic, ForumTopic], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.chatAdminsWithInvites.md b/docs/API_docs/constructors/messages.chatAdminsWithInvites.md new file mode 100644 index 0000000000..03d3efaebd --- /dev/null +++ b/docs/API_docs/constructors/messages.chatAdminsWithInvites.md @@ -0,0 +1,31 @@ +--- +title: "messages.chatAdminsWithInvites" +description: "Info about chat invites generated by admins." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_chatAdminsWithInvites.html +--- +# Constructor: messages.chatAdminsWithInvites +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about chat invites generated by admins. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|admins|Array of [ChatAdminWithInvites](/API_docs/types/ChatAdminWithInvites.html) | Yes|Info about chat invites generated by admins.| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| + + + +### Type: [messages.ChatAdminsWithInvites](/API_docs/types/messages.ChatAdminsWithInvites.html) + + +### Example: + +``` +$messages_chatAdminsWithInvites = ['_' => 'messages.chatAdminsWithInvites', 'admins' => [ChatAdminWithInvites, ChatAdminWithInvites], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.chatFull.md b/docs/API_docs/constructors/messages.chatFull.md new file mode 100644 index 0000000000..55f0e97486 --- /dev/null +++ b/docs/API_docs/constructors/messages.chatFull.md @@ -0,0 +1,32 @@ +--- +title: "messages.chatFull" +description: "Full info about a channel, supergroup, gigagroup or basic group." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_chatFull.html +--- +# Constructor: messages.chatFull +[Back to constructors index](/API_docs/constructors/index.html) + + + +Full info about a [channel](https://core.telegram.org/api/channel#channels), [supergroup](https://core.telegram.org/api/channel#supergroups), [gigagroup](https://core.telegram.org/api/channel#gigagroups) or [basic group](https://core.telegram.org/api/channel#basic-groups). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|full\_chat|[ChatFull](/API_docs/types/ChatFull.html) | Yes|Full info| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Mentioned chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| + + + +### Type: [messages.ChatFull](/API_docs/types/messages.ChatFull.html) + + +### Example: + +``` +$messages_chatFull = ['_' => 'messages.chatFull', 'full_chat' => ChatFull, 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.chatInviteImporters.md b/docs/API_docs/constructors/messages.chatInviteImporters.md new file mode 100644 index 0000000000..39310bb0d5 --- /dev/null +++ b/docs/API_docs/constructors/messages.chatInviteImporters.md @@ -0,0 +1,32 @@ +--- +title: "messages.chatInviteImporters" +description: "Info about the users that joined the chat using a specific chat invite" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_chatInviteImporters.html +--- +# Constructor: messages.chatInviteImporters +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about the users that joined the chat using a specific chat invite + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Number of users that joined| +|importers|Array of [ChatInviteImporter](/API_docs/types/ChatInviteImporter.html) | Yes|The users that joined| +|users|Array of [User](/API_docs/types/User.html) | Yes|The users that joined| + + + +### Type: [messages.ChatInviteImporters](/API_docs/types/messages.ChatInviteImporters.html) + + +### Example: + +``` +$messages_chatInviteImporters = ['_' => 'messages.chatInviteImporters', 'count' => int, 'importers' => [ChatInviteImporter, ChatInviteImporter], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.chats.md b/docs/API_docs/constructors/messages.chats.md new file mode 100644 index 0000000000..a70926a0f3 --- /dev/null +++ b/docs/API_docs/constructors/messages.chats.md @@ -0,0 +1,30 @@ +--- +title: "messages.chats" +description: "List of chats with auxiliary data." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_chats.html +--- +# Constructor: messages.chats +[Back to constructors index](/API_docs/constructors/index.html) + + + +List of chats with auxiliary data. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|List of chats| + + + +### Type: [messages.Chats](/API_docs/types/messages.Chats.html) + + +### Example: + +``` +$messages_chats = ['_' => 'messages.chats', 'chats' => [Chat, Chat]]; +``` diff --git a/docs/API_docs/constructors/messages.chatsSlice.md b/docs/API_docs/constructors/messages.chatsSlice.md new file mode 100644 index 0000000000..c5783f6d14 --- /dev/null +++ b/docs/API_docs/constructors/messages.chatsSlice.md @@ -0,0 +1,31 @@ +--- +title: "messages.chatsSlice" +description: "Partial list of chats, more would have to be fetched with pagination" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_chatsSlice.html +--- +# Constructor: messages.chatsSlice +[Back to constructors index](/API_docs/constructors/index.html) + + + +Partial list of chats, more would have to be fetched with [pagination](https://core.telegram.org/api/offsets) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Total number of results that were found server-side (not all are included in `chats`)| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Chats| + + + +### Type: [messages.Chats](/API_docs/types/messages.Chats.html) + + +### Example: + +``` +$messages_chatsSlice = ['_' => 'messages.chatsSlice', 'count' => int, 'chats' => [Chat, Chat]]; +``` diff --git a/docs/API_docs/constructors/messages.checkedHistoryImportPeer.md b/docs/API_docs/constructors/messages.checkedHistoryImportPeer.md new file mode 100644 index 0000000000..948c368b34 --- /dev/null +++ b/docs/API_docs/constructors/messages.checkedHistoryImportPeer.md @@ -0,0 +1,30 @@ +--- +title: "messages.checkedHistoryImportPeer" +description: "Contains a confirmation text to be shown to the user, upon importing chat history, click here for more info »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_checkedHistoryImportPeer.html +--- +# Constructor: messages.checkedHistoryImportPeer +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains a confirmation text to be shown to the user, upon [importing chat history, click here for more info »](https://core.telegram.org/api/import). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|confirm\_text|[string](/API_docs/types/string.html) | Yes|A confirmation text to be shown to the user, upon [importing chat history »](https://core.telegram.org/api/import).| + + + +### Type: [messages.CheckedHistoryImportPeer](/API_docs/types/messages.CheckedHistoryImportPeer.html) + + +### Example: + +``` +$messages_checkedHistoryImportPeer = ['_' => 'messages.checkedHistoryImportPeer', 'confirm_text' => 'string']; +``` diff --git a/docs/API_docs/constructors/messages.dhConfig.md b/docs/API_docs/constructors/messages.dhConfig.md new file mode 100644 index 0000000000..421a7452e3 --- /dev/null +++ b/docs/API_docs/constructors/messages.dhConfig.md @@ -0,0 +1,33 @@ +--- +title: "messages.dhConfig" +description: "New set of configuring parameters." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_dhConfig.html +--- +# Constructor: messages.dhConfig +[Back to constructors index](/API_docs/constructors/index.html) + + + +New set of configuring parameters. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|g|[int](/API_docs/types/int.html) | Yes|New value **prime**, see [Wikipedia](https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange)| +|p|[bytes](/API_docs/types/bytes.html) | Yes|New value **primitive root**, see [Wikipedia](https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange)| +|version|[int](/API_docs/types/int.html) | Yes|Version of set of parameters| +|random|[bytes](/API_docs/types/bytes.html) | Yes|Random sequence of bytes of assigned length| + + + +### Type: [messages.DhConfig](/API_docs/types/messages.DhConfig.html) + + +### Example: + +``` +$messages_dhConfig = ['_' => 'messages.dhConfig', 'g' => int, 'p' => 'bytes', 'version' => int, 'random' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/messages.dhConfigNotModified.md b/docs/API_docs/constructors/messages.dhConfigNotModified.md new file mode 100644 index 0000000000..bad86de96b --- /dev/null +++ b/docs/API_docs/constructors/messages.dhConfigNotModified.md @@ -0,0 +1,30 @@ +--- +title: "messages.dhConfigNotModified" +description: "Configuring parameters did not change." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_dhConfigNotModified.html +--- +# Constructor: messages.dhConfigNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +Configuring parameters did not change. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|random|[bytes](/API_docs/types/bytes.html) | Yes|Random sequence of bytes of assigned length| + + + +### Type: [messages.DhConfig](/API_docs/types/messages.DhConfig.html) + + +### Example: + +``` +$messages_dhConfigNotModified = ['_' => 'messages.dhConfigNotModified', 'random' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/messages.dialogFilters.md b/docs/API_docs/constructors/messages.dialogFilters.md new file mode 100644 index 0000000000..a4656f3578 --- /dev/null +++ b/docs/API_docs/constructors/messages.dialogFilters.md @@ -0,0 +1,29 @@ +--- +title: "messages.dialogFilters" +description: "messages.dialogFilters attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_dialogFilters.html +--- +# Constructor: messages.dialogFilters +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|tags\_enabled|[Bool](/API_docs/types/Bool.html) | Optional| +|filters|Array of [DialogFilter](/API_docs/types/DialogFilter.html) | Yes| + + + +### Type: [messages.DialogFilters](/API_docs/types/messages.DialogFilters.html) + + +### Example: + +``` +$messages_dialogFilters = ['_' => 'messages.dialogFilters', 'tags_enabled' => Bool, 'filters' => [DialogFilter, DialogFilter]]; +``` diff --git a/docs/API_docs/constructors/messages.dialogs.md b/docs/API_docs/constructors/messages.dialogs.md new file mode 100644 index 0000000000..6f2c576aca --- /dev/null +++ b/docs/API_docs/constructors/messages.dialogs.md @@ -0,0 +1,33 @@ +--- +title: "messages.dialogs" +description: "Full list of chats with messages and auxiliary data." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_dialogs.html +--- +# Constructor: messages.dialogs +[Back to constructors index](/API_docs/constructors/index.html) + + + +Full list of chats with messages and auxiliary data. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|dialogs|Array of [Dialog](/API_docs/types/Dialog.html) | Yes|List of chats| +|messages|Array of [Message](/API_docs/types/Message.html) | Yes|List of last messages from each chat| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|List of groups mentioned in the chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|List of users mentioned in messages and groups| + + + +### Type: [messages.Dialogs](/API_docs/types/messages.Dialogs.html) + + +### Example: + +``` +$messages_dialogs = ['_' => 'messages.dialogs', 'dialogs' => [Dialog, Dialog], 'messages' => [Message, Message], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.dialogsNotModified.md b/docs/API_docs/constructors/messages.dialogsNotModified.md new file mode 100644 index 0000000000..8c57834078 --- /dev/null +++ b/docs/API_docs/constructors/messages.dialogsNotModified.md @@ -0,0 +1,30 @@ +--- +title: "messages.dialogsNotModified" +description: "Dialogs haven't changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_dialogsNotModified.html +--- +# Constructor: messages.dialogsNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +Dialogs haven't changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Number of dialogs found server-side by the query| + + + +### Type: [messages.Dialogs](/API_docs/types/messages.Dialogs.html) + + +### Example: + +``` +$messages_dialogsNotModified = ['_' => 'messages.dialogsNotModified', 'count' => int]; +``` diff --git a/docs/API_docs/constructors/messages.dialogsSlice.md b/docs/API_docs/constructors/messages.dialogsSlice.md new file mode 100644 index 0000000000..372ad650a8 --- /dev/null +++ b/docs/API_docs/constructors/messages.dialogsSlice.md @@ -0,0 +1,34 @@ +--- +title: "messages.dialogsSlice" +description: "Incomplete list of dialogs with messages and auxiliary data." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_dialogsSlice.html +--- +# Constructor: messages.dialogsSlice +[Back to constructors index](/API_docs/constructors/index.html) + + + +Incomplete list of dialogs with messages and auxiliary data. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Total number of dialogs| +|dialogs|Array of [Dialog](/API_docs/types/Dialog.html) | Yes|List of dialogs| +|messages|Array of [Message](/API_docs/types/Message.html) | Yes|List of last messages from dialogs| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|List of chats mentioned in dialogs| +|users|Array of [User](/API_docs/types/User.html) | Yes|List of users mentioned in messages and chats| + + + +### Type: [messages.Dialogs](/API_docs/types/messages.Dialogs.html) + + +### Example: + +``` +$messages_dialogsSlice = ['_' => 'messages.dialogsSlice', 'count' => int, 'dialogs' => [Dialog, Dialog], 'messages' => [Message, Message], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.discussionMessage.md b/docs/API_docs/constructors/messages.discussionMessage.md new file mode 100644 index 0000000000..7092946445 --- /dev/null +++ b/docs/API_docs/constructors/messages.discussionMessage.md @@ -0,0 +1,36 @@ +--- +title: "messages.discussionMessage" +description: "Information about a message thread" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_discussionMessage.html +--- +# Constructor: messages.discussionMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Information about a [message thread](https://core.telegram.org/api/threads) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|messages|Array of [Message](/API_docs/types/Message.html) | Yes|The messages from which the thread starts. The messages are returned in reverse chronological order (i.e., in order of decreasing message ID).| +|max\_id|[int](/API_docs/types/int.html) | Optional|Message ID of latest reply in this [thread](https://core.telegram.org/api/threads)| +|read\_inbox\_max\_id|[int](/API_docs/types/int.html) | Optional|Message ID of latest read incoming message in this [thread](https://core.telegram.org/api/threads)| +|read\_outbox\_max\_id|[int](/API_docs/types/int.html) | Optional|Message ID of latest read outgoing message in this [thread](https://core.telegram.org/api/threads)| +|unread\_count|[int](/API_docs/types/int.html) | Yes|Number of unread messages| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Chats mentioned in constructor| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users mentioned in constructor| + + + +### Type: [messages.DiscussionMessage](/API_docs/types/messages.DiscussionMessage.html) + + +### Example: + +``` +$messages_discussionMessage = ['_' => 'messages.discussionMessage', 'messages' => [Message, Message], 'max_id' => int, 'read_inbox_max_id' => int, 'read_outbox_max_id' => int, 'unread_count' => int, 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.emojiGroups.md b/docs/API_docs/constructors/messages.emojiGroups.md new file mode 100644 index 0000000000..c090ee0dc0 --- /dev/null +++ b/docs/API_docs/constructors/messages.emojiGroups.md @@ -0,0 +1,31 @@ +--- +title: "messages.emojiGroups" +description: "Represents a list of emoji categories." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_emojiGroups.html +--- +# Constructor: messages.emojiGroups +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a list of [emoji categories](https://core.telegram.org/api/custom-emoji#emoji-categories). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hash|[int](/API_docs/types/int.html) | Yes| +|groups|Array of [EmojiGroup](/API_docs/types/EmojiGroup.html) | Yes|A list of [emoji categories](https://core.telegram.org/api/custom-emoji#emoji-categories).| + + + +### Type: [messages.EmojiGroups](/API_docs/types/messages.EmojiGroups.html) + + +### Example: + +``` +$messages_emojiGroups = ['_' => 'messages.emojiGroups', 'hash' => int, 'groups' => [EmojiGroup, EmojiGroup]]; +``` diff --git a/docs/API_docs/constructors/messages.emojiGroupsNotModified.md b/docs/API_docs/constructors/messages.emojiGroupsNotModified.md new file mode 100644 index 0000000000..8e4d6018d9 --- /dev/null +++ b/docs/API_docs/constructors/messages.emojiGroupsNotModified.md @@ -0,0 +1,25 @@ +--- +title: "messages.emojiGroupsNotModified" +description: "The list of emoji categories hasn't changed." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_emojiGroupsNotModified.html +--- +# Constructor: messages.emojiGroupsNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +The list of [emoji categories](https://core.telegram.org/api/custom-emoji#emoji-categories) hasn't changed. + + + + +### Type: [messages.EmojiGroups](/API_docs/types/messages.EmojiGroups.html) + + +### Example: + +``` +$messages_emojiGroupsNotModified = ['_' => 'messages.emojiGroupsNotModified']; +``` diff --git a/docs/API_docs/constructors/messages.exportedChatInvite.md b/docs/API_docs/constructors/messages.exportedChatInvite.md new file mode 100644 index 0000000000..230d603821 --- /dev/null +++ b/docs/API_docs/constructors/messages.exportedChatInvite.md @@ -0,0 +1,31 @@ +--- +title: "messages.exportedChatInvite" +description: "Info about a chat invite" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_exportedChatInvite.html +--- +# Constructor: messages.exportedChatInvite +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about a chat invite + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|invite|[ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) | Yes|Info about the chat invite| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| + + + +### Type: [messages.ExportedChatInvite](/API_docs/types/messages.ExportedChatInvite.html) + + +### Example: + +``` +$messages_exportedChatInvite = ['_' => 'messages.exportedChatInvite', 'invite' => ExportedChatInvite, 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.exportedChatInviteReplaced.md b/docs/API_docs/constructors/messages.exportedChatInviteReplaced.md new file mode 100644 index 0000000000..b063336056 --- /dev/null +++ b/docs/API_docs/constructors/messages.exportedChatInviteReplaced.md @@ -0,0 +1,32 @@ +--- +title: "messages.exportedChatInviteReplaced" +description: "The specified chat invite was replaced with another one" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_exportedChatInviteReplaced.html +--- +# Constructor: messages.exportedChatInviteReplaced +[Back to constructors index](/API_docs/constructors/index.html) + + + +The specified chat invite was replaced with another one + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|invite|[ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) | Yes|The replaced chat invite| +|new\_invite|[ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) | Yes|The invite that replaces the previous invite| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| + + + +### Type: [messages.ExportedChatInvite](/API_docs/types/messages.ExportedChatInvite.html) + + +### Example: + +``` +$messages_exportedChatInviteReplaced = ['_' => 'messages.exportedChatInviteReplaced', 'invite' => ExportedChatInvite, 'new_invite' => ExportedChatInvite, 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.exportedChatInvites.md b/docs/API_docs/constructors/messages.exportedChatInvites.md new file mode 100644 index 0000000000..b0f83130b3 --- /dev/null +++ b/docs/API_docs/constructors/messages.exportedChatInvites.md @@ -0,0 +1,32 @@ +--- +title: "messages.exportedChatInvites" +description: "Info about chat invites exported by a certain admin." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_exportedChatInvites.html +--- +# Constructor: messages.exportedChatInvites +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about chat invites exported by a certain admin. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Number of invites exported by the admin| +|invites|Array of [ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) | Yes|Exported invites| +|users|Array of [User](/API_docs/types/User.html) | Yes|Info about the admin| + + + +### Type: [messages.ExportedChatInvites](/API_docs/types/messages.ExportedChatInvites.html) + + +### Example: + +``` +$messages_exportedChatInvites = ['_' => 'messages.exportedChatInvites', 'count' => int, 'invites' => [ExportedChatInvite, ExportedChatInvite], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.favedStickers.md b/docs/API_docs/constructors/messages.favedStickers.md new file mode 100644 index 0000000000..619ea427d5 --- /dev/null +++ b/docs/API_docs/constructors/messages.favedStickers.md @@ -0,0 +1,32 @@ +--- +title: "messages.favedStickers" +description: "Favorited stickers" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_favedStickers.html +--- +# Constructor: messages.favedStickers +[Back to constructors index](/API_docs/constructors/index.html) + + + +Favorited stickers + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hash|[long](/API_docs/types/long.html) | Yes|[Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation)| +|packs|Array of [StickerPack](/API_docs/types/StickerPack.html) | Yes|Emojis associated to stickers| +|stickers|Array of [Document](/API_docs/types/Document.html) | Yes|Favorited stickers| + + + +### Type: [messages.FavedStickers](/API_docs/types/messages.FavedStickers.html) + + +### Example: + +``` +$messages_favedStickers = ['_' => 'messages.favedStickers', 'hash' => long, 'packs' => [StickerPack, StickerPack], 'stickers' => [Document, Document]]; +``` diff --git a/docs/API_docs/constructors/messages.favedStickersNotModified.md b/docs/API_docs/constructors/messages.favedStickersNotModified.md new file mode 100644 index 0000000000..3cd2481cbd --- /dev/null +++ b/docs/API_docs/constructors/messages.favedStickersNotModified.md @@ -0,0 +1,25 @@ +--- +title: "messages.favedStickersNotModified" +description: "No new favorited stickers were found" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_favedStickersNotModified.html +--- +# Constructor: messages.favedStickersNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +No new favorited stickers were found + + + + +### Type: [messages.FavedStickers](/API_docs/types/messages.FavedStickers.html) + + +### Example: + +``` +$messages_favedStickersNotModified = ['_' => 'messages.favedStickersNotModified']; +``` diff --git a/docs/API_docs/constructors/messages.featuredStickers.md b/docs/API_docs/constructors/messages.featuredStickers.md new file mode 100644 index 0000000000..64e9c09328 --- /dev/null +++ b/docs/API_docs/constructors/messages.featuredStickers.md @@ -0,0 +1,34 @@ +--- +title: "messages.featuredStickers" +description: "Featured stickersets" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_featuredStickers.html +--- +# Constructor: messages.featuredStickers +[Back to constructors index](/API_docs/constructors/index.html) + + + +Featured stickersets + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|premium|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a premium stickerset| +|hash|[long](/API_docs/types/long.html) | Yes|[Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation)| +|count|[int](/API_docs/types/int.html) | Yes|Total number of featured stickers| +|sets|Array of [StickerSetCovered](/API_docs/types/StickerSetCovered.html) | Yes|Featured stickersets| +|unread|Array of [long](/API_docs/types/long.html) | Yes|IDs of new featured stickersets| + + + +### Type: [messages.FeaturedStickers](/API_docs/types/messages.FeaturedStickers.html) + + +### Example: + +``` +$messages_featuredStickers = ['_' => 'messages.featuredStickers', 'premium' => Bool, 'hash' => long, 'count' => int, 'sets' => [StickerSetCovered, StickerSetCovered], 'unread' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/messages.featuredStickersNotModified.md b/docs/API_docs/constructors/messages.featuredStickersNotModified.md new file mode 100644 index 0000000000..27605b6e2f --- /dev/null +++ b/docs/API_docs/constructors/messages.featuredStickersNotModified.md @@ -0,0 +1,30 @@ +--- +title: "messages.featuredStickersNotModified" +description: "Featured stickers haven't changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_featuredStickersNotModified.html +--- +# Constructor: messages.featuredStickersNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +Featured stickers haven't changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Total number of featured stickers| + + + +### Type: [messages.FeaturedStickers](/API_docs/types/messages.FeaturedStickers.html) + + +### Example: + +``` +$messages_featuredStickersNotModified = ['_' => 'messages.featuredStickersNotModified', 'count' => int]; +``` diff --git a/docs/API_docs/constructors/messages.forumTopics.md b/docs/API_docs/constructors/messages.forumTopics.md new file mode 100644 index 0000000000..7e4556ada4 --- /dev/null +++ b/docs/API_docs/constructors/messages.forumTopics.md @@ -0,0 +1,36 @@ +--- +title: "messages.forumTopics" +description: "Contains information about multiple forum topics" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_forumTopics.html +--- +# Constructor: messages.forumTopics +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains information about multiple [forum topics](https://core.telegram.org/api/forum#forum-topics) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|order\_by\_create\_date|[Bool](/API_docs/types/Bool.html) | Optional|Whether the returned topics are ordered by creation date; if set, pagination by `offset_date` should use [forumTopic](../constructors/forumTopic.html).`date`; otherwise topics are ordered by the last message date, so paginate by the `date` of the [message](../types/Message.html) referenced by [forumTopic](../constructors/forumTopic.html).`top_message`.| +|count|[int](/API_docs/types/int.html) | Yes|Total number of topics matching query; may be more than the topics contained in `topics`, in which case [pagination](https://core.telegram.org/api/offsets) is required.| +|topics|Array of [ForumTopic](/API_docs/types/ForumTopic.html) | Yes|Forum topics| +|messages|Array of [Message](/API_docs/types/Message.html) | Yes|Related messages (contains the messages mentioned by [forumTopic](../constructors/forumTopic.html).`top_message`).| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Related chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Related users| +|pts|[int](/API_docs/types/int.html) | Yes|[Event count after generation](https://core.telegram.org/api/updates)| + + + +### Type: [messages.ForumTopics](/API_docs/types/messages.ForumTopics.html) + + +### Example: + +``` +$messages_forumTopics = ['_' => 'messages.forumTopics', 'order_by_create_date' => Bool, 'count' => int, 'topics' => [ForumTopic, ForumTopic], 'messages' => [Message, Message], 'chats' => [Chat, Chat], 'users' => [User, User], 'pts' => int]; +``` diff --git a/docs/API_docs/constructors/messages.foundStickerSets.md b/docs/API_docs/constructors/messages.foundStickerSets.md new file mode 100644 index 0000000000..585f2ee535 --- /dev/null +++ b/docs/API_docs/constructors/messages.foundStickerSets.md @@ -0,0 +1,31 @@ +--- +title: "messages.foundStickerSets" +description: "Found stickersets" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_foundStickerSets.html +--- +# Constructor: messages.foundStickerSets +[Back to constructors index](/API_docs/constructors/index.html) + + + +Found stickersets + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hash|[long](/API_docs/types/long.html) | Yes|[Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation)| +|sets|Array of [StickerSetCovered](/API_docs/types/StickerSetCovered.html) | Yes|Found stickersets| + + + +### Type: [messages.FoundStickerSets](/API_docs/types/messages.FoundStickerSets.html) + + +### Example: + +``` +$messages_foundStickerSets = ['_' => 'messages.foundStickerSets', 'hash' => long, 'sets' => [StickerSetCovered, StickerSetCovered]]; +``` diff --git a/docs/API_docs/constructors/messages.foundStickerSetsNotModified.md b/docs/API_docs/constructors/messages.foundStickerSetsNotModified.md new file mode 100644 index 0000000000..93b3054ea8 --- /dev/null +++ b/docs/API_docs/constructors/messages.foundStickerSetsNotModified.md @@ -0,0 +1,25 @@ +--- +title: "messages.foundStickerSetsNotModified" +description: "No further results were found" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_foundStickerSetsNotModified.html +--- +# Constructor: messages.foundStickerSetsNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +No further results were found + + + + +### Type: [messages.FoundStickerSets](/API_docs/types/messages.FoundStickerSets.html) + + +### Example: + +``` +$messages_foundStickerSetsNotModified = ['_' => 'messages.foundStickerSetsNotModified']; +``` diff --git a/docs/API_docs/constructors/messages.highScores.md b/docs/API_docs/constructors/messages.highScores.md new file mode 100644 index 0000000000..9ab5029c03 --- /dev/null +++ b/docs/API_docs/constructors/messages.highScores.md @@ -0,0 +1,31 @@ +--- +title: "messages.highScores" +description: "Highscores in a game" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_highScores.html +--- +# Constructor: messages.highScores +[Back to constructors index](/API_docs/constructors/index.html) + + + +Highscores in a game + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|scores|Array of [HighScore](/API_docs/types/HighScore.html) | Yes|Highscores| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users, associated to the highscores| + + + +### Type: [messages.HighScores](/API_docs/types/messages.HighScores.html) + + +### Example: + +``` +$messages_highScores = ['_' => 'messages.highScores', 'scores' => [HighScore, HighScore], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.historyImport.md b/docs/API_docs/constructors/messages.historyImport.md new file mode 100644 index 0000000000..20b892096c --- /dev/null +++ b/docs/API_docs/constructors/messages.historyImport.md @@ -0,0 +1,30 @@ +--- +title: "messages.historyImport" +description: "ID of a specific chat import session, click here for more info »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_historyImport.html +--- +# Constructor: messages.historyImport +[Back to constructors index](/API_docs/constructors/index.html) + + + +ID of a specific [chat import session, click here for more info »](https://core.telegram.org/api/import). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|[History import ID](https://core.telegram.org/api/import)| + + + +### Type: [messages.HistoryImport](/API_docs/types/messages.HistoryImport.html) + + +### Example: + +``` +$messages_historyImport = ['_' => 'messages.historyImport', 'id' => long]; +``` diff --git a/docs/API_docs/constructors/messages.historyImportParsed.md b/docs/API_docs/constructors/messages.historyImportParsed.md new file mode 100644 index 0000000000..73558acf3c --- /dev/null +++ b/docs/API_docs/constructors/messages.historyImportParsed.md @@ -0,0 +1,33 @@ +--- +title: "messages.historyImportParsed" +description: "Contains information about a chat export file generated by a foreign chat app, click here for more info." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_historyImportParsed.html +--- +# Constructor: messages.historyImportParsed +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains information about a chat export file [generated by a foreign chat app, click here for more info](https://core.telegram.org/api/import). +If neither the `pm` or `group` flags are set, the specified chat export was generated from a chat of unknown type. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|pm|[Bool](/API_docs/types/Bool.html) | Optional|The chat export file was generated from a private chat.| +|group|[Bool](/API_docs/types/Bool.html) | Optional|The chat export file was generated from a group chat.| +|title|[string](/API_docs/types/string.html) | Optional|Title of the chat.| + + + +### Type: [messages.HistoryImportParsed](/API_docs/types/messages.HistoryImportParsed.html) + + +### Example: + +``` +$messages_historyImportParsed = ['_' => 'messages.historyImportParsed', 'pm' => Bool, 'group' => Bool, 'title' => 'string']; +``` diff --git a/docs/API_docs/constructors/messages.inactiveChats.md b/docs/API_docs/constructors/messages.inactiveChats.md new file mode 100644 index 0000000000..2340d04eb5 --- /dev/null +++ b/docs/API_docs/constructors/messages.inactiveChats.md @@ -0,0 +1,32 @@ +--- +title: "messages.inactiveChats" +description: "Inactive chat list" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_inactiveChats.html +--- +# Constructor: messages.inactiveChats +[Back to constructors index](/API_docs/constructors/index.html) + + + +Inactive chat list + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|dates|Array of [int](/API_docs/types/int.html) | Yes|When was the chat last active| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Chat list| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users mentioned in the chat list| + + + +### Type: [messages.InactiveChats](/API_docs/types/messages.InactiveChats.html) + + +### Example: + +``` +$messages_inactiveChats = ['_' => 'messages.inactiveChats', 'dates' => [int, int], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.invitedUsers.md b/docs/API_docs/constructors/messages.invitedUsers.md new file mode 100644 index 0000000000..3ae34b7445 --- /dev/null +++ b/docs/API_docs/constructors/messages.invitedUsers.md @@ -0,0 +1,29 @@ +--- +title: "messages.invitedUsers" +description: "messages.invitedUsers attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_invitedUsers.html +--- +# Constructor: messages.invitedUsers +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|updates|[Updates](/API_docs/types/Updates.html) | Yes| +|missing\_invitees|Array of [MissingInvitee](/API_docs/types/MissingInvitee.html) | Yes| + + + +### Type: [messages.InvitedUsers](/API_docs/types/messages.InvitedUsers.html) + + +### Example: + +``` +$messages_invitedUsers = ['_' => 'messages.invitedUsers', 'updates' => Updates, 'missing_invitees' => [MissingInvitee, MissingInvitee]]; +``` diff --git a/docs/API_docs/constructors/messages.messageEditData.md b/docs/API_docs/constructors/messages.messageEditData.md new file mode 100644 index 0000000000..457bba0b0d --- /dev/null +++ b/docs/API_docs/constructors/messages.messageEditData.md @@ -0,0 +1,30 @@ +--- +title: "messages.messageEditData" +description: "Message edit data for media" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_messageEditData.html +--- +# Constructor: messages.messageEditData +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message edit data for media + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|caption|[Bool](/API_docs/types/Bool.html) | Optional|Media caption, if the specified media's caption can be edited| + + + +### Type: [messages.MessageEditData](/API_docs/types/messages.MessageEditData.html) + + +### Example: + +``` +$messages_messageEditData = ['_' => 'messages.messageEditData', 'caption' => Bool]; +``` diff --git a/docs/API_docs/constructors/messages.messageReactionsList.md b/docs/API_docs/constructors/messages.messageReactionsList.md new file mode 100644 index 0000000000..a9102f9532 --- /dev/null +++ b/docs/API_docs/constructors/messages.messageReactionsList.md @@ -0,0 +1,34 @@ +--- +title: "messages.messageReactionsList" +description: "List of peers that reacted to a specific message" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_messageReactionsList.html +--- +# Constructor: messages.messageReactionsList +[Back to constructors index](/API_docs/constructors/index.html) + + + +List of peers that reacted to a specific message + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Total number of reactions matching query| +|reactions|Array of [MessagePeerReaction](/API_docs/types/MessagePeerReaction.html) | Yes|List of peers that reacted to a specific message| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Mentioned chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| +|next\_offset|[string](/API_docs/types/string.html) | Optional|If set, indicates the next offset to use to load more results by invoking [messages.getMessageReactionsList](../methods/messages.getMessageReactionsList.html).| + + + +### Type: [messages.MessageReactionsList](/API_docs/types/messages.MessageReactionsList.html) + + +### Example: + +``` +$messages_messageReactionsList = ['_' => 'messages.messageReactionsList', 'count' => int, 'reactions' => [MessagePeerReaction, MessagePeerReaction], 'chats' => [Chat, Chat], 'users' => [User, User], 'next_offset' => 'string']; +``` diff --git a/docs/API_docs/constructors/messages.messageViews.md b/docs/API_docs/constructors/messages.messageViews.md new file mode 100644 index 0000000000..3ef5b961d2 --- /dev/null +++ b/docs/API_docs/constructors/messages.messageViews.md @@ -0,0 +1,32 @@ +--- +title: "messages.messageViews" +description: "View, forward counter + info about replies" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_messageViews.html +--- +# Constructor: messages.messageViews +[Back to constructors index](/API_docs/constructors/index.html) + + + +View, forward counter + info about replies + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|views|Array of [MessageViews](/API_docs/types/MessageViews.html) | Yes|View, forward counter + info about replies| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Chats mentioned in constructor| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users mentioned in constructor| + + + +### Type: [messages.MessageViews](/API_docs/types/messages.MessageViews.html) + + +### Example: + +``` +$messages_messageViews = ['_' => 'messages.messageViews', 'views' => [MessageViews, MessageViews], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.messages.md b/docs/API_docs/constructors/messages.messages.md new file mode 100644 index 0000000000..21d715ad67 --- /dev/null +++ b/docs/API_docs/constructors/messages.messages.md @@ -0,0 +1,32 @@ +--- +title: "messages.messages" +description: "Full list of messages with auxiliary data." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_messages.html +--- +# Constructor: messages.messages +[Back to constructors index](/API_docs/constructors/index.html) + + + +Full list of messages with auxiliary data. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|messages|Array of [Message](/API_docs/types/Message.html) | Yes|List of messages| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|List of chats mentioned in dialogs| +|users|Array of [User](/API_docs/types/User.html) | Yes|List of users mentioned in messages and chats| + + + +### Type: [messages.Messages](/API_docs/types/messages.Messages.html) + + +### Example: + +``` +$messages_messages = ['_' => 'messages.messages', 'messages' => [Message, Message], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.messagesNotModified.md b/docs/API_docs/constructors/messages.messagesNotModified.md new file mode 100644 index 0000000000..c4f23393fb --- /dev/null +++ b/docs/API_docs/constructors/messages.messagesNotModified.md @@ -0,0 +1,30 @@ +--- +title: "messages.messagesNotModified" +description: "No new messages matching the query were found" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_messagesNotModified.html +--- +# Constructor: messages.messagesNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +No new messages matching the query were found + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Number of results found server-side by the given query| + + + +### Type: [messages.Messages](/API_docs/types/messages.Messages.html) + + +### Example: + +``` +$messages_messagesNotModified = ['_' => 'messages.messagesNotModified', 'count' => int]; +``` diff --git a/docs/API_docs/constructors/messages.messagesSlice.md b/docs/API_docs/constructors/messages.messagesSlice.md new file mode 100644 index 0000000000..406f942aa7 --- /dev/null +++ b/docs/API_docs/constructors/messages.messagesSlice.md @@ -0,0 +1,36 @@ +--- +title: "messages.messagesSlice" +description: "Incomplete list of messages and auxiliary data." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_messagesSlice.html +--- +# Constructor: messages.messagesSlice +[Back to constructors index](/API_docs/constructors/index.html) + + + +Incomplete list of messages and auxiliary data. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|inexact|[Bool](/API_docs/types/Bool.html) | Optional|If set, indicates that the results may be inexact| +|count|[int](/API_docs/types/int.html) | Yes|Total number of messages in the list| +|next\_rate|[int](/API_docs/types/int.html) | Optional|Rate to use in the `offset_rate` parameter in the next call to [messages.searchGlobal](../methods/messages.searchGlobal.html)| +|offset\_id\_offset|[int](/API_docs/types/int.html) | Optional|Indicates 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}`.| +|messages|Array of [Message](/API_docs/types/Message.html) | Yes|List of messages| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|List of chats mentioned in messages| +|users|Array of [User](/API_docs/types/User.html) | Yes|List of users mentioned in messages and chats| + + + +### Type: [messages.Messages](/API_docs/types/messages.Messages.html) + + +### Example: + +``` +$messages_messagesSlice = ['_' => 'messages.messagesSlice', 'inexact' => Bool, 'count' => int, 'next_rate' => int, 'offset_id_offset' => int, 'messages' => [Message, Message], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.myStickers.md b/docs/API_docs/constructors/messages.myStickers.md new file mode 100644 index 0000000000..284aad342b --- /dev/null +++ b/docs/API_docs/constructors/messages.myStickers.md @@ -0,0 +1,29 @@ +--- +title: "messages.myStickers" +description: "messages.myStickers attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_myStickers.html +--- +# Constructor: messages.myStickers +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|count|[int](/API_docs/types/int.html) | Yes| +|sets|Array of [StickerSetCovered](/API_docs/types/StickerSetCovered.html) | Yes| + + + +### Type: [messages.MyStickers](/API_docs/types/messages.MyStickers.html) + + +### Example: + +``` +$messages_myStickers = ['_' => 'messages.myStickers', 'count' => int, 'sets' => [StickerSetCovered, StickerSetCovered]]; +``` diff --git a/docs/API_docs/constructors/messages.peerDialogs.md b/docs/API_docs/constructors/messages.peerDialogs.md new file mode 100644 index 0000000000..d7eecc0836 --- /dev/null +++ b/docs/API_docs/constructors/messages.peerDialogs.md @@ -0,0 +1,34 @@ +--- +title: "messages.peerDialogs" +description: "Dialog info of multiple peers" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_peerDialogs.html +--- +# Constructor: messages.peerDialogs +[Back to constructors index](/API_docs/constructors/index.html) + + + +Dialog info of multiple peers + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|dialogs|Array of [Dialog](/API_docs/types/Dialog.html) | Yes|Dialog info| +|messages|Array of [Message](/API_docs/types/Message.html) | Yes|Messages mentioned in dialog info| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users| +|state|[updates.State](/API_docs/constructors/updates.State.html) | Yes|Current [update state of dialog](https://core.telegram.org/api/updates)| + + + +### Type: [messages.PeerDialogs](/API_docs/types/messages.PeerDialogs.html) + + +### Example: + +``` +$messages_peerDialogs = ['_' => 'messages.peerDialogs', 'dialogs' => [Dialog, Dialog], 'messages' => [Message, Message], 'chats' => [Chat, Chat], 'users' => [User, User], 'state' => updates.State]; +``` diff --git a/docs/API_docs/constructors/messages.peerSettings.md b/docs/API_docs/constructors/messages.peerSettings.md new file mode 100644 index 0000000000..a1f98dac62 --- /dev/null +++ b/docs/API_docs/constructors/messages.peerSettings.md @@ -0,0 +1,32 @@ +--- +title: "messages.peerSettings" +description: "Peer settings" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_peerSettings.html +--- +# Constructor: messages.peerSettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +Peer settings + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|settings|[PeerSettings](/API_docs/types/PeerSettings.html) | Yes|Peer settings| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Mentioned chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| + + + +### Type: [messages.PeerSettings](/API_docs/types/messages.PeerSettings.html) + + +### Example: + +``` +$messages_peerSettings = ['_' => 'messages.peerSettings', 'settings' => PeerSettings, 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.quickReplies.md b/docs/API_docs/constructors/messages.quickReplies.md new file mode 100644 index 0000000000..f504124ec0 --- /dev/null +++ b/docs/API_docs/constructors/messages.quickReplies.md @@ -0,0 +1,31 @@ +--- +title: "messages.quickReplies" +description: "messages.quickReplies attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_quickReplies.html +--- +# Constructor: messages.quickReplies +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|quick\_replies|Array of [QuickReply](/API_docs/types/QuickReply.html) | Yes| +|messages|Array of [Message](/API_docs/types/Message.html) | Yes| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes| +|users|Array of [User](/API_docs/types/User.html) | Yes| + + + +### Type: [messages.QuickReplies](/API_docs/types/messages.QuickReplies.html) + + +### Example: + +``` +$messages_quickReplies = ['_' => 'messages.quickReplies', 'quick_replies' => [QuickReply, QuickReply], 'messages' => [Message, Message], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.quickRepliesNotModified.md b/docs/API_docs/constructors/messages.quickRepliesNotModified.md new file mode 100644 index 0000000000..ecd2dff526 --- /dev/null +++ b/docs/API_docs/constructors/messages.quickRepliesNotModified.md @@ -0,0 +1,23 @@ +--- +title: "messages.quickRepliesNotModified" +description: "messages.quickRepliesNotModified attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_quickRepliesNotModified.html +--- +# Constructor: messages.quickRepliesNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + + + + +### Type: [messages.QuickReplies](/API_docs/types/messages.QuickReplies.html) + + +### Example: + +``` +$messages_quickRepliesNotModified = ['_' => 'messages.quickRepliesNotModified']; +``` diff --git a/docs/API_docs/constructors/messages.reactions.md b/docs/API_docs/constructors/messages.reactions.md new file mode 100644 index 0000000000..0749e3de90 --- /dev/null +++ b/docs/API_docs/constructors/messages.reactions.md @@ -0,0 +1,31 @@ +--- +title: "messages.reactions" +description: "List of message reactions" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_reactions.html +--- +# Constructor: messages.reactions +[Back to constructors index](/API_docs/constructors/index.html) + + + +List of [message reactions](https://core.telegram.org/api/reactions) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hash|[long](/API_docs/types/long.html) | Yes|[Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation)| +|reactions|Array of [Reaction](/API_docs/types/Reaction.html) | Yes|Reactions| + + + +### Type: [messages.Reactions](/API_docs/types/messages.Reactions.html) + + +### Example: + +``` +$messages_reactions = ['_' => 'messages.reactions', 'hash' => long, 'reactions' => [Reaction, Reaction]]; +``` diff --git a/docs/API_docs/constructors/messages.reactionsNotModified.md b/docs/API_docs/constructors/messages.reactionsNotModified.md new file mode 100644 index 0000000000..1c5f2561e1 --- /dev/null +++ b/docs/API_docs/constructors/messages.reactionsNotModified.md @@ -0,0 +1,25 @@ +--- +title: "messages.reactionsNotModified" +description: "The server-side list of message reactions hasn't changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_reactionsNotModified.html +--- +# Constructor: messages.reactionsNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +The server-side list of [message reactions](https://core.telegram.org/api/reactions) hasn't changed + + + + +### Type: [messages.Reactions](/API_docs/types/messages.Reactions.html) + + +### Example: + +``` +$messages_reactionsNotModified = ['_' => 'messages.reactionsNotModified']; +``` diff --git a/docs/API_docs/constructors/messages.recentStickers.md b/docs/API_docs/constructors/messages.recentStickers.md new file mode 100644 index 0000000000..1a510037ea --- /dev/null +++ b/docs/API_docs/constructors/messages.recentStickers.md @@ -0,0 +1,33 @@ +--- +title: "messages.recentStickers" +description: "Recently used stickers" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_recentStickers.html +--- +# Constructor: messages.recentStickers +[Back to constructors index](/API_docs/constructors/index.html) + + + +Recently used stickers + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hash|[long](/API_docs/types/long.html) | Yes|[Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation)| +|packs|Array of [StickerPack](/API_docs/types/StickerPack.html) | Yes|Emojis associated to stickers| +|stickers|Array of [Document](/API_docs/types/Document.html) | Yes|Recent stickers| +|dates|Array of [int](/API_docs/types/int.html) | Yes|When was each sticker last used| + + + +### Type: [messages.RecentStickers](/API_docs/types/messages.RecentStickers.html) + + +### Example: + +``` +$messages_recentStickers = ['_' => 'messages.recentStickers', 'hash' => long, 'packs' => [StickerPack, StickerPack], 'stickers' => [Document, Document], 'dates' => [int, int]]; +``` diff --git a/docs/API_docs/constructors/messages.recentStickersNotModified.md b/docs/API_docs/constructors/messages.recentStickersNotModified.md new file mode 100644 index 0000000000..c61f52327d --- /dev/null +++ b/docs/API_docs/constructors/messages.recentStickersNotModified.md @@ -0,0 +1,25 @@ +--- +title: "messages.recentStickersNotModified" +description: "No new recent sticker was found" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_recentStickersNotModified.html +--- +# Constructor: messages.recentStickersNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +No new recent sticker was found + + + + +### Type: [messages.RecentStickers](/API_docs/types/messages.RecentStickers.html) + + +### Example: + +``` +$messages_recentStickersNotModified = ['_' => 'messages.recentStickersNotModified']; +``` diff --git a/docs/API_docs/constructors/messages.savedDialogs.md b/docs/API_docs/constructors/messages.savedDialogs.md new file mode 100644 index 0000000000..5dc0a226af --- /dev/null +++ b/docs/API_docs/constructors/messages.savedDialogs.md @@ -0,0 +1,33 @@ +--- +title: "messages.savedDialogs" +description: "Represents some saved message dialogs »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_savedDialogs.html +--- +# Constructor: messages.savedDialogs +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents some [saved message dialogs »](https://core.telegram.org/api/saved-messages). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|dialogs|Array of [SavedDialog](/API_docs/types/SavedDialog.html) | Yes|[Saved message dialogs »](https://core.telegram.org/api/saved-messages).| +|messages|Array of [Message](/API_docs/types/Message.html) | Yes|List of last messages from each saved dialog| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Mentioned chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| + + + +### Type: [messages.SavedDialogs](/API_docs/types/messages.SavedDialogs.html) + + +### Example: + +``` +$messages_savedDialogs = ['_' => 'messages.savedDialogs', 'dialogs' => [SavedDialog, SavedDialog], 'messages' => [Message, Message], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.savedDialogsNotModified.md b/docs/API_docs/constructors/messages.savedDialogsNotModified.md new file mode 100644 index 0000000000..cb5b8d3c02 --- /dev/null +++ b/docs/API_docs/constructors/messages.savedDialogsNotModified.md @@ -0,0 +1,30 @@ +--- +title: "messages.savedDialogsNotModified" +description: "The saved dialogs haven't changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_savedDialogsNotModified.html +--- +# Constructor: messages.savedDialogsNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +The saved dialogs haven't changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Number of [saved dialogs](https://core.telegram.org/api/saved-messages) found server-side by the query| + + + +### Type: [messages.SavedDialogs](/API_docs/types/messages.SavedDialogs.html) + + +### Example: + +``` +$messages_savedDialogsNotModified = ['_' => 'messages.savedDialogsNotModified', 'count' => int]; +``` diff --git a/docs/API_docs/constructors/messages.savedDialogsSlice.md b/docs/API_docs/constructors/messages.savedDialogsSlice.md new file mode 100644 index 0000000000..6594ee883b --- /dev/null +++ b/docs/API_docs/constructors/messages.savedDialogsSlice.md @@ -0,0 +1,34 @@ +--- +title: "messages.savedDialogsSlice" +description: "Incomplete list of saved message dialogs » with messages and auxiliary data." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_savedDialogsSlice.html +--- +# Constructor: messages.savedDialogsSlice +[Back to constructors index](/API_docs/constructors/index.html) + + + +Incomplete list of [saved message dialogs »](https://core.telegram.org/api/saved-messages) with messages and auxiliary data. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Total number of saved message dialogs| +|dialogs|Array of [SavedDialog](/API_docs/types/SavedDialog.html) | Yes|List of saved message dialogs| +|messages|Array of [Message](/API_docs/types/Message.html) | Yes|List of last messages from dialogs| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Mentioned chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| + + + +### Type: [messages.SavedDialogs](/API_docs/types/messages.SavedDialogs.html) + + +### Example: + +``` +$messages_savedDialogsSlice = ['_' => 'messages.savedDialogsSlice', 'count' => int, 'dialogs' => [SavedDialog, SavedDialog], 'messages' => [Message, Message], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.savedGifs.md b/docs/API_docs/constructors/messages.savedGifs.md new file mode 100644 index 0000000000..40d611e678 --- /dev/null +++ b/docs/API_docs/constructors/messages.savedGifs.md @@ -0,0 +1,31 @@ +--- +title: "messages.savedGifs" +description: "Saved gifs" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_savedGifs.html +--- +# Constructor: messages.savedGifs +[Back to constructors index](/API_docs/constructors/index.html) + + + +Saved gifs + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hash|[long](/API_docs/types/long.html) | Yes|[Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation)| +|gifs|Array of [Document](/API_docs/types/Document.html) | Yes|List of saved gifs| + + + +### Type: [messages.SavedGifs](/API_docs/types/messages.SavedGifs.html) + + +### Example: + +``` +$messages_savedGifs = ['_' => 'messages.savedGifs', 'hash' => long, 'gifs' => [Document, Document]]; +``` diff --git a/docs/API_docs/constructors/messages.savedGifsNotModified.md b/docs/API_docs/constructors/messages.savedGifsNotModified.md new file mode 100644 index 0000000000..b336064ba2 --- /dev/null +++ b/docs/API_docs/constructors/messages.savedGifsNotModified.md @@ -0,0 +1,25 @@ +--- +title: "messages.savedGifsNotModified" +description: "No new saved gifs were found" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_savedGifsNotModified.html +--- +# Constructor: messages.savedGifsNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +No new saved gifs were found + + + + +### Type: [messages.SavedGifs](/API_docs/types/messages.SavedGifs.html) + + +### Example: + +``` +$messages_savedGifsNotModified = ['_' => 'messages.savedGifsNotModified']; +``` diff --git a/docs/API_docs/constructors/messages.savedReactionTags.md b/docs/API_docs/constructors/messages.savedReactionTags.md new file mode 100644 index 0000000000..36428240a5 --- /dev/null +++ b/docs/API_docs/constructors/messages.savedReactionTags.md @@ -0,0 +1,29 @@ +--- +title: "messages.savedReactionTags" +description: "messages.savedReactionTags attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_savedReactionTags.html +--- +# Constructor: messages.savedReactionTags +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|tags|Array of [SavedReactionTag](/API_docs/types/SavedReactionTag.html) | Yes| +|hash|[long](/API_docs/types/long.html) | Yes| + + + +### Type: [messages.SavedReactionTags](/API_docs/types/messages.SavedReactionTags.html) + + +### Example: + +``` +$messages_savedReactionTags = ['_' => 'messages.savedReactionTags', 'tags' => [SavedReactionTag, SavedReactionTag], 'hash' => long]; +``` diff --git a/docs/API_docs/constructors/messages.savedReactionTagsNotModified.md b/docs/API_docs/constructors/messages.savedReactionTagsNotModified.md new file mode 100644 index 0000000000..1583a90a92 --- /dev/null +++ b/docs/API_docs/constructors/messages.savedReactionTagsNotModified.md @@ -0,0 +1,23 @@ +--- +title: "messages.savedReactionTagsNotModified" +description: "messages.savedReactionTagsNotModified attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_savedReactionTagsNotModified.html +--- +# Constructor: messages.savedReactionTagsNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + + + + +### Type: [messages.SavedReactionTags](/API_docs/types/messages.SavedReactionTags.html) + + +### Example: + +``` +$messages_savedReactionTagsNotModified = ['_' => 'messages.savedReactionTagsNotModified']; +``` diff --git a/docs/API_docs/constructors/messages.searchCounter.md b/docs/API_docs/constructors/messages.searchCounter.md new file mode 100644 index 0000000000..a53e0bffd7 --- /dev/null +++ b/docs/API_docs/constructors/messages.searchCounter.md @@ -0,0 +1,32 @@ +--- +title: "messages.searchCounter" +description: "Indicates how many results would be found by a messages.search call with the same parameters" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_searchCounter.html +--- +# Constructor: messages.searchCounter +[Back to constructors index](/API_docs/constructors/index.html) + + + +Indicates how many results would be found by a [messages.search](../methods/messages.search.html) call with the same parameters + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|inexact|[Bool](/API_docs/types/Bool.html) | Optional|If set, the results may be inexact| +|filter|[MessagesFilter](/API_docs/types/MessagesFilter.html) | Yes|Provided message filter| +|count|[int](/API_docs/types/int.html) | Yes|Number of results that were found server-side| + + + +### Type: [messages.SearchCounter](/API_docs/types/messages.SearchCounter.html) + + +### Example: + +``` +$messages_searchCounter = ['_' => 'messages.searchCounter', 'inexact' => Bool, 'filter' => MessagesFilter, 'count' => int]; +``` diff --git a/docs/API_docs/constructors/messages.searchResultsCalendar.md b/docs/API_docs/constructors/messages.searchResultsCalendar.md new file mode 100644 index 0000000000..dfb8cdac3b --- /dev/null +++ b/docs/API_docs/constructors/messages.searchResultsCalendar.md @@ -0,0 +1,38 @@ +--- +title: "messages.searchResultsCalendar" +description: "Information about found messages sent on a specific day" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_searchResultsCalendar.html +--- +# Constructor: messages.searchResultsCalendar +[Back to constructors index](/API_docs/constructors/index.html) + + + +Information about found messages sent on a specific day + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|inexact|[Bool](/API_docs/types/Bool.html) | Optional|If set, indicates that the results may be inexact| +|count|[int](/API_docs/types/int.html) | Yes|Total number of results matching query| +|min\_date|[int](/API_docs/types/int.html) | Yes|Starting timestamp of attached messages| +|min\_msg\_id|[int](/API_docs/types/int.html) | Yes|Ending timestamp of attached messages| +|offset\_id\_offset|[int](/API_docs/types/int.html) | Optional|Indicates the absolute position of `messages[0]` within the total result set with count `count`.
This is useful, for example, if 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}`.| +|periods|Array of [SearchResultsCalendarPeriod](/API_docs/types/SearchResultsCalendarPeriod.html) | Yes|Used to split the `messages` by days: multiple [SearchResultsCalendarPeriod](../types/SearchResultsCalendarPeriod.html) constructors are returned, each containing information about the first, last and total number of messages matching the filter that were sent on a specific day.
This information can be easily used to split the returned `messages` by day.| +|messages|Array of [Message](/API_docs/types/Message.html) | Yes|Messages| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Mentioned chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| + + + +### Type: [messages.SearchResultsCalendar](/API_docs/types/messages.SearchResultsCalendar.html) + + +### Example: + +``` +$messages_searchResultsCalendar = ['_' => 'messages.searchResultsCalendar', 'inexact' => Bool, 'count' => int, 'min_date' => int, 'min_msg_id' => int, 'offset_id_offset' => int, 'periods' => [SearchResultsCalendarPeriod, SearchResultsCalendarPeriod], 'messages' => [Message, Message], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.searchResultsPositions.md b/docs/API_docs/constructors/messages.searchResultsPositions.md new file mode 100644 index 0000000000..2f2b17fa4a --- /dev/null +++ b/docs/API_docs/constructors/messages.searchResultsPositions.md @@ -0,0 +1,31 @@ +--- +title: "messages.searchResultsPositions" +description: "Information about sparse positions of messages" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_searchResultsPositions.html +--- +# Constructor: messages.searchResultsPositions +[Back to constructors index](/API_docs/constructors/index.html) + + + +Information about sparse positions of messages + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Total number of found messages| +|positions|Array of [SearchResultsPosition](/API_docs/types/SearchResultsPosition.html) | Yes|List of message positions| + + + +### Type: [messages.SearchResultsPositions](/API_docs/types/messages.SearchResultsPositions.html) + + +### Example: + +``` +$messages_searchResultsPositions = ['_' => 'messages.searchResultsPositions', 'count' => int, 'positions' => [SearchResultsPosition, SearchResultsPosition]]; +``` diff --git a/docs/API_docs/constructors/messages.sentEncryptedFile.md b/docs/API_docs/constructors/messages.sentEncryptedFile.md new file mode 100644 index 0000000000..791f3b7ca9 --- /dev/null +++ b/docs/API_docs/constructors/messages.sentEncryptedFile.md @@ -0,0 +1,31 @@ +--- +title: "messages.sentEncryptedFile" +description: "Message with a file enclosure sent to a protected chat" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_sentEncryptedFile.html +--- +# Constructor: messages.sentEncryptedFile +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message with a file enclosure sent to a protected chat + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|date|[int](/API_docs/types/int.html) | Yes|Sending date| +|file|[EncryptedFile](/API_docs/types/EncryptedFile.html) | Optional|Attached file| + + + +### Type: [messages.SentEncryptedMessage](/API_docs/types/messages.SentEncryptedMessage.html) + + +### Example: + +``` +$messages_sentEncryptedFile = ['_' => 'messages.sentEncryptedFile', 'date' => int, 'file' => EncryptedFile]; +``` diff --git a/docs/API_docs/constructors/messages.sentEncryptedMessage.md b/docs/API_docs/constructors/messages.sentEncryptedMessage.md new file mode 100644 index 0000000000..51230e42bf --- /dev/null +++ b/docs/API_docs/constructors/messages.sentEncryptedMessage.md @@ -0,0 +1,30 @@ +--- +title: "messages.sentEncryptedMessage" +description: "Message without file attachments sent to an encrypted file." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_sentEncryptedMessage.html +--- +# Constructor: messages.sentEncryptedMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message without file attachments sent to an encrypted file. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|date|[int](/API_docs/types/int.html) | Yes|Date of sending| + + + +### Type: [messages.SentEncryptedMessage](/API_docs/types/messages.SentEncryptedMessage.html) + + +### Example: + +``` +$messages_sentEncryptedMessage = ['_' => 'messages.sentEncryptedMessage', 'date' => int]; +``` diff --git a/docs/API_docs/constructors/messages.sponsoredMessages.md b/docs/API_docs/constructors/messages.sponsoredMessages.md new file mode 100644 index 0000000000..230be486d8 --- /dev/null +++ b/docs/API_docs/constructors/messages.sponsoredMessages.md @@ -0,0 +1,33 @@ +--- +title: "messages.sponsoredMessages" +description: "A set of sponsored messages associated to a channel" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_sponsoredMessages.html +--- +# Constructor: messages.sponsoredMessages +[Back to constructors index](/API_docs/constructors/index.html) + + + +A set of sponsored messages associated to a channel + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|posts\_between|[int](/API_docs/types/int.html) | Optional|If set, specifies the minimum number of messages between shown sponsored messages; otherwise, only one sponsored message must be shown after all ordinary messages.| +|messages|Array of [SponsoredMessage](/API_docs/types/SponsoredMessage.html) | Yes|Sponsored messages| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Chats mentioned in the sponsored messages| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users mentioned in the sponsored messages| + + + +### Type: [messages.SponsoredMessages](/API_docs/types/messages.SponsoredMessages.html) + + +### Example: + +``` +$messages_sponsoredMessages = ['_' => 'messages.sponsoredMessages', 'posts_between' => int, 'messages' => [SponsoredMessage, SponsoredMessage], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/messages.sponsoredMessagesEmpty.md b/docs/API_docs/constructors/messages.sponsoredMessagesEmpty.md new file mode 100644 index 0000000000..16d7474757 --- /dev/null +++ b/docs/API_docs/constructors/messages.sponsoredMessagesEmpty.md @@ -0,0 +1,25 @@ +--- +title: "messages.sponsoredMessagesEmpty" +description: "No sponsored messages are available." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_sponsoredMessagesEmpty.html +--- +# Constructor: messages.sponsoredMessagesEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +No sponsored messages are available. + + + + +### Type: [messages.SponsoredMessages](/API_docs/types/messages.SponsoredMessages.html) + + +### Example: + +``` +$messages_sponsoredMessagesEmpty = ['_' => 'messages.sponsoredMessagesEmpty']; +``` diff --git a/docs/API_docs/constructors/messages.stickerSet.md b/docs/API_docs/constructors/messages.stickerSet.md new file mode 100644 index 0000000000..d369f9a645 --- /dev/null +++ b/docs/API_docs/constructors/messages.stickerSet.md @@ -0,0 +1,33 @@ +--- +title: "messages.stickerSet" +description: "Stickerset and stickers inside it" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_stickerSet.html +--- +# Constructor: messages.stickerSet +[Back to constructors index](/API_docs/constructors/index.html) + + + +Stickerset and stickers inside it + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|set|[StickerSet](/API_docs/types/StickerSet.html) | Yes|The stickerset| +|packs|Array of [StickerPack](/API_docs/types/StickerPack.html) | Yes|Emoji info for stickers| +|keywords|Array of [StickerKeyword](/API_docs/types/StickerKeyword.html) | Yes|Keywords for some or every sticker in the stickerset.| +|documents|Array of [Document](/API_docs/types/Document.html) | Yes|Stickers in stickerset| + + + +### Type: [messages.StickerSet](/API_docs/types/messages.StickerSet.html) + + +### Example: + +``` +$messages_stickerSet = ['_' => 'messages.stickerSet', 'set' => StickerSet, 'packs' => [StickerPack, StickerPack], 'keywords' => [StickerKeyword, StickerKeyword], 'documents' => [Document, Document]]; +``` diff --git a/docs/API_docs/constructors/messages.stickerSetInstallResultArchive.md b/docs/API_docs/constructors/messages.stickerSetInstallResultArchive.md new file mode 100644 index 0000000000..2730346a7b --- /dev/null +++ b/docs/API_docs/constructors/messages.stickerSetInstallResultArchive.md @@ -0,0 +1,30 @@ +--- +title: "messages.stickerSetInstallResultArchive" +description: "The stickerset was installed, but since there are too many stickersets some were archived" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_stickerSetInstallResultArchive.html +--- +# Constructor: messages.stickerSetInstallResultArchive +[Back to constructors index](/API_docs/constructors/index.html) + + + +The stickerset was installed, but since there are too many stickersets some were archived + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|sets|Array of [StickerSetCovered](/API_docs/types/StickerSetCovered.html) | Yes|Archived stickersets| + + + +### Type: [messages.StickerSetInstallResult](/API_docs/types/messages.StickerSetInstallResult.html) + + +### Example: + +``` +$messages_stickerSetInstallResultArchive = ['_' => 'messages.stickerSetInstallResultArchive', 'sets' => [StickerSetCovered, StickerSetCovered]]; +``` diff --git a/docs/API_docs/constructors/messages.stickerSetInstallResultSuccess.md b/docs/API_docs/constructors/messages.stickerSetInstallResultSuccess.md new file mode 100644 index 0000000000..03a6b1ba9f --- /dev/null +++ b/docs/API_docs/constructors/messages.stickerSetInstallResultSuccess.md @@ -0,0 +1,25 @@ +--- +title: "messages.stickerSetInstallResultSuccess" +description: "The stickerset was installed successfully" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_stickerSetInstallResultSuccess.html +--- +# Constructor: messages.stickerSetInstallResultSuccess +[Back to constructors index](/API_docs/constructors/index.html) + + + +The stickerset was installed successfully + + + + +### Type: [messages.StickerSetInstallResult](/API_docs/types/messages.StickerSetInstallResult.html) + + +### Example: + +``` +$messages_stickerSetInstallResultSuccess = ['_' => 'messages.stickerSetInstallResultSuccess']; +``` diff --git a/docs/API_docs/constructors/messages.stickerSetNotModified.md b/docs/API_docs/constructors/messages.stickerSetNotModified.md new file mode 100644 index 0000000000..189ef2caab --- /dev/null +++ b/docs/API_docs/constructors/messages.stickerSetNotModified.md @@ -0,0 +1,25 @@ +--- +title: "messages.stickerSetNotModified" +description: "The stickerset hasn't changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_stickerSetNotModified.html +--- +# Constructor: messages.stickerSetNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +The stickerset hasn't changed + + + + +### Type: [messages.StickerSet](/API_docs/types/messages.StickerSet.html) + + +### Example: + +``` +$messages_stickerSetNotModified = ['_' => 'messages.stickerSetNotModified']; +``` diff --git a/docs/API_docs/constructors/messages.stickers.md b/docs/API_docs/constructors/messages.stickers.md new file mode 100644 index 0000000000..e361033318 --- /dev/null +++ b/docs/API_docs/constructors/messages.stickers.md @@ -0,0 +1,31 @@ +--- +title: "messages.stickers" +description: "Found stickers" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_stickers.html +--- +# Constructor: messages.stickers +[Back to constructors index](/API_docs/constructors/index.html) + + + +Found stickers + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hash|[long](/API_docs/types/long.html) | Yes|[Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation)| +|stickers|Array of [Document](/API_docs/types/Document.html) | Yes|Stickers| + + + +### Type: [messages.Stickers](/API_docs/types/messages.Stickers.html) + + +### Example: + +``` +$messages_stickers = ['_' => 'messages.stickers', 'hash' => long, 'stickers' => [Document, Document]]; +``` diff --git a/docs/API_docs/constructors/messages.stickersNotModified.md b/docs/API_docs/constructors/messages.stickersNotModified.md new file mode 100644 index 0000000000..fd7dbfbbd2 --- /dev/null +++ b/docs/API_docs/constructors/messages.stickersNotModified.md @@ -0,0 +1,25 @@ +--- +title: "messages.stickersNotModified" +description: "No new stickers were found for the given query" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_stickersNotModified.html +--- +# Constructor: messages.stickersNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +No new stickers were found for the given query + + + + +### Type: [messages.Stickers](/API_docs/types/messages.Stickers.html) + + +### Example: + +``` +$messages_stickersNotModified = ['_' => 'messages.stickersNotModified']; +``` diff --git a/docs/API_docs/constructors/messages.transcribedAudio.md b/docs/API_docs/constructors/messages.transcribedAudio.md new file mode 100644 index 0000000000..b0bc70518a --- /dev/null +++ b/docs/API_docs/constructors/messages.transcribedAudio.md @@ -0,0 +1,34 @@ +--- +title: "messages.transcribedAudio" +description: "Transcribed text from a voice message »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_transcribedAudio.html +--- +# Constructor: messages.transcribedAudio +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Transcribed text from a voice message »](https://core.telegram.org/api/transcribe) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|pending|[Bool](/API_docs/types/Bool.html) | Optional|Whether the transcription is partial because audio transcription is still in progress, if set the user may receive further [updateTranscribedAudio](../constructors/updateTranscribedAudio.html) updates with the updated transcription.| +|transcription\_id|[long](/API_docs/types/long.html) | Yes|Transcription ID| +|text|[string](/API_docs/types/string.html) | Yes|Transcripted text| +|trial\_remains\_num|[int](/API_docs/types/int.html) | Optional|For non-[Premium](https://core.telegram.org/api/premium) users, this flag will be set, indicating the remaining transcriptions in the free trial period.| +|trial\_remains\_until\_date|[int](/API_docs/types/int.html) | Optional|For non-[Premium](https://core.telegram.org/api/premium) users, this flag will be set, indicating the date when the `trial_remains_num` counter will be reset to the maximum value of [transcribe\_audio\_trial\_weekly\_number](https://core.telegram.org/api/config#transcribe-audio-trial-weekly-number).| + + + +### Type: [messages.TranscribedAudio](/API_docs/types/messages.TranscribedAudio.html) + + +### Example: + +``` +$messages_transcribedAudio = ['_' => 'messages.transcribedAudio', 'pending' => Bool, 'transcription_id' => long, 'text' => 'string', 'trial_remains_num' => int, 'trial_remains_until_date' => int]; +``` diff --git a/docs/API_docs/constructors/messages.translateResult.md b/docs/API_docs/constructors/messages.translateResult.md new file mode 100644 index 0000000000..e0dab4c532 --- /dev/null +++ b/docs/API_docs/constructors/messages.translateResult.md @@ -0,0 +1,30 @@ +--- +title: "messages.translateResult" +description: "Translated text with entities" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_translateResult.html +--- +# Constructor: messages.translateResult +[Back to constructors index](/API_docs/constructors/index.html) + + + +Translated text with [entities](https://core.telegram.org/api/entities) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|result|Array of [TextWithEntities](/API_docs/types/TextWithEntities.html) | Yes|Text+[entities](https://core.telegram.org/api/entities), for each input message.| + + + +### Type: [messages.TranslatedText](/API_docs/types/messages.TranslatedText.html) + + +### Example: + +``` +$messages_translateResult = ['_' => 'messages.translateResult', 'result' => [TextWithEntities, TextWithEntities]]; +``` diff --git a/docs/API_docs/constructors/messages.votesList.md b/docs/API_docs/constructors/messages.votesList.md new file mode 100644 index 0000000000..305c88b103 --- /dev/null +++ b/docs/API_docs/constructors/messages.votesList.md @@ -0,0 +1,34 @@ +--- +title: "messages.votesList" +description: "How users voted in a poll" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_votesList.html +--- +# Constructor: messages.votesList +[Back to constructors index](/API_docs/constructors/index.html) + + + +How users voted in a poll + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Total number of votes for all options (or only for the chosen `option`, if provided to [messages.getPollVotes](../methods/messages.getPollVotes.html))| +|votes|Array of [MessagePeerVote](/API_docs/types/MessagePeerVote.html) | Yes|Vote info for each user| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Mentioned chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Info about users that voted in the poll| +|next\_offset|[string](/API_docs/types/string.html) | Optional|Offset to use with the next [messages.getPollVotes](../methods/messages.getPollVotes.html) request, empty string if no more results are available.| + + + +### Type: [messages.VotesList](/API_docs/types/messages.VotesList.html) + + +### Example: + +``` +$messages_votesList = ['_' => 'messages.votesList', 'count' => int, 'votes' => [MessagePeerVote, MessagePeerVote], 'chats' => [Chat, Chat], 'users' => [User, User], 'next_offset' => 'string']; +``` diff --git a/docs/API_docs/constructors/messages.webPage.md b/docs/API_docs/constructors/messages.webPage.md new file mode 100644 index 0000000000..66fe106027 --- /dev/null +++ b/docs/API_docs/constructors/messages.webPage.md @@ -0,0 +1,32 @@ +--- +title: "messages.webPage" +description: "Represents an Instant View webpage." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/messages_webPage.html +--- +# Constructor: messages.webPage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents an Instant View webpage. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|webpage|[WebPage](/API_docs/types/WebPage.html) | Optional|The instant view webpage.| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Chats mentioned in the webpage.| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users mentioned in the webpage.| + + + +### Type: [messages.WebPage](/API_docs/types/messages.WebPage.html) + + +### Example: + +``` +$messages_webPage = ['_' => 'messages.webPage', 'webpage' => WebPage, 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/missingInvitee.md b/docs/API_docs/constructors/missingInvitee.md new file mode 100644 index 0000000000..eda318ec83 --- /dev/null +++ b/docs/API_docs/constructors/missingInvitee.md @@ -0,0 +1,29 @@ +--- +title: "missingInvitee" +description: "missingInvitee attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: missingInvitee +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|premium\_would\_allow\_invite|[Bool](/API_docs/types/Bool.html) | Optional| +|premium\_required\_for\_pm|[Bool](/API_docs/types/Bool.html) | Optional| +|user\_id|[long](/API_docs/types/long.html) | Yes| + + + +### Type: [MissingInvitee](/API_docs/types/MissingInvitee.html) + + +### Example: + +``` +$missingInvitee = ['_' => 'missingInvitee', 'premium_would_allow_invite' => Bool, 'premium_required_for_pm' => Bool, 'user_id' => long]; +``` diff --git a/docs/API_docs/constructors/myBoost.md b/docs/API_docs/constructors/myBoost.md new file mode 100644 index 0000000000..d096f93463 --- /dev/null +++ b/docs/API_docs/constructors/myBoost.md @@ -0,0 +1,33 @@ +--- +title: "myBoost" +description: "Contains information about a single boost slot »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: myBoost +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains information about a single [boost slot »](https://core.telegram.org/api/boost). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|slot|[int](/API_docs/types/int.html) | Yes|[Boost slot ID »](https://core.telegram.org/api/boost)| +|peer|[long](/API_docs/types/long.html) | Optional|If set, indicates this slot is currently occupied, i.e. we are [boosting](https://core.telegram.org/api/boost) this peer.
Note that we can assign multiple boost slots to the same peer.| +|date|[int](/API_docs/types/int.html) | Yes|When (unixtime) we started boosting the `peer`, `0` otherwise.| +|expires|[int](/API_docs/types/int.html) | Yes|Indicates the (unixtime) expiration date of the boost in `peer` (`0` if `peer` is not set).| +|cooldown\_until\_date|[int](/API_docs/types/int.html) | Optional|If `peer` is set, indicates the (unixtime) date after which this boost can be reassigned to another channel.| + + + +### Type: [MyBoost](/API_docs/types/MyBoost.html) + + +### Example: + +``` +$myBoost = ['_' => 'myBoost', 'slot' => int, 'peer' => long, 'date' => int, 'expires' => int, 'cooldown_until_date' => int]; +``` diff --git a/docs/API_docs/constructors/nearestDc.md b/docs/API_docs/constructors/nearestDc.md new file mode 100644 index 0000000000..dec4932391 --- /dev/null +++ b/docs/API_docs/constructors/nearestDc.md @@ -0,0 +1,31 @@ +--- +title: "nearestDc" +description: "Nearest data center, according to geo-ip." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: nearestDc +[Back to constructors index](/API_docs/constructors/index.html) + + + +Nearest data center, according to geo-ip. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|country|[string](/API_docs/types/string.html) | Yes|Country code determined by geo-ip| +|this\_dc|[int](/API_docs/types/int.html) | Yes|Number of current data center| +|nearest\_dc|[int](/API_docs/types/int.html) | Yes|Number of nearest data center| + + + +### Type: [NearestDc](/API_docs/types/NearestDc.html) + + +### Example: + +``` +$nearestDc = ['_' => 'nearestDc', 'country' => 'string', 'this_dc' => int, 'nearest_dc' => int]; +``` diff --git a/docs/API_docs/constructors/notificationSoundDefault.md b/docs/API_docs/constructors/notificationSoundDefault.md new file mode 100644 index 0000000000..a91ff6c3d8 --- /dev/null +++ b/docs/API_docs/constructors/notificationSoundDefault.md @@ -0,0 +1,24 @@ +--- +title: "notificationSoundDefault" +description: "Indicates the default notification sound should be used" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: notificationSoundDefault +[Back to constructors index](/API_docs/constructors/index.html) + + + +Indicates the default notification sound should be used + + + + +### Type: [NotificationSound](/API_docs/types/NotificationSound.html) + + +### Example: + +``` +$notificationSoundDefault = ['_' => 'notificationSoundDefault']; +``` diff --git a/docs/API_docs/constructors/notificationSoundLocal.md b/docs/API_docs/constructors/notificationSoundLocal.md new file mode 100644 index 0000000000..5e3dd0cf27 --- /dev/null +++ b/docs/API_docs/constructors/notificationSoundLocal.md @@ -0,0 +1,30 @@ +--- +title: "notificationSoundLocal" +description: "Indicates a specific local notification sound should be used" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: notificationSoundLocal +[Back to constructors index](/API_docs/constructors/index.html) + + + +Indicates a specific local notification sound should be used + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|title|[string](/API_docs/types/string.html) | Yes|Notification sound title| +|data|[string](/API_docs/types/string.html) | Yes|Notification sound identifier (arbitrary data used by the client to identify a specific local notification sound)| + + + +### Type: [NotificationSound](/API_docs/types/NotificationSound.html) + + +### Example: + +``` +$notificationSoundLocal = ['_' => 'notificationSoundLocal', 'title' => 'string', 'data' => 'string']; +``` diff --git a/docs/API_docs/constructors/notificationSoundNone.md b/docs/API_docs/constructors/notificationSoundNone.md new file mode 100644 index 0000000000..94ff759de6 --- /dev/null +++ b/docs/API_docs/constructors/notificationSoundNone.md @@ -0,0 +1,24 @@ +--- +title: "notificationSoundNone" +description: "No notification sound should be used" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: notificationSoundNone +[Back to constructors index](/API_docs/constructors/index.html) + + + +No notification sound should be used + + + + +### Type: [NotificationSound](/API_docs/types/NotificationSound.html) + + +### Example: + +``` +$notificationSoundNone = ['_' => 'notificationSoundNone']; +``` diff --git a/docs/API_docs/constructors/notificationSoundRingtone.md b/docs/API_docs/constructors/notificationSoundRingtone.md new file mode 100644 index 0000000000..66dbf3392b --- /dev/null +++ b/docs/API_docs/constructors/notificationSoundRingtone.md @@ -0,0 +1,29 @@ +--- +title: "notificationSoundRingtone" +description: "A specific previously uploaded notification sound should be used" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: notificationSoundRingtone +[Back to constructors index](/API_docs/constructors/index.html) + + + +A specific previously uploaded notification sound should be used + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Document ID of notification sound uploaded using [account.uploadRingtone](../methods/account.uploadRingtone.html)| + + + +### Type: [NotificationSound](/API_docs/types/NotificationSound.html) + + +### Example: + +``` +$notificationSoundRingtone = ['_' => 'notificationSoundRingtone', 'id' => long]; +``` diff --git a/docs/API_docs/constructors/notifyBroadcasts.md b/docs/API_docs/constructors/notifyBroadcasts.md new file mode 100644 index 0000000000..04262043a9 --- /dev/null +++ b/docs/API_docs/constructors/notifyBroadcasts.md @@ -0,0 +1,24 @@ +--- +title: "notifyBroadcasts" +description: "Channel notification settings" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: notifyBroadcasts +[Back to constructors index](/API_docs/constructors/index.html) + + + +Channel notification settings + + + + +### Type: [NotifyPeer](/API_docs/types/NotifyPeer.html) + + +### Example: + +``` +$notifyBroadcasts = ['_' => 'notifyBroadcasts']; +``` diff --git a/docs/API_docs/constructors/notifyChats.md b/docs/API_docs/constructors/notifyChats.md new file mode 100644 index 0000000000..839edebecc --- /dev/null +++ b/docs/API_docs/constructors/notifyChats.md @@ -0,0 +1,24 @@ +--- +title: "notifyChats" +description: "Notifications generated by all groups." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: notifyChats +[Back to constructors index](/API_docs/constructors/index.html) + + + +Notifications generated by all groups. + + + + +### Type: [NotifyPeer](/API_docs/types/NotifyPeer.html) + + +### Example: + +``` +$notifyChats = ['_' => 'notifyChats']; +``` diff --git a/docs/API_docs/constructors/notifyForumTopic.md b/docs/API_docs/constructors/notifyForumTopic.md new file mode 100644 index 0000000000..6e514b2a5e --- /dev/null +++ b/docs/API_docs/constructors/notifyForumTopic.md @@ -0,0 +1,30 @@ +--- +title: "notifyForumTopic" +description: "Notifications generated by a topic in a forum." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: notifyForumTopic +[Back to constructors index](/API_docs/constructors/index.html) + + + +Notifications generated by a [topic](https://core.telegram.org/api/forum#forum-topics) in a [forum](https://core.telegram.org/api/forum). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|Forum ID| +|top\_msg\_id|[int](/API_docs/types/int.html) | Yes|[Topic ID](https://core.telegram.org/api/forum#forum-topics)| + + + +### Type: [NotifyPeer](/API_docs/types/NotifyPeer.html) + + +### Example: + +``` +$notifyForumTopic = ['_' => 'notifyForumTopic', 'peer' => long, 'top_msg_id' => int]; +``` diff --git a/docs/API_docs/constructors/notifyPeer.md b/docs/API_docs/constructors/notifyPeer.md new file mode 100644 index 0000000000..26a36f973a --- /dev/null +++ b/docs/API_docs/constructors/notifyPeer.md @@ -0,0 +1,29 @@ +--- +title: "notifyPeer" +description: "Notifications generated by a certain user or group." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: notifyPeer +[Back to constructors index](/API_docs/constructors/index.html) + + + +Notifications generated by a certain user or group. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|user or group| + + + +### Type: [NotifyPeer](/API_docs/types/NotifyPeer.html) + + +### Example: + +``` +$notifyPeer = ['_' => 'notifyPeer', 'peer' => long]; +``` diff --git a/docs/API_docs/constructors/notifyUsers.md b/docs/API_docs/constructors/notifyUsers.md new file mode 100644 index 0000000000..aba6a9ceb6 --- /dev/null +++ b/docs/API_docs/constructors/notifyUsers.md @@ -0,0 +1,24 @@ +--- +title: "notifyUsers" +description: "Notifications generated by all users." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: notifyUsers +[Back to constructors index](/API_docs/constructors/index.html) + + + +Notifications generated by all users. + + + + +### Type: [NotifyPeer](/API_docs/types/NotifyPeer.html) + + +### Example: + +``` +$notifyUsers = ['_' => 'notifyUsers']; +``` diff --git a/docs/API_docs/constructors/null.md b/docs/API_docs/constructors/null.md new file mode 100644 index 0000000000..1c1812ad71 --- /dev/null +++ b/docs/API_docs/constructors/null.md @@ -0,0 +1,10 @@ +--- +title: null +description: Represents a null value +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# null +[Back to constructor index](index.html) + +Represents a `null` value. diff --git a/docs/API_docs/constructors/outboxReadDate.md b/docs/API_docs/constructors/outboxReadDate.md new file mode 100644 index 0000000000..b1f9bfa470 --- /dev/null +++ b/docs/API_docs/constructors/outboxReadDate.md @@ -0,0 +1,27 @@ +--- +title: "outboxReadDate" +description: "outboxReadDate attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: outboxReadDate +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|date|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [OutboxReadDate](/API_docs/types/OutboxReadDate.html) + + +### Example: + +``` +$outboxReadDate = ['_' => 'outboxReadDate', 'date' => int]; +``` diff --git a/docs/API_docs/constructors/page.md b/docs/API_docs/constructors/page.md new file mode 100644 index 0000000000..8679628b9a --- /dev/null +++ b/docs/API_docs/constructors/page.md @@ -0,0 +1,36 @@ +--- +title: "page" +description: "Instant view page" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: page +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Instant view](https://instantview.telegram.org) page + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|part|[Bool](/API_docs/types/Bool.html) | Optional|Indicates that not full page preview is available to the client and it will need to fetch full Instant View from the server using [messages.getWebPagePreview](../methods/messages.getWebPagePreview.html).| +|rtl|[Bool](/API_docs/types/Bool.html) | Optional|Whether the page contains RTL text| +|v2|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is an [IV v2](https://instantview.telegram.org/docs#what-39s-new-in-2-0) page| +|url|[string](/API_docs/types/string.html) | Yes|Original page HTTP URL| +|blocks|Array of [PageBlock](/API_docs/types/PageBlock.html) | Yes|Page elements (like with HTML elements, only as TL constructors)| +|photos|Array of [Photo](/API_docs/types/Photo.html) | Yes|Photos in page| +|documents|Array of [Document](/API_docs/types/Document.html) | Yes|Media in page| +|views|[int](/API_docs/types/int.html) | Optional|View count| + + + +### Type: [Page](/API_docs/types/Page.html) + + +### Example: + +``` +$page = ['_' => 'page', 'part' => Bool, 'rtl' => Bool, 'v2' => Bool, 'url' => 'string', 'blocks' => [PageBlock, PageBlock], 'photos' => [Photo, Photo], 'documents' => [Document, Document], 'views' => int]; +``` diff --git a/docs/API_docs/constructors/pageBlockAnchor.md b/docs/API_docs/constructors/pageBlockAnchor.md new file mode 100644 index 0000000000..8b1f570e11 --- /dev/null +++ b/docs/API_docs/constructors/pageBlockAnchor.md @@ -0,0 +1,29 @@ +--- +title: "pageBlockAnchor" +description: "Link to section within the page itself (like anchor)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pageBlockAnchor +[Back to constructors index](/API_docs/constructors/index.html) + + + +Link to section within the page itself (like `anchor`) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|name|[string](/API_docs/types/string.html) | Yes|Name of target section| + + + +### Type: [PageBlock](/API_docs/types/PageBlock.html) + + +### Example: + +``` +$pageBlockAnchor = ['_' => 'pageBlockAnchor', 'name' => 'string']; +``` diff --git a/docs/API_docs/constructors/pageBlockAudio.md b/docs/API_docs/constructors/pageBlockAudio.md new file mode 100644 index 0000000000..f5368db566 --- /dev/null +++ b/docs/API_docs/constructors/pageBlockAudio.md @@ -0,0 +1,30 @@ +--- +title: "pageBlockAudio" +description: "Audio" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pageBlockAudio +[Back to constructors index](/API_docs/constructors/index.html) + + + +Audio + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|audio\_id|[long](/API_docs/types/long.html) | Yes|Audio ID (to be fetched from the container [page](../constructors/page.html) constructor| +|caption|[PageCaption](/API_docs/types/PageCaption.html) | Yes|Audio caption| + + + +### Type: [PageBlock](/API_docs/types/PageBlock.html) + + +### Example: + +``` +$pageBlockAudio = ['_' => 'pageBlockAudio', 'audio_id' => long, 'caption' => PageCaption]; +``` diff --git a/docs/API_docs/constructors/pageBlockAuthorDate.md b/docs/API_docs/constructors/pageBlockAuthorDate.md new file mode 100644 index 0000000000..b36a8c24d0 --- /dev/null +++ b/docs/API_docs/constructors/pageBlockAuthorDate.md @@ -0,0 +1,30 @@ +--- +title: "pageBlockAuthorDate" +description: "Author and date of creation of article" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pageBlockAuthorDate +[Back to constructors index](/API_docs/constructors/index.html) + + + +Author and date of creation of article + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|author|[RichText](/API_docs/types/RichText.html) | Yes|Author name| +|published\_date|[int](/API_docs/types/int.html) | Yes|Date of publication| + + + +### Type: [PageBlock](/API_docs/types/PageBlock.html) + + +### Example: + +``` +$pageBlockAuthorDate = ['_' => 'pageBlockAuthorDate', 'author' => RichText, 'published_date' => int]; +``` diff --git a/docs/API_docs/constructors/pageBlockBlockquote.md b/docs/API_docs/constructors/pageBlockBlockquote.md new file mode 100644 index 0000000000..16ade80485 --- /dev/null +++ b/docs/API_docs/constructors/pageBlockBlockquote.md @@ -0,0 +1,30 @@ +--- +title: "pageBlockBlockquote" +description: "Quote (equivalent to the HTML
)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pageBlockBlockquote +[Back to constructors index](/API_docs/constructors/index.html) + + + +Quote (equivalent to the HTML `
`) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[RichText](/API_docs/types/RichText.html) | Yes|Quote contents| +|caption|[RichText](/API_docs/types/RichText.html) | Yes|Caption| + + + +### Type: [PageBlock](/API_docs/types/PageBlock.html) + + +### Example: + +``` +$pageBlockBlockquote = ['_' => 'pageBlockBlockquote', 'text' => RichText, 'caption' => RichText]; +``` diff --git a/docs/API_docs/constructors/pageBlockChannel.md b/docs/API_docs/constructors/pageBlockChannel.md new file mode 100644 index 0000000000..0251ea8674 --- /dev/null +++ b/docs/API_docs/constructors/pageBlockChannel.md @@ -0,0 +1,29 @@ +--- +title: "pageBlockChannel" +description: "Reference to a telegram channel" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pageBlockChannel +[Back to constructors index](/API_docs/constructors/index.html) + + + +Reference to a telegram channel + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel|[Chat](/API_docs/types/Chat.html) | Optional|The channel/supergroup/chat| + + + +### Type: [PageBlock](/API_docs/types/PageBlock.html) + + +### Example: + +``` +$pageBlockChannel = ['_' => 'pageBlockChannel', 'channel' => Chat]; +``` diff --git a/docs/API_docs/constructors/pageBlockCollage.md b/docs/API_docs/constructors/pageBlockCollage.md new file mode 100644 index 0000000000..785257b8b6 --- /dev/null +++ b/docs/API_docs/constructors/pageBlockCollage.md @@ -0,0 +1,30 @@ +--- +title: "pageBlockCollage" +description: "Collage of media" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pageBlockCollage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Collage of media + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|items|Array of [PageBlock](/API_docs/types/PageBlock.html) | Yes|Media elements| +|caption|[PageCaption](/API_docs/types/PageCaption.html) | Yes|Caption| + + + +### Type: [PageBlock](/API_docs/types/PageBlock.html) + + +### Example: + +``` +$pageBlockCollage = ['_' => 'pageBlockCollage', 'items' => [PageBlock, PageBlock], 'caption' => PageCaption]; +``` diff --git a/docs/API_docs/constructors/pageBlockCover.md b/docs/API_docs/constructors/pageBlockCover.md new file mode 100644 index 0000000000..49ae260687 --- /dev/null +++ b/docs/API_docs/constructors/pageBlockCover.md @@ -0,0 +1,29 @@ +--- +title: "pageBlockCover" +description: "A page cover" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pageBlockCover +[Back to constructors index](/API_docs/constructors/index.html) + + + +A page cover + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|cover|[PageBlock](/API_docs/types/PageBlock.html) | Yes|Cover| + + + +### Type: [PageBlock](/API_docs/types/PageBlock.html) + + +### Example: + +``` +$pageBlockCover = ['_' => 'pageBlockCover', 'cover' => PageBlock]; +``` diff --git a/docs/API_docs/constructors/pageBlockDetails.md b/docs/API_docs/constructors/pageBlockDetails.md new file mode 100644 index 0000000000..8fe8e60783 --- /dev/null +++ b/docs/API_docs/constructors/pageBlockDetails.md @@ -0,0 +1,31 @@ +--- +title: "pageBlockDetails" +description: "A collapsible details block" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pageBlockDetails +[Back to constructors index](/API_docs/constructors/index.html) + + + +A collapsible details block + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|open|[Bool](/API_docs/types/Bool.html) | Optional|Whether the block is open by default| +|blocks|Array of [PageBlock](/API_docs/types/PageBlock.html) | Yes|Block contents| +|title|[RichText](/API_docs/types/RichText.html) | Yes|Always visible heading for the block| + + + +### Type: [PageBlock](/API_docs/types/PageBlock.html) + + +### Example: + +``` +$pageBlockDetails = ['_' => 'pageBlockDetails', 'open' => Bool, 'blocks' => [PageBlock, PageBlock], 'title' => RichText]; +``` diff --git a/docs/API_docs/constructors/pageBlockDivider.md b/docs/API_docs/constructors/pageBlockDivider.md new file mode 100644 index 0000000000..8617d4ac5b --- /dev/null +++ b/docs/API_docs/constructors/pageBlockDivider.md @@ -0,0 +1,24 @@ +--- +title: "pageBlockDivider" +description: "An empty block separating a page" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pageBlockDivider +[Back to constructors index](/API_docs/constructors/index.html) + + + +An empty block separating a page + + + + +### Type: [PageBlock](/API_docs/types/PageBlock.html) + + +### Example: + +``` +$pageBlockDivider = ['_' => 'pageBlockDivider']; +``` diff --git a/docs/API_docs/constructors/pageBlockEmbed.md b/docs/API_docs/constructors/pageBlockEmbed.md new file mode 100644 index 0000000000..a63619622b --- /dev/null +++ b/docs/API_docs/constructors/pageBlockEmbed.md @@ -0,0 +1,36 @@ +--- +title: "pageBlockEmbed" +description: "An embedded webpage" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pageBlockEmbed +[Back to constructors index](/API_docs/constructors/index.html) + + + +An embedded webpage + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|full\_width|[Bool](/API_docs/types/Bool.html) | Optional|Whether the block should be full width| +|allow\_scrolling|[Bool](/API_docs/types/Bool.html) | Optional|Whether scrolling should be allowed| +|url|[string](/API_docs/types/string.html) | Optional|Web page URL, if available| +|html|[string](/API_docs/types/string.html) | Optional|HTML-markup of the embedded page| +|poster\_photo\_id|[long](/API_docs/types/long.html) | Optional|Poster photo, if available| +|w|[int](/API_docs/types/int.html) | Optional|Block width, if known| +|h|[int](/API_docs/types/int.html) | Optional|Block height, if known| +|caption|[PageCaption](/API_docs/types/PageCaption.html) | Yes|Caption| + + + +### Type: [PageBlock](/API_docs/types/PageBlock.html) + + +### Example: + +``` +$pageBlockEmbed = ['_' => 'pageBlockEmbed', 'full_width' => Bool, 'allow_scrolling' => Bool, 'url' => 'string', 'html' => 'string', 'poster_photo_id' => long, 'w' => int, 'h' => int, 'caption' => PageCaption]; +``` diff --git a/docs/API_docs/constructors/pageBlockEmbedPost.md b/docs/API_docs/constructors/pageBlockEmbedPost.md new file mode 100644 index 0000000000..a463318bd6 --- /dev/null +++ b/docs/API_docs/constructors/pageBlockEmbedPost.md @@ -0,0 +1,35 @@ +--- +title: "pageBlockEmbedPost" +description: "An embedded post" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pageBlockEmbedPost +[Back to constructors index](/API_docs/constructors/index.html) + + + +An embedded post + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|Web page URL| +|webpage\_id|[long](/API_docs/types/long.html) | Yes|ID of generated webpage preview| +|author\_photo\_id|[long](/API_docs/types/long.html) | Yes|ID of the author's photo| +|author|[string](/API_docs/types/string.html) | Yes|Author name| +|date|[int](/API_docs/types/int.html) | Yes|Creation date| +|blocks|Array of [PageBlock](/API_docs/types/PageBlock.html) | Yes|Post contents| +|caption|[PageCaption](/API_docs/types/PageCaption.html) | Yes|Caption| + + + +### Type: [PageBlock](/API_docs/types/PageBlock.html) + + +### Example: + +``` +$pageBlockEmbedPost = ['_' => 'pageBlockEmbedPost', 'url' => 'string', 'webpage_id' => long, 'author_photo_id' => long, 'author' => 'string', 'date' => int, 'blocks' => [PageBlock, PageBlock], 'caption' => PageCaption]; +``` diff --git a/docs/API_docs/constructors/pageBlockFooter.md b/docs/API_docs/constructors/pageBlockFooter.md new file mode 100644 index 0000000000..95d00c22cf --- /dev/null +++ b/docs/API_docs/constructors/pageBlockFooter.md @@ -0,0 +1,29 @@ +--- +title: "pageBlockFooter" +description: "Page footer" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pageBlockFooter +[Back to constructors index](/API_docs/constructors/index.html) + + + +Page footer + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[RichText](/API_docs/types/RichText.html) | Yes|Contents| + + + +### Type: [PageBlock](/API_docs/types/PageBlock.html) + + +### Example: + +``` +$pageBlockFooter = ['_' => 'pageBlockFooter', 'text' => RichText]; +``` diff --git a/docs/API_docs/constructors/pageBlockHeader.md b/docs/API_docs/constructors/pageBlockHeader.md new file mode 100644 index 0000000000..77e68a4fc0 --- /dev/null +++ b/docs/API_docs/constructors/pageBlockHeader.md @@ -0,0 +1,29 @@ +--- +title: "pageBlockHeader" +description: "Page header" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pageBlockHeader +[Back to constructors index](/API_docs/constructors/index.html) + + + +Page header + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[RichText](/API_docs/types/RichText.html) | Yes|Contents| + + + +### Type: [PageBlock](/API_docs/types/PageBlock.html) + + +### Example: + +``` +$pageBlockHeader = ['_' => 'pageBlockHeader', 'text' => RichText]; +``` diff --git a/docs/API_docs/constructors/pageBlockKicker.md b/docs/API_docs/constructors/pageBlockKicker.md new file mode 100644 index 0000000000..ac1ca05bb3 --- /dev/null +++ b/docs/API_docs/constructors/pageBlockKicker.md @@ -0,0 +1,29 @@ +--- +title: "pageBlockKicker" +description: "Kicker" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pageBlockKicker +[Back to constructors index](/API_docs/constructors/index.html) + + + +Kicker + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[RichText](/API_docs/types/RichText.html) | Yes|Contents| + + + +### Type: [PageBlock](/API_docs/types/PageBlock.html) + + +### Example: + +``` +$pageBlockKicker = ['_' => 'pageBlockKicker', 'text' => RichText]; +``` diff --git a/docs/API_docs/constructors/pageBlockList.md b/docs/API_docs/constructors/pageBlockList.md new file mode 100644 index 0000000000..08e5577667 --- /dev/null +++ b/docs/API_docs/constructors/pageBlockList.md @@ -0,0 +1,29 @@ +--- +title: "pageBlockList" +description: "Unordered list of IV blocks" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pageBlockList +[Back to constructors index](/API_docs/constructors/index.html) + + + +Unordered list of IV blocks + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|items|Array of [PageListItem](/API_docs/types/PageListItem.html) | Yes|List of blocks in an IV page| + + + +### Type: [PageBlock](/API_docs/types/PageBlock.html) + + +### Example: + +``` +$pageBlockList = ['_' => 'pageBlockList', 'items' => [PageListItem, PageListItem]]; +``` diff --git a/docs/API_docs/constructors/pageBlockMap.md b/docs/API_docs/constructors/pageBlockMap.md new file mode 100644 index 0000000000..6ee0c18f7e --- /dev/null +++ b/docs/API_docs/constructors/pageBlockMap.md @@ -0,0 +1,33 @@ +--- +title: "pageBlockMap" +description: "A map" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pageBlockMap +[Back to constructors index](/API_docs/constructors/index.html) + + + +A map + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|geo|[GeoPoint](/API_docs/types/GeoPoint.html) | Optional|Location of the map center| +|zoom|[int](/API_docs/types/int.html) | Yes|Map zoom level; 13-20| +|w|[int](/API_docs/types/int.html) | Yes|Map width in pixels before applying scale; 16-102| +|h|[int](/API_docs/types/int.html) | Yes|Map height in pixels before applying scale; 16-1024| +|caption|[PageCaption](/API_docs/types/PageCaption.html) | Yes|Caption| + + + +### Type: [PageBlock](/API_docs/types/PageBlock.html) + + +### Example: + +``` +$pageBlockMap = ['_' => 'pageBlockMap', 'geo' => GeoPoint, 'zoom' => int, 'w' => int, 'h' => int, 'caption' => PageCaption]; +``` diff --git a/docs/API_docs/constructors/pageBlockOrderedList.md b/docs/API_docs/constructors/pageBlockOrderedList.md new file mode 100644 index 0000000000..6987aedef6 --- /dev/null +++ b/docs/API_docs/constructors/pageBlockOrderedList.md @@ -0,0 +1,29 @@ +--- +title: "pageBlockOrderedList" +description: "Ordered list of IV blocks" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pageBlockOrderedList +[Back to constructors index](/API_docs/constructors/index.html) + + + +Ordered list of IV blocks + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|items|Array of [PageListOrderedItem](/API_docs/types/PageListOrderedItem.html) | Yes|List items| + + + +### Type: [PageBlock](/API_docs/types/PageBlock.html) + + +### Example: + +``` +$pageBlockOrderedList = ['_' => 'pageBlockOrderedList', 'items' => [PageListOrderedItem, PageListOrderedItem]]; +``` diff --git a/docs/API_docs/constructors/pageBlockParagraph.md b/docs/API_docs/constructors/pageBlockParagraph.md new file mode 100644 index 0000000000..081091f475 --- /dev/null +++ b/docs/API_docs/constructors/pageBlockParagraph.md @@ -0,0 +1,29 @@ +--- +title: "pageBlockParagraph" +description: "A paragraph" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pageBlockParagraph +[Back to constructors index](/API_docs/constructors/index.html) + + + +A paragraph + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[RichText](/API_docs/types/RichText.html) | Yes|Text| + + + +### Type: [PageBlock](/API_docs/types/PageBlock.html) + + +### Example: + +``` +$pageBlockParagraph = ['_' => 'pageBlockParagraph', 'text' => RichText]; +``` diff --git a/docs/API_docs/constructors/pageBlockPhoto.md b/docs/API_docs/constructors/pageBlockPhoto.md new file mode 100644 index 0000000000..45134516dd --- /dev/null +++ b/docs/API_docs/constructors/pageBlockPhoto.md @@ -0,0 +1,32 @@ +--- +title: "pageBlockPhoto" +description: "A photo" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pageBlockPhoto +[Back to constructors index](/API_docs/constructors/index.html) + + + +A photo + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|photo\_id|[long](/API_docs/types/long.html) | Yes|Photo ID| +|caption|[PageCaption](/API_docs/types/PageCaption.html) | Yes|Caption| +|url|[string](/API_docs/types/string.html) | Optional|HTTP URL of page the photo leads to when clicked| +|webpage\_id|[long](/API_docs/types/long.html) | Optional|ID of preview of the page the photo leads to when clicked| + + + +### Type: [PageBlock](/API_docs/types/PageBlock.html) + + +### Example: + +``` +$pageBlockPhoto = ['_' => 'pageBlockPhoto', 'photo_id' => long, 'caption' => PageCaption, 'url' => 'string', 'webpage_id' => long]; +``` diff --git a/docs/API_docs/constructors/pageBlockPreformatted.md b/docs/API_docs/constructors/pageBlockPreformatted.md new file mode 100644 index 0000000000..3d21e62f80 --- /dev/null +++ b/docs/API_docs/constructors/pageBlockPreformatted.md @@ -0,0 +1,30 @@ +--- +title: "pageBlockPreformatted" +description: "Preformatted (
 text)"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: pageBlockPreformatted  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Preformatted (`
` text)
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|text|[RichText](/API_docs/types/RichText.html) | Yes|Text|
+|language|[string](/API_docs/types/string.html) | Yes|Programming language of preformatted text|
+
+
+
+### Type: [PageBlock](/API_docs/types/PageBlock.html)
+
+
+### Example:
+
+```
+$pageBlockPreformatted = ['_' => 'pageBlockPreformatted', 'text' => RichText, 'language' => 'string'];
+```  
diff --git a/docs/API_docs/constructors/pageBlockPullquote.md b/docs/API_docs/constructors/pageBlockPullquote.md
new file mode 100644
index 0000000000..e9c2238f2f
--- /dev/null
+++ b/docs/API_docs/constructors/pageBlockPullquote.md
@@ -0,0 +1,30 @@
+---
+title: "pageBlockPullquote"
+description: "Pullquote"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: pageBlockPullquote  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Pullquote
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|text|[RichText](/API_docs/types/RichText.html) | Yes|Text|
+|caption|[RichText](/API_docs/types/RichText.html) | Yes|Caption|
+
+
+
+### Type: [PageBlock](/API_docs/types/PageBlock.html)
+
+
+### Example:
+
+```
+$pageBlockPullquote = ['_' => 'pageBlockPullquote', 'text' => RichText, 'caption' => RichText];
+```  
diff --git a/docs/API_docs/constructors/pageBlockRelatedArticles.md b/docs/API_docs/constructors/pageBlockRelatedArticles.md
new file mode 100644
index 0000000000..b77f87586d
--- /dev/null
+++ b/docs/API_docs/constructors/pageBlockRelatedArticles.md
@@ -0,0 +1,30 @@
+---
+title: "pageBlockRelatedArticles"
+description: "Related articles"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: pageBlockRelatedArticles  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Related articles
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|title|[RichText](/API_docs/types/RichText.html) | Yes|Title|
+|articles|Array of [PageRelatedArticle](/API_docs/types/PageRelatedArticle.html) | Yes|Related articles|
+
+
+
+### Type: [PageBlock](/API_docs/types/PageBlock.html)
+
+
+### Example:
+
+```
+$pageBlockRelatedArticles = ['_' => 'pageBlockRelatedArticles', 'title' => RichText, 'articles' => [PageRelatedArticle, PageRelatedArticle]];
+```  
diff --git a/docs/API_docs/constructors/pageBlockSlideshow.md b/docs/API_docs/constructors/pageBlockSlideshow.md
new file mode 100644
index 0000000000..c392dece4b
--- /dev/null
+++ b/docs/API_docs/constructors/pageBlockSlideshow.md
@@ -0,0 +1,30 @@
+---
+title: "pageBlockSlideshow"
+description: "Slideshow"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: pageBlockSlideshow  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Slideshow
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|items|Array of [PageBlock](/API_docs/types/PageBlock.html) | Yes|Slideshow items|
+|caption|[PageCaption](/API_docs/types/PageCaption.html) | Yes|Caption|
+
+
+
+### Type: [PageBlock](/API_docs/types/PageBlock.html)
+
+
+### Example:
+
+```
+$pageBlockSlideshow = ['_' => 'pageBlockSlideshow', 'items' => [PageBlock, PageBlock], 'caption' => PageCaption];
+```  
diff --git a/docs/API_docs/constructors/pageBlockSubheader.md b/docs/API_docs/constructors/pageBlockSubheader.md
new file mode 100644
index 0000000000..0d4c697d72
--- /dev/null
+++ b/docs/API_docs/constructors/pageBlockSubheader.md
@@ -0,0 +1,29 @@
+---
+title: "pageBlockSubheader"
+description: "Subheader"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: pageBlockSubheader  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Subheader
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|text|[RichText](/API_docs/types/RichText.html) | Yes|Subheader|
+
+
+
+### Type: [PageBlock](/API_docs/types/PageBlock.html)
+
+
+### Example:
+
+```
+$pageBlockSubheader = ['_' => 'pageBlockSubheader', 'text' => RichText];
+```  
diff --git a/docs/API_docs/constructors/pageBlockSubtitle.md b/docs/API_docs/constructors/pageBlockSubtitle.md
new file mode 100644
index 0000000000..d185f7089e
--- /dev/null
+++ b/docs/API_docs/constructors/pageBlockSubtitle.md
@@ -0,0 +1,29 @@
+---
+title: "pageBlockSubtitle"
+description: "Subtitle"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: pageBlockSubtitle  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Subtitle
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|text|[RichText](/API_docs/types/RichText.html) | Yes|Text|
+
+
+
+### Type: [PageBlock](/API_docs/types/PageBlock.html)
+
+
+### Example:
+
+```
+$pageBlockSubtitle = ['_' => 'pageBlockSubtitle', 'text' => RichText];
+```  
diff --git a/docs/API_docs/constructors/pageBlockTable.md b/docs/API_docs/constructors/pageBlockTable.md
new file mode 100644
index 0000000000..7b5cd3f4d1
--- /dev/null
+++ b/docs/API_docs/constructors/pageBlockTable.md
@@ -0,0 +1,32 @@
+---
+title: "pageBlockTable"
+description: "Table"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: pageBlockTable  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Table
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|bordered|[Bool](/API_docs/types/Bool.html) | Optional|Does the table have a visible border?|
+|striped|[Bool](/API_docs/types/Bool.html) | Optional|Is the table striped?|
+|title|[RichText](/API_docs/types/RichText.html) | Yes|Title|
+|rows|Array of [PageTableRow](/API_docs/types/PageTableRow.html) | Yes|Table rows|
+
+
+
+### Type: [PageBlock](/API_docs/types/PageBlock.html)
+
+
+### Example:
+
+```
+$pageBlockTable = ['_' => 'pageBlockTable', 'bordered' => Bool, 'striped' => Bool, 'title' => RichText, 'rows' => [PageTableRow, PageTableRow]];
+```  
diff --git a/docs/API_docs/constructors/pageBlockTitle.md b/docs/API_docs/constructors/pageBlockTitle.md
new file mode 100644
index 0000000000..d2767f52ef
--- /dev/null
+++ b/docs/API_docs/constructors/pageBlockTitle.md
@@ -0,0 +1,29 @@
+---
+title: "pageBlockTitle"
+description: "Title"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: pageBlockTitle  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Title
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|text|[RichText](/API_docs/types/RichText.html) | Yes|Title|
+
+
+
+### Type: [PageBlock](/API_docs/types/PageBlock.html)
+
+
+### Example:
+
+```
+$pageBlockTitle = ['_' => 'pageBlockTitle', 'text' => RichText];
+```  
diff --git a/docs/API_docs/constructors/pageBlockUnsupported.md b/docs/API_docs/constructors/pageBlockUnsupported.md
new file mode 100644
index 0000000000..177c029704
--- /dev/null
+++ b/docs/API_docs/constructors/pageBlockUnsupported.md
@@ -0,0 +1,24 @@
+---
+title: "pageBlockUnsupported"
+description: "Unsupported IV element"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: pageBlockUnsupported  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Unsupported IV element
+
+
+
+
+### Type: [PageBlock](/API_docs/types/PageBlock.html)
+
+
+### Example:
+
+```
+$pageBlockUnsupported = ['_' => 'pageBlockUnsupported'];
+```  
diff --git a/docs/API_docs/constructors/pageBlockVideo.md b/docs/API_docs/constructors/pageBlockVideo.md
new file mode 100644
index 0000000000..f83152af16
--- /dev/null
+++ b/docs/API_docs/constructors/pageBlockVideo.md
@@ -0,0 +1,32 @@
+---
+title: "pageBlockVideo"
+description: "Video"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: pageBlockVideo  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Video
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|autoplay|[Bool](/API_docs/types/Bool.html) | Optional|Whether the video is set to autoplay|
+|loop|[Bool](/API_docs/types/Bool.html) | Optional|Whether the video is set to loop|
+|video\_id|[long](/API_docs/types/long.html) | Yes|Video ID|
+|caption|[PageCaption](/API_docs/types/PageCaption.html) | Yes|Caption|
+
+
+
+### Type: [PageBlock](/API_docs/types/PageBlock.html)
+
+
+### Example:
+
+```
+$pageBlockVideo = ['_' => 'pageBlockVideo', 'autoplay' => Bool, 'loop' => Bool, 'video_id' => long, 'caption' => PageCaption];
+```  
diff --git a/docs/API_docs/constructors/pageCaption.md b/docs/API_docs/constructors/pageCaption.md
new file mode 100644
index 0000000000..335d616de1
--- /dev/null
+++ b/docs/API_docs/constructors/pageCaption.md
@@ -0,0 +1,30 @@
+---
+title: "pageCaption"
+description: "Page caption"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: pageCaption  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Page caption
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|text|[RichText](/API_docs/types/RichText.html) | Yes|Caption|
+|credit|[RichText](/API_docs/types/RichText.html) | Yes|Credits|
+
+
+
+### Type: [PageCaption](/API_docs/types/PageCaption.html)
+
+
+### Example:
+
+```
+$pageCaption = ['_' => 'pageCaption', 'text' => RichText, 'credit' => RichText];
+```  
diff --git a/docs/API_docs/constructors/pageListItemBlocks.md b/docs/API_docs/constructors/pageListItemBlocks.md
new file mode 100644
index 0000000000..d3b1c40314
--- /dev/null
+++ b/docs/API_docs/constructors/pageListItemBlocks.md
@@ -0,0 +1,29 @@
+---
+title: "pageListItemBlocks"
+description: "List item"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: pageListItemBlocks  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+List item
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|blocks|Array of [PageBlock](/API_docs/types/PageBlock.html) | Yes|Blocks|
+
+
+
+### Type: [PageListItem](/API_docs/types/PageListItem.html)
+
+
+### Example:
+
+```
+$pageListItemBlocks = ['_' => 'pageListItemBlocks', 'blocks' => [PageBlock, PageBlock]];
+```  
diff --git a/docs/API_docs/constructors/pageListItemText.md b/docs/API_docs/constructors/pageListItemText.md
new file mode 100644
index 0000000000..389d5ff766
--- /dev/null
+++ b/docs/API_docs/constructors/pageListItemText.md
@@ -0,0 +1,29 @@
+---
+title: "pageListItemText"
+description: "List item"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: pageListItemText  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+List item
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|text|[RichText](/API_docs/types/RichText.html) | Yes|Text|
+
+
+
+### Type: [PageListItem](/API_docs/types/PageListItem.html)
+
+
+### Example:
+
+```
+$pageListItemText = ['_' => 'pageListItemText', 'text' => RichText];
+```  
diff --git a/docs/API_docs/constructors/pageListOrderedItemBlocks.md b/docs/API_docs/constructors/pageListOrderedItemBlocks.md
new file mode 100644
index 0000000000..3f8a34ef91
--- /dev/null
+++ b/docs/API_docs/constructors/pageListOrderedItemBlocks.md
@@ -0,0 +1,30 @@
+---
+title: "pageListOrderedItemBlocks"
+description: "Ordered list of IV blocks"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: pageListOrderedItemBlocks  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Ordered list of [IV](https://instantview.telegram.org) blocks
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|num|[string](/API_docs/types/string.html) | Yes|Number of element within ordered list|
+|blocks|Array of [PageBlock](/API_docs/types/PageBlock.html) | Yes|Item contents|
+
+
+
+### Type: [PageListOrderedItem](/API_docs/types/PageListOrderedItem.html)
+
+
+### Example:
+
+```
+$pageListOrderedItemBlocks = ['_' => 'pageListOrderedItemBlocks', 'num' => 'string', 'blocks' => [PageBlock, PageBlock]];
+```  
diff --git a/docs/API_docs/constructors/pageListOrderedItemText.md b/docs/API_docs/constructors/pageListOrderedItemText.md
new file mode 100644
index 0000000000..a3a77a9e08
--- /dev/null
+++ b/docs/API_docs/constructors/pageListOrderedItemText.md
@@ -0,0 +1,30 @@
+---
+title: "pageListOrderedItemText"
+description: "Ordered list of text items"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: pageListOrderedItemText  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Ordered list of text items
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|num|[string](/API_docs/types/string.html) | Yes|Number of element within ordered list|
+|text|[RichText](/API_docs/types/RichText.html) | Yes|Text|
+
+
+
+### Type: [PageListOrderedItem](/API_docs/types/PageListOrderedItem.html)
+
+
+### Example:
+
+```
+$pageListOrderedItemText = ['_' => 'pageListOrderedItemText', 'num' => 'string', 'text' => RichText];
+```  
diff --git a/docs/API_docs/constructors/pageRelatedArticle.md b/docs/API_docs/constructors/pageRelatedArticle.md
new file mode 100644
index 0000000000..130dfe998d
--- /dev/null
+++ b/docs/API_docs/constructors/pageRelatedArticle.md
@@ -0,0 +1,35 @@
+---
+title: "pageRelatedArticle"
+description: "Related article"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: pageRelatedArticle  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Related article
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|url|[string](/API_docs/types/string.html) | Yes|URL of article|
+|webpage\_id|[long](/API_docs/types/long.html) | Yes|Webpage ID of generated IV preview|
+|title|[string](/API_docs/types/string.html) | Optional|Title|
+|description|[string](/API_docs/types/string.html) | Optional|Description|
+|photo\_id|[long](/API_docs/types/long.html) | Optional|ID of preview photo|
+|author|[string](/API_docs/types/string.html) | Optional|Author name|
+|published\_date|[int](/API_docs/types/int.html) | Optional|Date of publication|
+
+
+
+### Type: [PageRelatedArticle](/API_docs/types/PageRelatedArticle.html)
+
+
+### Example:
+
+```
+$pageRelatedArticle = ['_' => 'pageRelatedArticle', 'url' => 'string', 'webpage_id' => long, 'title' => 'string', 'description' => 'string', 'photo_id' => long, 'author' => 'string', 'published_date' => int];
+```  
diff --git a/docs/API_docs/constructors/pageTableCell.md b/docs/API_docs/constructors/pageTableCell.md
new file mode 100644
index 0000000000..0b161eb93a
--- /dev/null
+++ b/docs/API_docs/constructors/pageTableCell.md
@@ -0,0 +1,36 @@
+---
+title: "pageTableCell"
+description: "Table cell"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: pageTableCell  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Table cell
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|header|[Bool](/API_docs/types/Bool.html) | Optional|Is this element part of the column header|
+|align\_center|[Bool](/API_docs/types/Bool.html) | Optional|Horizontally centered block|
+|align\_right|[Bool](/API_docs/types/Bool.html) | Optional|Right-aligned block|
+|valign\_middle|[Bool](/API_docs/types/Bool.html) | Optional|Vertically centered block|
+|valign\_bottom|[Bool](/API_docs/types/Bool.html) | Optional|Block vertically-aligned to the bottom|
+|text|[RichText](/API_docs/types/RichText.html) | Optional|Content|
+|colspan|[int](/API_docs/types/int.html) | Optional|For how many columns should this cell extend|
+|rowspan|[int](/API_docs/types/int.html) | Optional|For how many rows should this cell extend|
+
+
+
+### Type: [PageTableCell](/API_docs/types/PageTableCell.html)
+
+
+### Example:
+
+```
+$pageTableCell = ['_' => 'pageTableCell', 'header' => Bool, 'align_center' => Bool, 'align_right' => Bool, 'valign_middle' => Bool, 'valign_bottom' => Bool, 'text' => RichText, 'colspan' => int, 'rowspan' => int];
+```  
diff --git a/docs/API_docs/constructors/pageTableRow.md b/docs/API_docs/constructors/pageTableRow.md
new file mode 100644
index 0000000000..3ef974c71d
--- /dev/null
+++ b/docs/API_docs/constructors/pageTableRow.md
@@ -0,0 +1,29 @@
+---
+title: "pageTableRow"
+description: "Table row"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: pageTableRow  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Table row
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|cells|Array of [PageTableCell](/API_docs/types/PageTableCell.html) | Yes|Table cells|
+
+
+
+### Type: [PageTableRow](/API_docs/types/PageTableRow.html)
+
+
+### Example:
+
+```
+$pageTableRow = ['_' => 'pageTableRow', 'cells' => [PageTableCell, PageTableCell]];
+```  
diff --git a/docs/API_docs/constructors/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow.md b/docs/API_docs/constructors/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow.md
new file mode 100644
index 0000000000..b3a55fa223
--- /dev/null
+++ b/docs/API_docs/constructors/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow.md
@@ -0,0 +1,32 @@
+---
+title: "passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow"
+description: "This key derivation algorithm defines that SRP 2FA login must be used"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+This key derivation algorithm defines that [SRP 2FA login](https://core.telegram.org/api/srp) must be used
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|salt1|[bytes](/API_docs/types/bytes.html) | Yes|One of two salts used by the derivation function (see [SRP 2FA login](https://core.telegram.org/api/srp))|
+|salt2|[bytes](/API_docs/types/bytes.html) | Yes|One of two salts used by the derivation function (see [SRP 2FA login](https://core.telegram.org/api/srp))|
+|g|[int](/API_docs/types/int.html) | Yes|Base (see [SRP 2FA login](https://core.telegram.org/api/srp))|
+|p|[bytes](/API_docs/types/bytes.html) | Yes|2048-bit modulus (see [SRP 2FA login](https://core.telegram.org/api/srp))|
+
+
+
+### Type: [PasswordKdfAlgo](/API_docs/types/PasswordKdfAlgo.html)
+
+
+### Example:
+
+```
+$passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow = ['_' => 'passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow', 'salt1' => 'bytes', 'salt2' => 'bytes', 'g' => int, 'p' => 'bytes'];
+```  
diff --git a/docs/API_docs/constructors/passwordKdfAlgoUnknown.md b/docs/API_docs/constructors/passwordKdfAlgoUnknown.md
new file mode 100644
index 0000000000..5ea3e5272b
--- /dev/null
+++ b/docs/API_docs/constructors/passwordKdfAlgoUnknown.md
@@ -0,0 +1,24 @@
+---
+title: "passwordKdfAlgoUnknown"
+description: "Unknown KDF (most likely, the client is outdated and does not support the specified KDF algorithm)"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: passwordKdfAlgoUnknown  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Unknown KDF (most likely, the client is outdated and does not support the specified KDF algorithm)
+
+
+
+
+### Type: [PasswordKdfAlgo](/API_docs/types/PasswordKdfAlgo.html)
+
+
+### Example:
+
+```
+$passwordKdfAlgoUnknown = ['_' => 'passwordKdfAlgoUnknown'];
+```  
diff --git a/docs/API_docs/constructors/paymentCharge.md b/docs/API_docs/constructors/paymentCharge.md
new file mode 100644
index 0000000000..ff5629fbcb
--- /dev/null
+++ b/docs/API_docs/constructors/paymentCharge.md
@@ -0,0 +1,30 @@
+---
+title: "paymentCharge"
+description: "Payment identifier"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: paymentCharge  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Payment identifier
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|id|[string](/API_docs/types/string.html) | Yes|Telegram payment identifier|
+|provider\_charge\_id|[string](/API_docs/types/string.html) | Yes|Provider payment identifier|
+
+
+
+### Type: [PaymentCharge](/API_docs/types/PaymentCharge.html)
+
+
+### Example:
+
+```
+$paymentCharge = ['_' => 'paymentCharge', 'id' => 'string', 'provider_charge_id' => 'string'];
+```  
diff --git a/docs/API_docs/constructors/paymentFormMethod.md b/docs/API_docs/constructors/paymentFormMethod.md
new file mode 100644
index 0000000000..414e3b579d
--- /dev/null
+++ b/docs/API_docs/constructors/paymentFormMethod.md
@@ -0,0 +1,30 @@
+---
+title: "paymentFormMethod"
+description: "Represents an additional payment method"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: paymentFormMethod  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Represents an additional payment method
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|url|[string](/API_docs/types/string.html) | Yes|URL to open in a webview to process the payment|
+|title|[string](/API_docs/types/string.html) | Yes|Payment method description|
+
+
+
+### Type: [PaymentFormMethod](/API_docs/types/PaymentFormMethod.html)
+
+
+### Example:
+
+```
+$paymentFormMethod = ['_' => 'paymentFormMethod', 'url' => 'string', 'title' => 'string'];
+```  
diff --git a/docs/API_docs/constructors/paymentRequestedInfo.md b/docs/API_docs/constructors/paymentRequestedInfo.md
new file mode 100644
index 0000000000..e504b74777
--- /dev/null
+++ b/docs/API_docs/constructors/paymentRequestedInfo.md
@@ -0,0 +1,32 @@
+---
+title: "paymentRequestedInfo"
+description: "Order info provided by the user"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: paymentRequestedInfo  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Order info provided by the user
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|name|[string](/API_docs/types/string.html) | Optional|User's full name|
+|phone|[string](/API_docs/types/string.html) | Optional|User's phone number|
+|email|[string](/API_docs/types/string.html) | Optional|User's email address|
+|shipping\_address|[PostAddress](/API_docs/types/PostAddress.html) | Optional|User's shipping address|
+
+
+
+### Type: [PaymentRequestedInfo](/API_docs/types/PaymentRequestedInfo.html)
+
+
+### Example:
+
+```
+$paymentRequestedInfo = ['_' => 'paymentRequestedInfo', 'name' => 'string', 'phone' => 'string', 'email' => 'string', 'shipping_address' => PostAddress];
+```  
diff --git a/docs/API_docs/constructors/paymentSavedCredentialsCard.md b/docs/API_docs/constructors/paymentSavedCredentialsCard.md
new file mode 100644
index 0000000000..33168d8daa
--- /dev/null
+++ b/docs/API_docs/constructors/paymentSavedCredentialsCard.md
@@ -0,0 +1,30 @@
+---
+title: "paymentSavedCredentialsCard"
+description: "Saved credit card"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+---
+# Constructor: paymentSavedCredentialsCard  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Saved credit card
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|id|[string](/API_docs/types/string.html) | Yes|Card ID|
+|title|[string](/API_docs/types/string.html) | Yes|Title|
+
+
+
+### Type: [PaymentSavedCredentials](/API_docs/types/PaymentSavedCredentials.html)
+
+
+### Example:
+
+```
+$paymentSavedCredentialsCard = ['_' => 'paymentSavedCredentialsCard', 'id' => 'string', 'title' => 'string'];
+```  
diff --git a/docs/API_docs/constructors/payments.bankCardData.md b/docs/API_docs/constructors/payments.bankCardData.md
new file mode 100644
index 0000000000..2463ed57dd
--- /dev/null
+++ b/docs/API_docs/constructors/payments.bankCardData.md
@@ -0,0 +1,31 @@
+---
+title: "payments.bankCardData"
+description: "Credit card info, provided by the card's bank(s)"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+redirect_from: /API_docs/constructors/payments_bankCardData.html
+---
+# Constructor: payments.bankCardData  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Credit card info, provided by the card's bank(s)
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|title|[string](/API_docs/types/string.html) | Yes|Credit card title|
+|open\_urls|Array of [BankCardOpenUrl](/API_docs/types/BankCardOpenUrl.html) | Yes|Info URL(s) provided by the card's bank(s)|
+
+
+
+### Type: [payments.BankCardData](/API_docs/types/payments.BankCardData.html)
+
+
+### Example:
+
+```
+$payments_bankCardData = ['_' => 'payments.bankCardData', 'title' => 'string', 'open_urls' => [BankCardOpenUrl, BankCardOpenUrl]];
+```  
diff --git a/docs/API_docs/constructors/payments.checkedGiftCode.md b/docs/API_docs/constructors/payments.checkedGiftCode.md
new file mode 100644
index 0000000000..c03305151c
--- /dev/null
+++ b/docs/API_docs/constructors/payments.checkedGiftCode.md
@@ -0,0 +1,38 @@
+---
+title: "payments.checkedGiftCode"
+description: "Contains info about a Telegram Premium giftcode link."
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+redirect_from: /API_docs/constructors/payments_checkedGiftCode.html
+---
+# Constructor: payments.checkedGiftCode  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Contains info about a [Telegram Premium giftcode link](https://core.telegram.org/api/links#premium-giftcode-links).
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|via\_giveaway|[Bool](/API_docs/types/Bool.html) | Optional|Whether this giftcode was created by a [giveaway](https://core.telegram.org/api/giveaways).|
+|from\_id|[Peer](/API_docs/types/Peer.html) | Optional|The peer that created the gift code.|
+|giveaway\_msg\_id|[int](/API_docs/types/int.html) | Optional|Message ID of the giveaway in the channel specified in `from_id`.|
+|to\_id|[long](/API_docs/types/long.html) | Optional|The destination user of the gift.|
+|date|[int](/API_docs/types/int.html) | Yes|Creation date of the gift code.|
+|months|[int](/API_docs/types/int.html) | Yes|Duration in months of the gifted [Telegram Premium](https://core.telegram.org/api/premium) subscription.|
+|used\_date|[int](/API_docs/types/int.html) | Optional|When was the giftcode imported, if it was imported.|
+|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Mentioned chats|
+|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users|
+
+
+
+### Type: [payments.CheckedGiftCode](/API_docs/types/payments.CheckedGiftCode.html)
+
+
+### Example:
+
+```
+$payments_checkedGiftCode = ['_' => 'payments.checkedGiftCode', 'via_giveaway' => Bool, 'from_id' => Peer, 'giveaway_msg_id' => int, 'to_id' => long, 'date' => int, 'months' => int, 'used_date' => int, 'chats' => [Chat, Chat], 'users' => [User, User]];
+```  
diff --git a/docs/API_docs/constructors/payments.exportedInvoice.md b/docs/API_docs/constructors/payments.exportedInvoice.md
new file mode 100644
index 0000000000..a225382a30
--- /dev/null
+++ b/docs/API_docs/constructors/payments.exportedInvoice.md
@@ -0,0 +1,30 @@
+---
+title: "payments.exportedInvoice"
+description: "Exported invoice deep link"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+redirect_from: /API_docs/constructors/payments_exportedInvoice.html
+---
+# Constructor: payments.exportedInvoice  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Exported [invoice deep link](https://core.telegram.org/api/links#invoice-links)
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|url|[string](/API_docs/types/string.html) | Yes|Exported [invoice deep link](https://core.telegram.org/api/links#invoice-links)|
+
+
+
+### Type: [payments.ExportedInvoice](/API_docs/types/payments.ExportedInvoice.html)
+
+
+### Example:
+
+```
+$payments_exportedInvoice = ['_' => 'payments.exportedInvoice', 'url' => 'string'];
+```  
diff --git a/docs/API_docs/constructors/payments.giveawayInfo.md b/docs/API_docs/constructors/payments.giveawayInfo.md
new file mode 100644
index 0000000000..b053e9b209
--- /dev/null
+++ b/docs/API_docs/constructors/payments.giveawayInfo.md
@@ -0,0 +1,37 @@
+---
+title: "payments.giveawayInfo"
+description: "Contains info about an ongoing giveaway."
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+redirect_from: /API_docs/constructors/payments_giveawayInfo.html
+---
+# Constructor: payments.giveawayInfo  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Contains info about an ongoing [giveaway](https://core.telegram.org/api/giveaways).
+
+If neither the `participating`, `joined_too_early_date`, `admin_disallowed_chat_id` or `disallowed_country` flags are set, the user is not currently participating in the giveaway but could participate by joining all the channels specified in the [messageMediaGiveaway](../constructors/messageMediaGiveaway.html).`channels` field.
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|participating|[Bool](/API_docs/types/Bool.html) | Optional|The current user is participating in the giveaway.|
+|preparing\_results|[Bool](/API_docs/types/Bool.html) | Optional|If set, the giveaway has ended and the results are being prepared.|
+|start\_date|[int](/API_docs/types/int.html) | Yes|When was the giveaway started|
+|joined\_too\_early\_date|[int](/API_docs/types/int.html) | Optional|The current user can't participate in the giveaway, because they were already a member of the channel when the giveaway started, and the `only_new_subscribers` was set when starting the giveaway.|
+|admin\_disallowed\_chat\_id|[long](/API_docs/types/long.html) | Optional|If set, the current user can't participate in the giveaway, because they are an administrator in one of the channels (ID specified in this flag) that created the giveaway.|
+|disallowed\_country|[string](/API_docs/types/string.html) | Optional|If set, the current user can't participate in this giveaway, because their phone number is from the specified disallowed country (specified as a two-letter ISO 3166-1 alpha-2 country code).|
+
+
+
+### Type: [payments.GiveawayInfo](/API_docs/types/payments.GiveawayInfo.html)
+
+
+### Example:
+
+```
+$payments_giveawayInfo = ['_' => 'payments.giveawayInfo', 'participating' => Bool, 'preparing_results' => Bool, 'start_date' => int, 'joined_too_early_date' => int, 'admin_disallowed_chat_id' => long, 'disallowed_country' => 'string'];
+```  
diff --git a/docs/API_docs/constructors/payments.giveawayInfoResults.md b/docs/API_docs/constructors/payments.giveawayInfoResults.md
new file mode 100644
index 0000000000..83f61a63a1
--- /dev/null
+++ b/docs/API_docs/constructors/payments.giveawayInfoResults.md
@@ -0,0 +1,36 @@
+---
+title: "payments.giveawayInfoResults"
+description: "A giveaway has ended."
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+redirect_from: /API_docs/constructors/payments_giveawayInfoResults.html
+---
+# Constructor: payments.giveawayInfoResults  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+A [giveaway](https://core.telegram.org/api/giveaways) has ended.
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|winner|[Bool](/API_docs/types/Bool.html) | Optional|Whether we're one of the winners of this giveaway.|
+|refunded|[Bool](/API_docs/types/Bool.html) | Optional|Whether the giveaway was canceled and was fully refunded.|
+|start\_date|[int](/API_docs/types/int.html) | Yes|Start date of the giveaway|
+|gift\_code\_slug|[string](/API_docs/types/string.html) | Optional|If we're one of the winners of this giveaway, contains the [Premium gift code](https://core.telegram.org/api/links#premium-giftcode-links), see [here »](https://core.telegram.org/api/giveaways) for more info on the full giveaway flow.|
+|finish\_date|[int](/API_docs/types/int.html) | Yes|End date of the giveaway. May be bigger than the end date specified in parameters of the giveaway.|
+|winners\_count|[int](/API_docs/types/int.html) | Yes|Number of winners in the giveaway|
+|activated\_count|[int](/API_docs/types/int.html) | Yes|Number of winners, which activated their [gift codes](https://core.telegram.org/api/links#premium-giftcode-links).|
+
+
+
+### Type: [payments.GiveawayInfo](/API_docs/types/payments.GiveawayInfo.html)
+
+
+### Example:
+
+```
+$payments_giveawayInfoResults = ['_' => 'payments.giveawayInfoResults', 'winner' => Bool, 'refunded' => Bool, 'start_date' => int, 'gift_code_slug' => 'string', 'finish_date' => int, 'winners_count' => int, 'activated_count' => int];
+```  
diff --git a/docs/API_docs/constructors/payments.paymentForm.md b/docs/API_docs/constructors/payments.paymentForm.md
new file mode 100644
index 0000000000..dba25d35c4
--- /dev/null
+++ b/docs/API_docs/constructors/payments.paymentForm.md
@@ -0,0 +1,45 @@
+---
+title: "payments.paymentForm"
+description: "Payment form"
+nav_exclude: true
+image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
+redirect_from: /API_docs/constructors/payments_paymentForm.html
+---
+# Constructor: payments.paymentForm  
+[Back to constructors index](/API_docs/constructors/index.html)
+
+
+
+Payment form
+
+### Attributes:
+
+| Name     |    Type       | Required | Description |
+|----------|---------------|----------|-------------|
+|can\_save\_credentials|[Bool](/API_docs/types/Bool.html) | Optional|Whether the user can choose to save credentials.|
+|password\_missing|[Bool](/API_docs/types/Bool.html) | Optional|Indicates that the user can save payment credentials, but only after setting up a [2FA password](https://core.telegram.org/api/srp) (currently the account doesn't have a [2FA password](https://core.telegram.org/api/srp))|
+|form\_id|[long](/API_docs/types/long.html) | Yes|Form ID|
+|bot\_id|[long](/API_docs/types/long.html) | Yes|Bot ID|
+|title|[string](/API_docs/types/string.html) | Yes|Form title|
+|description|[string](/API_docs/types/string.html) | Yes|Description|
+|photo|[WebDocument](/API_docs/types/WebDocument.html) | Optional|Product photo|
+|invoice|[Invoice](/API_docs/types/Invoice.html) | Yes|Invoice|
+|provider\_id|[long](/API_docs/types/long.html) | Yes|Payment provider ID.|
+|url|[string](/API_docs/types/string.html) | Yes|Payment form URL|
+|native\_provider|[string](/API_docs/types/string.html) | Optional|Payment provider name.
One of the following:
\- `stripe`| +|native\_params|[DataJSON](/API_docs/types/DataJSON.html) | Optional|Contains 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
| +|additional\_methods|Array of [PaymentFormMethod](/API_docs/types/PaymentFormMethod.html) | Optional|Additional payment methods| +|saved\_info|[PaymentRequestedInfo](/API_docs/types/PaymentRequestedInfo.html) | Optional|Saved server-side order information| +|saved\_credentials|Array of [PaymentSavedCredentials](/API_docs/types/PaymentSavedCredentials.html) | Optional|Contains information about saved card credentials| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users| + + + +### Type: [payments.PaymentForm](/API_docs/types/payments.PaymentForm.html) + + +### Example: + +``` +$payments_paymentForm = ['_' => 'payments.paymentForm', 'can_save_credentials' => Bool, 'password_missing' => Bool, 'form_id' => long, 'bot_id' => long, 'title' => 'string', 'description' => 'string', 'photo' => WebDocument, 'invoice' => Invoice, 'provider_id' => long, 'url' => 'string', 'native_provider' => 'string', 'native_params' => DataJSON, 'additional_methods' => [PaymentFormMethod, PaymentFormMethod], 'saved_info' => PaymentRequestedInfo, 'saved_credentials' => [PaymentSavedCredentials, PaymentSavedCredentials], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/payments.paymentReceipt.md b/docs/API_docs/constructors/payments.paymentReceipt.md new file mode 100644 index 0000000000..670712c90c --- /dev/null +++ b/docs/API_docs/constructors/payments.paymentReceipt.md @@ -0,0 +1,43 @@ +--- +title: "payments.paymentReceipt" +description: "Receipt" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/payments_paymentReceipt.html +--- +# Constructor: payments.paymentReceipt +[Back to constructors index](/API_docs/constructors/index.html) + + + +Receipt + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|date|[int](/API_docs/types/int.html) | Yes|Date of generation| +|bot\_id|[long](/API_docs/types/long.html) | Yes|Bot ID| +|provider\_id|[long](/API_docs/types/long.html) | Yes|Provider ID| +|title|[string](/API_docs/types/string.html) | Yes|Title| +|description|[string](/API_docs/types/string.html) | Yes|Description| +|photo|[WebDocument](/API_docs/types/WebDocument.html) | Optional|Photo| +|invoice|[Invoice](/API_docs/types/Invoice.html) | Yes|Invoice| +|info|[PaymentRequestedInfo](/API_docs/types/PaymentRequestedInfo.html) | Optional|Info| +|shipping|[ShippingOption](/API_docs/types/ShippingOption.html) | Optional|Selected shipping option| +|tip\_amount|[long](/API_docs/types/long.html) | Optional|Tipped amount| +|currency|[string](/API_docs/types/string.html) | Yes|Three-letter ISO 4217 [currency](https://core.telegram.org/bots/payments#supported-currencies) code| +|total\_amount|[long](/API_docs/types/long.html) | Yes|Total 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](https://core.telegram.org/bots/payments/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).| +|credentials\_title|[string](/API_docs/types/string.html) | Yes|Payment credential name| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users| + + + +### Type: [payments.PaymentReceipt](/API_docs/types/payments.PaymentReceipt.html) + + +### Example: + +``` +$payments_paymentReceipt = ['_' => 'payments.paymentReceipt', 'date' => int, 'bot_id' => long, 'provider_id' => long, 'title' => 'string', 'description' => 'string', 'photo' => WebDocument, 'invoice' => Invoice, 'info' => PaymentRequestedInfo, 'shipping' => ShippingOption, 'tip_amount' => long, 'currency' => 'string', 'total_amount' => long, 'credentials_title' => 'string', 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/payments.paymentResult.md b/docs/API_docs/constructors/payments.paymentResult.md new file mode 100644 index 0000000000..bd01d10907 --- /dev/null +++ b/docs/API_docs/constructors/payments.paymentResult.md @@ -0,0 +1,30 @@ +--- +title: "payments.paymentResult" +description: "Payment result" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/payments_paymentResult.html +--- +# Constructor: payments.paymentResult +[Back to constructors index](/API_docs/constructors/index.html) + + + +Payment result + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|updates|[Updates](/API_docs/types/Updates.html) | Yes|Info about the payment| + + + +### Type: [payments.PaymentResult](/API_docs/types/payments.PaymentResult.html) + + +### Example: + +``` +$payments_paymentResult = ['_' => 'payments.paymentResult', 'updates' => Updates]; +``` diff --git a/docs/API_docs/constructors/payments.paymentVerificationNeeded.md b/docs/API_docs/constructors/payments.paymentVerificationNeeded.md new file mode 100644 index 0000000000..b9b3eb89aa --- /dev/null +++ b/docs/API_docs/constructors/payments.paymentVerificationNeeded.md @@ -0,0 +1,30 @@ +--- +title: "payments.paymentVerificationNeeded" +description: "Payment was not successful, additional verification is needed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/payments_paymentVerificationNeeded.html +--- +# Constructor: payments.paymentVerificationNeeded +[Back to constructors index](/API_docs/constructors/index.html) + + + +Payment was not successful, additional verification is needed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|URL for additional payment credentials verification| + + + +### Type: [payments.PaymentResult](/API_docs/types/payments.PaymentResult.html) + + +### Example: + +``` +$payments_paymentVerificationNeeded = ['_' => 'payments.paymentVerificationNeeded', 'url' => 'string']; +``` diff --git a/docs/API_docs/constructors/payments.savedInfo.md b/docs/API_docs/constructors/payments.savedInfo.md new file mode 100644 index 0000000000..c2b9270995 --- /dev/null +++ b/docs/API_docs/constructors/payments.savedInfo.md @@ -0,0 +1,31 @@ +--- +title: "payments.savedInfo" +description: "Saved server-side order information" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/payments_savedInfo.html +--- +# Constructor: payments.savedInfo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Saved server-side order information + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|has\_saved\_credentials|[Bool](/API_docs/types/Bool.html) | Optional|Whether the user has some saved payment credentials| +|saved\_info|[PaymentRequestedInfo](/API_docs/types/PaymentRequestedInfo.html) | Optional|Saved server-side order information| + + + +### Type: [payments.SavedInfo](/API_docs/types/payments.SavedInfo.html) + + +### Example: + +``` +$payments_savedInfo = ['_' => 'payments.savedInfo', 'has_saved_credentials' => Bool, 'saved_info' => PaymentRequestedInfo]; +``` diff --git a/docs/API_docs/constructors/payments.validatedRequestedInfo.md b/docs/API_docs/constructors/payments.validatedRequestedInfo.md new file mode 100644 index 0000000000..e14c0495d6 --- /dev/null +++ b/docs/API_docs/constructors/payments.validatedRequestedInfo.md @@ -0,0 +1,31 @@ +--- +title: "payments.validatedRequestedInfo" +description: "Validated user-provided info" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/payments_validatedRequestedInfo.html +--- +# Constructor: payments.validatedRequestedInfo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Validated user-provided info + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[string](/API_docs/types/string.html) | Optional|ID| +|shipping\_options|Array of [ShippingOption](/API_docs/types/ShippingOption.html) | Optional|Shipping options| + + + +### Type: [payments.ValidatedRequestedInfo](/API_docs/types/payments.ValidatedRequestedInfo.html) + + +### Example: + +``` +$payments_validatedRequestedInfo = ['_' => 'payments.validatedRequestedInfo', 'id' => 'string', 'shipping_options' => [ShippingOption, ShippingOption]]; +``` diff --git a/docs/API_docs/constructors/peerBlocked.md b/docs/API_docs/constructors/peerBlocked.md new file mode 100644 index 0000000000..4791141bc1 --- /dev/null +++ b/docs/API_docs/constructors/peerBlocked.md @@ -0,0 +1,30 @@ +--- +title: "peerBlocked" +description: "Information about a blocked peer" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: peerBlocked +[Back to constructors index](/API_docs/constructors/index.html) + + + +Information about a blocked peer + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer\_id|[Peer](/API_docs/types/Peer.html) | Yes|Peer ID| +|date|[int](/API_docs/types/int.html) | Yes|When was the peer blocked| + + + +### Type: [PeerBlocked](/API_docs/types/PeerBlocked.html) + + +### Example: + +``` +$peerBlocked = ['_' => 'peerBlocked', 'peer_id' => Peer, 'date' => int]; +``` diff --git a/docs/API_docs/constructors/peerChannel.md b/docs/API_docs/constructors/peerChannel.md new file mode 100644 index 0000000000..2c29899495 --- /dev/null +++ b/docs/API_docs/constructors/peerChannel.md @@ -0,0 +1,29 @@ +--- +title: "peerChannel" +description: "Channel/supergroup" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: peerChannel +[Back to constructors index](/API_docs/constructors/index.html) + + + +Channel/supergroup + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel\_id|[long](/API_docs/types/long.html) | Yes|Channel ID| + + + +### Type: [Peer](/API_docs/types/Peer.html) + + +### Example: + +``` +$peerChannel = ['_' => 'peerChannel', 'channel_id' => long]; +``` diff --git a/docs/API_docs/constructors/peerChat.md b/docs/API_docs/constructors/peerChat.md new file mode 100644 index 0000000000..c3de55e551 --- /dev/null +++ b/docs/API_docs/constructors/peerChat.md @@ -0,0 +1,29 @@ +--- +title: "peerChat" +description: "Group." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: peerChat +[Back to constructors index](/API_docs/constructors/index.html) + + + +Group. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chat\_id|[long](/API_docs/types/long.html) | Yes|Group identifier| + + + +### Type: [Peer](/API_docs/types/Peer.html) + + +### Example: + +``` +$peerChat = ['_' => 'peerChat', 'chat_id' => long]; +``` diff --git a/docs/API_docs/constructors/peerColor.md b/docs/API_docs/constructors/peerColor.md new file mode 100644 index 0000000000..e152638259 --- /dev/null +++ b/docs/API_docs/constructors/peerColor.md @@ -0,0 +1,30 @@ +--- +title: "peerColor" +description: "Represents a color palette »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: peerColor +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a [color palette »](https://core.telegram.org/api/colors). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|color|[int](/API_docs/types/int.html) | Optional|[Color palette ID, see here »](https://core.telegram.org/api/colors) for more info; if not set, the default palette should be used.| +|background\_emoji\_id|[long](/API_docs/types/long.html) | Optional|Optional [custom emoji ID](https://core.telegram.org/api/custom-emoji) used to generate the pattern.| + + + +### Type: [PeerColor](/API_docs/types/PeerColor.html) + + +### Example: + +``` +$peerColor = ['_' => 'peerColor', 'color' => int, 'background_emoji_id' => long]; +``` diff --git a/docs/API_docs/constructors/peerLocated.md b/docs/API_docs/constructors/peerLocated.md new file mode 100644 index 0000000000..47b8bb2c18 --- /dev/null +++ b/docs/API_docs/constructors/peerLocated.md @@ -0,0 +1,31 @@ +--- +title: "peerLocated" +description: "Peer geolocated nearby" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: peerLocated +[Back to constructors index](/API_docs/constructors/index.html) + + + +Peer geolocated nearby + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|Peer| +|expires|[int](/API_docs/types/int.html) | Yes|Validity period of current data| +|distance|[int](/API_docs/types/int.html) | Yes|Distance from the peer in meters| + + + +### Type: [PeerLocated](/API_docs/types/PeerLocated.html) + + +### Example: + +``` +$peerLocated = ['_' => 'peerLocated', 'peer' => long, 'expires' => int, 'distance' => int]; +``` diff --git a/docs/API_docs/constructors/peerNotifySettings.md b/docs/API_docs/constructors/peerNotifySettings.md new file mode 100644 index 0000000000..e16999f34a --- /dev/null +++ b/docs/API_docs/constructors/peerNotifySettings.md @@ -0,0 +1,39 @@ +--- +title: "peerNotifySettings" +description: "Notification settings." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: peerNotifySettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +Notification settings. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|show\_previews|[Bool](/API_docs/types/Bool.html) | Optional|(Ternary value) If set, indicates whether or not to display previews of messages in notifications; otherwise the default behavior should be used.| +|silent|[Bool](/API_docs/types/Bool.html) | Optional|(Ternary value) If set, indicates whether to mute or unmute the peer; otherwise the default behavior should be used.| +|mute\_until|[int](/API_docs/types/int.html) | Optional|Mute all notifications until this date| +|ios\_sound|[NotificationSound](/API_docs/types/NotificationSound.html) | Optional|Notification sound for the official iOS application| +|android\_sound|[NotificationSound](/API_docs/types/NotificationSound.html) | Optional|Notification sound for the official android application| +|other\_sound|[NotificationSound](/API_docs/types/NotificationSound.html) | Optional|Notification sound for other applications| +|stories\_muted|[Bool](/API_docs/types/Bool.html) | Optional|Whether story notifications should be disabled.| +|stories\_hide\_sender|[Bool](/API_docs/types/Bool.html) | Optional|Whether the sender name should be displayed in story notifications.| +|stories\_ios\_sound|[NotificationSound](/API_docs/types/NotificationSound.html) | Optional|Sound for story notifications on the official iOS application| +|stories\_android\_sound|[NotificationSound](/API_docs/types/NotificationSound.html) | Optional|Sound for story notifications on the official Android application| +|stories\_other\_sound|[NotificationSound](/API_docs/types/NotificationSound.html) | Optional|Sound for story notifications on other applications| + + + +### Type: [PeerNotifySettings](/API_docs/types/PeerNotifySettings.html) + + +### Example: + +``` +$peerNotifySettings = ['_' => 'peerNotifySettings', 'show_previews' => Bool, 'silent' => Bool, 'mute_until' => int, 'ios_sound' => NotificationSound, 'android_sound' => NotificationSound, 'other_sound' => NotificationSound, 'stories_muted' => Bool, 'stories_hide_sender' => Bool, 'stories_ios_sound' => NotificationSound, 'stories_android_sound' => NotificationSound, 'stories_other_sound' => NotificationSound]; +``` diff --git a/docs/API_docs/constructors/peerSelfLocated.md b/docs/API_docs/constructors/peerSelfLocated.md new file mode 100644 index 0000000000..5e93dd3bcd --- /dev/null +++ b/docs/API_docs/constructors/peerSelfLocated.md @@ -0,0 +1,29 @@ +--- +title: "peerSelfLocated" +description: "Current peer" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: peerSelfLocated +[Back to constructors index](/API_docs/constructors/index.html) + + + +Current peer + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|expires|[int](/API_docs/types/int.html) | Yes|Expiry of geolocation info for current peer| + + + +### Type: [PeerLocated](/API_docs/types/PeerLocated.html) + + +### Example: + +``` +$peerSelfLocated = ['_' => 'peerSelfLocated', 'expires' => int]; +``` diff --git a/docs/API_docs/constructors/peerSettings.md b/docs/API_docs/constructors/peerSettings.md new file mode 100644 index 0000000000..0cebef7e53 --- /dev/null +++ b/docs/API_docs/constructors/peerSettings.md @@ -0,0 +1,44 @@ +--- +title: "peerSettings" +description: "List of actions that are possible when interacting with this user, to be shown as suggested actions in the chat action bar », see here » for more info." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: peerSettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +List of actions that are possible when interacting with this user, to be shown as suggested actions in the [chat action bar »](https://core.telegram.org/api/action-bar), see [here »](https://core.telegram.org/api/action-bar) for more info. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|report\_spam|[Bool](/API_docs/types/Bool.html) | Optional|Whether we can still report the user for spam| +|add\_contact|[Bool](/API_docs/types/Bool.html) | Optional|Whether we can add the user as contact| +|block\_contact|[Bool](/API_docs/types/Bool.html) | Optional|Whether we can block the user| +|share\_contact|[Bool](/API_docs/types/Bool.html) | Optional|Whether we can share the user's contact| +|need\_contacts\_exception|[Bool](/API_docs/types/Bool.html) | Optional|Whether a special exception for contacts is needed| +|report\_geo|[Bool](/API_docs/types/Bool.html) | Optional|Whether we can report a geogroup as irrelevant for this location| +|autoarchived|[Bool](/API_docs/types/Bool.html) | Optional|Whether this peer was automatically archived according to [privacy settings](../constructors/globalPrivacySettings.html) and can be unarchived| +|invite\_members|[Bool](/API_docs/types/Bool.html) | Optional|If set, this is a recently created group chat to which new members can be invited| +|request\_chat\_broadcast|[Bool](/API_docs/types/Bool.html) | Optional|This flag is set if `request_chat_title` and `request_chat_date` fields are set and the [join request »](https://core.telegram.org/api/invites#join-requests) is related to a channel (otherwise if only the request fields are set, the [join request »](https://core.telegram.org/api/invites#join-requests) is related to a chat).| +|business\_bot\_paused|[Bool](/API_docs/types/Bool.html) | Optional| +|business\_bot\_can\_reply|[Bool](/API_docs/types/Bool.html) | Optional| +|geo\_distance|[int](/API_docs/types/int.html) | Optional|Distance in meters between us and this peer| +|request\_chat\_title|[string](/API_docs/types/string.html) | Optional|If set, this is a private chat with an administrator of a chat or channel to which the user sent a join request, and this field contains the chat/channel's title.| +|request\_chat\_date|[int](/API_docs/types/int.html) | Optional|If set, this is a private chat with an administrator of a chat or channel to which the user sent a join request, and this field contains the timestamp when the [join request »](https://core.telegram.org/api/invites#join-requests) was sent.| +|business\_bot\_id|[long](/API_docs/types/long.html) | Optional| +|business\_bot\_manage\_url|[string](/API_docs/types/string.html) | Optional| + + + +### Type: [PeerSettings](/API_docs/types/PeerSettings.html) + + +### Example: + +``` +$peerSettings = ['_' => 'peerSettings', 'report_spam' => Bool, 'add_contact' => Bool, 'block_contact' => Bool, 'share_contact' => Bool, 'need_contacts_exception' => Bool, 'report_geo' => Bool, 'autoarchived' => Bool, 'invite_members' => Bool, 'request_chat_broadcast' => Bool, 'business_bot_paused' => Bool, 'business_bot_can_reply' => Bool, 'geo_distance' => int, 'request_chat_title' => 'string', 'request_chat_date' => int, 'business_bot_id' => long, 'business_bot_manage_url' => 'string']; +``` diff --git a/docs/API_docs/constructors/peerStories.md b/docs/API_docs/constructors/peerStories.md new file mode 100644 index 0000000000..7a062ff98d --- /dev/null +++ b/docs/API_docs/constructors/peerStories.md @@ -0,0 +1,31 @@ +--- +title: "peerStories" +description: "Stories associated to a peer" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: peerStories +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Stories](https://core.telegram.org/api/stories) associated to a peer + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|The peer| +|max\_read\_id|[int](/API_docs/types/int.html) | Optional|If set, contains the ID of the maximum read story| +|stories|Array of [StoryItem](/API_docs/types/StoryItem.html) | Yes|Stories| + + + +### Type: [PeerStories](/API_docs/types/PeerStories.html) + + +### Example: + +``` +$peerStories = ['_' => 'peerStories', 'peer' => long, 'max_read_id' => int, 'stories' => [StoryItem, StoryItem]]; +``` diff --git a/docs/API_docs/constructors/peerUser.md b/docs/API_docs/constructors/peerUser.md new file mode 100644 index 0000000000..86036d76e4 --- /dev/null +++ b/docs/API_docs/constructors/peerUser.md @@ -0,0 +1,29 @@ +--- +title: "peerUser" +description: "Chat partner" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: peerUser +[Back to constructors index](/API_docs/constructors/index.html) + + + +Chat partner + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|User identifier| + + + +### Type: [Peer](/API_docs/types/Peer.html) + + +### Example: + +``` +$peerUser = ['_' => 'peerUser', 'user_id' => long]; +``` diff --git a/docs/API_docs/constructors/phone.exportedGroupCallInvite.md b/docs/API_docs/constructors/phone.exportedGroupCallInvite.md new file mode 100644 index 0000000000..9a295f4c69 --- /dev/null +++ b/docs/API_docs/constructors/phone.exportedGroupCallInvite.md @@ -0,0 +1,30 @@ +--- +title: "phone.exportedGroupCallInvite" +description: "An invite to a group call or livestream" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/phone_exportedGroupCallInvite.html +--- +# Constructor: phone.exportedGroupCallInvite +[Back to constructors index](/API_docs/constructors/index.html) + + + +An invite to a group call or livestream + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|link|[string](/API_docs/types/string.html) | Yes|Invite link| + + + +### Type: [phone.ExportedGroupCallInvite](/API_docs/types/phone.ExportedGroupCallInvite.html) + + +### Example: + +``` +$phone_exportedGroupCallInvite = ['_' => 'phone.exportedGroupCallInvite', 'link' => 'string']; +``` diff --git a/docs/API_docs/constructors/phone.groupCall.md b/docs/API_docs/constructors/phone.groupCall.md new file mode 100644 index 0000000000..b68cae0b52 --- /dev/null +++ b/docs/API_docs/constructors/phone.groupCall.md @@ -0,0 +1,34 @@ +--- +title: "phone.groupCall" +description: "Contains info about a group call, and partial info about its participants." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/phone_groupCall.html +--- +# Constructor: phone.groupCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains info about a group call, and partial info about its participants. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|call|[GroupCall](/API_docs/types/GroupCall.html) | Yes|Info about the group call| +|participants|Array of [GroupCallParticipant](/API_docs/types/GroupCallParticipant.html) | Yes|A partial list of participants.| +|participants\_next\_offset|[string](/API_docs/types/string.html) | Yes|Next offset to use when fetching the remaining participants using [phone.getGroupParticipants](../methods/phone.getGroupParticipants.html)| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Chats mentioned in the participants vector| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users mentioned in the participants vector| + + + +### Type: [phone.GroupCall](/API_docs/types/phone.GroupCall.html) + + +### Example: + +``` +$phone_groupCall = ['_' => 'phone.groupCall', 'call' => GroupCall, 'participants' => [GroupCallParticipant, GroupCallParticipant], 'participants_next_offset' => 'string', 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/phone.groupCallStreamChannels.md b/docs/API_docs/constructors/phone.groupCallStreamChannels.md new file mode 100644 index 0000000000..581fec43b1 --- /dev/null +++ b/docs/API_docs/constructors/phone.groupCallStreamChannels.md @@ -0,0 +1,30 @@ +--- +title: "phone.groupCallStreamChannels" +description: "Info about RTMP streams in a group call or livestream" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/phone_groupCallStreamChannels.html +--- +# Constructor: phone.groupCallStreamChannels +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about RTMP streams in a group call or livestream + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channels|Array of [GroupCallStreamChannel](/API_docs/types/GroupCallStreamChannel.html) | Yes|RTMP streams| + + + +### Type: [phone.GroupCallStreamChannels](/API_docs/types/phone.GroupCallStreamChannels.html) + + +### Example: + +``` +$phone_groupCallStreamChannels = ['_' => 'phone.groupCallStreamChannels', 'channels' => [GroupCallStreamChannel, GroupCallStreamChannel]]; +``` diff --git a/docs/API_docs/constructors/phone.groupCallStreamRtmpUrl.md b/docs/API_docs/constructors/phone.groupCallStreamRtmpUrl.md new file mode 100644 index 0000000000..08a566207d --- /dev/null +++ b/docs/API_docs/constructors/phone.groupCallStreamRtmpUrl.md @@ -0,0 +1,31 @@ +--- +title: "phone.groupCallStreamRtmpUrl" +description: "RTMP URL and stream key to be used in streaming software" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/phone_groupCallStreamRtmpUrl.html +--- +# Constructor: phone.groupCallStreamRtmpUrl +[Back to constructors index](/API_docs/constructors/index.html) + + + +RTMP URL and stream key to be used in streaming software + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|RTMP URL| +|key|[string](/API_docs/types/string.html) | Yes|Stream key| + + + +### Type: [phone.GroupCallStreamRtmpUrl](/API_docs/types/phone.GroupCallStreamRtmpUrl.html) + + +### Example: + +``` +$phone_groupCallStreamRtmpUrl = ['_' => 'phone.groupCallStreamRtmpUrl', 'url' => 'string', 'key' => 'string']; +``` diff --git a/docs/API_docs/constructors/phone.groupParticipants.md b/docs/API_docs/constructors/phone.groupParticipants.md new file mode 100644 index 0000000000..7216ec7129 --- /dev/null +++ b/docs/API_docs/constructors/phone.groupParticipants.md @@ -0,0 +1,35 @@ +--- +title: "phone.groupParticipants" +description: "Info about the participants of a group call or livestream" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/phone_groupParticipants.html +--- +# Constructor: phone.groupParticipants +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about the participants of a group call or livestream + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Number of participants| +|participants|Array of [GroupCallParticipant](/API_docs/types/GroupCallParticipant.html) | Yes|List of participants| +|next\_offset|[string](/API_docs/types/string.html) | Yes|If not empty, the specified list of participants is partial, and more participants can be fetched specifying this parameter as `offset` in [phone.getGroupParticipants](../methods/phone.getGroupParticipants.html).| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Mentioned chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| +|version|[int](/API_docs/types/int.html) | Yes|Version info| + + + +### Type: [phone.GroupParticipants](/API_docs/types/phone.GroupParticipants.html) + + +### Example: + +``` +$phone_groupParticipants = ['_' => 'phone.groupParticipants', 'count' => int, 'participants' => [GroupCallParticipant, GroupCallParticipant], 'next_offset' => 'string', 'chats' => [Chat, Chat], 'users' => [User, User], 'version' => int]; +``` diff --git a/docs/API_docs/constructors/phone.joinAsPeers.md b/docs/API_docs/constructors/phone.joinAsPeers.md new file mode 100644 index 0000000000..613218ad84 --- /dev/null +++ b/docs/API_docs/constructors/phone.joinAsPeers.md @@ -0,0 +1,32 @@ +--- +title: "phone.joinAsPeers" +description: "A list of peers that can be used to join a group call, presenting yourself as a specific user/channel." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/phone_joinAsPeers.html +--- +# Constructor: phone.joinAsPeers +[Back to constructors index](/API_docs/constructors/index.html) + + + +A list of peers that can be used to join a group call, presenting yourself as a specific user/channel. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peers|Array of [Peer](/API_docs/types/Peer.html) | Yes|Peers| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Chats mentioned in the peers vector| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users mentioned in the peers vector| + + + +### Type: [phone.JoinAsPeers](/API_docs/types/phone.JoinAsPeers.html) + + +### Example: + +``` +$phone_joinAsPeers = ['_' => 'phone.joinAsPeers', 'peers' => [Peer, Peer], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/phone.phoneCall.md b/docs/API_docs/constructors/phone.phoneCall.md new file mode 100644 index 0000000000..ef9049ee34 --- /dev/null +++ b/docs/API_docs/constructors/phone.phoneCall.md @@ -0,0 +1,31 @@ +--- +title: "phone.phoneCall" +description: "A VoIP phone call" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/phone_phoneCall.html +--- +# Constructor: phone.phoneCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +A VoIP phone call + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|phone\_call|[PhoneCall](/API_docs/types/PhoneCall.html) | Optional|The VoIP phone call| +|users|Array of [User](/API_docs/types/User.html) | Yes|VoIP phone call participants| + + + +### Type: [phone.PhoneCall](/API_docs/types/phone.PhoneCall.html) + + +### Example: + +``` +$phone_phoneCall = ['_' => 'phone.phoneCall', 'phone_call' => PhoneCall, 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/phoneCall.md b/docs/API_docs/constructors/phoneCall.md new file mode 100644 index 0000000000..2e10c2c3de --- /dev/null +++ b/docs/API_docs/constructors/phoneCall.md @@ -0,0 +1,41 @@ +--- +title: "phoneCall" +description: "Phone call" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: phoneCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +Phone call + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|p2p\_allowed|[Bool](/API_docs/types/Bool.html) | Optional|Whether P2P connection to the other peer is allowed| +|video|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a video call| +|id|[long](/API_docs/types/long.html) | Yes|Call ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash| +|date|[int](/API_docs/types/int.html) | Yes|Date of creation of the call| +|admin\_id|[long](/API_docs/types/long.html) | Yes|User ID of the creator of the call| +|participant\_id|[long](/API_docs/types/long.html) | Yes|User ID of the other participant in the call| +|g\_a\_or\_b|[bytes](/API_docs/types/bytes.html) | Yes|[Parameter for key exchange](https://core.telegram.org/api/end-to-end/voice-calls)| +|key\_fingerprint|[long](/API_docs/types/long.html) | Yes|[Key fingerprint](https://core.telegram.org/api/end-to-end/voice-calls)| +|protocol|[PhoneCallProtocol](/API_docs/types/PhoneCallProtocol.html) | Yes|Call protocol info to be passed to libtgvoip| +|connections|Array of [PhoneConnection](/API_docs/types/PhoneConnection.html) | Yes|List of endpoints the user can connect to to exchange call data| +|start\_date|[int](/API_docs/types/int.html) | Yes|When was the call actually started| +|custom\_parameters|[DataJSON](/API_docs/types/DataJSON.html) | Optional| + + + +### Type: [PhoneCall](/API_docs/types/PhoneCall.html) + + +### Example: + +``` +$phoneCall = ['_' => 'phoneCall', 'p2p_allowed' => Bool, 'video' => Bool, 'id' => long, 'access_hash' => long, 'date' => int, 'admin_id' => long, 'participant_id' => long, 'g_a_or_b' => 'bytes', 'key_fingerprint' => long, 'protocol' => PhoneCallProtocol, 'connections' => [PhoneConnection, PhoneConnection], 'start_date' => int, 'custom_parameters' => DataJSON]; +``` diff --git a/docs/API_docs/constructors/phoneCallAccepted.md b/docs/API_docs/constructors/phoneCallAccepted.md new file mode 100644 index 0000000000..b485a8626c --- /dev/null +++ b/docs/API_docs/constructors/phoneCallAccepted.md @@ -0,0 +1,36 @@ +--- +title: "phoneCallAccepted" +description: "An accepted phone call" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: phoneCallAccepted +[Back to constructors index](/API_docs/constructors/index.html) + + + +An accepted phone call + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|video|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a video call| +|id|[long](/API_docs/types/long.html) | Yes|ID of accepted phone call| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash of phone call| +|date|[int](/API_docs/types/int.html) | Yes|When was the call accepted| +|admin\_id|[long](/API_docs/types/long.html) | Yes|ID of the call creator| +|participant\_id|[long](/API_docs/types/long.html) | Yes|ID of the other user in the call| +|g\_b|[bytes](/API_docs/types/bytes.html) | Yes|B parameter for [secure E2E phone call key exchange](https://core.telegram.org/api/end-to-end/voice-calls)| +|protocol|[PhoneCallProtocol](/API_docs/types/PhoneCallProtocol.html) | Yes|Protocol to use for phone call| + + + +### Type: [PhoneCall](/API_docs/types/PhoneCall.html) + + +### Example: + +``` +$phoneCallAccepted = ['_' => 'phoneCallAccepted', 'video' => Bool, 'id' => long, 'access_hash' => long, 'date' => int, 'admin_id' => long, 'participant_id' => long, 'g_b' => 'bytes', 'protocol' => PhoneCallProtocol]; +``` diff --git a/docs/API_docs/constructors/phoneCallDiscardReasonBusy.md b/docs/API_docs/constructors/phoneCallDiscardReasonBusy.md new file mode 100644 index 0000000000..48aafccc6f --- /dev/null +++ b/docs/API_docs/constructors/phoneCallDiscardReasonBusy.md @@ -0,0 +1,24 @@ +--- +title: "phoneCallDiscardReasonBusy" +description: "The phone call was discarded because the user is busy in another call" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: phoneCallDiscardReasonBusy +[Back to constructors index](/API_docs/constructors/index.html) + + + +The phone call was discarded because the user is busy in another call + + + + +### Type: [PhoneCallDiscardReason](/API_docs/types/PhoneCallDiscardReason.html) + + +### Example: + +``` +$phoneCallDiscardReasonBusy = ['_' => 'phoneCallDiscardReasonBusy']; +``` diff --git a/docs/API_docs/constructors/phoneCallDiscardReasonDisconnect.md b/docs/API_docs/constructors/phoneCallDiscardReasonDisconnect.md new file mode 100644 index 0000000000..e539b9ca27 --- /dev/null +++ b/docs/API_docs/constructors/phoneCallDiscardReasonDisconnect.md @@ -0,0 +1,24 @@ +--- +title: "phoneCallDiscardReasonDisconnect" +description: "The phone call was disconnected" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: phoneCallDiscardReasonDisconnect +[Back to constructors index](/API_docs/constructors/index.html) + + + +The phone call was disconnected + + + + +### Type: [PhoneCallDiscardReason](/API_docs/types/PhoneCallDiscardReason.html) + + +### Example: + +``` +$phoneCallDiscardReasonDisconnect = ['_' => 'phoneCallDiscardReasonDisconnect']; +``` diff --git a/docs/API_docs/constructors/phoneCallDiscardReasonHangup.md b/docs/API_docs/constructors/phoneCallDiscardReasonHangup.md new file mode 100644 index 0000000000..988131da54 --- /dev/null +++ b/docs/API_docs/constructors/phoneCallDiscardReasonHangup.md @@ -0,0 +1,24 @@ +--- +title: "phoneCallDiscardReasonHangup" +description: "The phone call was ended normally" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: phoneCallDiscardReasonHangup +[Back to constructors index](/API_docs/constructors/index.html) + + + +The phone call was ended normally + + + + +### Type: [PhoneCallDiscardReason](/API_docs/types/PhoneCallDiscardReason.html) + + +### Example: + +``` +$phoneCallDiscardReasonHangup = ['_' => 'phoneCallDiscardReasonHangup']; +``` diff --git a/docs/API_docs/constructors/phoneCallDiscardReasonMissed.md b/docs/API_docs/constructors/phoneCallDiscardReasonMissed.md new file mode 100644 index 0000000000..a17e97ddbb --- /dev/null +++ b/docs/API_docs/constructors/phoneCallDiscardReasonMissed.md @@ -0,0 +1,24 @@ +--- +title: "phoneCallDiscardReasonMissed" +description: "The phone call was missed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: phoneCallDiscardReasonMissed +[Back to constructors index](/API_docs/constructors/index.html) + + + +The phone call was missed + + + + +### Type: [PhoneCallDiscardReason](/API_docs/types/PhoneCallDiscardReason.html) + + +### Example: + +``` +$phoneCallDiscardReasonMissed = ['_' => 'phoneCallDiscardReasonMissed']; +``` diff --git a/docs/API_docs/constructors/phoneCallDiscarded.md b/docs/API_docs/constructors/phoneCallDiscarded.md new file mode 100644 index 0000000000..661a98a762 --- /dev/null +++ b/docs/API_docs/constructors/phoneCallDiscarded.md @@ -0,0 +1,34 @@ +--- +title: "phoneCallDiscarded" +description: "Indicates a discarded phone call" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: phoneCallDiscarded +[Back to constructors index](/API_docs/constructors/index.html) + + + +Indicates a discarded phone call + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|need\_rating|[Bool](/API_docs/types/Bool.html) | Optional|Whether the server required the user to [rate](../methods/phone.setCallRating.html) the call| +|need\_debug|[Bool](/API_docs/types/Bool.html) | Optional|Whether the server required the client to [send](../methods/phone.saveCallDebug.html) the libtgvoip call debug data| +|video|[Bool](/API_docs/types/Bool.html) | Optional|Whether the call was a video call| +|id|[long](/API_docs/types/long.html) | Yes|Call ID| +|reason|[PhoneCallDiscardReason](/API_docs/types/PhoneCallDiscardReason.html) | Optional|Why was the phone call discarded| +|duration|[int](/API_docs/types/int.html) | Optional|Duration of the phone call in seconds| + + + +### Type: [PhoneCall](/API_docs/types/PhoneCall.html) + + +### Example: + +``` +$phoneCallDiscarded = ['_' => 'phoneCallDiscarded', 'need_rating' => Bool, 'need_debug' => Bool, 'video' => Bool, 'id' => long, 'reason' => PhoneCallDiscardReason, 'duration' => int]; +``` diff --git a/docs/API_docs/constructors/phoneCallEmpty.md b/docs/API_docs/constructors/phoneCallEmpty.md new file mode 100644 index 0000000000..544b726cae --- /dev/null +++ b/docs/API_docs/constructors/phoneCallEmpty.md @@ -0,0 +1,29 @@ +--- +title: "phoneCallEmpty" +description: "Empty constructor" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: phoneCallEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Call ID| + + + +### Type: [PhoneCall](/API_docs/types/PhoneCall.html) + + +### Example: + +``` +$phoneCallEmpty = ['_' => 'phoneCallEmpty', 'id' => long]; +``` diff --git a/docs/API_docs/constructors/phoneCallProtocol.md b/docs/API_docs/constructors/phoneCallProtocol.md new file mode 100644 index 0000000000..9a3b017551 --- /dev/null +++ b/docs/API_docs/constructors/phoneCallProtocol.md @@ -0,0 +1,33 @@ +--- +title: "phoneCallProtocol" +description: "Protocol info for libtgvoip" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: phoneCallProtocol +[Back to constructors index](/API_docs/constructors/index.html) + + + +Protocol info for libtgvoip + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|udp\_p2p|[Bool](/API_docs/types/Bool.html) | Optional|Whether to allow P2P connection to the other participant| +|udp\_reflector|[Bool](/API_docs/types/Bool.html) | Optional|Whether to allow connection to the other participants through the reflector servers| +|min\_layer|[int](/API_docs/types/int.html) | Yes|Minimum layer for remote libtgvoip| +|max\_layer|[int](/API_docs/types/int.html) | Yes|Maximum layer for remote libtgvoip| +|library\_versions|Array of [string](/API_docs/types/string.html) | Yes|When using [phone.requestCall](../methods/phone.requestCall.html) and [phone.acceptCall](../methods/phone.acceptCall.html), 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](../methods/phone.acceptCall.html) and in the [phoneCallAccepted](../constructors/phoneCallAccepted.html) update received by the caller.| + + + +### Type: [PhoneCallProtocol](/API_docs/types/PhoneCallProtocol.html) + + +### Example: + +``` +$phoneCallProtocol = ['_' => 'phoneCallProtocol', 'udp_p2p' => Bool, 'udp_reflector' => Bool, 'min_layer' => int, 'max_layer' => int, 'library_versions' => ['string', 'string']]; +``` diff --git a/docs/API_docs/constructors/phoneCallRequested.md b/docs/API_docs/constructors/phoneCallRequested.md new file mode 100644 index 0000000000..804480af0f --- /dev/null +++ b/docs/API_docs/constructors/phoneCallRequested.md @@ -0,0 +1,36 @@ +--- +title: "phoneCallRequested" +description: "Requested phone call" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: phoneCallRequested +[Back to constructors index](/API_docs/constructors/index.html) + + + +Requested phone call + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|video|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a video call| +|id|[long](/API_docs/types/long.html) | Yes|Phone call ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash| +|date|[int](/API_docs/types/int.html) | Yes|When was the phone call created| +|admin\_id|[long](/API_docs/types/long.html) | Yes|ID of the creator of the phone call| +|participant\_id|[long](/API_docs/types/long.html) | Yes|ID of the other participant of the phone call| +|g\_a\_hash|[bytes](/API_docs/types/bytes.html) | Yes|[Parameter for key exchange](https://core.telegram.org/api/end-to-end/voice-calls)| +|protocol|[PhoneCallProtocol](/API_docs/types/PhoneCallProtocol.html) | Yes|Call protocol info to be passed to libtgvoip| + + + +### Type: [PhoneCall](/API_docs/types/PhoneCall.html) + + +### Example: + +``` +$phoneCallRequested = ['_' => 'phoneCallRequested', 'video' => Bool, 'id' => long, 'access_hash' => long, 'date' => int, 'admin_id' => long, 'participant_id' => long, 'g_a_hash' => 'bytes', 'protocol' => PhoneCallProtocol]; +``` diff --git a/docs/API_docs/constructors/phoneCallWaiting.md b/docs/API_docs/constructors/phoneCallWaiting.md new file mode 100644 index 0000000000..fc8402cd61 --- /dev/null +++ b/docs/API_docs/constructors/phoneCallWaiting.md @@ -0,0 +1,36 @@ +--- +title: "phoneCallWaiting" +description: "Incoming phone call" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: phoneCallWaiting +[Back to constructors index](/API_docs/constructors/index.html) + + + +Incoming phone call + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|video|[Bool](/API_docs/types/Bool.html) | Optional|Is this a video call| +|id|[long](/API_docs/types/long.html) | Yes|Call ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash| +|date|[int](/API_docs/types/int.html) | Yes|Date| +|admin\_id|[long](/API_docs/types/long.html) | Yes|Admin ID| +|participant\_id|[long](/API_docs/types/long.html) | Yes|Participant ID| +|protocol|[PhoneCallProtocol](/API_docs/types/PhoneCallProtocol.html) | Yes|Phone call protocol info| +|receive\_date|[int](/API_docs/types/int.html) | Optional|When was the phone call received| + + + +### Type: [PhoneCall](/API_docs/types/PhoneCall.html) + + +### Example: + +``` +$phoneCallWaiting = ['_' => 'phoneCallWaiting', 'video' => Bool, 'id' => long, 'access_hash' => long, 'date' => int, 'admin_id' => long, 'participant_id' => long, 'protocol' => PhoneCallProtocol, 'receive_date' => int]; +``` diff --git a/docs/API_docs/constructors/phoneConnection.md b/docs/API_docs/constructors/phoneConnection.md new file mode 100644 index 0000000000..34e40f7890 --- /dev/null +++ b/docs/API_docs/constructors/phoneConnection.md @@ -0,0 +1,34 @@ +--- +title: "phoneConnection" +description: "Identifies an endpoint that can be used to connect to the other user in a phone call" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: phoneConnection +[Back to constructors index](/API_docs/constructors/index.html) + + + +Identifies an endpoint that can be used to connect to the other user in a phone call + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|tcp|[Bool](/API_docs/types/Bool.html) | Optional|Whether TCP should be used| +|id|[long](/API_docs/types/long.html) | Yes|Endpoint ID| +|ip|[string](/API_docs/types/string.html) | Yes|IP address of endpoint| +|ipv6|[string](/API_docs/types/string.html) | Yes|IPv6 address of endpoint| +|port|[int](/API_docs/types/int.html) | Yes|Port ID| +|peer\_tag|[string](/API_docs/types/string.html) | Yes| + + + +### Type: [PhoneConnection](/API_docs/types/PhoneConnection.html) + + +### Example: + +``` +$phoneConnection = ['_' => 'phoneConnection', 'tcp' => Bool, 'id' => long, 'ip' => 'string', 'ipv6' => 'string', 'port' => int, 'peer_tag' => 'string']; +``` diff --git a/docs/API_docs/constructors/phoneConnectionWebrtc.md b/docs/API_docs/constructors/phoneConnectionWebrtc.md new file mode 100644 index 0000000000..1696c197dc --- /dev/null +++ b/docs/API_docs/constructors/phoneConnectionWebrtc.md @@ -0,0 +1,36 @@ +--- +title: "phoneConnectionWebrtc" +description: "WebRTC connection parameters" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: phoneConnectionWebrtc +[Back to constructors index](/API_docs/constructors/index.html) + + + +WebRTC connection parameters + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|turn|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a TURN endpoint| +|stun|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a STUN endpoint| +|id|[long](/API_docs/types/long.html) | Yes|Endpoint ID| +|ip|[string](/API_docs/types/string.html) | Yes|IP address| +|ipv6|[string](/API_docs/types/string.html) | Yes|IPv6 address| +|port|[int](/API_docs/types/int.html) | Yes|Port| +|username|[string](/API_docs/types/string.html) | Yes|Username| +|password|[string](/API_docs/types/string.html) | Yes|Password| + + + +### Type: [PhoneConnection](/API_docs/types/PhoneConnection.html) + + +### Example: + +``` +$phoneConnectionWebrtc = ['_' => 'phoneConnectionWebrtc', 'turn' => Bool, 'stun' => Bool, 'id' => long, 'ip' => 'string', 'ipv6' => 'string', 'port' => int, 'username' => 'string', 'password' => 'string']; +``` diff --git a/docs/API_docs/constructors/photo.md b/docs/API_docs/constructors/photo.md new file mode 100644 index 0000000000..0b76244ee3 --- /dev/null +++ b/docs/API_docs/constructors/photo.md @@ -0,0 +1,36 @@ +--- +title: "photo" +description: "Photo" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: photo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Photo + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|has\_stickers|[Bool](/API_docs/types/Bool.html) | Optional|Whether the photo has mask stickers attached to it| +|id|[long](/API_docs/types/long.html) | Yes|ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash| +|file\_reference|[bytes](/API_docs/types/bytes.html) | Yes|[file reference](https://core.telegram.org/api/file_reference)| +|date|[int](/API_docs/types/int.html) | Yes|Date of upload| +|sizes|Array of [PhotoSize](/API_docs/types/PhotoSize.html) | Yes|Available sizes for download| +|video\_sizes|Array of [VideoSize](/API_docs/types/VideoSize.html) | Optional|[For animated profiles](https://core.telegram.org/api/files#animated-profile-pictures), the MPEG4 videos| +|dc\_id|[int](/API_docs/types/int.html) | Yes|DC ID to use for download| + + + +### Type: [Photo](/API_docs/types/Photo.html) + + +### Example: + +``` +$photo = ['_' => 'photo', 'has_stickers' => Bool, 'id' => long, 'access_hash' => long, 'file_reference' => 'bytes', 'date' => int, 'sizes' => [PhotoSize, PhotoSize], 'video_sizes' => [VideoSize, VideoSize], 'dc_id' => int]; +``` diff --git a/docs/API_docs/constructors/photoCachedSize.md b/docs/API_docs/constructors/photoCachedSize.md new file mode 100644 index 0000000000..4f62161c2c --- /dev/null +++ b/docs/API_docs/constructors/photoCachedSize.md @@ -0,0 +1,32 @@ +--- +title: "photoCachedSize" +description: "Description of an image and its content." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: photoCachedSize +[Back to constructors index](/API_docs/constructors/index.html) + + + +Description of an image and its content. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[string](/API_docs/types/string.html) | Yes|Thumbnail type| +|w|[int](/API_docs/types/int.html) | Yes|Image width| +|h|[int](/API_docs/types/int.html) | Yes|Image height| +|bytes|[bytes](/API_docs/types/bytes.html) | Yes|Binary data, file content| + + + +### Type: [PhotoSize](/API_docs/types/PhotoSize.html) + + +### Example: + +``` +$photoCachedSize = ['_' => 'photoCachedSize', 'type' => 'string', 'w' => int, 'h' => int, 'bytes' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/photoCachedSize_23.md b/docs/API_docs/constructors/photoCachedSize_23.md new file mode 100644 index 0000000000..d74ba34f4a --- /dev/null +++ b/docs/API_docs/constructors/photoCachedSize_23.md @@ -0,0 +1,33 @@ +--- +title: "photoCachedSize" +description: "Description of an image and its content." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: photoCachedSize\_23 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Description of an image and its content. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[string](/API_docs/types/string.html) | Yes|Thumbnail type| +|location|[FileLocation](/API_docs/types/FileLocation.html) | Yes| +|w|[int](/API_docs/types/int.html) | Yes|Image width| +|h|[int](/API_docs/types/int.html) | Yes|Image height| +|bytes|[bytes](/API_docs/types/bytes.html) | Yes|Binary data, file content| + + + +### Type: [PhotoSize](/API_docs/types/PhotoSize.html) + + +### Example: + +``` +$photoCachedSize_23 = ['_' => 'photoCachedSize', 'type' => 'string', 'location' => FileLocation, 'w' => int, 'h' => int, 'bytes' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/photoEmpty.md b/docs/API_docs/constructors/photoEmpty.md new file mode 100644 index 0000000000..d59e29e39c --- /dev/null +++ b/docs/API_docs/constructors/photoEmpty.md @@ -0,0 +1,29 @@ +--- +title: "photoEmpty" +description: "Empty constructor, non-existent photo" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: photoEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor, non-existent photo + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Photo identifier| + + + +### Type: [Photo](/API_docs/types/Photo.html) + + +### Example: + +``` +$photoEmpty = ['_' => 'photoEmpty', 'id' => long]; +``` diff --git a/docs/API_docs/constructors/photoPathSize.md b/docs/API_docs/constructors/photoPathSize.md new file mode 100644 index 0000000000..fc5b9fa885 --- /dev/null +++ b/docs/API_docs/constructors/photoPathSize.md @@ -0,0 +1,30 @@ +--- +title: "photoPathSize" +description: "Messages with animated stickers can have a compressed svg (< 300 bytes) to show the outline of the sticker before fetching the actual lottie animation." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: photoPathSize +[Back to constructors index](/API_docs/constructors/index.html) + + + +Messages with animated stickers can have a compressed svg (< 300 bytes) to show the outline of the sticker before fetching the actual lottie animation. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[string](/API_docs/types/string.html) | Yes|Always `j`| +|bytes|[bytes](/API_docs/types/bytes.html) | Yes|Compressed SVG path payload, [see here for decompression instructions](https://core.telegram.org/api/files#vector-thumbnails)| + + + +### Type: [PhotoSize](/API_docs/types/PhotoSize.html) + + +### Example: + +``` +$photoPathSize = ['_' => 'photoPathSize', 'type' => 'string', 'bytes' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/photoSize.md b/docs/API_docs/constructors/photoSize.md new file mode 100644 index 0000000000..75f36681a4 --- /dev/null +++ b/docs/API_docs/constructors/photoSize.md @@ -0,0 +1,32 @@ +--- +title: "photoSize" +description: "Image description." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: photoSize +[Back to constructors index](/API_docs/constructors/index.html) + + + +Image description. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[string](/API_docs/types/string.html) | Yes|[Thumbnail type »](https://core.telegram.org/api/files#image-thumbnail-types)| +|w|[int](/API_docs/types/int.html) | Yes|Image width| +|h|[int](/API_docs/types/int.html) | Yes|Image height| +|size|[int](/API_docs/types/int.html) | Yes|File size| + + + +### Type: [PhotoSize](/API_docs/types/PhotoSize.html) + + +### Example: + +``` +$photoSize = ['_' => 'photoSize', 'type' => 'string', 'w' => int, 'h' => int, 'size' => int]; +``` diff --git a/docs/API_docs/constructors/photoSizeEmpty.md b/docs/API_docs/constructors/photoSizeEmpty.md new file mode 100644 index 0000000000..439002d6bc --- /dev/null +++ b/docs/API_docs/constructors/photoSizeEmpty.md @@ -0,0 +1,29 @@ +--- +title: "photoSizeEmpty" +description: "Empty constructor. Image with this thumbnail is unavailable." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: photoSizeEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor. Image with this thumbnail is unavailable. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[string](/API_docs/types/string.html) | Yes|[Thumbnail type »](https://core.telegram.org/api/files#image-thumbnail-types)| + + + +### Type: [PhotoSize](/API_docs/types/PhotoSize.html) + + +### Example: + +``` +$photoSizeEmpty = ['_' => 'photoSizeEmpty', 'type' => 'string']; +``` diff --git a/docs/API_docs/constructors/photoSizeProgressive.md b/docs/API_docs/constructors/photoSizeProgressive.md new file mode 100644 index 0000000000..19015c0dd0 --- /dev/null +++ b/docs/API_docs/constructors/photoSizeProgressive.md @@ -0,0 +1,32 @@ +--- +title: "photoSizeProgressive" +description: "Progressively encoded photosize" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: photoSizeProgressive +[Back to constructors index](/API_docs/constructors/index.html) + + + +Progressively encoded photosize + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[string](/API_docs/types/string.html) | Yes|[Photosize type »](https://core.telegram.org/api/files#image-thumbnail-types)| +|w|[int](/API_docs/types/int.html) | Yes|Photo width| +|h|[int](/API_docs/types/int.html) | Yes|Photo height| +|sizes|Array of [int](/API_docs/types/int.html) | Yes|Sizes of progressive JPEG file prefixes, which can be used to preliminarily show the image.| + + + +### Type: [PhotoSize](/API_docs/types/PhotoSize.html) + + +### Example: + +``` +$photoSizeProgressive = ['_' => 'photoSizeProgressive', 'type' => 'string', 'w' => int, 'h' => int, 'sizes' => [int, int]]; +``` diff --git a/docs/API_docs/constructors/photoSize_23.md b/docs/API_docs/constructors/photoSize_23.md new file mode 100644 index 0000000000..038bf06520 --- /dev/null +++ b/docs/API_docs/constructors/photoSize_23.md @@ -0,0 +1,33 @@ +--- +title: "photoSize" +description: "Image description." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: photoSize\_23 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Image description. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[string](/API_docs/types/string.html) | Yes|[Thumbnail type »](https://core.telegram.org/api/files#image-thumbnail-types)| +|location|[FileLocation](/API_docs/types/FileLocation.html) | Yes| +|w|[int](/API_docs/types/int.html) | Yes|Image width| +|h|[int](/API_docs/types/int.html) | Yes|Image height| +|size|[int](/API_docs/types/int.html) | Yes|File size| + + + +### Type: [PhotoSize](/API_docs/types/PhotoSize.html) + + +### Example: + +``` +$photoSize_23 = ['_' => 'photoSize', 'type' => 'string', 'location' => FileLocation, 'w' => int, 'h' => int, 'size' => int]; +``` diff --git a/docs/API_docs/constructors/photoStrippedSize.md b/docs/API_docs/constructors/photoStrippedSize.md new file mode 100644 index 0000000000..9608d86d79 --- /dev/null +++ b/docs/API_docs/constructors/photoStrippedSize.md @@ -0,0 +1,35 @@ +--- +title: photoStrippedSize +description: Just the image's content +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: photoStrippedSize +[Back to constructors index](index.html) + + + +Just the image's content + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[string](../types/string.html) | Yes|Thumbnail type| +|bytes|[bytes](../types/bytes.html) | Yes|Thumbnail data| +|inflated|[bytes](../types/bytes.html) | Yes|JPG image data| + + + +### Type: [PhotoSize](../types/PhotoSize.html) + + +### Example: + +```php +$photoStrippedSize = ['_' => 'photoStrippedSize', 'type' => 'string', 'bytes' => 'bytes']; +``` + + + + diff --git a/docs/API_docs/constructors/photos.photo.md b/docs/API_docs/constructors/photos.photo.md new file mode 100644 index 0000000000..d46a2ddbbf --- /dev/null +++ b/docs/API_docs/constructors/photos.photo.md @@ -0,0 +1,31 @@ +--- +title: "photos.photo" +description: "Photo with auxiliary data." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/photos_photo.html +--- +# Constructor: photos.photo +[Back to constructors index](/API_docs/constructors/index.html) + + + +Photo with auxiliary data. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|photo|[Photo](/API_docs/types/Photo.html) | Optional|Photo| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users| + + + +### Type: [photos.Photo](/API_docs/types/photos.Photo.html) + + +### Example: + +``` +$photos_photo = ['_' => 'photos.photo', 'photo' => Photo, 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/photos.photos.md b/docs/API_docs/constructors/photos.photos.md new file mode 100644 index 0000000000..4ac3fe5b3a --- /dev/null +++ b/docs/API_docs/constructors/photos.photos.md @@ -0,0 +1,31 @@ +--- +title: "photos.photos" +description: "Full list of photos with auxiliary data." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/photos_photos.html +--- +# Constructor: photos.photos +[Back to constructors index](/API_docs/constructors/index.html) + + + +Full list of photos with auxiliary data. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|photos|Array of [Photo](/API_docs/types/Photo.html) | Yes|List of photos| +|users|Array of [User](/API_docs/types/User.html) | Yes|List of mentioned users| + + + +### Type: [photos.Photos](/API_docs/types/photos.Photos.html) + + +### Example: + +``` +$photos_photos = ['_' => 'photos.photos', 'photos' => [Photo, Photo], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/photos.photosSlice.md b/docs/API_docs/constructors/photos.photosSlice.md new file mode 100644 index 0000000000..a7b262d729 --- /dev/null +++ b/docs/API_docs/constructors/photos.photosSlice.md @@ -0,0 +1,32 @@ +--- +title: "photos.photosSlice" +description: "Incomplete list of photos with auxiliary data." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/photos_photosSlice.html +--- +# Constructor: photos.photosSlice +[Back to constructors index](/API_docs/constructors/index.html) + + + +Incomplete list of photos with auxiliary data. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Total number of photos| +|photos|Array of [Photo](/API_docs/types/Photo.html) | Yes|List of photos| +|users|Array of [User](/API_docs/types/User.html) | Yes|List of mentioned users| + + + +### Type: [photos.Photos](/API_docs/types/photos.Photos.html) + + +### Example: + +``` +$photos_photosSlice = ['_' => 'photos.photosSlice', 'count' => int, 'photos' => [Photo, Photo], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/poll.md b/docs/API_docs/constructors/poll.md new file mode 100644 index 0000000000..06b32f382d --- /dev/null +++ b/docs/API_docs/constructors/poll.md @@ -0,0 +1,37 @@ +--- +title: "poll" +description: "Poll" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: poll +[Back to constructors index](/API_docs/constructors/index.html) + + + +Poll + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|ID of the poll| +|closed|[Bool](/API_docs/types/Bool.html) | Optional|Whether the poll is closed and doesn't accept any more answers| +|public\_voters|[Bool](/API_docs/types/Bool.html) | Optional|Whether cast votes are publicly visible to all users (non-anonymous poll)| +|multiple\_choice|[Bool](/API_docs/types/Bool.html) | Optional|Whether multiple options can be chosen as answer| +|quiz|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a quiz (with wrong and correct answers, results shown in the return type)| +|question|[TextWithEntities](/API_docs/types/TextWithEntities.html) | Yes| +|answers|Array of [PollAnswer](/API_docs/types/PollAnswer.html) | Yes|The possible answers, vote using [messages.sendVote](../methods/messages.sendVote.html).| +|close\_period|[int](/API_docs/types/int.html) | Optional|Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with close\_date.| +|close\_date|[int](/API_docs/types/int.html) | Optional|Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future; can't be used together with close\_period.| + + + +### Type: [Poll](/API_docs/types/Poll.html) + + +### Example: + +``` +$poll = ['_' => 'poll', 'id' => long, 'closed' => Bool, 'public_voters' => Bool, 'multiple_choice' => Bool, 'quiz' => Bool, 'question' => TextWithEntities, 'answers' => [PollAnswer, PollAnswer], 'close_period' => int, 'close_date' => int]; +``` diff --git a/docs/API_docs/constructors/pollAnswer.md b/docs/API_docs/constructors/pollAnswer.md new file mode 100644 index 0000000000..a89cf68462 --- /dev/null +++ b/docs/API_docs/constructors/pollAnswer.md @@ -0,0 +1,30 @@ +--- +title: "pollAnswer" +description: "A possible answer of a poll" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pollAnswer +[Back to constructors index](/API_docs/constructors/index.html) + + + +A possible answer of a poll + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[TextWithEntities](/API_docs/types/TextWithEntities.html) | Yes| +|option|[bytes](/API_docs/types/bytes.html) | Yes|The param that has to be passed to [messages.sendVote](../methods/messages.sendVote.html).| + + + +### Type: [PollAnswer](/API_docs/types/PollAnswer.html) + + +### Example: + +``` +$pollAnswer = ['_' => 'pollAnswer', 'text' => TextWithEntities, 'option' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/pollAnswerVoters.md b/docs/API_docs/constructors/pollAnswerVoters.md new file mode 100644 index 0000000000..d9710d8a60 --- /dev/null +++ b/docs/API_docs/constructors/pollAnswerVoters.md @@ -0,0 +1,32 @@ +--- +title: "pollAnswerVoters" +description: "A poll answer, and how users voted on it" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pollAnswerVoters +[Back to constructors index](/API_docs/constructors/index.html) + + + +A poll answer, and how users voted on it + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chosen|[Bool](/API_docs/types/Bool.html) | Optional|Whether we have chosen this answer| +|correct|[Bool](/API_docs/types/Bool.html) | Optional|For quizzes, whether the option we have chosen is correct| +|option|[bytes](/API_docs/types/bytes.html) | Yes|The param that has to be passed to [messages.sendVote](../methods/messages.sendVote.html).| +|voters|[int](/API_docs/types/int.html) | Yes|How many users voted for this option| + + + +### Type: [PollAnswerVoters](/API_docs/types/PollAnswerVoters.html) + + +### Example: + +``` +$pollAnswerVoters = ['_' => 'pollAnswerVoters', 'chosen' => Bool, 'correct' => Bool, 'option' => 'bytes', 'voters' => int]; +``` diff --git a/docs/API_docs/constructors/pollResults.md b/docs/API_docs/constructors/pollResults.md new file mode 100644 index 0000000000..00fb64ca16 --- /dev/null +++ b/docs/API_docs/constructors/pollResults.md @@ -0,0 +1,34 @@ +--- +title: "pollResults" +description: "Results of poll" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: pollResults +[Back to constructors index](/API_docs/constructors/index.html) + + + +Results of poll + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|min|[Bool](/API_docs/types/Bool.html) | Optional|Similar to [min](https://core.telegram.org/api/min) objects, used for poll constructors that are the same for all users so they don't have the option chosen by the current user (you can use [messages.getPollResults](../methods/messages.getPollResults.html) to get the full poll results).| +|results|Array of [PollAnswerVoters](/API_docs/types/PollAnswerVoters.html) | Optional|Poll results| +|total\_voters|[int](/API_docs/types/int.html) | Optional|Total number of people that voted in the poll| +|recent\_voters|Array of [Peer](/API_docs/types/Peer.html) | Optional|IDs of the last users that recently voted in the poll| +|solution|[string](/API_docs/types/string.html) | Optional|Explanation of quiz solution| +|solution\_entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|[Message entities for styled text in quiz solution](https://core.telegram.org/api/entities)| + + + +### Type: [PollResults](/API_docs/types/PollResults.html) + + +### Example: + +``` +$pollResults = ['_' => 'pollResults', 'min' => Bool, 'results' => [PollAnswerVoters, PollAnswerVoters], 'total_voters' => int, 'recent_voters' => [Peer, Peer], 'solution' => 'string', 'solution_entities' => [MessageEntity, MessageEntity]]; +``` diff --git a/docs/API_docs/constructors/popularContact.md b/docs/API_docs/constructors/popularContact.md new file mode 100644 index 0000000000..f892c3389f --- /dev/null +++ b/docs/API_docs/constructors/popularContact.md @@ -0,0 +1,30 @@ +--- +title: "popularContact" +description: "Popular contact" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: popularContact +[Back to constructors index](/API_docs/constructors/index.html) + + + +Popular contact + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|client\_id|[long](/API_docs/types/long.html) | Yes|Contact identifier| +|importers|[int](/API_docs/types/int.html) | Yes|How many people imported this contact| + + + +### Type: [PopularContact](/API_docs/types/PopularContact.html) + + +### Example: + +``` +$popularContact = ['_' => 'popularContact', 'client_id' => long, 'importers' => int]; +``` diff --git a/docs/API_docs/constructors/postAddress.md b/docs/API_docs/constructors/postAddress.md new file mode 100644 index 0000000000..6122b5be82 --- /dev/null +++ b/docs/API_docs/constructors/postAddress.md @@ -0,0 +1,34 @@ +--- +title: "postAddress" +description: "Shipping address" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: postAddress +[Back to constructors index](/API_docs/constructors/index.html) + + + +Shipping address + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|street\_line1|[string](/API_docs/types/string.html) | Yes|First line for the address| +|street\_line2|[string](/API_docs/types/string.html) | Yes|Second line for the address| +|city|[string](/API_docs/types/string.html) | Yes|City| +|state|[string](/API_docs/types/string.html) | Yes|State, if applicable (empty otherwise)| +|country\_iso2|[string](/API_docs/types/string.html) | Yes|ISO 3166-1 alpha-2 country code| +|post\_code|[string](/API_docs/types/string.html) | Yes|Address post code| + + + +### Type: [PostAddress](/API_docs/types/PostAddress.html) + + +### Example: + +``` +$postAddress = ['_' => 'postAddress', 'street_line1' => 'string', 'street_line2' => 'string', 'city' => 'string', 'state' => 'string', 'country_iso2' => 'string', 'post_code' => 'string']; +``` diff --git a/docs/API_docs/constructors/postInteractionCountersMessage.md b/docs/API_docs/constructors/postInteractionCountersMessage.md new file mode 100644 index 0000000000..5f494e326b --- /dev/null +++ b/docs/API_docs/constructors/postInteractionCountersMessage.md @@ -0,0 +1,32 @@ +--- +title: "postInteractionCountersMessage" +description: "Interaction counters for a message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: postInteractionCountersMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Interaction counters for a message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|msg\_id|[int](/API_docs/types/int.html) | Yes|Message ID| +|views|[int](/API_docs/types/int.html) | Yes|Number of views| +|forwards|[int](/API_docs/types/int.html) | Yes|Number of forwards to public channels| +|reactions|[int](/API_docs/types/int.html) | Yes|Number of reactions| + + + +### Type: [PostInteractionCounters](/API_docs/types/PostInteractionCounters.html) + + +### Example: + +``` +$postInteractionCountersMessage = ['_' => 'postInteractionCountersMessage', 'msg_id' => int, 'views' => int, 'forwards' => int, 'reactions' => int]; +``` diff --git a/docs/API_docs/constructors/postInteractionCountersStory.md b/docs/API_docs/constructors/postInteractionCountersStory.md new file mode 100644 index 0000000000..46c086583d --- /dev/null +++ b/docs/API_docs/constructors/postInteractionCountersStory.md @@ -0,0 +1,32 @@ +--- +title: "postInteractionCountersStory" +description: "Interaction counters for a story." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: postInteractionCountersStory +[Back to constructors index](/API_docs/constructors/index.html) + + + +Interaction counters for a story. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|story\_id|[int](/API_docs/types/int.html) | Yes|Story ID| +|views|[int](/API_docs/types/int.html) | Yes|Number of views| +|forwards|[int](/API_docs/types/int.html) | Yes|Number of forwards and reposts to public chats and channels| +|reactions|[int](/API_docs/types/int.html) | Yes|Number of reactions| + + + +### Type: [PostInteractionCounters](/API_docs/types/PostInteractionCounters.html) + + +### Example: + +``` +$postInteractionCountersStory = ['_' => 'postInteractionCountersStory', 'story_id' => int, 'views' => int, 'forwards' => int, 'reactions' => int]; +``` diff --git a/docs/API_docs/constructors/premium.boostsList.md b/docs/API_docs/constructors/premium.boostsList.md new file mode 100644 index 0000000000..4b74791de0 --- /dev/null +++ b/docs/API_docs/constructors/premium.boostsList.md @@ -0,0 +1,33 @@ +--- +title: "premium.boostsList" +description: "List of boosts that were applied to a peer by multiple users." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/premium_boostsList.html +--- +# Constructor: premium.boostsList +[Back to constructors index](/API_docs/constructors/index.html) + + + +List of [boosts](https://core.telegram.org/api/boost) that were applied to a peer by multiple users. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Total number of results| +|boosts|Array of [Boost](/API_docs/types/Boost.html) | Yes|[Boosts](https://core.telegram.org/api/boost)| +|next\_offset|[string](/API_docs/types/string.html) | Optional|Offset that can be used for [pagination](https://core.telegram.org/api/offsets).| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| + + + +### Type: [premium.BoostsList](/API_docs/types/premium.BoostsList.html) + + +### Example: + +``` +$premium_boostsList = ['_' => 'premium.boostsList', 'count' => int, 'boosts' => [Boost, Boost], 'next_offset' => 'string', 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/premium.boostsStatus.md b/docs/API_docs/constructors/premium.boostsStatus.md new file mode 100644 index 0000000000..261c6ab008 --- /dev/null +++ b/docs/API_docs/constructors/premium.boostsStatus.md @@ -0,0 +1,39 @@ +--- +title: "premium.boostsStatus" +description: "Contains info about the current boost status of a peer." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/premium_boostsStatus.html +--- +# Constructor: premium.boostsStatus +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains info about the current [boost status](https://core.telegram.org/api/boost) of a peer. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|my\_boost|[Bool](/API_docs/types/Bool.html) | Optional|Whether we're currently boosting this channel, `my_boost_slots` will also be set.| +|level|[int](/API_docs/types/int.html) | Yes|The current boost level of the channel.| +|current\_level\_boosts|[int](/API_docs/types/int.html) | Yes|The number of boosts acquired so far in the current level.| +|boosts|[int](/API_docs/types/int.html) | Yes|Total number of boosts acquired so far.| +|gift\_boosts|[int](/API_docs/types/int.html) | Optional|The number of boosts acquired from created Telegram Premium [gift codes](https://core.telegram.org/api/giveaways) and [giveaways](https://core.telegram.org/api/giveaways); only returned to channel admins.| +|next\_level\_boosts|[int](/API_docs/types/int.html) | Optional|Total number of boosts needed to reach the next level; if absent, the next level isn't available.| +|premium\_audience|[StatsPercentValue](/API_docs/types/StatsPercentValue.html) | Optional|Only returned to channel admins: contains the approximated number of Premium users subscribed to the channel, related to the total number of subscribers.| +|boost\_url|[string](/API_docs/types/string.html) | Yes|[Boost deep link »](https://core.telegram.org/api/links#boost-links) that can be used to boost the chat.| +|prepaid\_giveaways|Array of [PrepaidGiveaway](/API_docs/types/PrepaidGiveaway.html) | Optional|A list of prepaid [giveaways](https://core.telegram.org/api/giveaways) available for the chat; only returned to channel admins.| +|my\_boost\_slots|Array of [int](/API_docs/types/int.html) | Optional|Indicates which of our [boost slots](https://core.telegram.org/api/boost) we've assigned to this peer (populated if `my_boost` is set).| + + + +### Type: [premium.BoostsStatus](/API_docs/types/premium.BoostsStatus.html) + + +### Example: + +``` +$premium_boostsStatus = ['_' => 'premium.boostsStatus', 'my_boost' => Bool, 'level' => int, 'current_level_boosts' => int, 'boosts' => int, 'gift_boosts' => int, 'next_level_boosts' => int, 'premium_audience' => StatsPercentValue, 'boost_url' => 'string', 'prepaid_giveaways' => [PrepaidGiveaway, PrepaidGiveaway], 'my_boost_slots' => [int, int]]; +``` diff --git a/docs/API_docs/constructors/premium.myBoosts.md b/docs/API_docs/constructors/premium.myBoosts.md new file mode 100644 index 0000000000..2376fb7a34 --- /dev/null +++ b/docs/API_docs/constructors/premium.myBoosts.md @@ -0,0 +1,32 @@ +--- +title: "premium.myBoosts" +description: "A list of peers we are currently boosting, and how many boost slots we have left." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/premium_myBoosts.html +--- +# Constructor: premium.myBoosts +[Back to constructors index](/API_docs/constructors/index.html) + + + +A list of peers we are currently [boosting](https://core.telegram.org/api/boost), and how many [boost slots](https://core.telegram.org/api/boost) we have left. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|my\_boosts|Array of [MyBoost](/API_docs/types/MyBoost.html) | Yes|Info about boosted peers and remaining boost slots.| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Referenced chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Referenced users| + + + +### Type: [premium.MyBoosts](/API_docs/types/premium.MyBoosts.html) + + +### Example: + +``` +$premium_myBoosts = ['_' => 'premium.myBoosts', 'my_boosts' => [MyBoost, MyBoost], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/premiumGiftCodeOption.md b/docs/API_docs/constructors/premiumGiftCodeOption.md new file mode 100644 index 0000000000..be2706fddb --- /dev/null +++ b/docs/API_docs/constructors/premiumGiftCodeOption.md @@ -0,0 +1,34 @@ +--- +title: "premiumGiftCodeOption" +description: "Contains info about a giveaway/gift option." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: premiumGiftCodeOption +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains info about a [giveaway/gift](https://core.telegram.org/api/giveaways) option. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|users|[int](/API_docs/types/int.html) | Yes|Number of users which will be able to activate the gift codes.| +|months|[int](/API_docs/types/int.html) | Yes|Duration in months of each gifted [Telegram Premium](https://core.telegram.org/api/premium) subscription.| +|store\_product|[string](/API_docs/types/string.html) | Optional|Identifier of the store product associated with the option, official apps only.| +|store\_quantity|[int](/API_docs/types/int.html) | Optional|Number of times the store product must be paid| +|currency|[string](/API_docs/types/string.html) | Yes|Three-letter ISO 4217 [currency](https://core.telegram.org/bots/payments#supported-currencies) code| +|amount|[long](/API_docs/types/long.html) | Yes|Total 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](https://core.telegram.org/bots/payments/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).| + + + +### Type: [PremiumGiftCodeOption](/API_docs/types/PremiumGiftCodeOption.html) + + +### Example: + +``` +$premiumGiftCodeOption = ['_' => 'premiumGiftCodeOption', 'users' => int, 'months' => int, 'store_product' => 'string', 'store_quantity' => int, 'currency' => 'string', 'amount' => long]; +``` diff --git a/docs/API_docs/constructors/premiumGiftOption.md b/docs/API_docs/constructors/premiumGiftOption.md new file mode 100644 index 0000000000..b0dd3d1d57 --- /dev/null +++ b/docs/API_docs/constructors/premiumGiftOption.md @@ -0,0 +1,33 @@ +--- +title: "premiumGiftOption" +description: "Telegram Premium gift option" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: premiumGiftOption +[Back to constructors index](/API_docs/constructors/index.html) + + + +Telegram Premium gift option + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|months|[int](/API_docs/types/int.html) | Yes|Duration of gifted Telegram Premium subscription| +|currency|[string](/API_docs/types/string.html) | Yes|Three-letter ISO 4217 [currency](https://core.telegram.org/bots/payments#supported-currencies) code| +|amount|[long](/API_docs/types/long.html) | Yes|Price 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](https://core.telegram.org/bots/payments/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).| +|bot\_url|[string](/API_docs/types/string.html) | Yes|An [invoice deep link »](https://core.telegram.org/api/links#invoice-links) to an invoice for in-app payment, using the official Premium bot; may be empty if direct payment isn't available.| +|store\_product|[string](/API_docs/types/string.html) | Optional|An identifier for the App Store/Play Store product associated with the Premium gift.| + + + +### Type: [PremiumGiftOption](/API_docs/types/PremiumGiftOption.html) + + +### Example: + +``` +$premiumGiftOption = ['_' => 'premiumGiftOption', 'months' => int, 'currency' => 'string', 'amount' => long, 'bot_url' => 'string', 'store_product' => 'string']; +``` diff --git a/docs/API_docs/constructors/premiumSubscriptionOption.md b/docs/API_docs/constructors/premiumSubscriptionOption.md new file mode 100644 index 0000000000..b274c4c694 --- /dev/null +++ b/docs/API_docs/constructors/premiumSubscriptionOption.md @@ -0,0 +1,36 @@ +--- +title: "premiumSubscriptionOption" +description: "Describes a Telegram Premium subscription option" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: premiumSubscriptionOption +[Back to constructors index](/API_docs/constructors/index.html) + + + +Describes a Telegram Premium subscription option + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|current|[Bool](/API_docs/types/Bool.html) | Optional|Whether this subscription option is currently in use.| +|can\_purchase\_upgrade|[Bool](/API_docs/types/Bool.html) | Optional|Whether this subscription option can be used to upgrade the existing Telegram Premium subscription. When upgrading Telegram Premium subscriptions bought through stores, make sure that the store transaction ID is equal to `transaction`, to avoid upgrading someone else's account, if the client is currently logged into multiple accounts.| +|transaction|[string](/API_docs/types/string.html) | Optional|Identifier of the last in-store transaction for the currently used subscription on the current account.| +|months|[int](/API_docs/types/int.html) | Yes|Duration of subscription in months| +|currency|[string](/API_docs/types/string.html) | Yes|Three-letter ISO 4217 [currency](https://core.telegram.org/bots/payments#supported-currencies) code| +|amount|[long](/API_docs/types/long.html) | Yes|Total 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](https://core.telegram.org/bots/payments/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).| +|bot\_url|[string](/API_docs/types/string.html) | Yes|[Deep link](https://core.telegram.org/api/links) used to initiate payment| +|store\_product|[string](/API_docs/types/string.html) | Optional|Store product ID, only for official apps| + + + +### Type: [PremiumSubscriptionOption](/API_docs/types/PremiumSubscriptionOption.html) + + +### Example: + +``` +$premiumSubscriptionOption = ['_' => 'premiumSubscriptionOption', 'current' => Bool, 'can_purchase_upgrade' => Bool, 'transaction' => 'string', 'months' => int, 'currency' => 'string', 'amount' => long, 'bot_url' => 'string', 'store_product' => 'string']; +``` diff --git a/docs/API_docs/constructors/prepaidGiveaway.md b/docs/API_docs/constructors/prepaidGiveaway.md new file mode 100644 index 0000000000..8800198c2a --- /dev/null +++ b/docs/API_docs/constructors/prepaidGiveaway.md @@ -0,0 +1,32 @@ +--- +title: "prepaidGiveaway" +description: "Contains info about a prepaid giveaway »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: prepaidGiveaway +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains info about a [prepaid giveaway »](https://core.telegram.org/api/giveaways). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Prepaid giveaway ID.| +|months|[int](/API_docs/types/int.html) | Yes|Duration in months of each gifted [Telegram Premium](https://core.telegram.org/api/premium) subscription.| +|quantity|[int](/API_docs/types/int.html) | Yes|Number of given away [Telegram Premium](https://core.telegram.org/api/premium) subscriptions.| +|date|[int](/API_docs/types/int.html) | Yes|Payment date.| + + + +### Type: [PrepaidGiveaway](/API_docs/types/PrepaidGiveaway.html) + + +### Example: + +``` +$prepaidGiveaway = ['_' => 'prepaidGiveaway', 'id' => long, 'months' => int, 'quantity' => int, 'date' => int]; +``` diff --git a/docs/API_docs/constructors/privacyKeyAbout.md b/docs/API_docs/constructors/privacyKeyAbout.md new file mode 100644 index 0000000000..74d9977d83 --- /dev/null +++ b/docs/API_docs/constructors/privacyKeyAbout.md @@ -0,0 +1,24 @@ +--- +title: "privacyKeyAbout" +description: "Whether people can see your bio" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyKeyAbout +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether people can see your bio + + + + +### Type: [PrivacyKey](/API_docs/types/PrivacyKey.html) + + +### Example: + +``` +$privacyKeyAbout = ['_' => 'privacyKeyAbout']; +``` diff --git a/docs/API_docs/constructors/privacyKeyAddedByPhone.md b/docs/API_docs/constructors/privacyKeyAddedByPhone.md new file mode 100644 index 0000000000..8456980619 --- /dev/null +++ b/docs/API_docs/constructors/privacyKeyAddedByPhone.md @@ -0,0 +1,24 @@ +--- +title: "privacyKeyAddedByPhone" +description: "Whether this user can be added to our contact list by their phone number" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyKeyAddedByPhone +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether this user can be added to our contact list by their phone number + + + + +### Type: [PrivacyKey](/API_docs/types/PrivacyKey.html) + + +### Example: + +``` +$privacyKeyAddedByPhone = ['_' => 'privacyKeyAddedByPhone']; +``` diff --git a/docs/API_docs/constructors/privacyKeyBirthday.md b/docs/API_docs/constructors/privacyKeyBirthday.md new file mode 100644 index 0000000000..3baa5e5e54 --- /dev/null +++ b/docs/API_docs/constructors/privacyKeyBirthday.md @@ -0,0 +1,22 @@ +--- +title: "privacyKeyBirthday" +description: "privacyKeyBirthday attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyKeyBirthday +[Back to constructors index](/API_docs/constructors/index.html) + + + + + + +### Type: [PrivacyKey](/API_docs/types/PrivacyKey.html) + + +### Example: + +``` +$privacyKeyBirthday = ['_' => 'privacyKeyBirthday']; +``` diff --git a/docs/API_docs/constructors/privacyKeyChatInvite.md b/docs/API_docs/constructors/privacyKeyChatInvite.md new file mode 100644 index 0000000000..c271340105 --- /dev/null +++ b/docs/API_docs/constructors/privacyKeyChatInvite.md @@ -0,0 +1,24 @@ +--- +title: "privacyKeyChatInvite" +description: "Whether the user can be invited to chats" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyKeyChatInvite +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether the user can be invited to chats + + + + +### Type: [PrivacyKey](/API_docs/types/PrivacyKey.html) + + +### Example: + +``` +$privacyKeyChatInvite = ['_' => 'privacyKeyChatInvite']; +``` diff --git a/docs/API_docs/constructors/privacyKeyForwards.md b/docs/API_docs/constructors/privacyKeyForwards.md new file mode 100644 index 0000000000..9d664d3c39 --- /dev/null +++ b/docs/API_docs/constructors/privacyKeyForwards.md @@ -0,0 +1,24 @@ +--- +title: "privacyKeyForwards" +description: "Whether messages forwarded from the user will be anonymously forwarded" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyKeyForwards +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether messages forwarded from the user will be [anonymously forwarded](https://telegram.org/blog/unsend-privacy-emoji#anonymous-forwarding) + + + + +### Type: [PrivacyKey](/API_docs/types/PrivacyKey.html) + + +### Example: + +``` +$privacyKeyForwards = ['_' => 'privacyKeyForwards']; +``` diff --git a/docs/API_docs/constructors/privacyKeyPhoneCall.md b/docs/API_docs/constructors/privacyKeyPhoneCall.md new file mode 100644 index 0000000000..2706c52831 --- /dev/null +++ b/docs/API_docs/constructors/privacyKeyPhoneCall.md @@ -0,0 +1,24 @@ +--- +title: "privacyKeyPhoneCall" +description: "Whether the user accepts phone calls" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyKeyPhoneCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether the user accepts phone calls + + + + +### Type: [PrivacyKey](/API_docs/types/PrivacyKey.html) + + +### Example: + +``` +$privacyKeyPhoneCall = ['_' => 'privacyKeyPhoneCall']; +``` diff --git a/docs/API_docs/constructors/privacyKeyPhoneNumber.md b/docs/API_docs/constructors/privacyKeyPhoneNumber.md new file mode 100644 index 0000000000..64df2d3bd9 --- /dev/null +++ b/docs/API_docs/constructors/privacyKeyPhoneNumber.md @@ -0,0 +1,24 @@ +--- +title: "privacyKeyPhoneNumber" +description: "Whether the user allows us to see his phone number" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyKeyPhoneNumber +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether the user allows us to see his phone number + + + + +### Type: [PrivacyKey](/API_docs/types/PrivacyKey.html) + + +### Example: + +``` +$privacyKeyPhoneNumber = ['_' => 'privacyKeyPhoneNumber']; +``` diff --git a/docs/API_docs/constructors/privacyKeyPhoneP2P.md b/docs/API_docs/constructors/privacyKeyPhoneP2P.md new file mode 100644 index 0000000000..bd6bbdc293 --- /dev/null +++ b/docs/API_docs/constructors/privacyKeyPhoneP2P.md @@ -0,0 +1,24 @@ +--- +title: "privacyKeyPhoneP2P" +description: "Whether P2P connections in phone calls with this user are allowed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyKeyPhoneP2P +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether P2P connections in phone calls with this user are allowed + + + + +### Type: [PrivacyKey](/API_docs/types/PrivacyKey.html) + + +### Example: + +``` +$privacyKeyPhoneP2P = ['_' => 'privacyKeyPhoneP2P']; +``` diff --git a/docs/API_docs/constructors/privacyKeyProfilePhoto.md b/docs/API_docs/constructors/privacyKeyProfilePhoto.md new file mode 100644 index 0000000000..89bf6d01ae --- /dev/null +++ b/docs/API_docs/constructors/privacyKeyProfilePhoto.md @@ -0,0 +1,24 @@ +--- +title: "privacyKeyProfilePhoto" +description: "Whether the profile picture of the user is visible" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyKeyProfilePhoto +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether the profile picture of the user is visible + + + + +### Type: [PrivacyKey](/API_docs/types/PrivacyKey.html) + + +### Example: + +``` +$privacyKeyProfilePhoto = ['_' => 'privacyKeyProfilePhoto']; +``` diff --git a/docs/API_docs/constructors/privacyKeyStatusTimestamp.md b/docs/API_docs/constructors/privacyKeyStatusTimestamp.md new file mode 100644 index 0000000000..3711eac911 --- /dev/null +++ b/docs/API_docs/constructors/privacyKeyStatusTimestamp.md @@ -0,0 +1,24 @@ +--- +title: "privacyKeyStatusTimestamp" +description: "Whether we can see the last online timestamp of this user" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyKeyStatusTimestamp +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether we can see the last online timestamp of this user + + + + +### Type: [PrivacyKey](/API_docs/types/PrivacyKey.html) + + +### Example: + +``` +$privacyKeyStatusTimestamp = ['_' => 'privacyKeyStatusTimestamp']; +``` diff --git a/docs/API_docs/constructors/privacyKeyVoiceMessages.md b/docs/API_docs/constructors/privacyKeyVoiceMessages.md new file mode 100644 index 0000000000..af98b77dfe --- /dev/null +++ b/docs/API_docs/constructors/privacyKeyVoiceMessages.md @@ -0,0 +1,24 @@ +--- +title: "privacyKeyVoiceMessages" +description: "Whether the user accepts voice messages" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyKeyVoiceMessages +[Back to constructors index](/API_docs/constructors/index.html) + + + +Whether the user accepts voice messages + + + + +### Type: [PrivacyKey](/API_docs/types/PrivacyKey.html) + + +### Example: + +``` +$privacyKeyVoiceMessages = ['_' => 'privacyKeyVoiceMessages']; +``` diff --git a/docs/API_docs/constructors/privacyValueAllowAll.md b/docs/API_docs/constructors/privacyValueAllowAll.md new file mode 100644 index 0000000000..a961efbd7b --- /dev/null +++ b/docs/API_docs/constructors/privacyValueAllowAll.md @@ -0,0 +1,24 @@ +--- +title: "privacyValueAllowAll" +description: "Allow all users" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyValueAllowAll +[Back to constructors index](/API_docs/constructors/index.html) + + + +Allow all users + + + + +### Type: [PrivacyRule](/API_docs/types/PrivacyRule.html) + + +### Example: + +``` +$privacyValueAllowAll = ['_' => 'privacyValueAllowAll']; +``` diff --git a/docs/API_docs/constructors/privacyValueAllowChatParticipants.md b/docs/API_docs/constructors/privacyValueAllowChatParticipants.md new file mode 100644 index 0000000000..74c94ebd54 --- /dev/null +++ b/docs/API_docs/constructors/privacyValueAllowChatParticipants.md @@ -0,0 +1,29 @@ +--- +title: "privacyValueAllowChatParticipants" +description: "Allow all participants of certain chats" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyValueAllowChatParticipants +[Back to constructors index](/API_docs/constructors/index.html) + + + +Allow all participants of certain chats + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chats|Array of [long](/API_docs/types/long.html) | Yes|Allowed chats| + + + +### Type: [PrivacyRule](/API_docs/types/PrivacyRule.html) + + +### Example: + +``` +$privacyValueAllowChatParticipants = ['_' => 'privacyValueAllowChatParticipants', 'chats' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/privacyValueAllowCloseFriends.md b/docs/API_docs/constructors/privacyValueAllowCloseFriends.md new file mode 100644 index 0000000000..c5f3003558 --- /dev/null +++ b/docs/API_docs/constructors/privacyValueAllowCloseFriends.md @@ -0,0 +1,24 @@ +--- +title: "privacyValueAllowCloseFriends" +description: "Allow only close friends »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyValueAllowCloseFriends +[Back to constructors index](/API_docs/constructors/index.html) + + + +Allow only [close friends »](https://core.telegram.org/api/privacy) + + + + +### Type: [PrivacyRule](/API_docs/types/PrivacyRule.html) + + +### Example: + +``` +$privacyValueAllowCloseFriends = ['_' => 'privacyValueAllowCloseFriends']; +``` diff --git a/docs/API_docs/constructors/privacyValueAllowContacts.md b/docs/API_docs/constructors/privacyValueAllowContacts.md new file mode 100644 index 0000000000..60160d2d34 --- /dev/null +++ b/docs/API_docs/constructors/privacyValueAllowContacts.md @@ -0,0 +1,24 @@ +--- +title: "privacyValueAllowContacts" +description: "Allow all contacts" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyValueAllowContacts +[Back to constructors index](/API_docs/constructors/index.html) + + + +Allow all contacts + + + + +### Type: [PrivacyRule](/API_docs/types/PrivacyRule.html) + + +### Example: + +``` +$privacyValueAllowContacts = ['_' => 'privacyValueAllowContacts']; +``` diff --git a/docs/API_docs/constructors/privacyValueAllowPremium.md b/docs/API_docs/constructors/privacyValueAllowPremium.md new file mode 100644 index 0000000000..d5c963bb1b --- /dev/null +++ b/docs/API_docs/constructors/privacyValueAllowPremium.md @@ -0,0 +1,22 @@ +--- +title: "privacyValueAllowPremium" +description: "privacyValueAllowPremium attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyValueAllowPremium +[Back to constructors index](/API_docs/constructors/index.html) + + + + + + +### Type: [PrivacyRule](/API_docs/types/PrivacyRule.html) + + +### Example: + +``` +$privacyValueAllowPremium = ['_' => 'privacyValueAllowPremium']; +``` diff --git a/docs/API_docs/constructors/privacyValueAllowUsers.md b/docs/API_docs/constructors/privacyValueAllowUsers.md new file mode 100644 index 0000000000..87b3602c4c --- /dev/null +++ b/docs/API_docs/constructors/privacyValueAllowUsers.md @@ -0,0 +1,29 @@ +--- +title: "privacyValueAllowUsers" +description: "Allow only certain users" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyValueAllowUsers +[Back to constructors index](/API_docs/constructors/index.html) + + + +Allow only certain users + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|users|Array of [long](/API_docs/types/long.html) | Yes|Allowed users| + + + +### Type: [PrivacyRule](/API_docs/types/PrivacyRule.html) + + +### Example: + +``` +$privacyValueAllowUsers = ['_' => 'privacyValueAllowUsers', 'users' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/privacyValueDisallowAll.md b/docs/API_docs/constructors/privacyValueDisallowAll.md new file mode 100644 index 0000000000..8618b9c2b4 --- /dev/null +++ b/docs/API_docs/constructors/privacyValueDisallowAll.md @@ -0,0 +1,24 @@ +--- +title: "privacyValueDisallowAll" +description: "Disallow all users" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyValueDisallowAll +[Back to constructors index](/API_docs/constructors/index.html) + + + +Disallow all users + + + + +### Type: [PrivacyRule](/API_docs/types/PrivacyRule.html) + + +### Example: + +``` +$privacyValueDisallowAll = ['_' => 'privacyValueDisallowAll']; +``` diff --git a/docs/API_docs/constructors/privacyValueDisallowChatParticipants.md b/docs/API_docs/constructors/privacyValueDisallowChatParticipants.md new file mode 100644 index 0000000000..3a220f4d93 --- /dev/null +++ b/docs/API_docs/constructors/privacyValueDisallowChatParticipants.md @@ -0,0 +1,29 @@ +--- +title: "privacyValueDisallowChatParticipants" +description: "Disallow only participants of certain chats" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyValueDisallowChatParticipants +[Back to constructors index](/API_docs/constructors/index.html) + + + +Disallow only participants of certain chats + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chats|Array of [long](/API_docs/types/long.html) | Yes|Disallowed chats| + + + +### Type: [PrivacyRule](/API_docs/types/PrivacyRule.html) + + +### Example: + +``` +$privacyValueDisallowChatParticipants = ['_' => 'privacyValueDisallowChatParticipants', 'chats' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/privacyValueDisallowContacts.md b/docs/API_docs/constructors/privacyValueDisallowContacts.md new file mode 100644 index 0000000000..619845b60c --- /dev/null +++ b/docs/API_docs/constructors/privacyValueDisallowContacts.md @@ -0,0 +1,24 @@ +--- +title: "privacyValueDisallowContacts" +description: "Disallow only contacts" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyValueDisallowContacts +[Back to constructors index](/API_docs/constructors/index.html) + + + +Disallow only contacts + + + + +### Type: [PrivacyRule](/API_docs/types/PrivacyRule.html) + + +### Example: + +``` +$privacyValueDisallowContacts = ['_' => 'privacyValueDisallowContacts']; +``` diff --git a/docs/API_docs/constructors/privacyValueDisallowUsers.md b/docs/API_docs/constructors/privacyValueDisallowUsers.md new file mode 100644 index 0000000000..afe4d0854e --- /dev/null +++ b/docs/API_docs/constructors/privacyValueDisallowUsers.md @@ -0,0 +1,29 @@ +--- +title: "privacyValueDisallowUsers" +description: "Disallow only certain users" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: privacyValueDisallowUsers +[Back to constructors index](/API_docs/constructors/index.html) + + + +Disallow only certain users + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|users|Array of [long](/API_docs/types/long.html) | Yes|Disallowed users| + + + +### Type: [PrivacyRule](/API_docs/types/PrivacyRule.html) + + +### Example: + +``` +$privacyValueDisallowUsers = ['_' => 'privacyValueDisallowUsers', 'users' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/publicForwardMessage.md b/docs/API_docs/constructors/publicForwardMessage.md new file mode 100644 index 0000000000..b276ff7e62 --- /dev/null +++ b/docs/API_docs/constructors/publicForwardMessage.md @@ -0,0 +1,29 @@ +--- +title: "publicForwardMessage" +description: "Contains info about a forward of a story as a message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: publicForwardMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains info about a forward of a [story](https://core.telegram.org/api/stories) as a message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|message|[Message](/API_docs/types/Message.html) | Optional|Info about the message with the reposted story.| + + + +### Type: [PublicForward](/API_docs/types/PublicForward.html) + + +### Example: + +``` +$publicForwardMessage = ['_' => 'publicForwardMessage', 'message' => Message]; +``` diff --git a/docs/API_docs/constructors/publicForwardStory.md b/docs/API_docs/constructors/publicForwardStory.md new file mode 100644 index 0000000000..af04d06872 --- /dev/null +++ b/docs/API_docs/constructors/publicForwardStory.md @@ -0,0 +1,30 @@ +--- +title: "publicForwardStory" +description: "Contains info about a forward of a story as a repost by a public channel." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: publicForwardStory +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains info about a forward of a [story](https://core.telegram.org/api/stories) as a repost by a public channel. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|The channel that reposted the story.| +|story|[StoryItem](/API_docs/types/StoryItem.html) | Yes|The reposted story (may be different from the original story).| + + + +### Type: [PublicForward](/API_docs/types/PublicForward.html) + + +### Example: + +``` +$publicForwardStory = ['_' => 'publicForwardStory', 'peer' => long, 'story' => StoryItem]; +``` diff --git a/docs/API_docs/constructors/quickReply.md b/docs/API_docs/constructors/quickReply.md new file mode 100644 index 0000000000..46ad48eef6 --- /dev/null +++ b/docs/API_docs/constructors/quickReply.md @@ -0,0 +1,30 @@ +--- +title: "quickReply" +description: "quickReply attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: quickReply +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|shortcut\_id|[int](/API_docs/types/int.html) | Yes| +|shortcut|[string](/API_docs/types/string.html) | Yes| +|top\_message|[int](/API_docs/types/int.html) | Yes| +|count|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [QuickReply](/API_docs/types/QuickReply.html) + + +### Example: + +``` +$quickReply = ['_' => 'quickReply', 'shortcut_id' => int, 'shortcut' => 'string', 'top_message' => int, 'count' => int]; +``` diff --git a/docs/API_docs/constructors/reactionCount.md b/docs/API_docs/constructors/reactionCount.md new file mode 100644 index 0000000000..53fd6331b4 --- /dev/null +++ b/docs/API_docs/constructors/reactionCount.md @@ -0,0 +1,31 @@ +--- +title: "reactionCount" +description: "Reactions" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: reactionCount +[Back to constructors index](/API_docs/constructors/index.html) + + + +Reactions + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chosen\_order|[int](/API_docs/types/int.html) | Optional|If set, indicates that the current user also sent this reaction.
The integer value indicates when was the reaction added: the bigger the value, the newer the reaction.| +|reaction|[Reaction](/API_docs/types/Reaction.html) | Optional|The reaction.| +|count|[int](/API_docs/types/int.html) | Yes|Number of users that reacted with this emoji.| + + + +### Type: [ReactionCount](/API_docs/types/ReactionCount.html) + + +### Example: + +``` +$reactionCount = ['_' => 'reactionCount', 'chosen_order' => int, 'reaction' => Reaction, 'count' => int]; +``` diff --git a/docs/API_docs/constructors/reactionCustomEmoji.md b/docs/API_docs/constructors/reactionCustomEmoji.md new file mode 100644 index 0000000000..49f83a6ef7 --- /dev/null +++ b/docs/API_docs/constructors/reactionCustomEmoji.md @@ -0,0 +1,29 @@ +--- +title: "reactionCustomEmoji" +description: "Custom emoji message reaction" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: reactionCustomEmoji +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Custom emoji](https://core.telegram.org/api/custom-emoji) message reaction + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|document\_id|[long](/API_docs/types/long.html) | Yes|[Custom emoji document ID](https://core.telegram.org/api/custom-emoji)| + + + +### Type: [Reaction](/API_docs/types/Reaction.html) + + +### Example: + +``` +$reactionCustomEmoji = ['_' => 'reactionCustomEmoji', 'document_id' => long]; +``` diff --git a/docs/API_docs/constructors/reactionEmoji.md b/docs/API_docs/constructors/reactionEmoji.md new file mode 100644 index 0000000000..a35f4ee818 --- /dev/null +++ b/docs/API_docs/constructors/reactionEmoji.md @@ -0,0 +1,29 @@ +--- +title: "reactionEmoji" +description: "Normal emoji message reaction" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: reactionEmoji +[Back to constructors index](/API_docs/constructors/index.html) + + + +Normal emoji message reaction + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|emoticon|[string](/API_docs/types/string.html) | Yes|Emoji| + + + +### Type: [Reaction](/API_docs/types/Reaction.html) + + +### Example: + +``` +$reactionEmoji = ['_' => 'reactionEmoji', 'emoticon' => 'string']; +``` diff --git a/docs/API_docs/constructors/reactionEmpty.md b/docs/API_docs/constructors/reactionEmpty.md new file mode 100644 index 0000000000..cbaa00bae6 --- /dev/null +++ b/docs/API_docs/constructors/reactionEmpty.md @@ -0,0 +1,24 @@ +--- +title: "reactionEmpty" +description: "No reaction" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: reactionEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +No reaction + + + + +### Type: [Reaction](/API_docs/types/Reaction.html) + + +### Example: + +``` +$reactionEmpty = ['_' => 'reactionEmpty']; +``` diff --git a/docs/API_docs/constructors/reactionNotificationsFromAll.md b/docs/API_docs/constructors/reactionNotificationsFromAll.md new file mode 100644 index 0000000000..d6b3571b81 --- /dev/null +++ b/docs/API_docs/constructors/reactionNotificationsFromAll.md @@ -0,0 +1,22 @@ +--- +title: "reactionNotificationsFromAll" +description: "reactionNotificationsFromAll attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: reactionNotificationsFromAll +[Back to constructors index](/API_docs/constructors/index.html) + + + + + + +### Type: [ReactionNotificationsFrom](/API_docs/types/ReactionNotificationsFrom.html) + + +### Example: + +``` +$reactionNotificationsFromAll = ['_' => 'reactionNotificationsFromAll']; +``` diff --git a/docs/API_docs/constructors/reactionNotificationsFromContacts.md b/docs/API_docs/constructors/reactionNotificationsFromContacts.md new file mode 100644 index 0000000000..26bdbed70b --- /dev/null +++ b/docs/API_docs/constructors/reactionNotificationsFromContacts.md @@ -0,0 +1,22 @@ +--- +title: "reactionNotificationsFromContacts" +description: "reactionNotificationsFromContacts attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: reactionNotificationsFromContacts +[Back to constructors index](/API_docs/constructors/index.html) + + + + + + +### Type: [ReactionNotificationsFrom](/API_docs/types/ReactionNotificationsFrom.html) + + +### Example: + +``` +$reactionNotificationsFromContacts = ['_' => 'reactionNotificationsFromContacts']; +``` diff --git a/docs/API_docs/constructors/reactionsNotifySettings.md b/docs/API_docs/constructors/reactionsNotifySettings.md new file mode 100644 index 0000000000..1233a8a4a1 --- /dev/null +++ b/docs/API_docs/constructors/reactionsNotifySettings.md @@ -0,0 +1,30 @@ +--- +title: "reactionsNotifySettings" +description: "reactionsNotifySettings attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: reactionsNotifySettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|messages\_notify\_from|[ReactionNotificationsFrom](/API_docs/types/ReactionNotificationsFrom.html) | Optional| +|stories\_notify\_from|[ReactionNotificationsFrom](/API_docs/types/ReactionNotificationsFrom.html) | Optional| +|sound|[NotificationSound](/API_docs/types/NotificationSound.html) | Yes| +|show\_previews|[Bool](/API_docs/types/Bool.html) | Yes| + + + +### Type: [ReactionsNotifySettings](/API_docs/types/ReactionsNotifySettings.html) + + +### Example: + +``` +$reactionsNotifySettings = ['_' => 'reactionsNotifySettings', 'messages_notify_from' => ReactionNotificationsFrom, 'stories_notify_from' => ReactionNotificationsFrom, 'sound' => NotificationSound, 'show_previews' => Bool]; +``` diff --git a/docs/API_docs/constructors/readParticipantDate.md b/docs/API_docs/constructors/readParticipantDate.md new file mode 100644 index 0000000000..5c442723ec --- /dev/null +++ b/docs/API_docs/constructors/readParticipantDate.md @@ -0,0 +1,30 @@ +--- +title: "readParticipantDate" +description: "Contains info about when a certain participant has read a message" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: readParticipantDate +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains info about when a certain participant has read a message + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|User ID| +|date|[int](/API_docs/types/int.html) | Yes|When the user read the message| + + + +### Type: [ReadParticipantDate](/API_docs/types/ReadParticipantDate.html) + + +### Example: + +``` +$readParticipantDate = ['_' => 'readParticipantDate', 'user_id' => long, 'date' => int]; +``` diff --git a/docs/API_docs/constructors/receivedNotifyMessage.md b/docs/API_docs/constructors/receivedNotifyMessage.md new file mode 100644 index 0000000000..aaeb6294a9 --- /dev/null +++ b/docs/API_docs/constructors/receivedNotifyMessage.md @@ -0,0 +1,29 @@ +--- +title: "receivedNotifyMessage" +description: "Message ID, for which PUSH-notifications were cancelled." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: receivedNotifyMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message ID, for which PUSH-notifications were cancelled. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[int](/API_docs/types/int.html) | Yes|Message ID, for which PUSH-notifications were canceled| + + + +### Type: [ReceivedNotifyMessage](/API_docs/types/ReceivedNotifyMessage.html) + + +### Example: + +``` +$receivedNotifyMessage = ['_' => 'receivedNotifyMessage', 'id' => int]; +``` diff --git a/docs/API_docs/constructors/recentMeUrlChat.md b/docs/API_docs/constructors/recentMeUrlChat.md new file mode 100644 index 0000000000..fd36f6b4eb --- /dev/null +++ b/docs/API_docs/constructors/recentMeUrlChat.md @@ -0,0 +1,30 @@ +--- +title: "recentMeUrlChat" +description: "Recent t.me link to a chat" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: recentMeUrlChat +[Back to constructors index](/API_docs/constructors/index.html) + + + +Recent t.me link to a chat + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|t.me URL| +|chat\_id|[long](/API_docs/types/long.html) | Yes|Chat ID| + + + +### Type: [RecentMeUrl](/API_docs/types/RecentMeUrl.html) + + +### Example: + +``` +$recentMeUrlChat = ['_' => 'recentMeUrlChat', 'url' => 'string', 'chat_id' => long]; +``` diff --git a/docs/API_docs/constructors/recentMeUrlChatInvite.md b/docs/API_docs/constructors/recentMeUrlChatInvite.md new file mode 100644 index 0000000000..ae1db20452 --- /dev/null +++ b/docs/API_docs/constructors/recentMeUrlChatInvite.md @@ -0,0 +1,30 @@ +--- +title: "recentMeUrlChatInvite" +description: "Recent t.me invite link to a chat" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: recentMeUrlChatInvite +[Back to constructors index](/API_docs/constructors/index.html) + + + +Recent t.me invite link to a chat + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|t.me URL| +|chat\_invite|[ChatInvite](/API_docs/types/ChatInvite.html) | Yes|Chat invitation| + + + +### Type: [RecentMeUrl](/API_docs/types/RecentMeUrl.html) + + +### Example: + +``` +$recentMeUrlChatInvite = ['_' => 'recentMeUrlChatInvite', 'url' => 'string', 'chat_invite' => ChatInvite]; +``` diff --git a/docs/API_docs/constructors/recentMeUrlStickerSet.md b/docs/API_docs/constructors/recentMeUrlStickerSet.md new file mode 100644 index 0000000000..fb5695fe94 --- /dev/null +++ b/docs/API_docs/constructors/recentMeUrlStickerSet.md @@ -0,0 +1,30 @@ +--- +title: "recentMeUrlStickerSet" +description: "Recent t.me stickerset installation URL" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: recentMeUrlStickerSet +[Back to constructors index](/API_docs/constructors/index.html) + + + +Recent t.me stickerset installation URL + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|t.me URL| +|set|[StickerSetCovered](/API_docs/types/StickerSetCovered.html) | Yes|Stickerset| + + + +### Type: [RecentMeUrl](/API_docs/types/RecentMeUrl.html) + + +### Example: + +``` +$recentMeUrlStickerSet = ['_' => 'recentMeUrlStickerSet', 'url' => 'string', 'set' => StickerSetCovered]; +``` diff --git a/docs/API_docs/constructors/recentMeUrlUnknown.md b/docs/API_docs/constructors/recentMeUrlUnknown.md new file mode 100644 index 0000000000..cd1b657222 --- /dev/null +++ b/docs/API_docs/constructors/recentMeUrlUnknown.md @@ -0,0 +1,29 @@ +--- +title: "recentMeUrlUnknown" +description: "Unknown t.me url" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: recentMeUrlUnknown +[Back to constructors index](/API_docs/constructors/index.html) + + + +Unknown t.me url + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|URL| + + + +### Type: [RecentMeUrl](/API_docs/types/RecentMeUrl.html) + + +### Example: + +``` +$recentMeUrlUnknown = ['_' => 'recentMeUrlUnknown', 'url' => 'string']; +``` diff --git a/docs/API_docs/constructors/recentMeUrlUser.md b/docs/API_docs/constructors/recentMeUrlUser.md new file mode 100644 index 0000000000..e196defa00 --- /dev/null +++ b/docs/API_docs/constructors/recentMeUrlUser.md @@ -0,0 +1,30 @@ +--- +title: "recentMeUrlUser" +description: "Recent t.me link to a user" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: recentMeUrlUser +[Back to constructors index](/API_docs/constructors/index.html) + + + +Recent t.me link to a user + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|URL| +|user\_id|[long](/API_docs/types/long.html) | Yes|User ID| + + + +### Type: [RecentMeUrl](/API_docs/types/RecentMeUrl.html) + + +### Example: + +``` +$recentMeUrlUser = ['_' => 'recentMeUrlUser', 'url' => 'string', 'user_id' => long]; +``` diff --git a/docs/API_docs/constructors/replyInlineMarkup.md b/docs/API_docs/constructors/replyInlineMarkup.md new file mode 100644 index 0000000000..4b681d736a --- /dev/null +++ b/docs/API_docs/constructors/replyInlineMarkup.md @@ -0,0 +1,29 @@ +--- +title: "replyInlineMarkup" +description: "Bot or inline keyboard" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: replyInlineMarkup +[Back to constructors index](/API_docs/constructors/index.html) + + + +Bot or inline keyboard + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|rows|Array of [KeyboardButtonRow](/API_docs/types/KeyboardButtonRow.html) | Yes|Bot or inline keyboard rows| + + + +### Type: [ReplyMarkup](/API_docs/types/ReplyMarkup.html) + + +### Example: + +``` +$replyInlineMarkup = ['_' => 'replyInlineMarkup', 'rows' => [KeyboardButtonRow, KeyboardButtonRow]]; +``` diff --git a/docs/API_docs/constructors/replyKeyboardForceReply.md b/docs/API_docs/constructors/replyKeyboardForceReply.md new file mode 100644 index 0000000000..e0caa88b7d --- /dev/null +++ b/docs/API_docs/constructors/replyKeyboardForceReply.md @@ -0,0 +1,31 @@ +--- +title: "replyKeyboardForceReply" +description: "Force the user to send a reply" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: replyKeyboardForceReply +[Back to constructors index](/API_docs/constructors/index.html) + + + +Force the user to send a reply + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|single\_use|[Bool](/API_docs/types/Bool.html) | Optional|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|[Bool](/API_docs/types/Bool.html) | Optional|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.| +|placeholder|[string](/API_docs/types/string.html) | Optional|The placeholder to be shown in the input field when the keyboard is active; 1-64 characters.| + + + +### Type: [ReplyMarkup](/API_docs/types/ReplyMarkup.html) + + +### Example: + +``` +$replyKeyboardForceReply = ['_' => 'replyKeyboardForceReply', 'single_use' => Bool, 'selective' => Bool, 'placeholder' => 'string']; +``` diff --git a/docs/API_docs/constructors/replyKeyboardHide.md b/docs/API_docs/constructors/replyKeyboardHide.md new file mode 100644 index 0000000000..23727b2489 --- /dev/null +++ b/docs/API_docs/constructors/replyKeyboardHide.md @@ -0,0 +1,29 @@ +--- +title: "replyKeyboardHide" +description: "Hide sent bot keyboard" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: replyKeyboardHide +[Back to constructors index](/API_docs/constructors/index.html) + + + +Hide sent bot keyboard + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|selective|[Bool](/API_docs/types/Bool.html) | Optional|Use this flag if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply\_to\_message\_id), sender of the original message.

Example: A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet| + + + +### Type: [ReplyMarkup](/API_docs/types/ReplyMarkup.html) + + +### Example: + +``` +$replyKeyboardHide = ['_' => 'replyKeyboardHide', 'selective' => Bool]; +``` diff --git a/docs/API_docs/constructors/replyKeyboardMarkup.md b/docs/API_docs/constructors/replyKeyboardMarkup.md new file mode 100644 index 0000000000..ee47c3f2e2 --- /dev/null +++ b/docs/API_docs/constructors/replyKeyboardMarkup.md @@ -0,0 +1,34 @@ +--- +title: "replyKeyboardMarkup" +description: "Bot keyboard" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: replyKeyboardMarkup +[Back to constructors index](/API_docs/constructors/index.html) + + + +Bot keyboard + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|resize|[Bool](/API_docs/types/Bool.html) | Optional|Requests 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|[Bool](/API_docs/types/Bool.html) | Optional|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|[Bool](/API_docs/types/Bool.html) | Optional|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.| +|persistent|[Bool](/API_docs/types/Bool.html) | Optional|Requests clients to always show the keyboard when the regular keyboard is hidden.| +|rows|Array of [KeyboardButtonRow](/API_docs/types/KeyboardButtonRow.html) | Yes|Button row| +|placeholder|[string](/API_docs/types/string.html) | Optional|The placeholder to be shown in the input field when the keyboard is active; 1-64 characters.| + + + +### Type: [ReplyMarkup](/API_docs/types/ReplyMarkup.html) + + +### Example: + +``` +$replyKeyboardMarkup = ['_' => 'replyKeyboardMarkup', 'resize' => Bool, 'single_use' => Bool, 'selective' => Bool, 'persistent' => Bool, 'rows' => [KeyboardButtonRow, KeyboardButtonRow], 'placeholder' => 'string']; +``` diff --git a/docs/API_docs/constructors/requestPeerTypeBroadcast.md b/docs/API_docs/constructors/requestPeerTypeBroadcast.md new file mode 100644 index 0000000000..0aecd46062 --- /dev/null +++ b/docs/API_docs/constructors/requestPeerTypeBroadcast.md @@ -0,0 +1,32 @@ +--- +title: "requestPeerTypeBroadcast" +description: "Choose a channel" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: requestPeerTypeBroadcast +[Back to constructors index](/API_docs/constructors/index.html) + + + +Choose a channel + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|creator|[Bool](/API_docs/types/Bool.html) | Optional|Whether to allow only choosing channels that were created by the current user.| +|has\_username|[Bool](/API_docs/types/Bool.html) | Optional|If specified, allows only choosing channels with or without a username, according to the value of [Bool](../types/Bool.html).| +|user\_admin\_rights|[ChatAdminRights](/API_docs/types/ChatAdminRights.html) | Optional|If specified, allows only choosing channels where the current user is an admin with at least the specified admin rights.| +|bot\_admin\_rights|[ChatAdminRights](/API_docs/types/ChatAdminRights.html) | Optional|If specified, allows only choosing channels where the bot is an admin with at least the specified admin rights.| + + + +### Type: [RequestPeerType](/API_docs/types/RequestPeerType.html) + + +### Example: + +``` +$requestPeerTypeBroadcast = ['_' => 'requestPeerTypeBroadcast', 'creator' => Bool, 'has_username' => Bool, 'user_admin_rights' => ChatAdminRights, 'bot_admin_rights' => ChatAdminRights]; +``` diff --git a/docs/API_docs/constructors/requestPeerTypeChat.md b/docs/API_docs/constructors/requestPeerTypeChat.md new file mode 100644 index 0000000000..f16b2067f7 --- /dev/null +++ b/docs/API_docs/constructors/requestPeerTypeChat.md @@ -0,0 +1,34 @@ +--- +title: "requestPeerTypeChat" +description: "Choose a chat or supergroup" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: requestPeerTypeChat +[Back to constructors index](/API_docs/constructors/index.html) + + + +Choose a chat or supergroup + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|creator|[Bool](/API_docs/types/Bool.html) | Optional|Whether to allow only choosing chats or supergroups that were created by the current user.| +|bot\_participant|[Bool](/API_docs/types/Bool.html) | Optional|Whether to allow only choosing chats or supergroups where the bot is a participant.| +|has\_username|[Bool](/API_docs/types/Bool.html) | Optional|If specified, allows only choosing channels with or without a username, according to the value of [Bool](../types/Bool.html).| +|forum|[Bool](/API_docs/types/Bool.html) | Optional|If specified, allows only choosing chats or supergroups that are or aren't [forums](https://core.telegram.org/api/forum), according to the value of [Bool](../types/Bool.html).| +|user\_admin\_rights|[ChatAdminRights](/API_docs/types/ChatAdminRights.html) | Optional|If specified, allows only choosing chats or supergroups where the current user is an admin with at least the specified admin rights.| +|bot\_admin\_rights|[ChatAdminRights](/API_docs/types/ChatAdminRights.html) | Optional|If specified, allows only choosing chats or supergroups where the bot is an admin with at least the specified admin rights.| + + + +### Type: [RequestPeerType](/API_docs/types/RequestPeerType.html) + + +### Example: + +``` +$requestPeerTypeChat = ['_' => 'requestPeerTypeChat', 'creator' => Bool, 'bot_participant' => Bool, 'has_username' => Bool, 'forum' => Bool, 'user_admin_rights' => ChatAdminRights, 'bot_admin_rights' => ChatAdminRights]; +``` diff --git a/docs/API_docs/constructors/requestPeerTypeUser.md b/docs/API_docs/constructors/requestPeerTypeUser.md new file mode 100644 index 0000000000..0b2c15065e --- /dev/null +++ b/docs/API_docs/constructors/requestPeerTypeUser.md @@ -0,0 +1,30 @@ +--- +title: "requestPeerTypeUser" +description: "Choose a user." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: requestPeerTypeUser +[Back to constructors index](/API_docs/constructors/index.html) + + + +Choose a user. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|bot|[Bool](/API_docs/types/Bool.html) | Optional|Whether to allow choosing only bots.| +|premium|[Bool](/API_docs/types/Bool.html) | Optional|Whether to allow choosing only [Premium](https://core.telegram.org/api/premium) users.| + + + +### Type: [RequestPeerType](/API_docs/types/RequestPeerType.html) + + +### Example: + +``` +$requestPeerTypeUser = ['_' => 'requestPeerTypeUser', 'bot' => Bool, 'premium' => Bool]; +``` diff --git a/docs/API_docs/constructors/requestedPeerChannel.md b/docs/API_docs/constructors/requestedPeerChannel.md new file mode 100644 index 0000000000..d7291ea31c --- /dev/null +++ b/docs/API_docs/constructors/requestedPeerChannel.md @@ -0,0 +1,30 @@ +--- +title: "requestedPeerChannel" +description: "requestedPeerChannel attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: requestedPeerChannel +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|channel\_id|[long](/API_docs/types/long.html) | Yes| +|title|[string](/API_docs/types/string.html) | Optional| +|username|[string](/API_docs/types/string.html) | Optional| +|photo|[Photo](/API_docs/types/Photo.html) | Optional| + + + +### Type: [RequestedPeer](/API_docs/types/RequestedPeer.html) + + +### Example: + +``` +$requestedPeerChannel = ['_' => 'requestedPeerChannel', 'channel_id' => long, 'title' => 'string', 'username' => 'string', 'photo' => Photo]; +``` diff --git a/docs/API_docs/constructors/requestedPeerChat.md b/docs/API_docs/constructors/requestedPeerChat.md new file mode 100644 index 0000000000..2c7e6dac52 --- /dev/null +++ b/docs/API_docs/constructors/requestedPeerChat.md @@ -0,0 +1,29 @@ +--- +title: "requestedPeerChat" +description: "requestedPeerChat attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: requestedPeerChat +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|chat\_id|[long](/API_docs/types/long.html) | Yes| +|title|[string](/API_docs/types/string.html) | Optional| +|photo|[Photo](/API_docs/types/Photo.html) | Optional| + + + +### Type: [RequestedPeer](/API_docs/types/RequestedPeer.html) + + +### Example: + +``` +$requestedPeerChat = ['_' => 'requestedPeerChat', 'chat_id' => long, 'title' => 'string', 'photo' => Photo]; +``` diff --git a/docs/API_docs/constructors/requestedPeerUser.md b/docs/API_docs/constructors/requestedPeerUser.md new file mode 100644 index 0000000000..0986415d74 --- /dev/null +++ b/docs/API_docs/constructors/requestedPeerUser.md @@ -0,0 +1,31 @@ +--- +title: "requestedPeerUser" +description: "requestedPeerUser attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: requestedPeerUser +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|user\_id|[long](/API_docs/types/long.html) | Yes| +|first\_name|[string](/API_docs/types/string.html) | Optional| +|last\_name|[string](/API_docs/types/string.html) | Optional| +|username|[string](/API_docs/types/string.html) | Optional| +|photo|[Photo](/API_docs/types/Photo.html) | Optional| + + + +### Type: [RequestedPeer](/API_docs/types/RequestedPeer.html) + + +### Example: + +``` +$requestedPeerUser = ['_' => 'requestedPeerUser', 'user_id' => long, 'first_name' => 'string', 'last_name' => 'string', 'username' => 'string', 'photo' => Photo]; +``` diff --git a/docs/API_docs/constructors/restrictionReason.md b/docs/API_docs/constructors/restrictionReason.md new file mode 100644 index 0000000000..d1edd68c4e --- /dev/null +++ b/docs/API_docs/constructors/restrictionReason.md @@ -0,0 +1,33 @@ +--- +title: "restrictionReason" +description: "Restriction reason." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: restrictionReason +[Back to constructors index](/API_docs/constructors/index.html) + + + +Restriction reason. + +Contains the reason why access to a certain object must be restricted. Clients are supposed to deny access to the channel if the `platform` field is equal to `all` or to the current platform (`ios`, `android`, `wp`, etc.). Platforms can be concatenated (`ios-android`, `ios-wp`), unknown platforms are to be ignored. The `text` is the error message that should be shown to the user. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|platform|[string](/API_docs/types/string.html) | Yes|Platform identifier (ios, android, wp, all, etc.), can be concatenated with a dash as separator (`android-ios`, `ios-wp`, etc)| +|reason|[string](/API_docs/types/string.html) | Yes|Restriction reason (`porno`, `terms`, etc.)| +|text|[string](/API_docs/types/string.html) | Yes|Error message to be shown to the user| + + + +### Type: [RestrictionReason](/API_docs/types/RestrictionReason.html) + + +### Example: + +``` +$restrictionReason = ['_' => 'restrictionReason', 'platform' => 'string', 'reason' => 'string', 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/savedDialog.md b/docs/API_docs/constructors/savedDialog.md new file mode 100644 index 0000000000..212f5bbc7a --- /dev/null +++ b/docs/API_docs/constructors/savedDialog.md @@ -0,0 +1,31 @@ +--- +title: "savedDialog" +description: "Represents a saved dialog »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: savedDialog +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a [saved dialog »](https://core.telegram.org/api/saved-messages). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|pinned|[Bool](/API_docs/types/Bool.html) | Optional|Is the dialog pinned| +|peer|[long](/API_docs/types/long.html) | Yes|The dialog| +|top\_message|[int](/API_docs/types/int.html) | Yes|The latest message ID| + + + +### Type: [SavedDialog](/API_docs/types/SavedDialog.html) + + +### Example: + +``` +$savedDialog = ['_' => 'savedDialog', 'pinned' => Bool, 'peer' => long, 'top_message' => int]; +``` diff --git a/docs/API_docs/constructors/savedPhoneContact.md b/docs/API_docs/constructors/savedPhoneContact.md new file mode 100644 index 0000000000..d2e3d003e3 --- /dev/null +++ b/docs/API_docs/constructors/savedPhoneContact.md @@ -0,0 +1,32 @@ +--- +title: "savedPhoneContact" +description: "Saved contact" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: savedPhoneContact +[Back to constructors index](/API_docs/constructors/index.html) + + + +Saved contact + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|phone|[string](/API_docs/types/string.html) | Yes|Phone number| +|first\_name|[string](/API_docs/types/string.html) | Yes|First name| +|last\_name|[string](/API_docs/types/string.html) | Yes|Last name| +|date|[int](/API_docs/types/int.html) | Yes|Date added| + + + +### Type: [SavedContact](/API_docs/types/SavedContact.html) + + +### Example: + +``` +$savedPhoneContact = ['_' => 'savedPhoneContact', 'phone' => 'string', 'first_name' => 'string', 'last_name' => 'string', 'date' => int]; +``` diff --git a/docs/API_docs/constructors/savedReactionTag.md b/docs/API_docs/constructors/savedReactionTag.md new file mode 100644 index 0000000000..8ffa116016 --- /dev/null +++ b/docs/API_docs/constructors/savedReactionTag.md @@ -0,0 +1,29 @@ +--- +title: "savedReactionTag" +description: "savedReactionTag attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: savedReactionTag +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|reaction|[Reaction](/API_docs/types/Reaction.html) | Optional| +|title|[string](/API_docs/types/string.html) | Optional| +|count|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [SavedReactionTag](/API_docs/types/SavedReactionTag.html) + + +### Example: + +``` +$savedReactionTag = ['_' => 'savedReactionTag', 'reaction' => Reaction, 'title' => 'string', 'count' => int]; +``` diff --git a/docs/API_docs/constructors/searchResultPosition.md b/docs/API_docs/constructors/searchResultPosition.md new file mode 100644 index 0000000000..a6ffaefb3b --- /dev/null +++ b/docs/API_docs/constructors/searchResultPosition.md @@ -0,0 +1,31 @@ +--- +title: "searchResultPosition" +description: "Information about a message in a specific position" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: searchResultPosition +[Back to constructors index](/API_docs/constructors/index.html) + + + +Information about a message in a specific position + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|msg\_id|[int](/API_docs/types/int.html) | Yes|Message ID| +|date|[int](/API_docs/types/int.html) | Yes|When was the message sent| +|offset|[int](/API_docs/types/int.html) | Yes|0-based message position in the full list of suitable messages| + + + +### Type: [SearchResultsPosition](/API_docs/types/SearchResultsPosition.html) + + +### Example: + +``` +$searchResultPosition = ['_' => 'searchResultPosition', 'msg_id' => int, 'date' => int, 'offset' => int]; +``` diff --git a/docs/API_docs/constructors/searchResultsCalendarPeriod.md b/docs/API_docs/constructors/searchResultsCalendarPeriod.md new file mode 100644 index 0000000000..0bcd23529b --- /dev/null +++ b/docs/API_docs/constructors/searchResultsCalendarPeriod.md @@ -0,0 +1,34 @@ +--- +title: "searchResultsCalendarPeriod" +description: "Information about found messages sent on a specific day, used to split the messages in messages.searchResultsCalendar constructors by days." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: searchResultsCalendarPeriod +[Back to constructors index](/API_docs/constructors/index.html) + + + +Information about found messages sent on a specific day, used to split the `messages` in [messages.searchResultsCalendar](../constructors/messages.searchResultsCalendar.html) constructors by days. + +Multiple searchResultsCalendarPeriod constructors are returned in [messages.searchResultsCalendar](../constructors/messages.searchResultsCalendar.html), each containing information about the first, last and total number of messages matching the filter that were sent on a specific day. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|date|[int](/API_docs/types/int.html) | Yes|The day this object is referring to.| +|min\_msg\_id|[int](/API_docs/types/int.html) | Yes|First message ID that was sent on this day.| +|max\_msg\_id|[int](/API_docs/types/int.html) | Yes|Last message ID that was sent on this day.| +|count|[int](/API_docs/types/int.html) | Yes|All messages that were sent on this day.| + + + +### Type: [SearchResultsCalendarPeriod](/API_docs/types/SearchResultsCalendarPeriod.html) + + +### Example: + +``` +$searchResultsCalendarPeriod = ['_' => 'searchResultsCalendarPeriod', 'date' => int, 'min_msg_id' => int, 'max_msg_id' => int, 'count' => int]; +``` diff --git a/docs/API_docs/constructors/secureCredentialsEncrypted.md b/docs/API_docs/constructors/secureCredentialsEncrypted.md new file mode 100644 index 0000000000..fc1cc68881 --- /dev/null +++ b/docs/API_docs/constructors/secureCredentialsEncrypted.md @@ -0,0 +1,31 @@ +--- +title: "secureCredentialsEncrypted" +description: "Encrypted credentials required to decrypt telegram passport data." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureCredentialsEncrypted +[Back to constructors index](/API_docs/constructors/index.html) + + + +Encrypted credentials required to decrypt [telegram passport](https://core.telegram.org/passport) data. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|data|[bytes](/API_docs/types/bytes.html) | Yes|Encrypted JSON-serialized data with unique user's payload, data hashes and secrets required for EncryptedPassportElement decryption and authentication, as described in [decrypting data »](https://core.telegram.org/passport#decrypting-data)| +|hash|[bytes](/API_docs/types/bytes.html) | Yes|Data hash for data authentication as described in [decrypting data »](https://core.telegram.org/passport#decrypting-data)| +|secret|[bytes](/API_docs/types/bytes.html) | Yes|Secret, encrypted with the bot's public RSA key, required for data decryption as described in [decrypting data »](https://core.telegram.org/passport#decrypting-data)| + + + +### Type: [SecureCredentialsEncrypted](/API_docs/types/SecureCredentialsEncrypted.html) + + +### Example: + +``` +$secureCredentialsEncrypted = ['_' => 'secureCredentialsEncrypted', 'data' => 'bytes', 'hash' => 'bytes', 'secret' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/secureData.md b/docs/API_docs/constructors/secureData.md new file mode 100644 index 0000000000..d897b54a38 --- /dev/null +++ b/docs/API_docs/constructors/secureData.md @@ -0,0 +1,31 @@ +--- +title: "secureData" +description: "Secure passport data, for more info see the passport docs »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureData +[Back to constructors index](/API_docs/constructors/index.html) + + + +Secure [passport](https://core.telegram.org/passport) data, for more info [see the passport docs »](https://core.telegram.org/passport/encryption#securedata) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|data|[bytes](/API_docs/types/bytes.html) | Yes|Data| +|data\_hash|[bytes](/API_docs/types/bytes.html) | Yes|Data hash| +|secret|[bytes](/API_docs/types/bytes.html) | Yes|Secret| + + + +### Type: [SecureData](/API_docs/types/SecureData.html) + + +### Example: + +``` +$secureData = ['_' => 'secureData', 'data' => 'bytes', 'data_hash' => 'bytes', 'secret' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/secureFile.md b/docs/API_docs/constructors/secureFile.md new file mode 100644 index 0000000000..3dcf16be79 --- /dev/null +++ b/docs/API_docs/constructors/secureFile.md @@ -0,0 +1,35 @@ +--- +title: "secureFile" +description: "Secure passport file, for more info see the passport docs »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureFile +[Back to constructors index](/API_docs/constructors/index.html) + + + +Secure [passport](https://core.telegram.org/passport) file, for more info [see the passport docs »](https://core.telegram.org/passport/encryption#inputsecurefile) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash| +|size|[long](/API_docs/types/long.html) | Yes|File size| +|dc\_id|[int](/API_docs/types/int.html) | Yes|DC ID| +|date|[int](/API_docs/types/int.html) | Yes|Date of upload| +|file\_hash|[bytes](/API_docs/types/bytes.html) | Yes|File hash| +|secret|[bytes](/API_docs/types/bytes.html) | Yes|Secret| + + + +### Type: [SecureFile](/API_docs/types/SecureFile.html) + + +### Example: + +``` +$secureFile = ['_' => 'secureFile', 'id' => long, 'access_hash' => long, 'size' => long, 'dc_id' => int, 'date' => int, 'file_hash' => 'bytes', 'secret' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/secureFileEmpty.md b/docs/API_docs/constructors/secureFileEmpty.md new file mode 100644 index 0000000000..85e73c2b8c --- /dev/null +++ b/docs/API_docs/constructors/secureFileEmpty.md @@ -0,0 +1,24 @@ +--- +title: "secureFileEmpty" +description: "Empty constructor" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureFileEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor + + + + +### Type: [SecureFile](/API_docs/types/SecureFile.html) + + +### Example: + +``` +$secureFileEmpty = ['_' => 'secureFileEmpty']; +``` diff --git a/docs/API_docs/constructors/securePasswordKdfAlgoPBKDF2HMACSHA512iter100000.md b/docs/API_docs/constructors/securePasswordKdfAlgoPBKDF2HMACSHA512iter100000.md new file mode 100644 index 0000000000..07270248f8 --- /dev/null +++ b/docs/API_docs/constructors/securePasswordKdfAlgoPBKDF2HMACSHA512iter100000.md @@ -0,0 +1,29 @@ +--- +title: "securePasswordKdfAlgoPBKDF2HMACSHA512iter100000" +description: "PBKDF2 with SHA512 and 100000 iterations KDF algo" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: securePasswordKdfAlgoPBKDF2HMACSHA512iter100000 +[Back to constructors index](/API_docs/constructors/index.html) + + + +PBKDF2 with SHA512 and 100000 iterations KDF algo + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|salt|[bytes](/API_docs/types/bytes.html) | Yes|Salt| + + + +### Type: [SecurePasswordKdfAlgo](/API_docs/types/SecurePasswordKdfAlgo.html) + + +### Example: + +``` +$securePasswordKdfAlgoPBKDF2HMACSHA512iter100000 = ['_' => 'securePasswordKdfAlgoPBKDF2HMACSHA512iter100000', 'salt' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/securePasswordKdfAlgoSHA512.md b/docs/API_docs/constructors/securePasswordKdfAlgoSHA512.md new file mode 100644 index 0000000000..20a67bffc1 --- /dev/null +++ b/docs/API_docs/constructors/securePasswordKdfAlgoSHA512.md @@ -0,0 +1,29 @@ +--- +title: "securePasswordKdfAlgoSHA512" +description: "SHA512 KDF algo" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: securePasswordKdfAlgoSHA512 +[Back to constructors index](/API_docs/constructors/index.html) + + + +SHA512 KDF algo + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|salt|[bytes](/API_docs/types/bytes.html) | Yes|Salt| + + + +### Type: [SecurePasswordKdfAlgo](/API_docs/types/SecurePasswordKdfAlgo.html) + + +### Example: + +``` +$securePasswordKdfAlgoSHA512 = ['_' => 'securePasswordKdfAlgoSHA512', 'salt' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/securePasswordKdfAlgoUnknown.md b/docs/API_docs/constructors/securePasswordKdfAlgoUnknown.md new file mode 100644 index 0000000000..52a1c5a852 --- /dev/null +++ b/docs/API_docs/constructors/securePasswordKdfAlgoUnknown.md @@ -0,0 +1,24 @@ +--- +title: "securePasswordKdfAlgoUnknown" +description: "Unknown KDF algo (most likely the client has to be updated)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: securePasswordKdfAlgoUnknown +[Back to constructors index](/API_docs/constructors/index.html) + + + +Unknown KDF algo (most likely the client has to be updated) + + + + +### Type: [SecurePasswordKdfAlgo](/API_docs/types/SecurePasswordKdfAlgo.html) + + +### Example: + +``` +$securePasswordKdfAlgoUnknown = ['_' => 'securePasswordKdfAlgoUnknown']; +``` diff --git a/docs/API_docs/constructors/securePlainEmail.md b/docs/API_docs/constructors/securePlainEmail.md new file mode 100644 index 0000000000..8706375587 --- /dev/null +++ b/docs/API_docs/constructors/securePlainEmail.md @@ -0,0 +1,29 @@ +--- +title: "securePlainEmail" +description: "Email address to use in telegram passport: it must be verified, first »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: securePlainEmail +[Back to constructors index](/API_docs/constructors/index.html) + + + +Email address to use in [telegram passport](https://core.telegram.org/passport): [it must be verified, first »](https://core.telegram.org/passport/encryption#secureplaindata). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|email|[string](/API_docs/types/string.html) | Yes|Email address| + + + +### Type: [SecurePlainData](/API_docs/types/SecurePlainData.html) + + +### Example: + +``` +$securePlainEmail = ['_' => 'securePlainEmail', 'email' => 'string']; +``` diff --git a/docs/API_docs/constructors/securePlainPhone.md b/docs/API_docs/constructors/securePlainPhone.md new file mode 100644 index 0000000000..9b45b9c120 --- /dev/null +++ b/docs/API_docs/constructors/securePlainPhone.md @@ -0,0 +1,29 @@ +--- +title: "securePlainPhone" +description: "Phone number to use in telegram passport: it must be verified, first »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: securePlainPhone +[Back to constructors index](/API_docs/constructors/index.html) + + + +Phone number to use in [telegram passport](https://core.telegram.org/passport): [it must be verified, first »](https://core.telegram.org/passport/encryption#secureplaindata). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|phone|[string](/API_docs/types/string.html) | Yes|Phone number| + + + +### Type: [SecurePlainData](/API_docs/types/SecurePlainData.html) + + +### Example: + +``` +$securePlainPhone = ['_' => 'securePlainPhone', 'phone' => 'string']; +``` diff --git a/docs/API_docs/constructors/secureRequiredType.md b/docs/API_docs/constructors/secureRequiredType.md new file mode 100644 index 0000000000..5cb9eedc91 --- /dev/null +++ b/docs/API_docs/constructors/secureRequiredType.md @@ -0,0 +1,32 @@ +--- +title: "secureRequiredType" +description: "Required type" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureRequiredType +[Back to constructors index](/API_docs/constructors/index.html) + + + +Required type + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|native\_names|[Bool](/API_docs/types/Bool.html) | Optional|Native names| +|selfie\_required|[Bool](/API_docs/types/Bool.html) | Optional|Is a selfie required| +|translation\_required|[Bool](/API_docs/types/Bool.html) | Optional|Is a translation required| +|type|[SecureValueType](/API_docs/types/SecureValueType.html) | Yes|Secure value type| + + + +### Type: [SecureRequiredType](/API_docs/types/SecureRequiredType.html) + + +### Example: + +``` +$secureRequiredType = ['_' => 'secureRequiredType', 'native_names' => Bool, 'selfie_required' => Bool, 'translation_required' => Bool, 'type' => SecureValueType]; +``` diff --git a/docs/API_docs/constructors/secureRequiredTypeOneOf.md b/docs/API_docs/constructors/secureRequiredTypeOneOf.md new file mode 100644 index 0000000000..384ce17fa7 --- /dev/null +++ b/docs/API_docs/constructors/secureRequiredTypeOneOf.md @@ -0,0 +1,29 @@ +--- +title: "secureRequiredTypeOneOf" +description: "One of" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureRequiredTypeOneOf +[Back to constructors index](/API_docs/constructors/index.html) + + + +One of + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|types|Array of [SecureRequiredType](/API_docs/types/SecureRequiredType.html) | Yes|Secure required value types| + + + +### Type: [SecureRequiredType](/API_docs/types/SecureRequiredType.html) + + +### Example: + +``` +$secureRequiredTypeOneOf = ['_' => 'secureRequiredTypeOneOf', 'types' => [SecureRequiredType, SecureRequiredType]]; +``` diff --git a/docs/API_docs/constructors/secureSecretSettings.md b/docs/API_docs/constructors/secureSecretSettings.md new file mode 100644 index 0000000000..d1d4eb3286 --- /dev/null +++ b/docs/API_docs/constructors/secureSecretSettings.md @@ -0,0 +1,31 @@ +--- +title: "secureSecretSettings" +description: "Secure settings" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureSecretSettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +Secure settings + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|secure\_algo|[SecurePasswordKdfAlgo](/API_docs/types/SecurePasswordKdfAlgo.html) | Yes|Secure KDF algo| +|secure\_secret|[bytes](/API_docs/types/bytes.html) | Yes|Secure secret| +|secure\_secret\_id|[long](/API_docs/types/long.html) | Yes|Secret ID| + + + +### Type: [SecureSecretSettings](/API_docs/types/SecureSecretSettings.html) + + +### Example: + +``` +$secureSecretSettings = ['_' => 'secureSecretSettings', 'secure_algo' => SecurePasswordKdfAlgo, 'secure_secret' => 'bytes', 'secure_secret_id' => long]; +``` diff --git a/docs/API_docs/constructors/secureValue.md b/docs/API_docs/constructors/secureValue.md new file mode 100644 index 0000000000..8eba340b68 --- /dev/null +++ b/docs/API_docs/constructors/secureValue.md @@ -0,0 +1,37 @@ +--- +title: "secureValue" +description: "Secure value" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValue +[Back to constructors index](/API_docs/constructors/index.html) + + + +Secure value + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[SecureValueType](/API_docs/types/SecureValueType.html) | Yes|Secure [passport](https://core.telegram.org/passport) value type| +|data|[SecureData](/API_docs/types/SecureData.html) | Optional|Encrypted [Telegram Passport](https://core.telegram.org/passport) element data| +|front\_side|[SecureFile](/API_docs/types/SecureFile.html) | Optional|Encrypted [passport](https://core.telegram.org/passport) file with the front side of the document| +|reverse\_side|[SecureFile](/API_docs/types/SecureFile.html) | Optional|Encrypted [passport](https://core.telegram.org/passport) file with the reverse side of the document| +|selfie|[SecureFile](/API_docs/types/SecureFile.html) | Optional|Encrypted [passport](https://core.telegram.org/passport) file with a selfie of the user holding the document| +|translation|Array of [SecureFile](/API_docs/types/SecureFile.html) | Optional|Array of encrypted [passport](https://core.telegram.org/passport) files with translated versions of the provided documents| +|files|Array of [SecureFile](/API_docs/types/SecureFile.html) | Optional|Array of encrypted [passport](https://core.telegram.org/passport) files with photos the of the documents| +|plain\_data|[SecurePlainData](/API_docs/types/SecurePlainData.html) | Optional|Plaintext verified [passport](https://core.telegram.org/passport) data| +|hash|[bytes](/API_docs/types/bytes.html) | Yes|Data hash| + + + +### Type: [SecureValue](/API_docs/types/SecureValue.html) + + +### Example: + +``` +$secureValue = ['_' => 'secureValue', 'type' => SecureValueType, 'data' => SecureData, 'front_side' => SecureFile, 'reverse_side' => SecureFile, 'selfie' => SecureFile, 'translation' => [SecureFile, SecureFile], 'files' => [SecureFile, SecureFile], 'plain_data' => SecurePlainData, 'hash' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/secureValueError.md b/docs/API_docs/constructors/secureValueError.md new file mode 100644 index 0000000000..8719b7c609 --- /dev/null +++ b/docs/API_docs/constructors/secureValueError.md @@ -0,0 +1,31 @@ +--- +title: "secureValueError" +description: "Secure value error" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueError +[Back to constructors index](/API_docs/constructors/index.html) + + + +Secure value error + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[SecureValueType](/API_docs/types/SecureValueType.html) | Yes|Type of element which has the issue| +|hash|[bytes](/API_docs/types/bytes.html) | Yes|Hash| +|text|[string](/API_docs/types/string.html) | Yes|Error message| + + + +### Type: [SecureValueError](/API_docs/types/SecureValueError.html) + + +### Example: + +``` +$secureValueError = ['_' => 'secureValueError', 'type' => SecureValueType, 'hash' => 'bytes', 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/secureValueErrorData.md b/docs/API_docs/constructors/secureValueErrorData.md new file mode 100644 index 0000000000..135756a59d --- /dev/null +++ b/docs/API_docs/constructors/secureValueErrorData.md @@ -0,0 +1,32 @@ +--- +title: "secureValueErrorData" +description: "Represents an issue in one of the data fields that was provided by the user. The error is considered resolved when the field's value changes." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueErrorData +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents an issue in one of the data fields that was provided by the user. The error is considered resolved when the field's value changes. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[SecureValueType](/API_docs/types/SecureValueType.html) | Yes|The section of the user's Telegram Passport which has the error, one of [secureValueTypePersonalDetails](../constructors/secureValueTypePersonalDetails.html), [secureValueTypePassport](../constructors/secureValueTypePassport.html), [secureValueTypeDriverLicense](../constructors/secureValueTypeDriverLicense.html), [secureValueTypeIdentityCard](../constructors/secureValueTypeIdentityCard.html), [secureValueTypeInternalPassport](../constructors/secureValueTypeInternalPassport.html), [secureValueTypeAddress](../constructors/secureValueTypeAddress.html)| +|data\_hash|[bytes](/API_docs/types/bytes.html) | Yes|Data hash| +|field|[string](/API_docs/types/string.html) | Yes|Name of the data field which has the error| +|text|[string](/API_docs/types/string.html) | Yes|Error message| + + + +### Type: [SecureValueError](/API_docs/types/SecureValueError.html) + + +### Example: + +``` +$secureValueErrorData = ['_' => 'secureValueErrorData', 'type' => SecureValueType, 'data_hash' => 'bytes', 'field' => 'string', 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/secureValueErrorFile.md b/docs/API_docs/constructors/secureValueErrorFile.md new file mode 100644 index 0000000000..e3ee262d3a --- /dev/null +++ b/docs/API_docs/constructors/secureValueErrorFile.md @@ -0,0 +1,31 @@ +--- +title: "secureValueErrorFile" +description: "Represents an issue with a document scan. The error is considered resolved when the file with the document scan changes." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueErrorFile +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents an issue with a document scan. The error is considered resolved when the file with the document scan changes. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[SecureValueType](/API_docs/types/SecureValueType.html) | Yes|One of [secureValueTypeUtilityBill](../constructors/secureValueTypeUtilityBill.html), [secureValueTypeBankStatement](../constructors/secureValueTypeBankStatement.html), [secureValueTypeRentalAgreement](../constructors/secureValueTypeRentalAgreement.html), [secureValueTypePassportRegistration](../constructors/secureValueTypePassportRegistration.html), [secureValueTypeTemporaryRegistration](../constructors/secureValueTypeTemporaryRegistration.html)| +|file\_hash|[bytes](/API_docs/types/bytes.html) | Yes|File hash| +|text|[string](/API_docs/types/string.html) | Yes|Error message| + + + +### Type: [SecureValueError](/API_docs/types/SecureValueError.html) + + +### Example: + +``` +$secureValueErrorFile = ['_' => 'secureValueErrorFile', 'type' => SecureValueType, 'file_hash' => 'bytes', 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/secureValueErrorFiles.md b/docs/API_docs/constructors/secureValueErrorFiles.md new file mode 100644 index 0000000000..45b9c0467f --- /dev/null +++ b/docs/API_docs/constructors/secureValueErrorFiles.md @@ -0,0 +1,31 @@ +--- +title: "secureValueErrorFiles" +description: "Represents an issue with a list of scans. The error is considered resolved when the list of files containing the scans changes." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueErrorFiles +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents an issue with a list of scans. The error is considered resolved when the list of files containing the scans changes. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[SecureValueType](/API_docs/types/SecureValueType.html) | Yes|One of [secureValueTypeUtilityBill](../constructors/secureValueTypeUtilityBill.html), [secureValueTypeBankStatement](../constructors/secureValueTypeBankStatement.html), [secureValueTypeRentalAgreement](../constructors/secureValueTypeRentalAgreement.html), [secureValueTypePassportRegistration](../constructors/secureValueTypePassportRegistration.html), [secureValueTypeTemporaryRegistration](../constructors/secureValueTypeTemporaryRegistration.html)| +|file\_hash|Array of [bytes](/API_docs/types/bytes.html) | Yes|File hash| +|text|[string](/API_docs/types/string.html) | Yes|Error message| + + + +### Type: [SecureValueError](/API_docs/types/SecureValueError.html) + + +### Example: + +``` +$secureValueErrorFiles = ['_' => 'secureValueErrorFiles', 'type' => SecureValueType, 'file_hash' => ['bytes', 'bytes'], 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/secureValueErrorFrontSide.md b/docs/API_docs/constructors/secureValueErrorFrontSide.md new file mode 100644 index 0000000000..029f001664 --- /dev/null +++ b/docs/API_docs/constructors/secureValueErrorFrontSide.md @@ -0,0 +1,31 @@ +--- +title: "secureValueErrorFrontSide" +description: "Represents an issue with the front side of a document. The error is considered resolved when the file with the front side of the document changes." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueErrorFrontSide +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents an issue with the front side of a document. The error is considered resolved when the file with the front side of the document changes. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[SecureValueType](/API_docs/types/SecureValueType.html) | Yes|One of [secureValueTypePassport](../constructors/secureValueTypePassport.html), [secureValueTypeDriverLicense](../constructors/secureValueTypeDriverLicense.html), [secureValueTypeIdentityCard](../constructors/secureValueTypeIdentityCard.html), [secureValueTypeInternalPassport](../constructors/secureValueTypeInternalPassport.html)| +|file\_hash|[bytes](/API_docs/types/bytes.html) | Yes|File hash| +|text|[string](/API_docs/types/string.html) | Yes|Error message| + + + +### Type: [SecureValueError](/API_docs/types/SecureValueError.html) + + +### Example: + +``` +$secureValueErrorFrontSide = ['_' => 'secureValueErrorFrontSide', 'type' => SecureValueType, 'file_hash' => 'bytes', 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/secureValueErrorReverseSide.md b/docs/API_docs/constructors/secureValueErrorReverseSide.md new file mode 100644 index 0000000000..549e542c1f --- /dev/null +++ b/docs/API_docs/constructors/secureValueErrorReverseSide.md @@ -0,0 +1,31 @@ +--- +title: "secureValueErrorReverseSide" +description: "Represents an issue with the reverse side of a document. The error is considered resolved when the file with reverse side of the document changes." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueErrorReverseSide +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents an issue with the reverse side of a document. The error is considered resolved when the file with reverse side of the document changes. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[SecureValueType](/API_docs/types/SecureValueType.html) | Yes|One of [secureValueTypeDriverLicense](../constructors/secureValueTypeDriverLicense.html), [secureValueTypeIdentityCard](../constructors/secureValueTypeIdentityCard.html)| +|file\_hash|[bytes](/API_docs/types/bytes.html) | Yes|File hash| +|text|[string](/API_docs/types/string.html) | Yes|Error message| + + + +### Type: [SecureValueError](/API_docs/types/SecureValueError.html) + + +### Example: + +``` +$secureValueErrorReverseSide = ['_' => 'secureValueErrorReverseSide', 'type' => SecureValueType, 'file_hash' => 'bytes', 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/secureValueErrorSelfie.md b/docs/API_docs/constructors/secureValueErrorSelfie.md new file mode 100644 index 0000000000..d078da6c21 --- /dev/null +++ b/docs/API_docs/constructors/secureValueErrorSelfie.md @@ -0,0 +1,31 @@ +--- +title: "secureValueErrorSelfie" +description: "Represents an issue with the selfie with a document. The error is considered resolved when the file with the selfie changes." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueErrorSelfie +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents an issue with the selfie with a document. The error is considered resolved when the file with the selfie changes. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[SecureValueType](/API_docs/types/SecureValueType.html) | Yes|One of [secureValueTypePassport](../constructors/secureValueTypePassport.html), [secureValueTypeDriverLicense](../constructors/secureValueTypeDriverLicense.html), [secureValueTypeIdentityCard](../constructors/secureValueTypeIdentityCard.html), [secureValueTypeInternalPassport](../constructors/secureValueTypeInternalPassport.html)| +|file\_hash|[bytes](/API_docs/types/bytes.html) | Yes|File hash| +|text|[string](/API_docs/types/string.html) | Yes|Error message| + + + +### Type: [SecureValueError](/API_docs/types/SecureValueError.html) + + +### Example: + +``` +$secureValueErrorSelfie = ['_' => 'secureValueErrorSelfie', 'type' => SecureValueType, 'file_hash' => 'bytes', 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/secureValueErrorTranslationFile.md b/docs/API_docs/constructors/secureValueErrorTranslationFile.md new file mode 100644 index 0000000000..deb363e70b --- /dev/null +++ b/docs/API_docs/constructors/secureValueErrorTranslationFile.md @@ -0,0 +1,31 @@ +--- +title: "secureValueErrorTranslationFile" +description: "Represents an issue with one of the files that constitute the translation of a document. The error is considered resolved when the file changes." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueErrorTranslationFile +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents an issue with one of the files that constitute the translation of a document. The error is considered resolved when the file changes. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[SecureValueType](/API_docs/types/SecureValueType.html) | Yes|One of [secureValueTypePersonalDetails](../constructors/secureValueTypePersonalDetails.html), [secureValueTypePassport](../constructors/secureValueTypePassport.html), [secureValueTypeDriverLicense](../constructors/secureValueTypeDriverLicense.html), [secureValueTypeIdentityCard](../constructors/secureValueTypeIdentityCard.html), [secureValueTypeInternalPassport](../constructors/secureValueTypeInternalPassport.html), [secureValueTypeUtilityBill](../constructors/secureValueTypeUtilityBill.html), [secureValueTypeBankStatement](../constructors/secureValueTypeBankStatement.html), [secureValueTypeRentalAgreement](../constructors/secureValueTypeRentalAgreement.html), [secureValueTypePassportRegistration](../constructors/secureValueTypePassportRegistration.html), [secureValueTypeTemporaryRegistration](../constructors/secureValueTypeTemporaryRegistration.html)| +|file\_hash|[bytes](/API_docs/types/bytes.html) | Yes|File hash| +|text|[string](/API_docs/types/string.html) | Yes|Error message| + + + +### Type: [SecureValueError](/API_docs/types/SecureValueError.html) + + +### Example: + +``` +$secureValueErrorTranslationFile = ['_' => 'secureValueErrorTranslationFile', 'type' => SecureValueType, 'file_hash' => 'bytes', 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/secureValueErrorTranslationFiles.md b/docs/API_docs/constructors/secureValueErrorTranslationFiles.md new file mode 100644 index 0000000000..cde9639dd8 --- /dev/null +++ b/docs/API_docs/constructors/secureValueErrorTranslationFiles.md @@ -0,0 +1,31 @@ +--- +title: "secureValueErrorTranslationFiles" +description: "Represents an issue with the translated version of a document. The error is considered resolved when a file with the document translation changes." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueErrorTranslationFiles +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents an issue with the translated version of a document. The error is considered resolved when a file with the document translation changes. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[SecureValueType](/API_docs/types/SecureValueType.html) | Yes|One of [secureValueTypePersonalDetails](../constructors/secureValueTypePersonalDetails.html), [secureValueTypePassport](../constructors/secureValueTypePassport.html), [secureValueTypeDriverLicense](../constructors/secureValueTypeDriverLicense.html), [secureValueTypeIdentityCard](../constructors/secureValueTypeIdentityCard.html), [secureValueTypeInternalPassport](../constructors/secureValueTypeInternalPassport.html), [secureValueTypeUtilityBill](../constructors/secureValueTypeUtilityBill.html), [secureValueTypeBankStatement](../constructors/secureValueTypeBankStatement.html), [secureValueTypeRentalAgreement](../constructors/secureValueTypeRentalAgreement.html), [secureValueTypePassportRegistration](../constructors/secureValueTypePassportRegistration.html), [secureValueTypeTemporaryRegistration](../constructors/secureValueTypeTemporaryRegistration.html)| +|file\_hash|Array of [bytes](/API_docs/types/bytes.html) | Yes|Hash| +|text|[string](/API_docs/types/string.html) | Yes|Error message| + + + +### Type: [SecureValueError](/API_docs/types/SecureValueError.html) + + +### Example: + +``` +$secureValueErrorTranslationFiles = ['_' => 'secureValueErrorTranslationFiles', 'type' => SecureValueType, 'file_hash' => ['bytes', 'bytes'], 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/secureValueHash.md b/docs/API_docs/constructors/secureValueHash.md new file mode 100644 index 0000000000..c00ade334e --- /dev/null +++ b/docs/API_docs/constructors/secureValueHash.md @@ -0,0 +1,30 @@ +--- +title: "secureValueHash" +description: "Secure value hash" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueHash +[Back to constructors index](/API_docs/constructors/index.html) + + + +Secure value hash + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[SecureValueType](/API_docs/types/SecureValueType.html) | Yes|Secure value type| +|hash|[bytes](/API_docs/types/bytes.html) | Yes|Hash| + + + +### Type: [SecureValueHash](/API_docs/types/SecureValueHash.html) + + +### Example: + +``` +$secureValueHash = ['_' => 'secureValueHash', 'type' => SecureValueType, 'hash' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/secureValueTypeAddress.md b/docs/API_docs/constructors/secureValueTypeAddress.md new file mode 100644 index 0000000000..26842e16f4 --- /dev/null +++ b/docs/API_docs/constructors/secureValueTypeAddress.md @@ -0,0 +1,24 @@ +--- +title: "secureValueTypeAddress" +description: "Address" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueTypeAddress +[Back to constructors index](/API_docs/constructors/index.html) + + + +Address + + + + +### Type: [SecureValueType](/API_docs/types/SecureValueType.html) + + +### Example: + +``` +$secureValueTypeAddress = ['_' => 'secureValueTypeAddress']; +``` diff --git a/docs/API_docs/constructors/secureValueTypeBankStatement.md b/docs/API_docs/constructors/secureValueTypeBankStatement.md new file mode 100644 index 0000000000..54e271d43d --- /dev/null +++ b/docs/API_docs/constructors/secureValueTypeBankStatement.md @@ -0,0 +1,24 @@ +--- +title: "secureValueTypeBankStatement" +description: "Bank statement" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueTypeBankStatement +[Back to constructors index](/API_docs/constructors/index.html) + + + +Bank statement + + + + +### Type: [SecureValueType](/API_docs/types/SecureValueType.html) + + +### Example: + +``` +$secureValueTypeBankStatement = ['_' => 'secureValueTypeBankStatement']; +``` diff --git a/docs/API_docs/constructors/secureValueTypeDriverLicense.md b/docs/API_docs/constructors/secureValueTypeDriverLicense.md new file mode 100644 index 0000000000..734e2b3567 --- /dev/null +++ b/docs/API_docs/constructors/secureValueTypeDriverLicense.md @@ -0,0 +1,24 @@ +--- +title: "secureValueTypeDriverLicense" +description: "Driver's license" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueTypeDriverLicense +[Back to constructors index](/API_docs/constructors/index.html) + + + +Driver's license + + + + +### Type: [SecureValueType](/API_docs/types/SecureValueType.html) + + +### Example: + +``` +$secureValueTypeDriverLicense = ['_' => 'secureValueTypeDriverLicense']; +``` diff --git a/docs/API_docs/constructors/secureValueTypeEmail.md b/docs/API_docs/constructors/secureValueTypeEmail.md new file mode 100644 index 0000000000..d2560bc330 --- /dev/null +++ b/docs/API_docs/constructors/secureValueTypeEmail.md @@ -0,0 +1,24 @@ +--- +title: "secureValueTypeEmail" +description: "Email" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueTypeEmail +[Back to constructors index](/API_docs/constructors/index.html) + + + +Email + + + + +### Type: [SecureValueType](/API_docs/types/SecureValueType.html) + + +### Example: + +``` +$secureValueTypeEmail = ['_' => 'secureValueTypeEmail']; +``` diff --git a/docs/API_docs/constructors/secureValueTypeIdentityCard.md b/docs/API_docs/constructors/secureValueTypeIdentityCard.md new file mode 100644 index 0000000000..eced8df26c --- /dev/null +++ b/docs/API_docs/constructors/secureValueTypeIdentityCard.md @@ -0,0 +1,24 @@ +--- +title: "secureValueTypeIdentityCard" +description: "Identity card" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueTypeIdentityCard +[Back to constructors index](/API_docs/constructors/index.html) + + + +Identity card + + + + +### Type: [SecureValueType](/API_docs/types/SecureValueType.html) + + +### Example: + +``` +$secureValueTypeIdentityCard = ['_' => 'secureValueTypeIdentityCard']; +``` diff --git a/docs/API_docs/constructors/secureValueTypeInternalPassport.md b/docs/API_docs/constructors/secureValueTypeInternalPassport.md new file mode 100644 index 0000000000..63e816cafb --- /dev/null +++ b/docs/API_docs/constructors/secureValueTypeInternalPassport.md @@ -0,0 +1,24 @@ +--- +title: "secureValueTypeInternalPassport" +description: "Internal passport" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueTypeInternalPassport +[Back to constructors index](/API_docs/constructors/index.html) + + + +Internal [passport](https://core.telegram.org/passport) + + + + +### Type: [SecureValueType](/API_docs/types/SecureValueType.html) + + +### Example: + +``` +$secureValueTypeInternalPassport = ['_' => 'secureValueTypeInternalPassport']; +``` diff --git a/docs/API_docs/constructors/secureValueTypePassport.md b/docs/API_docs/constructors/secureValueTypePassport.md new file mode 100644 index 0000000000..0fac01b6c5 --- /dev/null +++ b/docs/API_docs/constructors/secureValueTypePassport.md @@ -0,0 +1,24 @@ +--- +title: "secureValueTypePassport" +description: "Passport" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueTypePassport +[Back to constructors index](/API_docs/constructors/index.html) + + + +Passport + + + + +### Type: [SecureValueType](/API_docs/types/SecureValueType.html) + + +### Example: + +``` +$secureValueTypePassport = ['_' => 'secureValueTypePassport']; +``` diff --git a/docs/API_docs/constructors/secureValueTypePassportRegistration.md b/docs/API_docs/constructors/secureValueTypePassportRegistration.md new file mode 100644 index 0000000000..b0637e63bf --- /dev/null +++ b/docs/API_docs/constructors/secureValueTypePassportRegistration.md @@ -0,0 +1,24 @@ +--- +title: "secureValueTypePassportRegistration" +description: "Internal registration passport" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueTypePassportRegistration +[Back to constructors index](/API_docs/constructors/index.html) + + + +Internal registration [passport](https://core.telegram.org/passport) + + + + +### Type: [SecureValueType](/API_docs/types/SecureValueType.html) + + +### Example: + +``` +$secureValueTypePassportRegistration = ['_' => 'secureValueTypePassportRegistration']; +``` diff --git a/docs/API_docs/constructors/secureValueTypePersonalDetails.md b/docs/API_docs/constructors/secureValueTypePersonalDetails.md new file mode 100644 index 0000000000..53299c6ed2 --- /dev/null +++ b/docs/API_docs/constructors/secureValueTypePersonalDetails.md @@ -0,0 +1,24 @@ +--- +title: "secureValueTypePersonalDetails" +description: "Personal details" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueTypePersonalDetails +[Back to constructors index](/API_docs/constructors/index.html) + + + +Personal details + + + + +### Type: [SecureValueType](/API_docs/types/SecureValueType.html) + + +### Example: + +``` +$secureValueTypePersonalDetails = ['_' => 'secureValueTypePersonalDetails']; +``` diff --git a/docs/API_docs/constructors/secureValueTypePhone.md b/docs/API_docs/constructors/secureValueTypePhone.md new file mode 100644 index 0000000000..f1675e0d63 --- /dev/null +++ b/docs/API_docs/constructors/secureValueTypePhone.md @@ -0,0 +1,24 @@ +--- +title: "secureValueTypePhone" +description: "Phone" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueTypePhone +[Back to constructors index](/API_docs/constructors/index.html) + + + +Phone + + + + +### Type: [SecureValueType](/API_docs/types/SecureValueType.html) + + +### Example: + +``` +$secureValueTypePhone = ['_' => 'secureValueTypePhone']; +``` diff --git a/docs/API_docs/constructors/secureValueTypeRentalAgreement.md b/docs/API_docs/constructors/secureValueTypeRentalAgreement.md new file mode 100644 index 0000000000..421cb15272 --- /dev/null +++ b/docs/API_docs/constructors/secureValueTypeRentalAgreement.md @@ -0,0 +1,24 @@ +--- +title: "secureValueTypeRentalAgreement" +description: "Rental agreement" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueTypeRentalAgreement +[Back to constructors index](/API_docs/constructors/index.html) + + + +Rental agreement + + + + +### Type: [SecureValueType](/API_docs/types/SecureValueType.html) + + +### Example: + +``` +$secureValueTypeRentalAgreement = ['_' => 'secureValueTypeRentalAgreement']; +``` diff --git a/docs/API_docs/constructors/secureValueTypeTemporaryRegistration.md b/docs/API_docs/constructors/secureValueTypeTemporaryRegistration.md new file mode 100644 index 0000000000..a62df5d010 --- /dev/null +++ b/docs/API_docs/constructors/secureValueTypeTemporaryRegistration.md @@ -0,0 +1,24 @@ +--- +title: "secureValueTypeTemporaryRegistration" +description: "Temporary registration" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueTypeTemporaryRegistration +[Back to constructors index](/API_docs/constructors/index.html) + + + +Temporary registration + + + + +### Type: [SecureValueType](/API_docs/types/SecureValueType.html) + + +### Example: + +``` +$secureValueTypeTemporaryRegistration = ['_' => 'secureValueTypeTemporaryRegistration']; +``` diff --git a/docs/API_docs/constructors/secureValueTypeUtilityBill.md b/docs/API_docs/constructors/secureValueTypeUtilityBill.md new file mode 100644 index 0000000000..989ef68b9b --- /dev/null +++ b/docs/API_docs/constructors/secureValueTypeUtilityBill.md @@ -0,0 +1,24 @@ +--- +title: "secureValueTypeUtilityBill" +description: "Utility bill" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: secureValueTypeUtilityBill +[Back to constructors index](/API_docs/constructors/index.html) + + + +Utility bill + + + + +### Type: [SecureValueType](/API_docs/types/SecureValueType.html) + + +### Example: + +``` +$secureValueTypeUtilityBill = ['_' => 'secureValueTypeUtilityBill']; +``` diff --git a/docs/API_docs/constructors/sendAsPeer.md b/docs/API_docs/constructors/sendAsPeer.md new file mode 100644 index 0000000000..665c1025f1 --- /dev/null +++ b/docs/API_docs/constructors/sendAsPeer.md @@ -0,0 +1,30 @@ +--- +title: "sendAsPeer" +description: "Indicates a peer that can be used to send messages" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendAsPeer +[Back to constructors index](/API_docs/constructors/index.html) + + + +Indicates a peer that can be used to send messages + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|premium\_required|[Bool](/API_docs/types/Bool.html) | Optional|Whether a Telegram Premium account is required to send messages as this peer| +|peer|[long](/API_docs/types/long.html) | Yes|Peer| + + + +### Type: [SendAsPeer](/API_docs/types/SendAsPeer.html) + + +### Example: + +``` +$sendAsPeer = ['_' => 'sendAsPeer', 'premium_required' => Bool, 'peer' => long]; +``` diff --git a/docs/API_docs/constructors/sendMessageCancelAction.md b/docs/API_docs/constructors/sendMessageCancelAction.md new file mode 100644 index 0000000000..0f780a7401 --- /dev/null +++ b/docs/API_docs/constructors/sendMessageCancelAction.md @@ -0,0 +1,24 @@ +--- +title: "sendMessageCancelAction" +description: "Invalidate all previous action updates. E.g. when user deletes entered text or aborts a video upload." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageCancelAction +[Back to constructors index](/API_docs/constructors/index.html) + + + +Invalidate all previous action updates. E.g. when user deletes entered text or aborts a video upload. + + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageCancelAction = ['_' => 'sendMessageCancelAction']; +``` diff --git a/docs/API_docs/constructors/sendMessageChooseContactAction.md b/docs/API_docs/constructors/sendMessageChooseContactAction.md new file mode 100644 index 0000000000..322735dfb3 --- /dev/null +++ b/docs/API_docs/constructors/sendMessageChooseContactAction.md @@ -0,0 +1,24 @@ +--- +title: "sendMessageChooseContactAction" +description: "User is selecting a contact to share." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageChooseContactAction +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is selecting a contact to share. + + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageChooseContactAction = ['_' => 'sendMessageChooseContactAction']; +``` diff --git a/docs/API_docs/constructors/sendMessageChooseStickerAction.md b/docs/API_docs/constructors/sendMessageChooseStickerAction.md new file mode 100644 index 0000000000..ea5ef4d286 --- /dev/null +++ b/docs/API_docs/constructors/sendMessageChooseStickerAction.md @@ -0,0 +1,24 @@ +--- +title: "sendMessageChooseStickerAction" +description: "User is choosing a sticker" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageChooseStickerAction +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is choosing a sticker + + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageChooseStickerAction = ['_' => 'sendMessageChooseStickerAction']; +``` diff --git a/docs/API_docs/constructors/sendMessageEmojiInteraction.md b/docs/API_docs/constructors/sendMessageEmojiInteraction.md new file mode 100644 index 0000000000..7f8e060422 --- /dev/null +++ b/docs/API_docs/constructors/sendMessageEmojiInteraction.md @@ -0,0 +1,31 @@ +--- +title: "sendMessageEmojiInteraction" +description: "User has clicked on an animated emoji triggering a reaction, click here for more info »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageEmojiInteraction +[Back to constructors index](/API_docs/constructors/index.html) + + + +User has clicked on an animated emoji triggering a [reaction, click here for more info »](https://core.telegram.org/api/animated-emojis#emoji-reactions). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|emoticon|[string](/API_docs/types/string.html) | Yes|Emoji| +|msg\_id|[int](/API_docs/types/int.html) | Yes|Message ID of the animated emoji that was clicked| +|interaction|[DataJSON](/API_docs/types/DataJSON.html) | Yes|A JSON object with interaction info, [click here for more info »](https://core.telegram.org/api/animated-emojis#emoji-reactions)| + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageEmojiInteraction = ['_' => 'sendMessageEmojiInteraction', 'emoticon' => 'string', 'msg_id' => int, 'interaction' => DataJSON]; +``` diff --git a/docs/API_docs/constructors/sendMessageEmojiInteractionSeen.md b/docs/API_docs/constructors/sendMessageEmojiInteractionSeen.md new file mode 100644 index 0000000000..7b4ce2c0df --- /dev/null +++ b/docs/API_docs/constructors/sendMessageEmojiInteractionSeen.md @@ -0,0 +1,29 @@ +--- +title: "sendMessageEmojiInteractionSeen" +description: "User is watching an animated emoji reaction triggered by another user, click here for more info »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageEmojiInteractionSeen +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is watching an animated emoji reaction triggered by another user, [click here for more info »](https://core.telegram.org/api/animated-emojis#emoji-reactions). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|emoticon|[string](/API_docs/types/string.html) | Yes|Emoji| + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageEmojiInteractionSeen = ['_' => 'sendMessageEmojiInteractionSeen', 'emoticon' => 'string']; +``` diff --git a/docs/API_docs/constructors/sendMessageGamePlayAction.md b/docs/API_docs/constructors/sendMessageGamePlayAction.md new file mode 100644 index 0000000000..06d311c6c8 --- /dev/null +++ b/docs/API_docs/constructors/sendMessageGamePlayAction.md @@ -0,0 +1,24 @@ +--- +title: "sendMessageGamePlayAction" +description: "User is playing a game" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageGamePlayAction +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is playing a game + + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageGamePlayAction = ['_' => 'sendMessageGamePlayAction']; +``` diff --git a/docs/API_docs/constructors/sendMessageGeoLocationAction.md b/docs/API_docs/constructors/sendMessageGeoLocationAction.md new file mode 100644 index 0000000000..e00d6a53b7 --- /dev/null +++ b/docs/API_docs/constructors/sendMessageGeoLocationAction.md @@ -0,0 +1,24 @@ +--- +title: "sendMessageGeoLocationAction" +description: "User is selecting a location to share." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageGeoLocationAction +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is selecting a location to share. + + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageGeoLocationAction = ['_' => 'sendMessageGeoLocationAction']; +``` diff --git a/docs/API_docs/constructors/sendMessageHistoryImportAction.md b/docs/API_docs/constructors/sendMessageHistoryImportAction.md new file mode 100644 index 0000000000..8aa6a8bcc4 --- /dev/null +++ b/docs/API_docs/constructors/sendMessageHistoryImportAction.md @@ -0,0 +1,29 @@ +--- +title: "sendMessageHistoryImportAction" +description: "Chat history is being imported" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageHistoryImportAction +[Back to constructors index](/API_docs/constructors/index.html) + + + +Chat history is being imported + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|progress|[int](/API_docs/types/int.html) | Yes|Progress percentage| + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageHistoryImportAction = ['_' => 'sendMessageHistoryImportAction', 'progress' => int]; +``` diff --git a/docs/API_docs/constructors/sendMessageRecordAudioAction.md b/docs/API_docs/constructors/sendMessageRecordAudioAction.md new file mode 100644 index 0000000000..b1cc08e9ef --- /dev/null +++ b/docs/API_docs/constructors/sendMessageRecordAudioAction.md @@ -0,0 +1,24 @@ +--- +title: "sendMessageRecordAudioAction" +description: "User is recording a voice message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageRecordAudioAction +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is recording a voice message. + + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageRecordAudioAction = ['_' => 'sendMessageRecordAudioAction']; +``` diff --git a/docs/API_docs/constructors/sendMessageRecordRoundAction.md b/docs/API_docs/constructors/sendMessageRecordRoundAction.md new file mode 100644 index 0000000000..292d36499f --- /dev/null +++ b/docs/API_docs/constructors/sendMessageRecordRoundAction.md @@ -0,0 +1,24 @@ +--- +title: "sendMessageRecordRoundAction" +description: "User is recording a round video to share" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageRecordRoundAction +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is recording a round video to share + + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageRecordRoundAction = ['_' => 'sendMessageRecordRoundAction']; +``` diff --git a/docs/API_docs/constructors/sendMessageRecordVideoAction.md b/docs/API_docs/constructors/sendMessageRecordVideoAction.md new file mode 100644 index 0000000000..9458d3c408 --- /dev/null +++ b/docs/API_docs/constructors/sendMessageRecordVideoAction.md @@ -0,0 +1,24 @@ +--- +title: "sendMessageRecordVideoAction" +description: "User is recording a video." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageRecordVideoAction +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is recording a video. + + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageRecordVideoAction = ['_' => 'sendMessageRecordVideoAction']; +``` diff --git a/docs/API_docs/constructors/sendMessageTypingAction.md b/docs/API_docs/constructors/sendMessageTypingAction.md new file mode 100644 index 0000000000..2a90e6bd01 --- /dev/null +++ b/docs/API_docs/constructors/sendMessageTypingAction.md @@ -0,0 +1,24 @@ +--- +title: "sendMessageTypingAction" +description: "User is typing." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageTypingAction +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is typing. + + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageTypingAction = ['_' => 'sendMessageTypingAction']; +``` diff --git a/docs/API_docs/constructors/sendMessageUploadAudioAction.md b/docs/API_docs/constructors/sendMessageUploadAudioAction.md new file mode 100644 index 0000000000..f45ff259f0 --- /dev/null +++ b/docs/API_docs/constructors/sendMessageUploadAudioAction.md @@ -0,0 +1,29 @@ +--- +title: "sendMessageUploadAudioAction" +description: "User is uploading a voice message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageUploadAudioAction +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is uploading a voice message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|progress|[int](/API_docs/types/int.html) | Yes|Progress percentage| + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageUploadAudioAction = ['_' => 'sendMessageUploadAudioAction', 'progress' => int]; +``` diff --git a/docs/API_docs/constructors/sendMessageUploadAudioAction_17.md b/docs/API_docs/constructors/sendMessageUploadAudioAction_17.md new file mode 100644 index 0000000000..f368cc0398 --- /dev/null +++ b/docs/API_docs/constructors/sendMessageUploadAudioAction_17.md @@ -0,0 +1,24 @@ +--- +title: "sendMessageUploadAudioAction" +description: "User is uploading a voice message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageUploadAudioAction\_17 +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is uploading a voice message. + + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageUploadAudioAction_17 = ['_' => 'sendMessageUploadAudioAction']; +``` diff --git a/docs/API_docs/constructors/sendMessageUploadDocumentAction.md b/docs/API_docs/constructors/sendMessageUploadDocumentAction.md new file mode 100644 index 0000000000..e33c170016 --- /dev/null +++ b/docs/API_docs/constructors/sendMessageUploadDocumentAction.md @@ -0,0 +1,29 @@ +--- +title: "sendMessageUploadDocumentAction" +description: "User is uploading a file." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageUploadDocumentAction +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is uploading a file. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|progress|[int](/API_docs/types/int.html) | Yes|Progress percentage| + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageUploadDocumentAction = ['_' => 'sendMessageUploadDocumentAction', 'progress' => int]; +``` diff --git a/docs/API_docs/constructors/sendMessageUploadDocumentAction_17.md b/docs/API_docs/constructors/sendMessageUploadDocumentAction_17.md new file mode 100644 index 0000000000..d84d6c76bd --- /dev/null +++ b/docs/API_docs/constructors/sendMessageUploadDocumentAction_17.md @@ -0,0 +1,24 @@ +--- +title: "sendMessageUploadDocumentAction" +description: "User is uploading a file." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageUploadDocumentAction\_17 +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is uploading a file. + + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageUploadDocumentAction_17 = ['_' => 'sendMessageUploadDocumentAction']; +``` diff --git a/docs/API_docs/constructors/sendMessageUploadPhotoAction.md b/docs/API_docs/constructors/sendMessageUploadPhotoAction.md new file mode 100644 index 0000000000..54ca2a3847 --- /dev/null +++ b/docs/API_docs/constructors/sendMessageUploadPhotoAction.md @@ -0,0 +1,29 @@ +--- +title: "sendMessageUploadPhotoAction" +description: "User is uploading a photo." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageUploadPhotoAction +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is uploading a photo. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|progress|[int](/API_docs/types/int.html) | Yes|Progress percentage| + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageUploadPhotoAction = ['_' => 'sendMessageUploadPhotoAction', 'progress' => int]; +``` diff --git a/docs/API_docs/constructors/sendMessageUploadPhotoAction_17.md b/docs/API_docs/constructors/sendMessageUploadPhotoAction_17.md new file mode 100644 index 0000000000..33ec341d02 --- /dev/null +++ b/docs/API_docs/constructors/sendMessageUploadPhotoAction_17.md @@ -0,0 +1,24 @@ +--- +title: "sendMessageUploadPhotoAction" +description: "User is uploading a photo." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageUploadPhotoAction\_17 +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is uploading a photo. + + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageUploadPhotoAction_17 = ['_' => 'sendMessageUploadPhotoAction']; +``` diff --git a/docs/API_docs/constructors/sendMessageUploadRoundAction.md b/docs/API_docs/constructors/sendMessageUploadRoundAction.md new file mode 100644 index 0000000000..59b1d2d707 --- /dev/null +++ b/docs/API_docs/constructors/sendMessageUploadRoundAction.md @@ -0,0 +1,29 @@ +--- +title: "sendMessageUploadRoundAction" +description: "User is uploading a round video" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageUploadRoundAction +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is uploading a round video + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|progress|[int](/API_docs/types/int.html) | Yes|Progress percentage| + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageUploadRoundAction = ['_' => 'sendMessageUploadRoundAction', 'progress' => int]; +``` diff --git a/docs/API_docs/constructors/sendMessageUploadRoundAction_66.md b/docs/API_docs/constructors/sendMessageUploadRoundAction_66.md new file mode 100644 index 0000000000..92cb038073 --- /dev/null +++ b/docs/API_docs/constructors/sendMessageUploadRoundAction_66.md @@ -0,0 +1,24 @@ +--- +title: "sendMessageUploadRoundAction" +description: "User is uploading a round video" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageUploadRoundAction\_66 +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is uploading a round video + + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageUploadRoundAction_66 = ['_' => 'sendMessageUploadRoundAction']; +``` diff --git a/docs/API_docs/constructors/sendMessageUploadVideoAction.md b/docs/API_docs/constructors/sendMessageUploadVideoAction.md new file mode 100644 index 0000000000..644fe4f0e6 --- /dev/null +++ b/docs/API_docs/constructors/sendMessageUploadVideoAction.md @@ -0,0 +1,29 @@ +--- +title: "sendMessageUploadVideoAction" +description: "User is uploading a video." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageUploadVideoAction +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is uploading a video. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|progress|[int](/API_docs/types/int.html) | Yes|Progress percentage| + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageUploadVideoAction = ['_' => 'sendMessageUploadVideoAction', 'progress' => int]; +``` diff --git a/docs/API_docs/constructors/sendMessageUploadVideoAction_17.md b/docs/API_docs/constructors/sendMessageUploadVideoAction_17.md new file mode 100644 index 0000000000..61e60330fe --- /dev/null +++ b/docs/API_docs/constructors/sendMessageUploadVideoAction_17.md @@ -0,0 +1,24 @@ +--- +title: "sendMessageUploadVideoAction" +description: "User is uploading a video." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sendMessageUploadVideoAction\_17 +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is uploading a video. + + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$sendMessageUploadVideoAction_17 = ['_' => 'sendMessageUploadVideoAction']; +``` diff --git a/docs/API_docs/constructors/shippingOption.md b/docs/API_docs/constructors/shippingOption.md new file mode 100644 index 0000000000..c9ddb6dfb3 --- /dev/null +++ b/docs/API_docs/constructors/shippingOption.md @@ -0,0 +1,31 @@ +--- +title: "shippingOption" +description: "Shipping option" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: shippingOption +[Back to constructors index](/API_docs/constructors/index.html) + + + +Shipping option + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[string](/API_docs/types/string.html) | Yes|Option ID| +|title|[string](/API_docs/types/string.html) | Yes|Title| +|prices|Array of [LabeledPrice](/API_docs/types/LabeledPrice.html) | Yes|List of price portions| + + + +### Type: [ShippingOption](/API_docs/types/ShippingOption.html) + + +### Example: + +``` +$shippingOption = ['_' => 'shippingOption', 'id' => 'string', 'title' => 'string', 'prices' => [LabeledPrice, LabeledPrice]]; +``` diff --git a/docs/API_docs/constructors/simpleWebViewResultUrl.md b/docs/API_docs/constructors/simpleWebViewResultUrl.md new file mode 100644 index 0000000000..31e2cc389e --- /dev/null +++ b/docs/API_docs/constructors/simpleWebViewResultUrl.md @@ -0,0 +1,29 @@ +--- +title: "simpleWebViewResultUrl" +description: "Contains the webview URL with appropriate theme parameters added" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: simpleWebViewResultUrl +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains the webview URL with appropriate theme parameters added + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|URL| + + + +### Type: [SimpleWebViewResult](/API_docs/types/SimpleWebViewResult.html) + + +### Example: + +``` +$simpleWebViewResultUrl = ['_' => 'simpleWebViewResultUrl', 'url' => 'string']; +``` diff --git a/docs/API_docs/constructors/smsJob.md b/docs/API_docs/constructors/smsJob.md new file mode 100644 index 0000000000..5a950152c7 --- /dev/null +++ b/docs/API_docs/constructors/smsJob.md @@ -0,0 +1,29 @@ +--- +title: "smsJob" +description: "smsJob attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: smsJob +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|job\_id|[string](/API_docs/types/string.html) | Yes| +|phone\_number|[string](/API_docs/types/string.html) | Yes| +|text|[string](/API_docs/types/string.html) | Yes| + + + +### Type: [SmsJob](/API_docs/types/SmsJob.html) + + +### Example: + +``` +$smsJob = ['_' => 'smsJob', 'job_id' => 'string', 'phone_number' => 'string', 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/smsjobs.eligibleToJoin.md b/docs/API_docs/constructors/smsjobs.eligibleToJoin.md new file mode 100644 index 0000000000..61eb3d0f7c --- /dev/null +++ b/docs/API_docs/constructors/smsjobs.eligibleToJoin.md @@ -0,0 +1,29 @@ +--- +title: "smsjobs.eligibleToJoin" +description: "smsjobs.eligibleToJoin attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/smsjobs_eligibleToJoin.html +--- +# Constructor: smsjobs.eligibleToJoin +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|terms\_url|[string](/API_docs/types/string.html) | Yes| +|monthly\_sent\_sms|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [smsjobs.EligibilityToJoin](/API_docs/types/smsjobs.EligibilityToJoin.html) + + +### Example: + +``` +$smsjobs_eligibleToJoin = ['_' => 'smsjobs.eligibleToJoin', 'terms_url' => 'string', 'monthly_sent_sms' => int]; +``` diff --git a/docs/API_docs/constructors/smsjobs.status.md b/docs/API_docs/constructors/smsjobs.status.md new file mode 100644 index 0000000000..a57afc6c77 --- /dev/null +++ b/docs/API_docs/constructors/smsjobs.status.md @@ -0,0 +1,35 @@ +--- +title: "smsjobs.status" +description: "smsjobs.status attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/smsjobs_status.html +--- +# Constructor: smsjobs.status +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|allow\_international|[Bool](/API_docs/types/Bool.html) | Optional| +|recent\_sent|[int](/API_docs/types/int.html) | Yes| +|recent\_since|[int](/API_docs/types/int.html) | Yes| +|recent\_remains|[int](/API_docs/types/int.html) | Yes| +|total\_sent|[int](/API_docs/types/int.html) | Yes| +|total\_since|[int](/API_docs/types/int.html) | Yes| +|last\_gift\_slug|[string](/API_docs/types/string.html) | Optional| +|terms\_url|[string](/API_docs/types/string.html) | Yes| + + + +### Type: [smsjobs.Status](/API_docs/types/smsjobs.Status.html) + + +### Example: + +``` +$smsjobs_status = ['_' => 'smsjobs.status', 'allow_international' => Bool, 'recent_sent' => int, 'recent_since' => int, 'recent_remains' => int, 'total_sent' => int, 'total_since' => int, 'last_gift_slug' => 'string', 'terms_url' => 'string']; +``` diff --git a/docs/API_docs/constructors/speakingInGroupCallAction.md b/docs/API_docs/constructors/speakingInGroupCallAction.md new file mode 100644 index 0000000000..79d1afe330 --- /dev/null +++ b/docs/API_docs/constructors/speakingInGroupCallAction.md @@ -0,0 +1,24 @@ +--- +title: "speakingInGroupCallAction" +description: "User is currently speaking in the group call" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: speakingInGroupCallAction +[Back to constructors index](/API_docs/constructors/index.html) + + + +User is currently speaking in the group call + + + + +### Type: [SendMessageAction](/API_docs/types/SendMessageAction.html) + + +### Example: + +``` +$speakingInGroupCallAction = ['_' => 'speakingInGroupCallAction']; +``` diff --git a/docs/API_docs/constructors/sponsoredMessage.md b/docs/API_docs/constructors/sponsoredMessage.md new file mode 100644 index 0000000000..0b88a31f51 --- /dev/null +++ b/docs/API_docs/constructors/sponsoredMessage.md @@ -0,0 +1,100 @@ +--- +title: "sponsoredMessage" +description: "A sponsored message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sponsoredMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +A [sponsored message](https://core.telegram.org/api/sponsored-messages). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|recommended|[Bool](/API_docs/types/Bool.html) | Optional|Whether the message needs to be labeled as "recommended" instead of "sponsored"| +|can\_report|[Bool](/API_docs/types/Bool.html) | Optional| +|url|[string](/API_docs/types/string.html) | Yes| +|title|[string](/API_docs/types/string.html) | Yes| +|message|[string](/API_docs/types/string.html) | Yes|Sponsored message| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|[Message entities for styled text](https://core.telegram.org/api/entities)| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|photo|[Photo](/API_docs/types/Photo.html) | Optional| +|color|[PeerColor](/API_docs/types/PeerColor.html) | Optional| +|button\_text|[string](/API_docs/types/string.html) | Yes|Text of the sponsored message button.| +|sponsor\_info|[string](/API_docs/types/string.html) | Optional|If set, contains additional information about the sponsor to be shown along with the message.| +|additional\_info|[string](/API_docs/types/string.html) | Optional|If set, contains additional information about the sponsored message to be shown along with the message.| + + + +### Type: [SponsoredMessage](/API_docs/types/SponsoredMessage.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$sponsoredMessage = ['_' => 'sponsoredMessage', 'recommended' => Bool, 'can_report' => Bool, 'url' => 'string', 'title' => 'string', 'message' => 'string', 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'photo' => Photo, 'color' => PeerColor, 'button_text' => 'string', 'sponsor_info' => 'string', 'additional_info' => 'string']; +``` diff --git a/docs/API_docs/constructors/sponsoredMessageReportOption.md b/docs/API_docs/constructors/sponsoredMessageReportOption.md new file mode 100644 index 0000000000..442f908e6b --- /dev/null +++ b/docs/API_docs/constructors/sponsoredMessageReportOption.md @@ -0,0 +1,28 @@ +--- +title: "sponsoredMessageReportOption" +description: "sponsoredMessageReportOption attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: sponsoredMessageReportOption +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|text|[string](/API_docs/types/string.html) | Yes| +|option|[bytes](/API_docs/types/bytes.html) | Yes| + + + +### Type: [SponsoredMessageReportOption](/API_docs/types/SponsoredMessageReportOption.html) + + +### Example: + +``` +$sponsoredMessageReportOption = ['_' => 'sponsoredMessageReportOption', 'text' => 'string', 'option' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/stats.broadcastRevenueStats.md b/docs/API_docs/constructors/stats.broadcastRevenueStats.md new file mode 100644 index 0000000000..f61ecbf012 --- /dev/null +++ b/docs/API_docs/constructors/stats.broadcastRevenueStats.md @@ -0,0 +1,31 @@ +--- +title: "stats.broadcastRevenueStats" +description: "stats.broadcastRevenueStats attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/stats_broadcastRevenueStats.html +--- +# Constructor: stats.broadcastRevenueStats +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|top\_hours\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes| +|revenue\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes| +|balances|[BroadcastRevenueBalances](/API_docs/types/BroadcastRevenueBalances.html) | Yes| +|usd\_rate|[double](/API_docs/types/double.html) | Yes| + + + +### Type: [stats.BroadcastRevenueStats](/API_docs/types/stats.BroadcastRevenueStats.html) + + +### Example: + +``` +$stats_broadcastRevenueStats = ['_' => 'stats.broadcastRevenueStats', 'top_hours_graph' => StatsGraph, 'revenue_graph' => StatsGraph, 'balances' => BroadcastRevenueBalances, 'usd_rate' => double]; +``` diff --git a/docs/API_docs/constructors/stats.broadcastRevenueTransactions.md b/docs/API_docs/constructors/stats.broadcastRevenueTransactions.md new file mode 100644 index 0000000000..788138406c --- /dev/null +++ b/docs/API_docs/constructors/stats.broadcastRevenueTransactions.md @@ -0,0 +1,29 @@ +--- +title: "stats.broadcastRevenueTransactions" +description: "stats.broadcastRevenueTransactions attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/stats_broadcastRevenueTransactions.html +--- +# Constructor: stats.broadcastRevenueTransactions +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|count|[int](/API_docs/types/int.html) | Yes| +|transactions|Array of [BroadcastRevenueTransaction](/API_docs/types/BroadcastRevenueTransaction.html) | Yes| + + + +### Type: [stats.BroadcastRevenueTransactions](/API_docs/types/stats.BroadcastRevenueTransactions.html) + + +### Example: + +``` +$stats_broadcastRevenueTransactions = ['_' => 'stats.broadcastRevenueTransactions', 'count' => int, 'transactions' => [BroadcastRevenueTransaction, BroadcastRevenueTransaction]]; +``` diff --git a/docs/API_docs/constructors/stats.broadcastRevenueWithdrawalUrl.md b/docs/API_docs/constructors/stats.broadcastRevenueWithdrawalUrl.md new file mode 100644 index 0000000000..8ad96c9aee --- /dev/null +++ b/docs/API_docs/constructors/stats.broadcastRevenueWithdrawalUrl.md @@ -0,0 +1,28 @@ +--- +title: "stats.broadcastRevenueWithdrawalUrl" +description: "stats.broadcastRevenueWithdrawalUrl attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/stats_broadcastRevenueWithdrawalUrl.html +--- +# Constructor: stats.broadcastRevenueWithdrawalUrl +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|url|[string](/API_docs/types/string.html) | Yes| + + + +### Type: [stats.BroadcastRevenueWithdrawalUrl](/API_docs/types/stats.BroadcastRevenueWithdrawalUrl.html) + + +### Example: + +``` +$stats_broadcastRevenueWithdrawalUrl = ['_' => 'stats.broadcastRevenueWithdrawalUrl', 'url' => 'string']; +``` diff --git a/docs/API_docs/constructors/stats.broadcastStats.md b/docs/API_docs/constructors/stats.broadcastStats.md new file mode 100644 index 0000000000..5e80b2d7b6 --- /dev/null +++ b/docs/API_docs/constructors/stats.broadcastStats.md @@ -0,0 +1,51 @@ +--- +title: "stats.broadcastStats" +description: "Channel statistics." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/stats_broadcastStats.html +--- +# Constructor: stats.broadcastStats +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Channel statistics](https://core.telegram.org/api/stats). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|period|[StatsDateRangeDays](/API_docs/types/StatsDateRangeDays.html) | Yes|Period in consideration| +|followers|[StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html) | Yes|Follower count change for period in consideration| +|views\_per\_post|[StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html) | Yes|`total_viewcount/postcount`, for posts posted during the period in consideration.
Note that in this case, `current` refers to the `period` in consideration (`min_date` till `max_date`), and `prev` refers to the previous period (`(min_date - (max_date - min_date))` till `min_date`).| +|shares\_per\_post|[StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html) | Yes|`total_sharecount/postcount`, for posts posted during the period in consideration.
Note that in this case, `current` refers to the `period` in consideration (`min_date` till `max_date`), and `prev` refers to the previous period (`(min_date - (max_date - min_date))` till `min_date`)| +|reactions\_per\_post|[StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html) | Yes|`total_reactions/postcount`, for posts posted during the period in consideration.
Note that in this case, `current` refers to the `period` in consideration (`min_date` till `max_date`), and `prev` refers to the previous period (`(min_date - (max_date - min_date))` till `min_date`)| +|views\_per\_story|[StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html) | Yes|`total_views/storycount`, for posts posted during the period in consideration.
Note that in this case, `current` refers to the `period` in consideration (`min_date` till `max_date`), and `prev` refers to the previous period (`(min_date - (max_date - min_date))` till `min_date`)| +|shares\_per\_story|[StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html) | Yes|`total_shares/storycount`, for posts posted during the period in consideration.
Note that in this case, `current` refers to the `period` in consideration (`min_date` till `max_date`), and `prev` refers to the previous period (`(min_date - (max_date - min_date))` till `min_date`)| +|reactions\_per\_story|[StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html) | Yes|`total_reactions/storycount`, for posts posted during the period in consideration.
Note that in this case, `current` refers to the `period` in consideration (`min_date` till `max_date`), and `prev` refers to the previous period (`(min_date - (max_date - min_date))` till `min_date`)| +|enabled\_notifications|[StatsPercentValue](/API_docs/types/StatsPercentValue.html) | Yes|Percentage of subscribers with enabled notifications| +|growth\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|Channel growth graph (absolute subscriber count)| +|followers\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|Followers growth graph (relative subscriber count)| +|mute\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|Muted users graph (relative)| +|top\_hours\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|Views per hour graph (absolute)| +|interactions\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|Interactions graph (absolute)| +|iv\_interactions\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|IV interactions graph (absolute)| +|views\_by\_source\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|Views by source graph (absolute)| +|new\_followers\_by\_source\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|New followers by source graph (absolute)| +|languages\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|Subscriber language graph (pie chart)| +|reactions\_by\_emotion\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|A graph containing the number of reactions on posts categorized by emotion| +|story\_interactions\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|A graph containing the number of story views and shares| +|story\_reactions\_by\_emotion\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|A graph containing the number of reactions on stories categorized by emotion| +|recent\_posts\_interactions|Array of [PostInteractionCounters](/API_docs/types/PostInteractionCounters.html) | Yes|Detailed statistics about number of views and shares of recently sent messages and stories| + + + +### Type: [stats.BroadcastStats](/API_docs/types/stats.BroadcastStats.html) + + +### Example: + +``` +$stats_broadcastStats = ['_' => 'stats.broadcastStats', 'period' => StatsDateRangeDays, 'followers' => StatsAbsValueAndPrev, 'views_per_post' => StatsAbsValueAndPrev, 'shares_per_post' => StatsAbsValueAndPrev, 'reactions_per_post' => StatsAbsValueAndPrev, 'views_per_story' => StatsAbsValueAndPrev, 'shares_per_story' => StatsAbsValueAndPrev, 'reactions_per_story' => 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, 'reactions_by_emotion_graph' => StatsGraph, 'story_interactions_graph' => StatsGraph, 'story_reactions_by_emotion_graph' => StatsGraph, 'recent_posts_interactions' => [PostInteractionCounters, PostInteractionCounters]]; +``` diff --git a/docs/API_docs/constructors/stats.megagroupStats.md b/docs/API_docs/constructors/stats.megagroupStats.md new file mode 100644 index 0000000000..d9cef3082a --- /dev/null +++ b/docs/API_docs/constructors/stats.megagroupStats.md @@ -0,0 +1,46 @@ +--- +title: "stats.megagroupStats" +description: "Supergroup statistics" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/stats_megagroupStats.html +--- +# Constructor: stats.megagroupStats +[Back to constructors index](/API_docs/constructors/index.html) + + + +Supergroup [statistics](https://core.telegram.org/api/stats) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|period|[StatsDateRangeDays](/API_docs/types/StatsDateRangeDays.html) | Yes|Period in consideration| +|members|[StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html) | Yes|Member count change for period in consideration| +|messages|[StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html) | Yes|Message number change for period in consideration| +|viewers|[StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html) | Yes|Number of users that viewed messages, for range in consideration| +|posters|[StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html) | Yes|Number of users that posted messages, for range in consideration| +|growth\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|Supergroup growth graph (absolute subscriber count)| +|members\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|Members growth (relative subscriber count)| +|new\_members\_by\_source\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|New members by source graph| +|languages\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|Subscriber language graph (pie chart)| +|messages\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|Message activity graph (stacked bar graph, message type)| +|actions\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|Group activity graph (deleted, modified messages, blocked users)| +|top\_hours\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|Activity per hour graph (absolute)| +|weekdays\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|Activity per day of week graph (absolute)| +|top\_posters|Array of [StatsGroupTopPoster](/API_docs/types/StatsGroupTopPoster.html) | Yes|Info about most active group members| +|top\_admins|Array of [StatsGroupTopAdmin](/API_docs/types/StatsGroupTopAdmin.html) | Yes|Info about most active group admins| +|top\_inviters|Array of [StatsGroupTopInviter](/API_docs/types/StatsGroupTopInviter.html) | Yes|Info about most active group inviters| +|users|Array of [User](/API_docs/types/User.html) | Yes|Info about users mentioned in statistics| + + + +### Type: [stats.MegagroupStats](/API_docs/types/stats.MegagroupStats.html) + + +### Example: + +``` +$stats_megagroupStats = ['_' => 'stats.megagroupStats', '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' => [StatsGroupTopPoster, StatsGroupTopPoster], 'top_admins' => [StatsGroupTopAdmin, StatsGroupTopAdmin], 'top_inviters' => [StatsGroupTopInviter, StatsGroupTopInviter], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/stats.messageStats.md b/docs/API_docs/constructors/stats.messageStats.md new file mode 100644 index 0000000000..a7261ddab4 --- /dev/null +++ b/docs/API_docs/constructors/stats.messageStats.md @@ -0,0 +1,31 @@ +--- +title: "stats.messageStats" +description: "Message statistics" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/stats_messageStats.html +--- +# Constructor: stats.messageStats +[Back to constructors index](/API_docs/constructors/index.html) + + + +Message statistics + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|views\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|Message view graph| +|reactions\_by\_emotion\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|A graph containing the number of reactions on stories categorized by emotion| + + + +### Type: [stats.MessageStats](/API_docs/types/stats.MessageStats.html) + + +### Example: + +``` +$stats_messageStats = ['_' => 'stats.messageStats', 'views_graph' => StatsGraph, 'reactions_by_emotion_graph' => StatsGraph]; +``` diff --git a/docs/API_docs/constructors/stats.publicForwards.md b/docs/API_docs/constructors/stats.publicForwards.md new file mode 100644 index 0000000000..e863bdff11 --- /dev/null +++ b/docs/API_docs/constructors/stats.publicForwards.md @@ -0,0 +1,34 @@ +--- +title: "stats.publicForwards" +description: "Contains info about the forwards of a story as a message to public chats and reposts by public channels." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/stats_publicForwards.html +--- +# Constructor: stats.publicForwards +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains info about the forwards of a [story](https://core.telegram.org/api/stories) as a message to public chats and reposts by public channels. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Total number of results| +|forwards|Array of [PublicForward](/API_docs/types/PublicForward.html) | Yes|Info about the forwards of a story.| +|next\_offset|[string](/API_docs/types/string.html) | Optional|Offset used for [pagination](https://core.telegram.org/api/offsets).| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Mentioned chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| + + + +### Type: [stats.PublicForwards](/API_docs/types/stats.PublicForwards.html) + + +### Example: + +``` +$stats_publicForwards = ['_' => 'stats.publicForwards', 'count' => int, 'forwards' => [PublicForward, PublicForward], 'next_offset' => 'string', 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/stats.storyStats.md b/docs/API_docs/constructors/stats.storyStats.md new file mode 100644 index 0000000000..93242eea0e --- /dev/null +++ b/docs/API_docs/constructors/stats.storyStats.md @@ -0,0 +1,31 @@ +--- +title: "stats.storyStats" +description: "Contains statistics about a story." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/stats_storyStats.html +--- +# Constructor: stats.storyStats +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains [statistics](https://core.telegram.org/api/stats) about a [story](https://core.telegram.org/api/stories). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|views\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|A graph containing the number of story views and shares| +|reactions\_by\_emotion\_graph|[StatsGraph](/API_docs/types/StatsGraph.html) | Yes|A bar graph containing the number of story reactions categorized by "emotion" (i.e. Positive, Negative, Other, etc...)| + + + +### Type: [stats.StoryStats](/API_docs/types/stats.StoryStats.html) + + +### Example: + +``` +$stats_storyStats = ['_' => 'stats.storyStats', 'views_graph' => StatsGraph, 'reactions_by_emotion_graph' => StatsGraph]; +``` diff --git a/docs/API_docs/constructors/statsAbsValueAndPrev.md b/docs/API_docs/constructors/statsAbsValueAndPrev.md new file mode 100644 index 0000000000..3e3cbe900c --- /dev/null +++ b/docs/API_docs/constructors/statsAbsValueAndPrev.md @@ -0,0 +1,30 @@ +--- +title: "statsAbsValueAndPrev" +description: "Statistics value couple; initial and final value for period of time currently in consideration" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: statsAbsValueAndPrev +[Back to constructors index](/API_docs/constructors/index.html) + + + +Statistics value couple; initial and final value for period of time currently in consideration + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|current|[double](/API_docs/types/double.html) | Yes|Current value| +|previous|[double](/API_docs/types/double.html) | Yes|Previous value| + + + +### Type: [StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html) + + +### Example: + +``` +$statsAbsValueAndPrev = ['_' => 'statsAbsValueAndPrev', 'current' => double, 'previous' => double]; +``` diff --git a/docs/API_docs/constructors/statsDateRangeDays.md b/docs/API_docs/constructors/statsDateRangeDays.md new file mode 100644 index 0000000000..66d1ce30c8 --- /dev/null +++ b/docs/API_docs/constructors/statsDateRangeDays.md @@ -0,0 +1,30 @@ +--- +title: "statsDateRangeDays" +description: "Channel statistics date range" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: statsDateRangeDays +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Channel statistics](https://core.telegram.org/api/stats) date range + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|min\_date|[int](/API_docs/types/int.html) | Yes|Initial date| +|max\_date|[int](/API_docs/types/int.html) | Yes|Final date| + + + +### Type: [StatsDateRangeDays](/API_docs/types/StatsDateRangeDays.html) + + +### Example: + +``` +$statsDateRangeDays = ['_' => 'statsDateRangeDays', 'min_date' => int, 'max_date' => int]; +``` diff --git a/docs/API_docs/constructors/statsGraph.md b/docs/API_docs/constructors/statsGraph.md new file mode 100644 index 0000000000..7f0a8a3c92 --- /dev/null +++ b/docs/API_docs/constructors/statsGraph.md @@ -0,0 +1,30 @@ +--- +title: "statsGraph" +description: "Channel statistics graph" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: statsGraph +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Channel statistics graph](https://core.telegram.org/api/stats) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|json|[DataJSON](/API_docs/types/DataJSON.html) | Yes|Statistics data| +|zoom\_token|[string](/API_docs/types/string.html) | Optional|Zoom token| + + + +### Type: [StatsGraph](/API_docs/types/StatsGraph.html) + + +### Example: + +``` +$statsGraph = ['_' => 'statsGraph', 'json' => DataJSON, 'zoom_token' => 'string']; +``` diff --git a/docs/API_docs/constructors/statsGraphAsync.md b/docs/API_docs/constructors/statsGraphAsync.md new file mode 100644 index 0000000000..5d744f2f7f --- /dev/null +++ b/docs/API_docs/constructors/statsGraphAsync.md @@ -0,0 +1,29 @@ +--- +title: "statsGraphAsync" +description: "This channel statistics graph must be generated asynchronously using stats.loadAsyncGraph to reduce server load" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: statsGraphAsync +[Back to constructors index](/API_docs/constructors/index.html) + + + +This [channel statistics graph](https://core.telegram.org/api/stats) must be generated asynchronously using [stats.loadAsyncGraph](../methods/stats.loadAsyncGraph.html) to reduce server load + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|token|[string](/API_docs/types/string.html) | Yes|Token to use for fetching the async graph| + + + +### Type: [StatsGraph](/API_docs/types/StatsGraph.html) + + +### Example: + +``` +$statsGraphAsync = ['_' => 'statsGraphAsync', 'token' => 'string']; +``` diff --git a/docs/API_docs/constructors/statsGraphError.md b/docs/API_docs/constructors/statsGraphError.md new file mode 100644 index 0000000000..0cec64674d --- /dev/null +++ b/docs/API_docs/constructors/statsGraphError.md @@ -0,0 +1,29 @@ +--- +title: "statsGraphError" +description: "An error occurred while generating the statistics graph" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: statsGraphError +[Back to constructors index](/API_docs/constructors/index.html) + + + +An error occurred while generating the [statistics graph](https://core.telegram.org/api/stats) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|error|[string](/API_docs/types/string.html) | Yes|The error| + + + +### Type: [StatsGraph](/API_docs/types/StatsGraph.html) + + +### Example: + +``` +$statsGraphError = ['_' => 'statsGraphError', 'error' => 'string']; +``` diff --git a/docs/API_docs/constructors/statsGroupTopAdmin.md b/docs/API_docs/constructors/statsGroupTopAdmin.md new file mode 100644 index 0000000000..45418bc7d4 --- /dev/null +++ b/docs/API_docs/constructors/statsGroupTopAdmin.md @@ -0,0 +1,32 @@ +--- +title: "statsGroupTopAdmin" +description: "Information about an active admin in a supergroup" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: statsGroupTopAdmin +[Back to constructors index](/API_docs/constructors/index.html) + + + +Information about an active admin in a supergroup + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|User ID| +|deleted|[int](/API_docs/types/int.html) | Yes|Number of deleted messages for [statistics](https://core.telegram.org/api/stats) period in consideration| +|kicked|[int](/API_docs/types/int.html) | Yes|Number of kicked users for [statistics](https://core.telegram.org/api/stats) period in consideration| +|banned|[int](/API_docs/types/int.html) | Yes|Number of banned users for [statistics](https://core.telegram.org/api/stats) period in consideration| + + + +### Type: [StatsGroupTopAdmin](/API_docs/types/StatsGroupTopAdmin.html) + + +### Example: + +``` +$statsGroupTopAdmin = ['_' => 'statsGroupTopAdmin', 'user_id' => long, 'deleted' => int, 'kicked' => int, 'banned' => int]; +``` diff --git a/docs/API_docs/constructors/statsGroupTopInviter.md b/docs/API_docs/constructors/statsGroupTopInviter.md new file mode 100644 index 0000000000..a504eb351b --- /dev/null +++ b/docs/API_docs/constructors/statsGroupTopInviter.md @@ -0,0 +1,30 @@ +--- +title: "statsGroupTopInviter" +description: "Information about an active supergroup inviter" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: statsGroupTopInviter +[Back to constructors index](/API_docs/constructors/index.html) + + + +Information about an active supergroup inviter + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|User ID| +|invitations|[int](/API_docs/types/int.html) | Yes|Number of invitations for [statistics](https://core.telegram.org/api/stats) period in consideration| + + + +### Type: [StatsGroupTopInviter](/API_docs/types/StatsGroupTopInviter.html) + + +### Example: + +``` +$statsGroupTopInviter = ['_' => 'statsGroupTopInviter', 'user_id' => long, 'invitations' => int]; +``` diff --git a/docs/API_docs/constructors/statsGroupTopPoster.md b/docs/API_docs/constructors/statsGroupTopPoster.md new file mode 100644 index 0000000000..6f072438e3 --- /dev/null +++ b/docs/API_docs/constructors/statsGroupTopPoster.md @@ -0,0 +1,31 @@ +--- +title: "statsGroupTopPoster" +description: "Information about an active user in a supergroup" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: statsGroupTopPoster +[Back to constructors index](/API_docs/constructors/index.html) + + + +Information about an active user in a supergroup + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|User ID| +|messages|[int](/API_docs/types/int.html) | Yes|Number of messages for [statistics](https://core.telegram.org/api/stats) period in consideration| +|avg\_chars|[int](/API_docs/types/int.html) | Yes|Average number of characters per message| + + + +### Type: [StatsGroupTopPoster](/API_docs/types/StatsGroupTopPoster.html) + + +### Example: + +``` +$statsGroupTopPoster = ['_' => 'statsGroupTopPoster', 'user_id' => long, 'messages' => int, 'avg_chars' => int]; +``` diff --git a/docs/API_docs/constructors/statsPercentValue.md b/docs/API_docs/constructors/statsPercentValue.md new file mode 100644 index 0000000000..bf2d8a72e5 --- /dev/null +++ b/docs/API_docs/constructors/statsPercentValue.md @@ -0,0 +1,31 @@ +--- +title: "statsPercentValue" +description: "Channel statistics percentage." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: statsPercentValue +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Channel statistics percentage](https://core.telegram.org/api/stats). +Compute the percentage simply by doing `part * total / 100` + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|part|[double](/API_docs/types/double.html) | Yes|Partial value| +|total|[double](/API_docs/types/double.html) | Yes|Total value| + + + +### Type: [StatsPercentValue](/API_docs/types/StatsPercentValue.html) + + +### Example: + +``` +$statsPercentValue = ['_' => 'statsPercentValue', 'part' => double, 'total' => double]; +``` diff --git a/docs/API_docs/constructors/statsURL.md b/docs/API_docs/constructors/statsURL.md new file mode 100644 index 0000000000..fe91054454 --- /dev/null +++ b/docs/API_docs/constructors/statsURL.md @@ -0,0 +1,29 @@ +--- +title: "statsURL" +description: "URL with chat statistics" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: statsURL +[Back to constructors index](/API_docs/constructors/index.html) + + + +URL with chat statistics + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|Chat statistics| + + + +### Type: [StatsURL](/API_docs/types/StatsURL.html) + + +### Example: + +``` +$statsURL = ['_' => 'statsURL', 'url' => 'string']; +``` diff --git a/docs/API_docs/constructors/stickerKeyword.md b/docs/API_docs/constructors/stickerKeyword.md new file mode 100644 index 0000000000..5ed6c61670 --- /dev/null +++ b/docs/API_docs/constructors/stickerKeyword.md @@ -0,0 +1,30 @@ +--- +title: "stickerKeyword" +description: "Keywords for a certain sticker" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: stickerKeyword +[Back to constructors index](/API_docs/constructors/index.html) + + + +Keywords for a certain sticker + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|document\_id|[long](/API_docs/types/long.html) | Yes|Sticker ID| +|keyword|Array of [string](/API_docs/types/string.html) | Yes|Keywords| + + + +### Type: [StickerKeyword](/API_docs/types/StickerKeyword.html) + + +### Example: + +``` +$stickerKeyword = ['_' => 'stickerKeyword', 'document_id' => long, 'keyword' => ['string', 'string']]; +``` diff --git a/docs/API_docs/constructors/stickerPack.md b/docs/API_docs/constructors/stickerPack.md new file mode 100644 index 0000000000..1e1e1b87b6 --- /dev/null +++ b/docs/API_docs/constructors/stickerPack.md @@ -0,0 +1,31 @@ +--- +title: "stickerPack" +description: "A stickerpack is a group of stickers associated to the same emoji." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: stickerPack +[Back to constructors index](/API_docs/constructors/index.html) + + + +A stickerpack is a group of stickers associated to the same emoji. +It is **not** a sticker pack the way it is usually intended, you may be looking for a [StickerSet](../types/StickerSet.html). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|emoticon|[string](/API_docs/types/string.html) | Yes|Emoji| +|documents|Array of [long](/API_docs/types/long.html) | Yes|Stickers| + + + +### Type: [StickerPack](/API_docs/types/StickerPack.html) + + +### Example: + +``` +$stickerPack = ['_' => 'stickerPack', 'emoticon' => 'string', 'documents' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/stickerSet.md b/docs/API_docs/constructors/stickerSet.md new file mode 100644 index 0000000000..fcfc7ed04f --- /dev/null +++ b/docs/API_docs/constructors/stickerSet.md @@ -0,0 +1,46 @@ +--- +title: "stickerSet" +description: "Represents a stickerset (stickerpack)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: stickerSet +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a stickerset (stickerpack) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|archived|[Bool](/API_docs/types/Bool.html) | Optional|Whether this stickerset was archived (due to too many saved stickers in the current account)| +|official|[Bool](/API_docs/types/Bool.html) | Optional|Is this stickerset official| +|masks|[Bool](/API_docs/types/Bool.html) | Optional|Is this a mask stickerset| +|emojis|[Bool](/API_docs/types/Bool.html) | Optional|This is a custom emoji stickerset| +|text\_color|[Bool](/API_docs/types/Bool.html) | Optional|Whether the color of this TGS custom emoji stickerset should be changed to the text color when used in messages, the accent color if used as emoji status, white on chat photos, or another appropriate color based on context.| +|channel\_emoji\_status|[Bool](/API_docs/types/Bool.html) | Optional|If set, this custom emoji stickerset can be used in [channel emoji statuses](https://core.telegram.org/api/emoji-status).| +|creator|[Bool](/API_docs/types/Bool.html) | Optional| +|installed\_date|[int](/API_docs/types/int.html) | Optional|When was this stickerset installed| +|id|[long](/API_docs/types/long.html) | Yes|ID of the stickerset| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash of stickerset| +|title|[string](/API_docs/types/string.html) | Yes|Title of stickerset| +|short\_name|[string](/API_docs/types/string.html) | Yes|Short name of stickerset, used when sharing stickerset using [stickerset deep links](https://core.telegram.org/api/links#stickerset-links).| +|thumbs|Array of [PhotoSize](/API_docs/types/PhotoSize.html) | Optional|Stickerset thumbnail| +|thumb\_dc\_id|[int](/API_docs/types/int.html) | Optional|DC ID of thumbnail| +|thumb\_version|[int](/API_docs/types/int.html) | Optional|Thumbnail version| +|thumb\_document\_id|[long](/API_docs/types/long.html) | Optional|Document ID of custom emoji thumbnail, fetch the document using [messages.getCustomEmojiDocuments](../methods/messages.getCustomEmojiDocuments.html)| +|count|[int](/API_docs/types/int.html) | Yes|Number of stickers in pack| +|hash|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [StickerSet](/API_docs/types/StickerSet.html) + + +### Example: + +``` +$stickerSet = ['_' => 'stickerSet', 'archived' => Bool, 'official' => Bool, 'masks' => Bool, 'emojis' => Bool, 'text_color' => Bool, 'channel_emoji_status' => Bool, 'creator' => Bool, 'installed_date' => int, 'id' => long, 'access_hash' => long, 'title' => 'string', 'short_name' => 'string', 'thumbs' => [PhotoSize, PhotoSize], 'thumb_dc_id' => int, 'thumb_version' => int, 'thumb_document_id' => long, 'count' => int, 'hash' => int]; +``` diff --git a/docs/API_docs/constructors/stickerSetCovered.md b/docs/API_docs/constructors/stickerSetCovered.md new file mode 100644 index 0000000000..d136e9a651 --- /dev/null +++ b/docs/API_docs/constructors/stickerSetCovered.md @@ -0,0 +1,30 @@ +--- +title: "stickerSetCovered" +description: "Stickerset with a single sticker as preview" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: stickerSetCovered +[Back to constructors index](/API_docs/constructors/index.html) + + + +Stickerset with a single sticker as preview + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|set|[StickerSet](/API_docs/types/StickerSet.html) | Yes|Stickerset| +|cover|[Document](/API_docs/types/Document.html) | Optional|Preview| + + + +### Type: [StickerSetCovered](/API_docs/types/StickerSetCovered.html) + + +### Example: + +``` +$stickerSetCovered = ['_' => 'stickerSetCovered', 'set' => StickerSet, 'cover' => Document]; +``` diff --git a/docs/API_docs/constructors/stickerSetFullCovered.md b/docs/API_docs/constructors/stickerSetFullCovered.md new file mode 100644 index 0000000000..d0932de67a --- /dev/null +++ b/docs/API_docs/constructors/stickerSetFullCovered.md @@ -0,0 +1,33 @@ +--- +title: "stickerSetFullCovered" +description: "Stickerset preview with all stickers of the stickerset included." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: stickerSetFullCovered +[Back to constructors index](/API_docs/constructors/index.html) + + + +Stickerset preview with all stickers of the stickerset included. +Currently used only for [custom emoji stickersets](https://core.telegram.org/api/custom-emoji), to avoid a further call to [messages.getStickerSet](../methods/messages.getStickerSet.html). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|set|[StickerSet](/API_docs/types/StickerSet.html) | Yes|Stickerset| +|packs|Array of [StickerPack](/API_docs/types/StickerPack.html) | Yes|Emoji information about every sticker in the stickerset| +|keywords|Array of [StickerKeyword](/API_docs/types/StickerKeyword.html) | Yes|Keywords for some or every sticker in the stickerset.| +|documents|Array of [Document](/API_docs/types/Document.html) | Yes|Stickers| + + + +### Type: [StickerSetCovered](/API_docs/types/StickerSetCovered.html) + + +### Example: + +``` +$stickerSetFullCovered = ['_' => 'stickerSetFullCovered', 'set' => StickerSet, 'packs' => [StickerPack, StickerPack], 'keywords' => [StickerKeyword, StickerKeyword], 'documents' => [Document, Document]]; +``` diff --git a/docs/API_docs/constructors/stickerSetMultiCovered.md b/docs/API_docs/constructors/stickerSetMultiCovered.md new file mode 100644 index 0000000000..872bf966f8 --- /dev/null +++ b/docs/API_docs/constructors/stickerSetMultiCovered.md @@ -0,0 +1,30 @@ +--- +title: "stickerSetMultiCovered" +description: "Stickerset, with multiple stickers as preview" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: stickerSetMultiCovered +[Back to constructors index](/API_docs/constructors/index.html) + + + +Stickerset, with multiple stickers as preview + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|set|[StickerSet](/API_docs/types/StickerSet.html) | Yes|Stickerset| +|covers|Array of [Document](/API_docs/types/Document.html) | Yes|Preview stickers| + + + +### Type: [StickerSetCovered](/API_docs/types/StickerSetCovered.html) + + +### Example: + +``` +$stickerSetMultiCovered = ['_' => 'stickerSetMultiCovered', 'set' => StickerSet, 'covers' => [Document, Document]]; +``` diff --git a/docs/API_docs/constructors/stickerSetNoCovered.md b/docs/API_docs/constructors/stickerSetNoCovered.md new file mode 100644 index 0000000000..0be4c9c538 --- /dev/null +++ b/docs/API_docs/constructors/stickerSetNoCovered.md @@ -0,0 +1,29 @@ +--- +title: "stickerSetNoCovered" +description: "Just the stickerset information, with no previews." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: stickerSetNoCovered +[Back to constructors index](/API_docs/constructors/index.html) + + + +Just the stickerset information, with no previews. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|set|[StickerSet](/API_docs/types/StickerSet.html) | Yes|Stickerset information.| + + + +### Type: [StickerSetCovered](/API_docs/types/StickerSetCovered.html) + + +### Example: + +``` +$stickerSetNoCovered = ['_' => 'stickerSetNoCovered', 'set' => StickerSet]; +``` diff --git a/docs/API_docs/constructors/stickers.suggestedShortName.md b/docs/API_docs/constructors/stickers.suggestedShortName.md new file mode 100644 index 0000000000..5653657f71 --- /dev/null +++ b/docs/API_docs/constructors/stickers.suggestedShortName.md @@ -0,0 +1,30 @@ +--- +title: "stickers.suggestedShortName" +description: "A suggested short name for a stickerpack" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/stickers_suggestedShortName.html +--- +# Constructor: stickers.suggestedShortName +[Back to constructors index](/API_docs/constructors/index.html) + + + +A suggested short name for a stickerpack + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|short\_name|[string](/API_docs/types/string.html) | Yes|Suggested short name| + + + +### Type: [stickers.SuggestedShortName](/API_docs/types/stickers.SuggestedShortName.html) + + +### Example: + +``` +$stickers_suggestedShortName = ['_' => 'stickers.suggestedShortName', 'short_name' => 'string']; +``` diff --git a/docs/API_docs/constructors/storage.fileGif.md b/docs/API_docs/constructors/storage.fileGif.md new file mode 100644 index 0000000000..120716d2af --- /dev/null +++ b/docs/API_docs/constructors/storage.fileGif.md @@ -0,0 +1,25 @@ +--- +title: "storage.fileGif" +description: "GIF image. MIME type: image/gif." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/storage_fileGif.html +--- +# Constructor: storage.fileGif +[Back to constructors index](/API_docs/constructors/index.html) + + + +GIF image. MIME type: `image/gif`. + + + + +### Type: [storage.FileType](/API_docs/types/storage.FileType.html) + + +### Example: + +``` +$storage_fileGif = ['_' => 'storage.fileGif']; +``` diff --git a/docs/API_docs/constructors/storage.fileJpeg.md b/docs/API_docs/constructors/storage.fileJpeg.md new file mode 100644 index 0000000000..3d38150faf --- /dev/null +++ b/docs/API_docs/constructors/storage.fileJpeg.md @@ -0,0 +1,25 @@ +--- +title: "storage.fileJpeg" +description: "JPEG image. MIME type: image/jpeg." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/storage_fileJpeg.html +--- +# Constructor: storage.fileJpeg +[Back to constructors index](/API_docs/constructors/index.html) + + + +JPEG image. MIME type: `image/jpeg`. + + + + +### Type: [storage.FileType](/API_docs/types/storage.FileType.html) + + +### Example: + +``` +$storage_fileJpeg = ['_' => 'storage.fileJpeg']; +``` diff --git a/docs/API_docs/constructors/storage.fileMov.md b/docs/API_docs/constructors/storage.fileMov.md new file mode 100644 index 0000000000..63d4820e70 --- /dev/null +++ b/docs/API_docs/constructors/storage.fileMov.md @@ -0,0 +1,25 @@ +--- +title: "storage.fileMov" +description: "Quicktime video. MIME type: video/quicktime." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/storage_fileMov.html +--- +# Constructor: storage.fileMov +[Back to constructors index](/API_docs/constructors/index.html) + + + +Quicktime video. MIME type: `video/quicktime`. + + + + +### Type: [storage.FileType](/API_docs/types/storage.FileType.html) + + +### Example: + +``` +$storage_fileMov = ['_' => 'storage.fileMov']; +``` diff --git a/docs/API_docs/constructors/storage.fileMp3.md b/docs/API_docs/constructors/storage.fileMp3.md new file mode 100644 index 0000000000..81febd49f7 --- /dev/null +++ b/docs/API_docs/constructors/storage.fileMp3.md @@ -0,0 +1,25 @@ +--- +title: "storage.fileMp3" +description: "Mp3 audio. MIME type: audio/mpeg." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/storage_fileMp3.html +--- +# Constructor: storage.fileMp3 +[Back to constructors index](/API_docs/constructors/index.html) + + + +Mp3 audio. MIME type: `audio/mpeg`. + + + + +### Type: [storage.FileType](/API_docs/types/storage.FileType.html) + + +### Example: + +``` +$storage_fileMp3 = ['_' => 'storage.fileMp3']; +``` diff --git a/docs/API_docs/constructors/storage.fileMp4.md b/docs/API_docs/constructors/storage.fileMp4.md new file mode 100644 index 0000000000..1c3e37c814 --- /dev/null +++ b/docs/API_docs/constructors/storage.fileMp4.md @@ -0,0 +1,25 @@ +--- +title: "storage.fileMp4" +description: "MPEG-4 video. MIME type: video/mp4." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/storage_fileMp4.html +--- +# Constructor: storage.fileMp4 +[Back to constructors index](/API_docs/constructors/index.html) + + + +MPEG-4 video. MIME type: `video/mp4`. + + + + +### Type: [storage.FileType](/API_docs/types/storage.FileType.html) + + +### Example: + +``` +$storage_fileMp4 = ['_' => 'storage.fileMp4']; +``` diff --git a/docs/API_docs/constructors/storage.filePartial.md b/docs/API_docs/constructors/storage.filePartial.md new file mode 100644 index 0000000000..978955bfbe --- /dev/null +++ b/docs/API_docs/constructors/storage.filePartial.md @@ -0,0 +1,25 @@ +--- +title: "storage.filePartial" +description: "Part of a bigger file." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/storage_filePartial.html +--- +# Constructor: storage.filePartial +[Back to constructors index](/API_docs/constructors/index.html) + + + +Part of a bigger file. + + + + +### Type: [storage.FileType](/API_docs/types/storage.FileType.html) + + +### Example: + +``` +$storage_filePartial = ['_' => 'storage.filePartial']; +``` diff --git a/docs/API_docs/constructors/storage.filePdf.md b/docs/API_docs/constructors/storage.filePdf.md new file mode 100644 index 0000000000..aa41875f57 --- /dev/null +++ b/docs/API_docs/constructors/storage.filePdf.md @@ -0,0 +1,25 @@ +--- +title: "storage.filePdf" +description: "PDF document image. MIME type: application/pdf." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/storage_filePdf.html +--- +# Constructor: storage.filePdf +[Back to constructors index](/API_docs/constructors/index.html) + + + +PDF document image. MIME type: `application/pdf`. + + + + +### Type: [storage.FileType](/API_docs/types/storage.FileType.html) + + +### Example: + +``` +$storage_filePdf = ['_' => 'storage.filePdf']; +``` diff --git a/docs/API_docs/constructors/storage.filePng.md b/docs/API_docs/constructors/storage.filePng.md new file mode 100644 index 0000000000..6d3a178b68 --- /dev/null +++ b/docs/API_docs/constructors/storage.filePng.md @@ -0,0 +1,25 @@ +--- +title: "storage.filePng" +description: "PNG image. MIME type: image/png." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/storage_filePng.html +--- +# Constructor: storage.filePng +[Back to constructors index](/API_docs/constructors/index.html) + + + +PNG image. MIME type: `image/png`. + + + + +### Type: [storage.FileType](/API_docs/types/storage.FileType.html) + + +### Example: + +``` +$storage_filePng = ['_' => 'storage.filePng']; +``` diff --git a/docs/API_docs/constructors/storage.fileUnknown.md b/docs/API_docs/constructors/storage.fileUnknown.md new file mode 100644 index 0000000000..9d89b01ae9 --- /dev/null +++ b/docs/API_docs/constructors/storage.fileUnknown.md @@ -0,0 +1,25 @@ +--- +title: "storage.fileUnknown" +description: "Unknown type." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/storage_fileUnknown.html +--- +# Constructor: storage.fileUnknown +[Back to constructors index](/API_docs/constructors/index.html) + + + +Unknown type. + + + + +### Type: [storage.FileType](/API_docs/types/storage.FileType.html) + + +### Example: + +``` +$storage_fileUnknown = ['_' => 'storage.fileUnknown']; +``` diff --git a/docs/API_docs/constructors/storage.fileWebp.md b/docs/API_docs/constructors/storage.fileWebp.md new file mode 100644 index 0000000000..0b3892d5e8 --- /dev/null +++ b/docs/API_docs/constructors/storage.fileWebp.md @@ -0,0 +1,25 @@ +--- +title: "storage.fileWebp" +description: "WEBP image. MIME type: image/webp." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/storage_fileWebp.html +--- +# Constructor: storage.fileWebp +[Back to constructors index](/API_docs/constructors/index.html) + + + +WEBP image. MIME type: `image/webp`. + + + + +### Type: [storage.FileType](/API_docs/types/storage.FileType.html) + + +### Example: + +``` +$storage_fileWebp = ['_' => 'storage.fileWebp']; +``` diff --git a/docs/API_docs/constructors/stories.allStories.md b/docs/API_docs/constructors/stories.allStories.md new file mode 100644 index 0000000000..a6113bbe3a --- /dev/null +++ b/docs/API_docs/constructors/stories.allStories.md @@ -0,0 +1,36 @@ +--- +title: "stories.allStories" +description: "Full list of active (or active and hidden) stories." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/stories_allStories.html +--- +# Constructor: stories.allStories +[Back to constructors index](/API_docs/constructors/index.html) + + + +Full list of active (or active and hidden) [stories](https://core.telegram.org/api/stories#watching-stories). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|has\_more|[Bool](/API_docs/types/Bool.html) | Optional|Whether more results can be fetched as [described here »](https://core.telegram.org/api/stories#watching-stories).| +|count|[int](/API_docs/types/int.html) | Yes|Total number of active (or active and hidden) stories| +|state|[string](/API_docs/types/string.html) | Yes|State to use for pagination| +|peer\_stories|Array of [PeerStories](/API_docs/types/PeerStories.html) | Yes|Stories| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Mentioned chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| +|stealth\_mode|[StoriesStealthMode](/API_docs/types/StoriesStealthMode.html) | Yes|Current [stealth mode](https://core.telegram.org/api/stories#stealth-mode) information| + + + +### Type: [stories.AllStories](/API_docs/types/stories.AllStories.html) + + +### Example: + +``` +$stories_allStories = ['_' => 'stories.allStories', 'has_more' => Bool, 'count' => int, 'state' => 'string', 'peer_stories' => [PeerStories, PeerStories], 'chats' => [Chat, Chat], 'users' => [User, User], 'stealth_mode' => StoriesStealthMode]; +``` diff --git a/docs/API_docs/constructors/stories.allStoriesNotModified.md b/docs/API_docs/constructors/stories.allStoriesNotModified.md new file mode 100644 index 0000000000..0fa8b7dcf7 --- /dev/null +++ b/docs/API_docs/constructors/stories.allStoriesNotModified.md @@ -0,0 +1,31 @@ +--- +title: "stories.allStoriesNotModified" +description: "The list of active (or active and hidden) stories has not changed." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/stories_allStoriesNotModified.html +--- +# Constructor: stories.allStoriesNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +The list of active (or active and hidden) [stories](https://core.telegram.org/api/stories#watching-stories) has not changed. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|state|[string](/API_docs/types/string.html) | Yes|State to use to ask for updates| +|stealth\_mode|[StoriesStealthMode](/API_docs/types/StoriesStealthMode.html) | Yes|Current [stealth mode](https://core.telegram.org/api/stories#stealth-mode) information| + + + +### Type: [stories.AllStories](/API_docs/types/stories.AllStories.html) + + +### Example: + +``` +$stories_allStoriesNotModified = ['_' => 'stories.allStoriesNotModified', 'state' => 'string', 'stealth_mode' => StoriesStealthMode]; +``` diff --git a/docs/API_docs/constructors/stories.peerStories.md b/docs/API_docs/constructors/stories.peerStories.md new file mode 100644 index 0000000000..ee5f527ad6 --- /dev/null +++ b/docs/API_docs/constructors/stories.peerStories.md @@ -0,0 +1,32 @@ +--- +title: "stories.peerStories" +description: "Active story list of a specific peer." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/stories_peerStories.html +--- +# Constructor: stories.peerStories +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Active story list](https://core.telegram.org/api/stories#watching-stories) of a specific peer. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|stories|[PeerStories](/API_docs/types/PeerStories.html) | Yes|Stories| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Mentioned chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| + + + +### Type: [stories.PeerStories](/API_docs/types/stories.PeerStories.html) + + +### Example: + +``` +$stories_peerStories = ['_' => 'stories.peerStories', 'stories' => PeerStories, 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/stories.stories.md b/docs/API_docs/constructors/stories.stories.md new file mode 100644 index 0000000000..06a6e0122e --- /dev/null +++ b/docs/API_docs/constructors/stories.stories.md @@ -0,0 +1,34 @@ +--- +title: "stories.stories" +description: "List of stories" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/stories_stories.html +--- +# Constructor: stories.stories +[Back to constructors index](/API_docs/constructors/index.html) + + + +List of [stories](https://core.telegram.org/api/stories#pinned-or-archived-stories) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Total number of stories that can be fetched| +|stories|Array of [StoryItem](/API_docs/types/StoryItem.html) | Yes|Stories| +|pinned\_to\_top|Array of [int](/API_docs/types/int.html) | Optional| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Mentioned chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| + + + +### Type: [stories.Stories](/API_docs/types/stories.Stories.html) + + +### Example: + +``` +$stories_stories = ['_' => 'stories.stories', 'count' => int, 'stories' => [StoryItem, StoryItem], 'pinned_to_top' => [int, int], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/stories.storyReactionsList.md b/docs/API_docs/constructors/stories.storyReactionsList.md new file mode 100644 index 0000000000..e8368a94b9 --- /dev/null +++ b/docs/API_docs/constructors/stories.storyReactionsList.md @@ -0,0 +1,34 @@ +--- +title: "stories.storyReactionsList" +description: "List of peers that reacted to or intercated with a specific story" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/stories_storyReactionsList.html +--- +# Constructor: stories.storyReactionsList +[Back to constructors index](/API_docs/constructors/index.html) + + + +List of peers that reacted to or intercated with a specific [story](https://core.telegram.org/api/stories) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Total number of reactions matching query| +|reactions|Array of [StoryReaction](/API_docs/types/StoryReaction.html) | Yes|List of peers that reacted to or interacted with a specific story| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Mentioned chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| +|next\_offset|[string](/API_docs/types/string.html) | Optional|If set, indicates the next offset to use to load more results by invoking [stories.getStoryReactionsList](../methods/stories.getStoryReactionsList.html).| + + + +### Type: [stories.StoryReactionsList](/API_docs/types/stories.StoryReactionsList.html) + + +### Example: + +``` +$stories_storyReactionsList = ['_' => 'stories.storyReactionsList', 'count' => int, 'reactions' => [StoryReaction, StoryReaction], 'chats' => [Chat, Chat], 'users' => [User, User], 'next_offset' => 'string']; +``` diff --git a/docs/API_docs/constructors/stories.storyViews.md b/docs/API_docs/constructors/stories.storyViews.md new file mode 100644 index 0000000000..34057f6acf --- /dev/null +++ b/docs/API_docs/constructors/stories.storyViews.md @@ -0,0 +1,31 @@ +--- +title: "stories.storyViews" +description: "Reaction and view counters for a list of stories" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/stories_storyViews.html +--- +# Constructor: stories.storyViews +[Back to constructors index](/API_docs/constructors/index.html) + + + +Reaction and view counters for a list of [stories](https://core.telegram.org/api/stories) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|views|Array of [StoryViews](/API_docs/types/StoryViews.html) | Yes|View date and reaction information of multiple stories| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| + + + +### Type: [stories.StoryViews](/API_docs/types/stories.StoryViews.html) + + +### Example: + +``` +$stories_storyViews = ['_' => 'stories.storyViews', 'views' => [StoryViews, StoryViews], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/stories.storyViewsList.md b/docs/API_docs/constructors/stories.storyViewsList.md new file mode 100644 index 0000000000..9afec63dfb --- /dev/null +++ b/docs/API_docs/constructors/stories.storyViewsList.md @@ -0,0 +1,37 @@ +--- +title: "stories.storyViewsList" +description: "Reaction and view counters for a story" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/stories_storyViewsList.html +--- +# Constructor: stories.storyViewsList +[Back to constructors index](/API_docs/constructors/index.html) + + + +Reaction and view counters for a [story](https://core.telegram.org/api/stories) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|count|[int](/API_docs/types/int.html) | Yes|Total number of results that can be fetched| +|views\_count|[int](/API_docs/types/int.html) | Yes|Total number of story views| +|forwards\_count|[int](/API_docs/types/int.html) | Yes|Total number of story forwards/reposts| +|reactions\_count|[int](/API_docs/types/int.html) | Yes|Number of reactions that were added to the story| +|views|Array of [StoryView](/API_docs/types/StoryView.html) | Yes|Story view date and reaction information| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Mentioned chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| +|next\_offset|[string](/API_docs/types/string.html) | Optional|Offset for pagination| + + + +### Type: [stories.StoryViewsList](/API_docs/types/stories.StoryViewsList.html) + + +### Example: + +``` +$stories_storyViewsList = ['_' => 'stories.storyViewsList', 'count' => int, 'views_count' => int, 'forwards_count' => int, 'reactions_count' => int, 'views' => [StoryView, StoryView], 'chats' => [Chat, Chat], 'users' => [User, User], 'next_offset' => 'string']; +``` diff --git a/docs/API_docs/constructors/storiesStealthMode.md b/docs/API_docs/constructors/storiesStealthMode.md new file mode 100644 index 0000000000..d6cbe7e7c8 --- /dev/null +++ b/docs/API_docs/constructors/storiesStealthMode.md @@ -0,0 +1,30 @@ +--- +title: "storiesStealthMode" +description: "Information about the current stealth mode session." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: storiesStealthMode +[Back to constructors index](/API_docs/constructors/index.html) + + + +Information about the current [stealth mode](https://core.telegram.org/api/stories#stealth-mode) session. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|active\_until\_date|[int](/API_docs/types/int.html) | Optional|The date up to which stealth mode will be active.| +|cooldown\_until\_date|[int](/API_docs/types/int.html) | Optional|The date starting from which the user will be allowed to re-enable stealth mode again.| + + + +### Type: [StoriesStealthMode](/API_docs/types/StoriesStealthMode.html) + + +### Example: + +``` +$storiesStealthMode = ['_' => 'storiesStealthMode', 'active_until_date' => int, 'cooldown_until_date' => int]; +``` diff --git a/docs/API_docs/constructors/storyFwdHeader.md b/docs/API_docs/constructors/storyFwdHeader.md new file mode 100644 index 0000000000..51cd62b03c --- /dev/null +++ b/docs/API_docs/constructors/storyFwdHeader.md @@ -0,0 +1,32 @@ +--- +title: "storyFwdHeader" +description: "Contains info about the original poster of a reposted story." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: storyFwdHeader +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains info about the original poster of a reposted story. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|modified|[Bool](/API_docs/types/Bool.html) | Optional|Whether the story media was modified before reposting it (for example by overlaying a round video with a reaction).| +|from|[Peer](/API_docs/types/Peer.html) | Optional|Peer that originally posted the story; will be empty for stories forwarded from a user with forwards privacy enabled, in which case `from_name` will be set, instead.| +|from\_name|[string](/API_docs/types/string.html) | Optional|Will be set for stories forwarded from a user with forwards privacy enabled, in which case `from` will also be empty.| +|story\_id|[int](/API_docs/types/int.html) | Optional|, contains the story ID| + + + +### Type: [StoryFwdHeader](/API_docs/types/StoryFwdHeader.html) + + +### Example: + +``` +$storyFwdHeader = ['_' => 'storyFwdHeader', 'modified' => Bool, 'from' => Peer, 'from_name' => 'string', 'story_id' => int]; +``` diff --git a/docs/API_docs/constructors/storyItem.md b/docs/API_docs/constructors/storyItem.md new file mode 100644 index 0000000000..ac8cc1e68a --- /dev/null +++ b/docs/API_docs/constructors/storyItem.md @@ -0,0 +1,110 @@ +--- +title: "storyItem" +description: "Represents a story." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: storyItem +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a [story](https://core.telegram.org/api/stories). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|pinned|[Bool](/API_docs/types/Bool.html) | Optional|Whether this story is pinned on the user's profile| +|public|[Bool](/API_docs/types/Bool.html) | Optional|Whether this story is public and can be viewed by everyone| +|close\_friends|[Bool](/API_docs/types/Bool.html) | Optional|Whether this story can only be viewed by [our close friends, see here »](https://core.telegram.org/api/privacy) for more info| +|min|[Bool](/API_docs/types/Bool.html) | Optional|Full information about this story was omitted for space and performance reasons; use [stories.getStoriesByID](../methods/stories.getStoriesByID.html) to fetch full info about this story when and if needed.| +|noforwards|[Bool](/API_docs/types/Bool.html) | Optional|Whether this story is [protected](https://telegram.org/blog/protected-content-delete-by-date-and-more) and thus cannot be forwarded; clients should also prevent users from saving attached media (i.e. videos should only be streamed, photos should be kept in RAM, et cetera).| +|edited|[Bool](/API_docs/types/Bool.html) | Optional|Indicates whether the story was edited.| +|contacts|[Bool](/API_docs/types/Bool.html) | Optional|Whether this story can only be viewed by our contacts| +|selected\_contacts|[Bool](/API_docs/types/Bool.html) | Optional|Whether this story can only be viewed by a select list of our contacts| +|out|[Bool](/API_docs/types/Bool.html) | Optional|indicates whether we sent this story.| +|id|[int](/API_docs/types/int.html) | Yes|ID of the story.| +|date|[int](/API_docs/types/int.html) | Yes|When was the story posted.| +|from\_id|[Peer](/API_docs/types/Peer.html) | Optional| +|fwd\_from|[StoryFwdHeader](/API_docs/types/StoryFwdHeader.html) | Optional|For [reposted stories »](https://core.telegram.org/api/stories#reposting-stories), contains info about the original story.| +|expire\_date|[int](/API_docs/types/int.html) | Yes|When does the story expire.| +|caption|[string](/API_docs/types/string.html) | Optional|Story caption.| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|[Message entities for styled text](https://core.telegram.org/api/entities)| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|media|[MessageMedia](/API_docs/types/MessageMedia.html) | Optional|Story media.| +|media\_areas|Array of [MediaArea](/API_docs/types/MediaArea.html) | Optional|List of media areas, see [here »](https://core.telegram.org/api/stories#media-areas) for more info on media areas.| +|privacy|Array of [PrivacyRule](/API_docs/types/PrivacyRule.html) | Optional|[Privacy rules](https://core.telegram.org/api/privacy) indicating who can and can't view this story| +|views|[StoryViews](/API_docs/types/StoryViews.html) | Optional|View date and reaction information| +|sent\_reaction|[Reaction](/API_docs/types/Reaction.html) | Optional|The reaction we sent.| + + + +### Type: [StoryItem](/API_docs/types/StoryItem.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$storyItem = ['_' => 'storyItem', 'pinned' => Bool, 'public' => Bool, 'close_friends' => Bool, 'min' => Bool, 'noforwards' => Bool, 'edited' => Bool, 'contacts' => Bool, 'selected_contacts' => Bool, 'out' => Bool, 'id' => int, 'date' => int, 'from_id' => Peer, 'fwd_from' => StoryFwdHeader, 'expire_date' => int, 'caption' => 'string', 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'media' => MessageMedia, 'media_areas' => [MediaArea, MediaArea], 'privacy' => [PrivacyRule, PrivacyRule], 'views' => StoryViews, 'sent_reaction' => Reaction]; +``` diff --git a/docs/API_docs/constructors/storyItemDeleted.md b/docs/API_docs/constructors/storyItemDeleted.md new file mode 100644 index 0000000000..1fadb6e4b6 --- /dev/null +++ b/docs/API_docs/constructors/storyItemDeleted.md @@ -0,0 +1,29 @@ +--- +title: "storyItemDeleted" +description: "Represents a previously active story, that was deleted" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: storyItemDeleted +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a previously active story, that was deleted + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[int](/API_docs/types/int.html) | Yes|Story ID| + + + +### Type: [StoryItem](/API_docs/types/StoryItem.html) + + +### Example: + +``` +$storyItemDeleted = ['_' => 'storyItemDeleted', 'id' => int]; +``` diff --git a/docs/API_docs/constructors/storyItemSkipped.md b/docs/API_docs/constructors/storyItemSkipped.md new file mode 100644 index 0000000000..6e168bd2ee --- /dev/null +++ b/docs/API_docs/constructors/storyItemSkipped.md @@ -0,0 +1,32 @@ +--- +title: "storyItemSkipped" +description: "Represents an active story, whose full information was omitted for space and performance reasons; use stories.getStoriesByID to fetch full info about the skipped story when and if needed." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: storyItemSkipped +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents an active story, whose full information was omitted for space and performance reasons; use [stories.getStoriesByID](../methods/stories.getStoriesByID.html) to fetch full info about the skipped story when and if needed. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|close\_friends|[Bool](/API_docs/types/Bool.html) | Optional|Whether this story can only be viewed by [our close friends, see here »](https://core.telegram.org/api/privacy) for more info| +|id|[int](/API_docs/types/int.html) | Yes|Story ID| +|date|[int](/API_docs/types/int.html) | Yes|When was the story posted.| +|expire\_date|[int](/API_docs/types/int.html) | Yes|When does the story expire.| + + + +### Type: [StoryItem](/API_docs/types/StoryItem.html) + + +### Example: + +``` +$storyItemSkipped = ['_' => 'storyItemSkipped', 'close_friends' => Bool, 'id' => int, 'date' => int, 'expire_date' => int]; +``` diff --git a/docs/API_docs/constructors/storyReaction.md b/docs/API_docs/constructors/storyReaction.md new file mode 100644 index 0000000000..587e574fcd --- /dev/null +++ b/docs/API_docs/constructors/storyReaction.md @@ -0,0 +1,31 @@ +--- +title: "storyReaction" +description: "How a certain peer reacted to a story" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: storyReaction +[Back to constructors index](/API_docs/constructors/index.html) + + + +How a certain peer reacted to a story + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer\_id|[Peer](/API_docs/types/Peer.html) | Yes|The peer| +|date|[int](/API_docs/types/int.html) | Yes|Reaction date| +|reaction|[Reaction](/API_docs/types/Reaction.html) | Optional|The reaction| + + + +### Type: [StoryReaction](/API_docs/types/StoryReaction.html) + + +### Example: + +``` +$storyReaction = ['_' => 'storyReaction', 'peer_id' => Peer, 'date' => int, 'reaction' => Reaction]; +``` diff --git a/docs/API_docs/constructors/storyReactionPublicForward.md b/docs/API_docs/constructors/storyReactionPublicForward.md new file mode 100644 index 0000000000..7f0b24a24d --- /dev/null +++ b/docs/API_docs/constructors/storyReactionPublicForward.md @@ -0,0 +1,29 @@ +--- +title: "storyReactionPublicForward" +description: "A certain peer has forwarded the story as a message to a public chat or channel." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: storyReactionPublicForward +[Back to constructors index](/API_docs/constructors/index.html) + + + +A certain peer has forwarded the story as a message to a public chat or channel. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|message|[Message](/API_docs/types/Message.html) | Optional|The message with the forwarded story.| + + + +### Type: [StoryReaction](/API_docs/types/StoryReaction.html) + + +### Example: + +``` +$storyReactionPublicForward = ['_' => 'storyReactionPublicForward', 'message' => Message]; +``` diff --git a/docs/API_docs/constructors/storyReactionPublicRepost.md b/docs/API_docs/constructors/storyReactionPublicRepost.md new file mode 100644 index 0000000000..97949b2fdb --- /dev/null +++ b/docs/API_docs/constructors/storyReactionPublicRepost.md @@ -0,0 +1,30 @@ +--- +title: "storyReactionPublicRepost" +description: "A certain peer has reposted the story." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: storyReactionPublicRepost +[Back to constructors index](/API_docs/constructors/index.html) + + + +A certain peer has reposted the story. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer\_id|[Peer](/API_docs/types/Peer.html) | Yes|The peer that reposted the story.| +|story|[StoryItem](/API_docs/types/StoryItem.html) | Yes|The reposted story.| + + + +### Type: [StoryReaction](/API_docs/types/StoryReaction.html) + + +### Example: + +``` +$storyReactionPublicRepost = ['_' => 'storyReactionPublicRepost', 'peer_id' => Peer, 'story' => StoryItem]; +``` diff --git a/docs/API_docs/constructors/storyView.md b/docs/API_docs/constructors/storyView.md new file mode 100644 index 0000000000..12cf832a01 --- /dev/null +++ b/docs/API_docs/constructors/storyView.md @@ -0,0 +1,33 @@ +--- +title: "storyView" +description: "Story view date and reaction information" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: storyView +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Story](https://core.telegram.org/api/stories) view date and reaction information + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|blocked|[Bool](/API_docs/types/Bool.html) | Optional|Whether we have [completely blocked](https://core.telegram.org/api/block) this user, including from viewing more of our stories.| +|blocked\_my\_stories\_from|[Bool](/API_docs/types/Bool.html) | Optional|Whether we have [blocked](https://core.telegram.org/api/block) this user from viewing more of our stories.| +|user\_id|[long](/API_docs/types/long.html) | Yes|The user that viewed the story| +|date|[int](/API_docs/types/int.html) | Yes|When did the user view the story| +|reaction|[Reaction](/API_docs/types/Reaction.html) | Optional|If present, contains the reaction that the user left on the story| + + + +### Type: [StoryView](/API_docs/types/StoryView.html) + + +### Example: + +``` +$storyView = ['_' => 'storyView', 'blocked' => Bool, 'blocked_my_stories_from' => Bool, 'user_id' => long, 'date' => int, 'reaction' => Reaction]; +``` diff --git a/docs/API_docs/constructors/storyViewPublicForward.md b/docs/API_docs/constructors/storyViewPublicForward.md new file mode 100644 index 0000000000..7ec48156fc --- /dev/null +++ b/docs/API_docs/constructors/storyViewPublicForward.md @@ -0,0 +1,31 @@ +--- +title: "storyViewPublicForward" +description: "A certain peer has forwarded the story as a message to a public chat or channel." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: storyViewPublicForward +[Back to constructors index](/API_docs/constructors/index.html) + + + +A certain peer has forwarded the story as a message to a public chat or channel. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|blocked|[Bool](/API_docs/types/Bool.html) | Optional|Whether we have [completely blocked](https://core.telegram.org/api/block) this user, including from viewing more of our stories.| +|blocked\_my\_stories\_from|[Bool](/API_docs/types/Bool.html) | Optional|Whether we have [blocked](https://core.telegram.org/api/block) this user from viewing more of our stories.| +|message|[Message](/API_docs/types/Message.html) | Optional|The message with the forwarded story.| + + + +### Type: [StoryView](/API_docs/types/StoryView.html) + + +### Example: + +``` +$storyViewPublicForward = ['_' => 'storyViewPublicForward', 'blocked' => Bool, 'blocked_my_stories_from' => Bool, 'message' => Message]; +``` diff --git a/docs/API_docs/constructors/storyViewPublicRepost.md b/docs/API_docs/constructors/storyViewPublicRepost.md new file mode 100644 index 0000000000..30ed561ce6 --- /dev/null +++ b/docs/API_docs/constructors/storyViewPublicRepost.md @@ -0,0 +1,32 @@ +--- +title: "storyViewPublicRepost" +description: "A certain peer has reposted the story." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: storyViewPublicRepost +[Back to constructors index](/API_docs/constructors/index.html) + + + +A certain peer has reposted the story. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|blocked|[Bool](/API_docs/types/Bool.html) | Optional|Whether we have [completely blocked](https://core.telegram.org/api/block) this user, including from viewing more of our stories.| +|blocked\_my\_stories\_from|[Bool](/API_docs/types/Bool.html) | Optional|Whether we have [blocked](https://core.telegram.org/api/block) this user from viewing more of our stories.| +|peer\_id|[Peer](/API_docs/types/Peer.html) | Yes|The peer that reposted the story.| +|story|[StoryItem](/API_docs/types/StoryItem.html) | Yes|The reposted story.| + + + +### Type: [StoryView](/API_docs/types/StoryView.html) + + +### Example: + +``` +$storyViewPublicRepost = ['_' => 'storyViewPublicRepost', 'blocked' => Bool, 'blocked_my_stories_from' => Bool, 'peer_id' => Peer, 'story' => StoryItem]; +``` diff --git a/docs/API_docs/constructors/storyViews.md b/docs/API_docs/constructors/storyViews.md new file mode 100644 index 0000000000..2328e4d0fe --- /dev/null +++ b/docs/API_docs/constructors/storyViews.md @@ -0,0 +1,34 @@ +--- +title: "storyViews" +description: "Aggregated view and reaction information of a story." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: storyViews +[Back to constructors index](/API_docs/constructors/index.html) + + + +Aggregated view and reaction information of a [story](https://core.telegram.org/api/stories). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|has\_viewers|[Bool](/API_docs/types/Bool.html) | Optional|If set, indicates that the viewers list is currently viewable, and was not yet deleted because the story has expired while the user didn't have a [Premium](https://core.telegram.org/api/premium) account.| +|views\_count|[int](/API_docs/types/int.html) | Yes|View counter of the story| +|forwards\_count|[int](/API_docs/types/int.html) | Optional|Forward counter of the story| +|reactions|Array of [ReactionCount](/API_docs/types/ReactionCount.html) | Optional|All reactions sent to this story| +|reactions\_count|[int](/API_docs/types/int.html) | Optional|Number of reactions added to the story| +|recent\_viewers|Array of [long](/API_docs/types/long.html) | Optional|User IDs of some recent viewers of the story| + + + +### Type: [StoryViews](/API_docs/types/StoryViews.html) + + +### Example: + +``` +$storyViews = ['_' => 'storyViews', 'has_viewers' => Bool, 'views_count' => int, 'forwards_count' => int, 'reactions' => [ReactionCount, ReactionCount], 'reactions_count' => int, 'recent_viewers' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/textAnchor.md b/docs/API_docs/constructors/textAnchor.md new file mode 100644 index 0000000000..6c39a66ce7 --- /dev/null +++ b/docs/API_docs/constructors/textAnchor.md @@ -0,0 +1,30 @@ +--- +title: "textAnchor" +description: "Text linking to another section of the page" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: textAnchor +[Back to constructors index](/API_docs/constructors/index.html) + + + +Text linking to another section of the page + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[RichText](/API_docs/types/RichText.html) | Yes|Text| +|name|[string](/API_docs/types/string.html) | Yes|Section name| + + + +### Type: [RichText](/API_docs/types/RichText.html) + + +### Example: + +``` +$textAnchor = ['_' => 'textAnchor', 'text' => RichText, 'name' => 'string']; +``` diff --git a/docs/API_docs/constructors/textBold.md b/docs/API_docs/constructors/textBold.md new file mode 100644 index 0000000000..195b445aa5 --- /dev/null +++ b/docs/API_docs/constructors/textBold.md @@ -0,0 +1,29 @@ +--- +title: "textBold" +description: "Bold text" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: textBold +[Back to constructors index](/API_docs/constructors/index.html) + + + +**Bold** text + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[RichText](/API_docs/types/RichText.html) | Yes|Text| + + + +### Type: [RichText](/API_docs/types/RichText.html) + + +### Example: + +``` +$textBold = ['_' => 'textBold', 'text' => RichText]; +``` diff --git a/docs/API_docs/constructors/textConcat.md b/docs/API_docs/constructors/textConcat.md new file mode 100644 index 0000000000..704b10009c --- /dev/null +++ b/docs/API_docs/constructors/textConcat.md @@ -0,0 +1,29 @@ +--- +title: "textConcat" +description: "Concatenation of rich texts" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: textConcat +[Back to constructors index](/API_docs/constructors/index.html) + + + +Concatenation of rich texts + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|texts|Array of [RichText](/API_docs/types/RichText.html) | Yes|Concatenated rich texts| + + + +### Type: [RichText](/API_docs/types/RichText.html) + + +### Example: + +``` +$textConcat = ['_' => 'textConcat', 'texts' => [RichText, RichText]]; +``` diff --git a/docs/API_docs/constructors/textEmail.md b/docs/API_docs/constructors/textEmail.md new file mode 100644 index 0000000000..e104c5c958 --- /dev/null +++ b/docs/API_docs/constructors/textEmail.md @@ -0,0 +1,30 @@ +--- +title: "textEmail" +description: "Rich text email link" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: textEmail +[Back to constructors index](/API_docs/constructors/index.html) + + + +Rich text email link + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[RichText](/API_docs/types/RichText.html) | Yes|Link text| +|email|[string](/API_docs/types/string.html) | Yes|Email address| + + + +### Type: [RichText](/API_docs/types/RichText.html) + + +### Example: + +``` +$textEmail = ['_' => 'textEmail', 'text' => RichText, 'email' => 'string']; +``` diff --git a/docs/API_docs/constructors/textEmpty.md b/docs/API_docs/constructors/textEmpty.md new file mode 100644 index 0000000000..7cccc57fc0 --- /dev/null +++ b/docs/API_docs/constructors/textEmpty.md @@ -0,0 +1,24 @@ +--- +title: "textEmpty" +description: "Empty rich text element" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: textEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty rich text element + + + + +### Type: [RichText](/API_docs/types/RichText.html) + + +### Example: + +``` +$textEmpty = ['_' => 'textEmpty']; +``` diff --git a/docs/API_docs/constructors/textFixed.md b/docs/API_docs/constructors/textFixed.md new file mode 100644 index 0000000000..94f46a49bd --- /dev/null +++ b/docs/API_docs/constructors/textFixed.md @@ -0,0 +1,29 @@ +--- +title: "textFixed" +description: "fixed-width rich text" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: textFixed +[Back to constructors index](/API_docs/constructors/index.html) + + + +`fixed-width` rich text + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[RichText](/API_docs/types/RichText.html) | Yes|Text| + + + +### Type: [RichText](/API_docs/types/RichText.html) + + +### Example: + +``` +$textFixed = ['_' => 'textFixed', 'text' => RichText]; +``` diff --git a/docs/API_docs/constructors/textImage.md b/docs/API_docs/constructors/textImage.md new file mode 100644 index 0000000000..8bc83e8cd3 --- /dev/null +++ b/docs/API_docs/constructors/textImage.md @@ -0,0 +1,31 @@ +--- +title: "textImage" +description: "Inline image" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: textImage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Inline image + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|document\_id|[long](/API_docs/types/long.html) | Yes|Document ID| +|w|[int](/API_docs/types/int.html) | Yes|Width| +|h|[int](/API_docs/types/int.html) | Yes|Height| + + + +### Type: [RichText](/API_docs/types/RichText.html) + + +### Example: + +``` +$textImage = ['_' => 'textImage', 'document_id' => long, 'w' => int, 'h' => int]; +``` diff --git a/docs/API_docs/constructors/textItalic.md b/docs/API_docs/constructors/textItalic.md new file mode 100644 index 0000000000..ef9dbae16d --- /dev/null +++ b/docs/API_docs/constructors/textItalic.md @@ -0,0 +1,29 @@ +--- +title: "textItalic" +description: "Italic text" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: textItalic +[Back to constructors index](/API_docs/constructors/index.html) + + + +*Italic* text + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[RichText](/API_docs/types/RichText.html) | Yes|Text| + + + +### Type: [RichText](/API_docs/types/RichText.html) + + +### Example: + +``` +$textItalic = ['_' => 'textItalic', 'text' => RichText]; +``` diff --git a/docs/API_docs/constructors/textMarked.md b/docs/API_docs/constructors/textMarked.md new file mode 100644 index 0000000000..6cd3a2d84b --- /dev/null +++ b/docs/API_docs/constructors/textMarked.md @@ -0,0 +1,29 @@ +--- +title: "textMarked" +description: "Highlighted text" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: textMarked +[Back to constructors index](/API_docs/constructors/index.html) + + + +Highlighted text + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[RichText](/API_docs/types/RichText.html) | Yes|Text| + + + +### Type: [RichText](/API_docs/types/RichText.html) + + +### Example: + +``` +$textMarked = ['_' => 'textMarked', 'text' => RichText]; +``` diff --git a/docs/API_docs/constructors/textPhone.md b/docs/API_docs/constructors/textPhone.md new file mode 100644 index 0000000000..3bb26a6aa7 --- /dev/null +++ b/docs/API_docs/constructors/textPhone.md @@ -0,0 +1,30 @@ +--- +title: "textPhone" +description: "Rich text linked to a phone number" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: textPhone +[Back to constructors index](/API_docs/constructors/index.html) + + + +Rich text linked to a phone number + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[RichText](/API_docs/types/RichText.html) | Yes|Text| +|phone|[string](/API_docs/types/string.html) | Yes|Phone number| + + + +### Type: [RichText](/API_docs/types/RichText.html) + + +### Example: + +``` +$textPhone = ['_' => 'textPhone', 'text' => RichText, 'phone' => 'string']; +``` diff --git a/docs/API_docs/constructors/textPlain.md b/docs/API_docs/constructors/textPlain.md new file mode 100644 index 0000000000..ad46b2550c --- /dev/null +++ b/docs/API_docs/constructors/textPlain.md @@ -0,0 +1,29 @@ +--- +title: "textPlain" +description: "Plain text" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: textPlain +[Back to constructors index](/API_docs/constructors/index.html) + + + +Plain text + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[string](/API_docs/types/string.html) | Yes|Text| + + + +### Type: [RichText](/API_docs/types/RichText.html) + + +### Example: + +``` +$textPlain = ['_' => 'textPlain', 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/textStrike.md b/docs/API_docs/constructors/textStrike.md new file mode 100644 index 0000000000..981fddc534 --- /dev/null +++ b/docs/API_docs/constructors/textStrike.md @@ -0,0 +1,29 @@ +--- +title: "textStrike" +description: "Strikethrough text" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: textStrike +[Back to constructors index](/API_docs/constructors/index.html) + + + +Strikethrough text + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[RichText](/API_docs/types/RichText.html) | Yes|Text| + + + +### Type: [RichText](/API_docs/types/RichText.html) + + +### Example: + +``` +$textStrike = ['_' => 'textStrike', 'text' => RichText]; +``` diff --git a/docs/API_docs/constructors/textSubscript.md b/docs/API_docs/constructors/textSubscript.md new file mode 100644 index 0000000000..b666c24f0f --- /dev/null +++ b/docs/API_docs/constructors/textSubscript.md @@ -0,0 +1,29 @@ +--- +title: "textSubscript" +description: "Subscript text" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: textSubscript +[Back to constructors index](/API_docs/constructors/index.html) + + + +Subscript text + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[RichText](/API_docs/types/RichText.html) | Yes|Text| + + + +### Type: [RichText](/API_docs/types/RichText.html) + + +### Example: + +``` +$textSubscript = ['_' => 'textSubscript', 'text' => RichText]; +``` diff --git a/docs/API_docs/constructors/textSuperscript.md b/docs/API_docs/constructors/textSuperscript.md new file mode 100644 index 0000000000..8a768a3071 --- /dev/null +++ b/docs/API_docs/constructors/textSuperscript.md @@ -0,0 +1,29 @@ +--- +title: "textSuperscript" +description: "Superscript text" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: textSuperscript +[Back to constructors index](/API_docs/constructors/index.html) + + + +Superscript text + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[RichText](/API_docs/types/RichText.html) | Yes|Text| + + + +### Type: [RichText](/API_docs/types/RichText.html) + + +### Example: + +``` +$textSuperscript = ['_' => 'textSuperscript', 'text' => RichText]; +``` diff --git a/docs/API_docs/constructors/textUnderline.md b/docs/API_docs/constructors/textUnderline.md new file mode 100644 index 0000000000..f4cff6f2bb --- /dev/null +++ b/docs/API_docs/constructors/textUnderline.md @@ -0,0 +1,29 @@ +--- +title: "textUnderline" +description: "Underlined text" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: textUnderline +[Back to constructors index](/API_docs/constructors/index.html) + + + +Underlined text + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[RichText](/API_docs/types/RichText.html) | Yes|Text| + + + +### Type: [RichText](/API_docs/types/RichText.html) + + +### Example: + +``` +$textUnderline = ['_' => 'textUnderline', 'text' => RichText]; +``` diff --git a/docs/API_docs/constructors/textUrl.md b/docs/API_docs/constructors/textUrl.md new file mode 100644 index 0000000000..06aae0101b --- /dev/null +++ b/docs/API_docs/constructors/textUrl.md @@ -0,0 +1,31 @@ +--- +title: "textUrl" +description: "Link" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: textUrl +[Back to constructors index](/API_docs/constructors/index.html) + + + +Link + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[RichText](/API_docs/types/RichText.html) | Yes|Text of link| +|url|[string](/API_docs/types/string.html) | Yes|Webpage HTTP URL| +|webpage\_id|[long](/API_docs/types/long.html) | Yes|If a preview was already generated for the page, the page ID| + + + +### Type: [RichText](/API_docs/types/RichText.html) + + +### Example: + +``` +$textUrl = ['_' => 'textUrl', 'text' => RichText, 'url' => 'string', 'webpage_id' => long]; +``` diff --git a/docs/API_docs/constructors/textWithEntities.md b/docs/API_docs/constructors/textWithEntities.md new file mode 100644 index 0000000000..d8aac38fdb --- /dev/null +++ b/docs/API_docs/constructors/textWithEntities.md @@ -0,0 +1,91 @@ +--- +title: "textWithEntities" +description: "Styled text with message entities" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: textWithEntities +[Back to constructors index](/API_docs/constructors/index.html) + + + +Styled text with [message entities](https://core.telegram.org/api/entities) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|text|[string](/API_docs/types/string.html) | Yes|Text| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Yes|[Message entities for styled text](https://core.telegram.org/api/entities)| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | + + + +### Type: [TextWithEntities](/API_docs/types/TextWithEntities.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$textWithEntities = ['_' => 'textWithEntities', 'text' => 'string', 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', ]; +``` diff --git a/docs/API_docs/constructors/theme.md b/docs/API_docs/constructors/theme.md new file mode 100644 index 0000000000..b9f688b1ef --- /dev/null +++ b/docs/API_docs/constructors/theme.md @@ -0,0 +1,39 @@ +--- +title: "theme" +description: "Theme" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: theme +[Back to constructors index](/API_docs/constructors/index.html) + + + +Theme + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|creator|[Bool](/API_docs/types/Bool.html) | Optional|Whether the current user is the creator of this theme| +|default|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is the default theme| +|for\_chat|[Bool](/API_docs/types/Bool.html) | Optional|Whether this theme is meant to be used as a [chat theme](https://telegram.org/blog/chat-themes-interactive-emoji-read-receipts)| +|id|[long](/API_docs/types/long.html) | Yes|Theme ID| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Theme access hash| +|slug|[string](/API_docs/types/string.html) | Yes|Unique theme ID| +|title|[string](/API_docs/types/string.html) | Yes|Theme name| +|document|[Document](/API_docs/types/Document.html) | Optional|Theme| +|settings|Array of [ThemeSettings](/API_docs/types/ThemeSettings.html) | Optional|Theme settings| +|emoticon|[string](/API_docs/types/string.html) | Optional|Theme emoji| +|installs\_count|[int](/API_docs/types/int.html) | Optional|Installation count| + + + +### Type: [Theme](/API_docs/types/Theme.html) + + +### Example: + +``` +$theme = ['_' => 'theme', 'creator' => Bool, 'default' => Bool, 'for_chat' => Bool, 'id' => long, 'access_hash' => long, 'slug' => 'string', 'title' => 'string', 'document' => Document, 'settings' => [ThemeSettings, ThemeSettings], 'emoticon' => 'string', 'installs_count' => int]; +``` diff --git a/docs/API_docs/constructors/themeSettings.md b/docs/API_docs/constructors/themeSettings.md new file mode 100644 index 0000000000..8f8732216f --- /dev/null +++ b/docs/API_docs/constructors/themeSettings.md @@ -0,0 +1,34 @@ +--- +title: "themeSettings" +description: "Theme settings" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: themeSettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +Theme settings + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|message\_colors\_animated|[Bool](/API_docs/types/Bool.html) | Optional|If set, the freeform gradient fill needs to be animated on every sent message.| +|base\_theme|[BaseTheme](/API_docs/types/BaseTheme.html) | Yes|Base theme| +|accent\_color|[int](/API_docs/types/int.html) | Yes|Accent color, ARGB format| +|outbox\_accent\_color|[int](/API_docs/types/int.html) | Optional|Accent color of outgoing messages in ARGB format| +|message\_colors|Array of [int](/API_docs/types/int.html) | Optional|The fill to be used as a background for outgoing messages, in RGB24 format.
If just one or two equal colors are provided, describes a solid fill of a background.
If two different colors are provided, describes the top and bottom colors of a 0-degree gradient.
If three or four colors are provided, describes a freeform gradient fill of a background.| +|wallpaper|[WallPaper](/API_docs/types/WallPaper.html) | Optional|[Wallpaper](https://core.telegram.org/api/wallpapers)| + + + +### Type: [ThemeSettings](/API_docs/types/ThemeSettings.html) + + +### Example: + +``` +$themeSettings = ['_' => 'themeSettings', 'message_colors_animated' => Bool, 'base_theme' => BaseTheme, 'accent_color' => int, 'outbox_accent_color' => int, 'message_colors' => [int, int], 'wallpaper' => WallPaper]; +``` diff --git a/docs/API_docs/constructors/timezone.md b/docs/API_docs/constructors/timezone.md new file mode 100644 index 0000000000..ae541820c5 --- /dev/null +++ b/docs/API_docs/constructors/timezone.md @@ -0,0 +1,29 @@ +--- +title: "timezone" +description: "timezone attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: timezone +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|id|[string](/API_docs/types/string.html) | Yes| +|name|[string](/API_docs/types/string.html) | Yes| +|utc\_offset|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [Timezone](/API_docs/types/Timezone.html) + + +### Example: + +``` +$timezone = ['_' => 'timezone', 'id' => 'string', 'name' => 'string', 'utc_offset' => int]; +``` diff --git a/docs/API_docs/constructors/topPeer.md b/docs/API_docs/constructors/topPeer.md new file mode 100644 index 0000000000..b5b9acb4ec --- /dev/null +++ b/docs/API_docs/constructors/topPeer.md @@ -0,0 +1,30 @@ +--- +title: "topPeer" +description: "Top peer" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: topPeer +[Back to constructors index](/API_docs/constructors/index.html) + + + +Top peer + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|Peer| +|rating|[double](/API_docs/types/double.html) | Yes|Rating as computed in [top peer rating »](https://core.telegram.org/api/top-rating)| + + + +### Type: [TopPeer](/API_docs/types/TopPeer.html) + + +### Example: + +``` +$topPeer = ['_' => 'topPeer', 'peer' => long, 'rating' => double]; +``` diff --git a/docs/API_docs/constructors/topPeerCategoryBotsInline.md b/docs/API_docs/constructors/topPeerCategoryBotsInline.md new file mode 100644 index 0000000000..b3d6d6d7fc --- /dev/null +++ b/docs/API_docs/constructors/topPeerCategoryBotsInline.md @@ -0,0 +1,24 @@ +--- +title: "topPeerCategoryBotsInline" +description: "Most used inline bots" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: topPeerCategoryBotsInline +[Back to constructors index](/API_docs/constructors/index.html) + + + +Most used inline bots + + + + +### Type: [TopPeerCategory](/API_docs/types/TopPeerCategory.html) + + +### Example: + +``` +$topPeerCategoryBotsInline = ['_' => 'topPeerCategoryBotsInline']; +``` diff --git a/docs/API_docs/constructors/topPeerCategoryBotsPM.md b/docs/API_docs/constructors/topPeerCategoryBotsPM.md new file mode 100644 index 0000000000..81c291e02d --- /dev/null +++ b/docs/API_docs/constructors/topPeerCategoryBotsPM.md @@ -0,0 +1,24 @@ +--- +title: "topPeerCategoryBotsPM" +description: "Most used bots" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: topPeerCategoryBotsPM +[Back to constructors index](/API_docs/constructors/index.html) + + + +Most used bots + + + + +### Type: [TopPeerCategory](/API_docs/types/TopPeerCategory.html) + + +### Example: + +``` +$topPeerCategoryBotsPM = ['_' => 'topPeerCategoryBotsPM']; +``` diff --git a/docs/API_docs/constructors/topPeerCategoryChannels.md b/docs/API_docs/constructors/topPeerCategoryChannels.md new file mode 100644 index 0000000000..7ccca42779 --- /dev/null +++ b/docs/API_docs/constructors/topPeerCategoryChannels.md @@ -0,0 +1,24 @@ +--- +title: "topPeerCategoryChannels" +description: "Most frequently visited channels" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: topPeerCategoryChannels +[Back to constructors index](/API_docs/constructors/index.html) + + + +Most frequently visited channels + + + + +### Type: [TopPeerCategory](/API_docs/types/TopPeerCategory.html) + + +### Example: + +``` +$topPeerCategoryChannels = ['_' => 'topPeerCategoryChannels']; +``` diff --git a/docs/API_docs/constructors/topPeerCategoryCorrespondents.md b/docs/API_docs/constructors/topPeerCategoryCorrespondents.md new file mode 100644 index 0000000000..90e0f78e42 --- /dev/null +++ b/docs/API_docs/constructors/topPeerCategoryCorrespondents.md @@ -0,0 +1,24 @@ +--- +title: "topPeerCategoryCorrespondents" +description: "Users we've chatted most frequently with" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: topPeerCategoryCorrespondents +[Back to constructors index](/API_docs/constructors/index.html) + + + +Users we've chatted most frequently with + + + + +### Type: [TopPeerCategory](/API_docs/types/TopPeerCategory.html) + + +### Example: + +``` +$topPeerCategoryCorrespondents = ['_' => 'topPeerCategoryCorrespondents']; +``` diff --git a/docs/API_docs/constructors/topPeerCategoryForwardChats.md b/docs/API_docs/constructors/topPeerCategoryForwardChats.md new file mode 100644 index 0000000000..54ff1cf25d --- /dev/null +++ b/docs/API_docs/constructors/topPeerCategoryForwardChats.md @@ -0,0 +1,24 @@ +--- +title: "topPeerCategoryForwardChats" +description: "Chats to which the users often forwards messages to" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: topPeerCategoryForwardChats +[Back to constructors index](/API_docs/constructors/index.html) + + + +Chats to which the users often forwards messages to + + + + +### Type: [TopPeerCategory](/API_docs/types/TopPeerCategory.html) + + +### Example: + +``` +$topPeerCategoryForwardChats = ['_' => 'topPeerCategoryForwardChats']; +``` diff --git a/docs/API_docs/constructors/topPeerCategoryForwardUsers.md b/docs/API_docs/constructors/topPeerCategoryForwardUsers.md new file mode 100644 index 0000000000..0ec5ed56fc --- /dev/null +++ b/docs/API_docs/constructors/topPeerCategoryForwardUsers.md @@ -0,0 +1,24 @@ +--- +title: "topPeerCategoryForwardUsers" +description: "Users to which the users often forwards messages to" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: topPeerCategoryForwardUsers +[Back to constructors index](/API_docs/constructors/index.html) + + + +Users to which the users often forwards messages to + + + + +### Type: [TopPeerCategory](/API_docs/types/TopPeerCategory.html) + + +### Example: + +``` +$topPeerCategoryForwardUsers = ['_' => 'topPeerCategoryForwardUsers']; +``` diff --git a/docs/API_docs/constructors/topPeerCategoryGroups.md b/docs/API_docs/constructors/topPeerCategoryGroups.md new file mode 100644 index 0000000000..c69809d0cc --- /dev/null +++ b/docs/API_docs/constructors/topPeerCategoryGroups.md @@ -0,0 +1,24 @@ +--- +title: "topPeerCategoryGroups" +description: "Often-opened groups and supergroups" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: topPeerCategoryGroups +[Back to constructors index](/API_docs/constructors/index.html) + + + +Often-opened groups and supergroups + + + + +### Type: [TopPeerCategory](/API_docs/types/TopPeerCategory.html) + + +### Example: + +``` +$topPeerCategoryGroups = ['_' => 'topPeerCategoryGroups']; +``` diff --git a/docs/API_docs/constructors/topPeerCategoryPeers.md b/docs/API_docs/constructors/topPeerCategoryPeers.md new file mode 100644 index 0000000000..422b875663 --- /dev/null +++ b/docs/API_docs/constructors/topPeerCategoryPeers.md @@ -0,0 +1,31 @@ +--- +title: "topPeerCategoryPeers" +description: "Top peer category" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: topPeerCategoryPeers +[Back to constructors index](/API_docs/constructors/index.html) + + + +Top peer category + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|category|[TopPeerCategory](/API_docs/types/TopPeerCategory.html) | Yes|Top peer category of peers| +|count|[int](/API_docs/types/int.html) | Yes|Count of peers| +|peers|Array of [TopPeer](/API_docs/types/TopPeer.html) | Yes|Peers| + + + +### Type: [TopPeerCategoryPeers](/API_docs/types/TopPeerCategoryPeers.html) + + +### Example: + +``` +$topPeerCategoryPeers = ['_' => 'topPeerCategoryPeers', 'category' => TopPeerCategory, 'count' => int, 'peers' => [TopPeer, TopPeer]]; +``` diff --git a/docs/API_docs/constructors/topPeerCategoryPhoneCalls.md b/docs/API_docs/constructors/topPeerCategoryPhoneCalls.md new file mode 100644 index 0000000000..3daa468c59 --- /dev/null +++ b/docs/API_docs/constructors/topPeerCategoryPhoneCalls.md @@ -0,0 +1,24 @@ +--- +title: "topPeerCategoryPhoneCalls" +description: "Most frequently called users" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: topPeerCategoryPhoneCalls +[Back to constructors index](/API_docs/constructors/index.html) + + + +Most frequently called users + + + + +### Type: [TopPeerCategory](/API_docs/types/TopPeerCategory.html) + + +### Example: + +``` +$topPeerCategoryPhoneCalls = ['_' => 'topPeerCategoryPhoneCalls']; +``` diff --git a/docs/API_docs/constructors/true.md b/docs/API_docs/constructors/true.md new file mode 100644 index 0000000000..8cc5e61df5 --- /dev/null +++ b/docs/API_docs/constructors/true.md @@ -0,0 +1,24 @@ +--- +title: "true" +description: "See predefined identifiers." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: true +[Back to constructors index](/API_docs/constructors/index.html) + + + +See [predefined identifiers](https://core.telegram.org/mtproto/TL-formal#predefined-identifiers). + + + + +### Type: [True](/API_docs/types/True.html) + + +### Example: + +``` +$true = ['_' => 'true']; +``` diff --git a/docs/API_docs/constructors/updateAttachMenuBots.md b/docs/API_docs/constructors/updateAttachMenuBots.md new file mode 100644 index 0000000000..3eac53d9c3 --- /dev/null +++ b/docs/API_docs/constructors/updateAttachMenuBots.md @@ -0,0 +1,24 @@ +--- +title: "updateAttachMenuBots" +description: "The list of installed attachment menu entries » has changed, use messages.getAttachMenuBots to fetch the updated list." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateAttachMenuBots +[Back to constructors index](/API_docs/constructors/index.html) + + + +The list of installed [attachment menu entries »](https://core.telegram.org/api/bots/attach) has changed, use [messages.getAttachMenuBots](../methods/messages.getAttachMenuBots.html) to fetch the updated list. + + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateAttachMenuBots = ['_' => 'updateAttachMenuBots']; +``` diff --git a/docs/API_docs/constructors/updateAutoSaveSettings.md b/docs/API_docs/constructors/updateAutoSaveSettings.md new file mode 100644 index 0000000000..75c841e223 --- /dev/null +++ b/docs/API_docs/constructors/updateAutoSaveSettings.md @@ -0,0 +1,24 @@ +--- +title: "updateAutoSaveSettings" +description: "Media autosave settings have changed and must be refetched using account.getAutoSaveSettings." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateAutoSaveSettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +Media autosave settings have changed and must be refetched using [account.getAutoSaveSettings](../methods/account.getAutoSaveSettings.html). + + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateAutoSaveSettings = ['_' => 'updateAutoSaveSettings']; +``` diff --git a/docs/API_docs/constructors/updateBotBusinessConnect.md b/docs/API_docs/constructors/updateBotBusinessConnect.md new file mode 100644 index 0000000000..89806bb12f --- /dev/null +++ b/docs/API_docs/constructors/updateBotBusinessConnect.md @@ -0,0 +1,28 @@ +--- +title: "updateBotBusinessConnect" +description: "updateBotBusinessConnect attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateBotBusinessConnect +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|connection|[BotBusinessConnection](/API_docs/types/BotBusinessConnection.html) | Yes| +|qts|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateBotBusinessConnect = ['_' => 'updateBotBusinessConnect', 'connection' => BotBusinessConnection, 'qts' => int]; +``` diff --git a/docs/API_docs/constructors/updateBotCallbackQuery.md b/docs/API_docs/constructors/updateBotCallbackQuery.md new file mode 100644 index 0000000000..d4956bd73a --- /dev/null +++ b/docs/API_docs/constructors/updateBotCallbackQuery.md @@ -0,0 +1,35 @@ +--- +title: "updateBotCallbackQuery" +description: "A callback button was pressed, and the button data was sent to the bot that created the button" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateBotCallbackQuery +[Back to constructors index](/API_docs/constructors/index.html) + + + +A callback button was pressed, and the button data was sent to the bot that created the button + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|query\_id|[long](/API_docs/types/long.html) | Yes|Query ID| +|user\_id|[long](/API_docs/types/long.html) | Yes|ID of the user that pressed the button| +|peer|[long](/API_docs/types/long.html) | Yes|Chat where the inline keyboard was sent| +|msg\_id|[int](/API_docs/types/int.html) | Yes|Message ID| +|chat\_instance|[long](/API_docs/types/long.html) | Yes|Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games.| +|data|[bytes](/API_docs/types/bytes.html) | Optional|Callback data| +|game\_short\_name|[string](/API_docs/types/string.html) | Optional|Short name of a Game to be returned, serves as the unique identifier for the game| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateBotCallbackQuery = ['_' => 'updateBotCallbackQuery', 'query_id' => long, 'user_id' => long, 'peer' => long, 'msg_id' => int, 'chat_instance' => long, 'data' => 'bytes', 'game_short_name' => 'string']; +``` diff --git a/docs/API_docs/constructors/updateBotChatBoost.md b/docs/API_docs/constructors/updateBotChatBoost.md new file mode 100644 index 0000000000..85b57bc140 --- /dev/null +++ b/docs/API_docs/constructors/updateBotChatBoost.md @@ -0,0 +1,31 @@ +--- +title: "updateBotChatBoost" +description: "A channel boost has changed (bots only)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateBotChatBoost +[Back to constructors index](/API_docs/constructors/index.html) + + + +A [channel boost](https://core.telegram.org/api/boost) has changed (bots only) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|Channel| +|boost|[Boost](/API_docs/types/Boost.html) | Yes|New boost information| +|qts|[int](/API_docs/types/int.html) | Yes|[QTS](https://core.telegram.org/api/updates) event sequence identifier| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateBotChatBoost = ['_' => 'updateBotChatBoost', 'peer' => long, 'boost' => Boost, 'qts' => int]; +``` diff --git a/docs/API_docs/constructors/updateBotChatInviteRequester.md b/docs/API_docs/constructors/updateBotChatInviteRequester.md new file mode 100644 index 0000000000..4d8dfcc9d5 --- /dev/null +++ b/docs/API_docs/constructors/updateBotChatInviteRequester.md @@ -0,0 +1,34 @@ +--- +title: "updateBotChatInviteRequester" +description: "Someone has requested to join a chat or channel (bots only, users will receive an updatePendingJoinRequests, instead)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateBotChatInviteRequester +[Back to constructors index](/API_docs/constructors/index.html) + + + +Someone has requested to join a chat or channel (bots only, users will receive an [updatePendingJoinRequests](../constructors/updatePendingJoinRequests.html), instead) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|The chat or channel in question| +|date|[int](/API_docs/types/int.html) | Yes|When was the [join request »](https://core.telegram.org/api/invites#join-requests) made| +|user\_id|[long](/API_docs/types/long.html) | Yes|The user ID that is asking to join the chat or channel| +|about|[string](/API_docs/types/string.html) | Yes|Bio of the user| +|invite|[ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) | Yes|Chat invite link that was used by the user to send the [join request »](https://core.telegram.org/api/invites#join-requests)| +|qts|[int](/API_docs/types/int.html) | Yes|[QTS](https://core.telegram.org/api/updates) event sequence identifier| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateBotChatInviteRequester = ['_' => 'updateBotChatInviteRequester', 'peer' => long, 'date' => int, 'user_id' => long, 'about' => 'string', 'invite' => ExportedChatInvite, 'qts' => int]; +``` diff --git a/docs/API_docs/constructors/updateBotCommands.md b/docs/API_docs/constructors/updateBotCommands.md new file mode 100644 index 0000000000..44a0eccd9f --- /dev/null +++ b/docs/API_docs/constructors/updateBotCommands.md @@ -0,0 +1,31 @@ +--- +title: "updateBotCommands" +description: "The command set of a certain bot in a certain chat has changed." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateBotCommands +[Back to constructors index](/API_docs/constructors/index.html) + + + +The [command set](https://core.telegram.org/api/bots/commands) of a certain bot in a certain chat has changed. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|The affected chat| +|bot\_id|[long](/API_docs/types/long.html) | Yes|ID of the bot that changed its command set| +|commands|Array of [BotCommand](/API_docs/types/BotCommand.html) | Yes|New bot commands| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateBotCommands = ['_' => 'updateBotCommands', 'peer' => long, 'bot_id' => long, 'commands' => [BotCommand, BotCommand]]; +``` diff --git a/docs/API_docs/constructors/updateBotDeleteBusinessMessage.md b/docs/API_docs/constructors/updateBotDeleteBusinessMessage.md new file mode 100644 index 0000000000..c8a782d722 --- /dev/null +++ b/docs/API_docs/constructors/updateBotDeleteBusinessMessage.md @@ -0,0 +1,30 @@ +--- +title: "updateBotDeleteBusinessMessage" +description: "updateBotDeleteBusinessMessage attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateBotDeleteBusinessMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|connection\_id|[string](/API_docs/types/string.html) | Yes| +|peer|[long](/API_docs/types/long.html) | Yes| +|messages|Array of [int](/API_docs/types/int.html) | Yes| +|qts|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateBotDeleteBusinessMessage = ['_' => 'updateBotDeleteBusinessMessage', 'connection_id' => 'string', 'peer' => long, 'messages' => [int, int], 'qts' => int]; +``` diff --git a/docs/API_docs/constructors/updateBotEditBusinessMessage.md b/docs/API_docs/constructors/updateBotEditBusinessMessage.md new file mode 100644 index 0000000000..a5e38ee977 --- /dev/null +++ b/docs/API_docs/constructors/updateBotEditBusinessMessage.md @@ -0,0 +1,30 @@ +--- +title: "updateBotEditBusinessMessage" +description: "updateBotEditBusinessMessage attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateBotEditBusinessMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|connection\_id|[string](/API_docs/types/string.html) | Yes| +|message|[Message](/API_docs/types/Message.html) | Optional| +|reply\_to\_message|[Message](/API_docs/types/Message.html) | Optional| +|qts|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateBotEditBusinessMessage = ['_' => 'updateBotEditBusinessMessage', 'connection_id' => 'string', 'message' => Message, 'reply_to_message' => Message, 'qts' => int]; +``` diff --git a/docs/API_docs/constructors/updateBotInlineQuery.md b/docs/API_docs/constructors/updateBotInlineQuery.md new file mode 100644 index 0000000000..13852ae9f5 --- /dev/null +++ b/docs/API_docs/constructors/updateBotInlineQuery.md @@ -0,0 +1,34 @@ +--- +title: "updateBotInlineQuery" +description: "An incoming inline query" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateBotInlineQuery +[Back to constructors index](/API_docs/constructors/index.html) + + + +An incoming inline query + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|query\_id|[long](/API_docs/types/long.html) | Yes|Query ID| +|user\_id|[long](/API_docs/types/long.html) | Yes|User that sent the query| +|query|[string](/API_docs/types/string.html) | Yes|Text of query| +|geo|[GeoPoint](/API_docs/types/GeoPoint.html) | Optional|Attached geolocation| +|peer\_type|[InlineQueryPeerType](/API_docs/types/InlineQueryPeerType.html) | Optional|Type of the chat from which the inline query was sent.| +|offset|[string](/API_docs/types/string.html) | Yes|Offset to navigate through results| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateBotInlineQuery = ['_' => 'updateBotInlineQuery', 'query_id' => long, 'user_id' => long, 'query' => 'string', 'geo' => GeoPoint, 'peer_type' => InlineQueryPeerType, 'offset' => 'string']; +``` diff --git a/docs/API_docs/constructors/updateBotInlineSend.md b/docs/API_docs/constructors/updateBotInlineSend.md new file mode 100644 index 0000000000..3915cfea73 --- /dev/null +++ b/docs/API_docs/constructors/updateBotInlineSend.md @@ -0,0 +1,33 @@ +--- +title: "updateBotInlineSend" +description: "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." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateBotInlineSend +[Back to constructors index](/API_docs/constructors/index.html) + + + +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](https://core.telegram.org/bots/inline#collecting-feedback) for details on how to enable these updates for your bot. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|The user that chose the result| +|query|[string](/API_docs/types/string.html) | Yes|The query that was used to obtain the result| +|geo|[GeoPoint](/API_docs/types/GeoPoint.html) | Optional|Optional. Sender location, only for bots that require user location| +|id|[string](/API_docs/types/string.html) | Yes|The unique identifier for the result that was chosen| +|msg\_id|[InputBotInlineMessageID](/API_docs/types/InputBotInlineMessageID.html) | Optional|Identifier of the sent inline message. Available only if there is an inline keyboard attached to the message. Will be also received in callback queries and can be used to edit the message.| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateBotInlineSend = ['_' => 'updateBotInlineSend', 'user_id' => long, 'query' => 'string', 'geo' => GeoPoint, 'id' => 'string', 'msg_id' => InputBotInlineMessageID]; +``` diff --git a/docs/API_docs/constructors/updateBotMenuButton.md b/docs/API_docs/constructors/updateBotMenuButton.md new file mode 100644 index 0000000000..44d6bf5ec4 --- /dev/null +++ b/docs/API_docs/constructors/updateBotMenuButton.md @@ -0,0 +1,30 @@ +--- +title: "updateBotMenuButton" +description: "The menu button behavior for the specified bot has changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateBotMenuButton +[Back to constructors index](/API_docs/constructors/index.html) + + + +The menu button behavior for the specified bot has changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|bot\_id|[long](/API_docs/types/long.html) | Yes|Bot ID| +|button|[BotMenuButton](/API_docs/types/BotMenuButton.html) | Yes|New menu button| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateBotMenuButton = ['_' => 'updateBotMenuButton', 'bot_id' => long, 'button' => BotMenuButton]; +``` diff --git a/docs/API_docs/constructors/updateBotMessageReaction.md b/docs/API_docs/constructors/updateBotMessageReaction.md new file mode 100644 index 0000000000..6d70ebef14 --- /dev/null +++ b/docs/API_docs/constructors/updateBotMessageReaction.md @@ -0,0 +1,35 @@ +--- +title: "updateBotMessageReaction" +description: "Bots only: a user has changed their reactions on a message with public reactions." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateBotMessageReaction +[Back to constructors index](/API_docs/constructors/index.html) + + + +Bots only: a user has changed their reactions on a message with public reactions. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|Peer of the reacted-to message.| +|msg\_id|[int](/API_docs/types/int.html) | Yes|ID of the reacted-to message.| +|date|[int](/API_docs/types/int.html) | Yes|Date of the change.| +|actor|[Peer](/API_docs/types/Peer.html) | Yes|The user that (un)reacted to the message.| +|old\_reactions|Array of [Reaction](/API_docs/types/Reaction.html) | Yes|Old reactions| +|new\_reactions|Array of [Reaction](/API_docs/types/Reaction.html) | Yes|New reactions| +|qts|[int](/API_docs/types/int.html) | Yes|[QTS](https://core.telegram.org/api/updates) event sequence identifier| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateBotMessageReaction = ['_' => 'updateBotMessageReaction', 'peer' => long, 'msg_id' => int, 'date' => int, 'actor' => Peer, 'old_reactions' => [Reaction, Reaction], 'new_reactions' => [Reaction, Reaction], 'qts' => int]; +``` diff --git a/docs/API_docs/constructors/updateBotMessageReactions.md b/docs/API_docs/constructors/updateBotMessageReactions.md new file mode 100644 index 0000000000..815e7e1701 --- /dev/null +++ b/docs/API_docs/constructors/updateBotMessageReactions.md @@ -0,0 +1,33 @@ +--- +title: "updateBotMessageReactions" +description: "Bots only: the number of reactions on a message with anonymous reactions has changed." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateBotMessageReactions +[Back to constructors index](/API_docs/constructors/index.html) + + + +Bots only: the number of reactions on a message with anonymous reactions has changed. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|Peer of the reacted-to message.| +|msg\_id|[int](/API_docs/types/int.html) | Yes|ID of the reacted-to message.| +|date|[int](/API_docs/types/int.html) | Yes|Date of the change.| +|reactions|Array of [ReactionCount](/API_docs/types/ReactionCount.html) | Yes|New reaction counters.| +|qts|[int](/API_docs/types/int.html) | Yes|[QTS](https://core.telegram.org/api/updates) event sequence identifier| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateBotMessageReactions = ['_' => 'updateBotMessageReactions', 'peer' => long, 'msg_id' => int, 'date' => int, 'reactions' => [ReactionCount, ReactionCount], 'qts' => int]; +``` diff --git a/docs/API_docs/constructors/updateBotNewBusinessMessage.md b/docs/API_docs/constructors/updateBotNewBusinessMessage.md new file mode 100644 index 0000000000..a96c294c16 --- /dev/null +++ b/docs/API_docs/constructors/updateBotNewBusinessMessage.md @@ -0,0 +1,30 @@ +--- +title: "updateBotNewBusinessMessage" +description: "updateBotNewBusinessMessage attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateBotNewBusinessMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|connection\_id|[string](/API_docs/types/string.html) | Yes| +|message|[Message](/API_docs/types/Message.html) | Optional| +|reply\_to\_message|[Message](/API_docs/types/Message.html) | Optional| +|qts|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateBotNewBusinessMessage = ['_' => 'updateBotNewBusinessMessage', 'connection_id' => 'string', 'message' => Message, 'reply_to_message' => Message, 'qts' => int]; +``` diff --git a/docs/API_docs/constructors/updateBotPrecheckoutQuery.md b/docs/API_docs/constructors/updateBotPrecheckoutQuery.md new file mode 100644 index 0000000000..22b38ea865 --- /dev/null +++ b/docs/API_docs/constructors/updateBotPrecheckoutQuery.md @@ -0,0 +1,35 @@ +--- +title: "updateBotPrecheckoutQuery" +description: "This object contains information about an incoming pre-checkout query." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateBotPrecheckoutQuery +[Back to constructors index](/API_docs/constructors/index.html) + + + +This object contains information about an incoming pre-checkout query. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|query\_id|[long](/API_docs/types/long.html) | Yes|Unique query identifier| +|user\_id|[long](/API_docs/types/long.html) | Yes|User who sent the query| +|payload|[bytes](/API_docs/types/bytes.html) | Yes|Bot specified invoice payload| +|info|[PaymentRequestedInfo](/API_docs/types/PaymentRequestedInfo.html) | Optional|Order info provided by the user| +|shipping\_option\_id|[string](/API_docs/types/string.html) | Optional|Identifier of the shipping option chosen by the user| +|currency|[string](/API_docs/types/string.html) | Yes|Three-letter ISO 4217 [currency](https://core.telegram.org/bots/payments#supported-currencies) code| +|total\_amount|[long](/API_docs/types/long.html) | Yes|Total 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](https://core.telegram.org/bots/payments/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateBotPrecheckoutQuery = ['_' => 'updateBotPrecheckoutQuery', 'query_id' => long, 'user_id' => long, 'payload' => 'bytes', 'info' => PaymentRequestedInfo, 'shipping_option_id' => 'string', 'currency' => 'string', 'total_amount' => long]; +``` diff --git a/docs/API_docs/constructors/updateBotShippingQuery.md b/docs/API_docs/constructors/updateBotShippingQuery.md new file mode 100644 index 0000000000..dd510985cd --- /dev/null +++ b/docs/API_docs/constructors/updateBotShippingQuery.md @@ -0,0 +1,32 @@ +--- +title: "updateBotShippingQuery" +description: "This object contains information about an incoming shipping query." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateBotShippingQuery +[Back to constructors index](/API_docs/constructors/index.html) + + + +This object contains information about an incoming shipping query. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|query\_id|[long](/API_docs/types/long.html) | Yes|Unique query identifier| +|user\_id|[long](/API_docs/types/long.html) | Yes|User who sent the query| +|payload|[bytes](/API_docs/types/bytes.html) | Yes|Bot specified invoice payload| +|shipping\_address|[PostAddress](/API_docs/types/PostAddress.html) | Yes|User specified shipping address| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateBotShippingQuery = ['_' => 'updateBotShippingQuery', 'query_id' => long, 'user_id' => long, 'payload' => 'bytes', 'shipping_address' => PostAddress]; +``` diff --git a/docs/API_docs/constructors/updateBotStopped.md b/docs/API_docs/constructors/updateBotStopped.md new file mode 100644 index 0000000000..3d8c1c04fa --- /dev/null +++ b/docs/API_docs/constructors/updateBotStopped.md @@ -0,0 +1,32 @@ +--- +title: "updateBotStopped" +description: "A bot was stopped or re-started." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateBotStopped +[Back to constructors index](/API_docs/constructors/index.html) + + + +A bot was stopped or re-started. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|The user ID| +|date|[int](/API_docs/types/int.html) | Yes|When did this action occur| +|stopped|[Bool](/API_docs/types/Bool.html) | Yes|Whether the bot was stopped or started| +|qts|[int](/API_docs/types/int.html) | Yes|New **qts** value, see [updates »](https://core.telegram.org/api/updates) for more info.| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateBotStopped = ['_' => 'updateBotStopped', 'user_id' => long, 'date' => int, 'stopped' => Bool, 'qts' => int]; +``` diff --git a/docs/API_docs/constructors/updateBotWebhookJSON.md b/docs/API_docs/constructors/updateBotWebhookJSON.md new file mode 100644 index 0000000000..dfcd452880 --- /dev/null +++ b/docs/API_docs/constructors/updateBotWebhookJSON.md @@ -0,0 +1,29 @@ +--- +title: "updateBotWebhookJSON" +description: "A new incoming event; for bots only" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateBotWebhookJSON +[Back to constructors index](/API_docs/constructors/index.html) + + + +A new incoming event; for bots only + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|data|[DataJSON](/API_docs/types/DataJSON.html) | Yes|The event| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateBotWebhookJSON = ['_' => 'updateBotWebhookJSON', 'data' => DataJSON]; +``` diff --git a/docs/API_docs/constructors/updateBotWebhookJSONQuery.md b/docs/API_docs/constructors/updateBotWebhookJSONQuery.md new file mode 100644 index 0000000000..07990476a4 --- /dev/null +++ b/docs/API_docs/constructors/updateBotWebhookJSONQuery.md @@ -0,0 +1,31 @@ +--- +title: "updateBotWebhookJSONQuery" +description: "A new incoming query; for bots only" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateBotWebhookJSONQuery +[Back to constructors index](/API_docs/constructors/index.html) + + + +A new incoming query; for bots only + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|query\_id|[long](/API_docs/types/long.html) | Yes|Query identifier| +|data|[DataJSON](/API_docs/types/DataJSON.html) | Yes|Query data| +|timeout|[int](/API_docs/types/int.html) | Yes|Query timeout| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateBotWebhookJSONQuery = ['_' => 'updateBotWebhookJSONQuery', 'query_id' => long, 'data' => DataJSON, 'timeout' => int]; +``` diff --git a/docs/API_docs/constructors/updateChannel.md b/docs/API_docs/constructors/updateChannel.md new file mode 100644 index 0000000000..7a0079a4ab --- /dev/null +++ b/docs/API_docs/constructors/updateChannel.md @@ -0,0 +1,29 @@ +--- +title: "updateChannel" +description: "A new channel or supergroup is available, or info about an existing channel has changed and must be refeteched." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChannel +[Back to constructors index](/API_docs/constructors/index.html) + + + +A new channel or supergroup is available, or info about an existing channel has changed and must be refeteched. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel\_id|[long](/API_docs/types/long.html) | Yes|Channel ID| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChannel = ['_' => 'updateChannel', 'channel_id' => long]; +``` diff --git a/docs/API_docs/constructors/updateChannelAvailableMessages.md b/docs/API_docs/constructors/updateChannelAvailableMessages.md new file mode 100644 index 0000000000..d6460a6fd4 --- /dev/null +++ b/docs/API_docs/constructors/updateChannelAvailableMessages.md @@ -0,0 +1,30 @@ +--- +title: "updateChannelAvailableMessages" +description: "The history of a channel/supergroup was hidden." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChannelAvailableMessages +[Back to constructors index](/API_docs/constructors/index.html) + + + +The history of a [channel/supergroup](https://core.telegram.org/api/channel) was hidden. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel\_id|[long](/API_docs/types/long.html) | Yes|Channel/supergroup ID| +|available\_min\_id|[int](/API_docs/types/int.html) | Yes|Identifier of a maximum unavailable message in a channel due to hidden history.| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChannelAvailableMessages = ['_' => 'updateChannelAvailableMessages', 'channel_id' => long, 'available_min_id' => int]; +``` diff --git a/docs/API_docs/constructors/updateChannelMessageForwards.md b/docs/API_docs/constructors/updateChannelMessageForwards.md new file mode 100644 index 0000000000..3ee9e872ff --- /dev/null +++ b/docs/API_docs/constructors/updateChannelMessageForwards.md @@ -0,0 +1,31 @@ +--- +title: "updateChannelMessageForwards" +description: "The forward counter of a message in a channel has changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChannelMessageForwards +[Back to constructors index](/API_docs/constructors/index.html) + + + +The forward counter of a message in a channel has changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel\_id|[long](/API_docs/types/long.html) | Yes|Channel ID| +|id|[int](/API_docs/types/int.html) | Yes|ID of the message| +|forwards|[int](/API_docs/types/int.html) | Yes|New forward counter| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChannelMessageForwards = ['_' => 'updateChannelMessageForwards', 'channel_id' => long, 'id' => int, 'forwards' => int]; +``` diff --git a/docs/API_docs/constructors/updateChannelMessageViews.md b/docs/API_docs/constructors/updateChannelMessageViews.md new file mode 100644 index 0000000000..82955d3000 --- /dev/null +++ b/docs/API_docs/constructors/updateChannelMessageViews.md @@ -0,0 +1,31 @@ +--- +title: "updateChannelMessageViews" +description: "The view counter of a message in a channel has changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChannelMessageViews +[Back to constructors index](/API_docs/constructors/index.html) + + + +The view counter of a message in a channel has changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel\_id|[long](/API_docs/types/long.html) | Yes|Channel ID| +|id|[int](/API_docs/types/int.html) | Yes|ID of the message| +|views|[int](/API_docs/types/int.html) | Yes|New view counter| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChannelMessageViews = ['_' => 'updateChannelMessageViews', 'channel_id' => long, 'id' => int, 'views' => int]; +``` diff --git a/docs/API_docs/constructors/updateChannelParticipant.md b/docs/API_docs/constructors/updateChannelParticipant.md new file mode 100644 index 0000000000..cee897e5a6 --- /dev/null +++ b/docs/API_docs/constructors/updateChannelParticipant.md @@ -0,0 +1,37 @@ +--- +title: "updateChannelParticipant" +description: "A participant has left, joined, was banned or admined in a channel or supergroup." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChannelParticipant +[Back to constructors index](/API_docs/constructors/index.html) + + + +A participant has left, joined, was banned or admined in a [channel or supergroup](https://core.telegram.org/api/channel). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|via\_chatlist|[Bool](/API_docs/types/Bool.html) | Optional|Whether the participant joined using a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links).| +|channel\_id|[long](/API_docs/types/long.html) | Yes|Channel ID| +|date|[int](/API_docs/types/int.html) | Yes|Date of the event| +|actor\_id|[long](/API_docs/types/long.html) | Yes|User that triggered the change (inviter, admin that kicked the user, or the even the **user\_id** itself)| +|user\_id|[long](/API_docs/types/long.html) | Yes|User that was affected by the change| +|prev\_participant|[ChannelParticipant](/API_docs/types/ChannelParticipant.html) | Optional|Previous participant status| +|new\_participant|[ChannelParticipant](/API_docs/types/ChannelParticipant.html) | Optional|New participant status| +|invite|[ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) | Optional|Chat invite used to join the [channel/supergroup](https://core.telegram.org/api/channel)| +|qts|[int](/API_docs/types/int.html) | Yes|New **qts** value, see [updates »](https://core.telegram.org/api/updates) for more info.| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChannelParticipant = ['_' => 'updateChannelParticipant', 'via_chatlist' => Bool, 'channel_id' => long, 'date' => int, 'actor_id' => long, 'user_id' => long, 'prev_participant' => ChannelParticipant, 'new_participant' => ChannelParticipant, 'invite' => ExportedChatInvite, 'qts' => int]; +``` diff --git a/docs/API_docs/constructors/updateChannelPinnedTopic.md b/docs/API_docs/constructors/updateChannelPinnedTopic.md new file mode 100644 index 0000000000..57d8465fb2 --- /dev/null +++ b/docs/API_docs/constructors/updateChannelPinnedTopic.md @@ -0,0 +1,31 @@ +--- +title: "updateChannelPinnedTopic" +description: "A forum topic » was pinned or unpinned." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChannelPinnedTopic +[Back to constructors index](/API_docs/constructors/index.html) + + + +A [forum topic »](https://core.telegram.org/api/forum#forum-topics) was pinned or unpinned. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|pinned|[Bool](/API_docs/types/Bool.html) | Optional|Whether the topic was pinned or unpinned| +|channel\_id|[long](/API_docs/types/long.html) | Yes|The forum ID| +|topic\_id|[int](/API_docs/types/int.html) | Yes|The topic ID| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChannelPinnedTopic = ['_' => 'updateChannelPinnedTopic', 'pinned' => Bool, 'channel_id' => long, 'topic_id' => int]; +``` diff --git a/docs/API_docs/constructors/updateChannelPinnedTopics.md b/docs/API_docs/constructors/updateChannelPinnedTopics.md new file mode 100644 index 0000000000..d9e9bd036e --- /dev/null +++ b/docs/API_docs/constructors/updateChannelPinnedTopics.md @@ -0,0 +1,30 @@ +--- +title: "updateChannelPinnedTopics" +description: "The pinned topics of a forum have changed." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChannelPinnedTopics +[Back to constructors index](/API_docs/constructors/index.html) + + + +The [pinned topics](https://core.telegram.org/api/forum#forum-topics) of a forum have changed. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel\_id|[long](/API_docs/types/long.html) | Yes|Forum ID.| +|order|Array of [int](/API_docs/types/int.html) | Optional|Ordered list containing the IDs of all pinned topics.| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChannelPinnedTopics = ['_' => 'updateChannelPinnedTopics', 'channel_id' => long, 'order' => [int, int]]; +``` diff --git a/docs/API_docs/constructors/updateChannelReadMessagesContents.md b/docs/API_docs/constructors/updateChannelReadMessagesContents.md new file mode 100644 index 0000000000..f8f5fc4e42 --- /dev/null +++ b/docs/API_docs/constructors/updateChannelReadMessagesContents.md @@ -0,0 +1,31 @@ +--- +title: "updateChannelReadMessagesContents" +description: "The specified channel/supergroup messages were read" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChannelReadMessagesContents +[Back to constructors index](/API_docs/constructors/index.html) + + + +The specified [channel/supergroup](https://core.telegram.org/api/channel) messages were read + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel\_id|[long](/API_docs/types/long.html) | Yes|[Channel/supergroup](https://core.telegram.org/api/channel) ID| +|top\_msg\_id|[int](/API_docs/types/int.html) | Optional|[Forum topic ID](https://core.telegram.org/api/forum#forum-topics).| +|messages|Array of [int](/API_docs/types/int.html) | Yes|IDs of messages that were read| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChannelReadMessagesContents = ['_' => 'updateChannelReadMessagesContents', 'channel_id' => long, 'top_msg_id' => int, 'messages' => [int, int]]; +``` diff --git a/docs/API_docs/constructors/updateChannelTooLong.md b/docs/API_docs/constructors/updateChannelTooLong.md new file mode 100644 index 0000000000..4a3f15c672 --- /dev/null +++ b/docs/API_docs/constructors/updateChannelTooLong.md @@ -0,0 +1,31 @@ +--- +title: "updateChannelTooLong" +description: "There are new updates in the specified channel, the client must fetch them." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChannelTooLong +[Back to constructors index](/API_docs/constructors/index.html) + + + +There are new updates in the specified channel, the client must fetch them. +If the difference is too long or if the channel isn't currently in the states, start fetching from the specified pts. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel\_id|[long](/API_docs/types/long.html) | Yes|The channel| +|pts|[int](/API_docs/types/int.html) | Optional|The [PTS](https://core.telegram.org/api/updates).| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChannelTooLong = ['_' => 'updateChannelTooLong', 'channel_id' => long, 'pts' => int]; +``` diff --git a/docs/API_docs/constructors/updateChannelUserTyping.md b/docs/API_docs/constructors/updateChannelUserTyping.md new file mode 100644 index 0000000000..03aafb363a --- /dev/null +++ b/docs/API_docs/constructors/updateChannelUserTyping.md @@ -0,0 +1,32 @@ +--- +title: "updateChannelUserTyping" +description: "A user is typing in a supergroup, channel or message thread" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChannelUserTyping +[Back to constructors index](/API_docs/constructors/index.html) + + + +A user is typing in a [supergroup, channel](https://core.telegram.org/api/channel) or [message thread](https://core.telegram.org/api/threads) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel\_id|[long](/API_docs/types/long.html) | Yes|Channel ID| +|top\_msg\_id|[int](/API_docs/types/int.html) | Optional|[Thread ID](https://core.telegram.org/api/threads)| +|from\_id|[Peer](/API_docs/types/Peer.html) | Yes|The peer that is typing| +|action|[SendMessageAction](/API_docs/types/SendMessageAction.html) | Yes|Whether the user is typing, sending a media or doing something else| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChannelUserTyping = ['_' => 'updateChannelUserTyping', 'channel_id' => long, 'top_msg_id' => int, 'from_id' => Peer, 'action' => SendMessageAction]; +``` diff --git a/docs/API_docs/constructors/updateChannelViewForumAsMessages.md b/docs/API_docs/constructors/updateChannelViewForumAsMessages.md new file mode 100644 index 0000000000..86c9100f78 --- /dev/null +++ b/docs/API_docs/constructors/updateChannelViewForumAsMessages.md @@ -0,0 +1,31 @@ +--- +title: "updateChannelViewForumAsMessages" +description: "Users may also choose to display messages from all topics as if they were sent to a normal group, using a 'View as messages' setting in the local client." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChannelViewForumAsMessages +[Back to constructors index](/API_docs/constructors/index.html) + + + +Users may also choose to display messages from all topics as if they were sent to a normal group, using a "View as messages" setting in the local client. +This setting only affects the current account, and is synced to other logged in sessions using the [channels.toggleViewForumAsMessages](../methods/channels.toggleViewForumAsMessages.html) method; invoking this method will update the value of the `view_forum_as_messages` flag of [channelFull](../constructors/channelFull.html) or [dialog](../constructors/dialog.html) and emit an [updateChannelViewForumAsMessages](../constructors/updateChannelViewForumAsMessages.html). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel\_id|[long](/API_docs/types/long.html) | Yes|The forum ID| +|enabled|[Bool](/API_docs/types/Bool.html) | Yes|The new value of the toggle.| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChannelViewForumAsMessages = ['_' => 'updateChannelViewForumAsMessages', 'channel_id' => long, 'enabled' => Bool]; +``` diff --git a/docs/API_docs/constructors/updateChannelWebPage.md b/docs/API_docs/constructors/updateChannelWebPage.md new file mode 100644 index 0000000000..1dccfd9f96 --- /dev/null +++ b/docs/API_docs/constructors/updateChannelWebPage.md @@ -0,0 +1,32 @@ +--- +title: "updateChannelWebPage" +description: "A webpage preview of a link in a channel/supergroup message was generated" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChannelWebPage +[Back to constructors index](/API_docs/constructors/index.html) + + + +A webpage preview of a link in a [channel/supergroup](https://core.telegram.org/api/channel) message was generated + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel\_id|[long](/API_docs/types/long.html) | Yes|[Channel/supergroup](https://core.telegram.org/api/channel) ID| +|webpage|[WebPage](/API_docs/types/WebPage.html) | Optional|Generated webpage preview| +|pts|[int](/API_docs/types/int.html) | Yes|[Event count after generation](https://core.telegram.org/api/updates)| +|pts\_count|[int](/API_docs/types/int.html) | Yes|[Number of events that were generated](https://core.telegram.org/api/updates)| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChannelWebPage = ['_' => 'updateChannelWebPage', 'channel_id' => long, 'webpage' => WebPage, 'pts' => int, 'pts_count' => int]; +``` diff --git a/docs/API_docs/constructors/updateChat.md b/docs/API_docs/constructors/updateChat.md new file mode 100644 index 0000000000..86b42479df --- /dev/null +++ b/docs/API_docs/constructors/updateChat.md @@ -0,0 +1,29 @@ +--- +title: "updateChat" +description: "A new chat is available" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChat +[Back to constructors index](/API_docs/constructors/index.html) + + + +A new chat is available + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chat\_id|[long](/API_docs/types/long.html) | Yes|Chat ID| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChat = ['_' => 'updateChat', 'chat_id' => long]; +``` diff --git a/docs/API_docs/constructors/updateChatDefaultBannedRights.md b/docs/API_docs/constructors/updateChatDefaultBannedRights.md new file mode 100644 index 0000000000..1296b5a28a --- /dev/null +++ b/docs/API_docs/constructors/updateChatDefaultBannedRights.md @@ -0,0 +1,31 @@ +--- +title: "updateChatDefaultBannedRights" +description: "Default banned rights in a normal chat were updated" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChatDefaultBannedRights +[Back to constructors index](/API_docs/constructors/index.html) + + + +Default banned rights in a [normal chat](https://core.telegram.org/api/channel) were updated + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|The chat| +|default\_banned\_rights|[ChatBannedRights](/API_docs/types/ChatBannedRights.html) | Yes|New default banned rights| +|version|[int](/API_docs/types/int.html) | Yes|Version| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChatDefaultBannedRights = ['_' => 'updateChatDefaultBannedRights', 'peer' => long, 'default_banned_rights' => ChatBannedRights, 'version' => int]; +``` diff --git a/docs/API_docs/constructors/updateChatParticipant.md b/docs/API_docs/constructors/updateChatParticipant.md new file mode 100644 index 0000000000..a5d32b7e97 --- /dev/null +++ b/docs/API_docs/constructors/updateChatParticipant.md @@ -0,0 +1,36 @@ +--- +title: "updateChatParticipant" +description: "A user has joined or left a specific chat" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChatParticipant +[Back to constructors index](/API_docs/constructors/index.html) + + + +A user has joined or left a specific chat + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chat\_id|[long](/API_docs/types/long.html) | Yes|[Chat](https://core.telegram.org/api/channel) ID| +|date|[int](/API_docs/types/int.html) | Yes|When did this event occur| +|actor\_id|[long](/API_docs/types/long.html) | Yes|User that triggered the change (inviter, admin that kicked the user, or the even the **user\_id** itself)| +|user\_id|[long](/API_docs/types/long.html) | Yes|User that was affected by the change| +|prev\_participant|[ChatParticipant](/API_docs/types/ChatParticipant.html) | Optional|Previous participant info (empty if this participant just joined)| +|new\_participant|[ChatParticipant](/API_docs/types/ChatParticipant.html) | Optional|New participant info (empty if this participant just left)| +|invite|[ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) | Optional|The invite that was used to join the group| +|qts|[int](/API_docs/types/int.html) | Yes|New **qts** value, see [updates »](https://core.telegram.org/api/updates) for more info.| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChatParticipant = ['_' => 'updateChatParticipant', 'chat_id' => long, 'date' => int, 'actor_id' => long, 'user_id' => long, 'prev_participant' => ChatParticipant, 'new_participant' => ChatParticipant, 'invite' => ExportedChatInvite, 'qts' => int]; +``` diff --git a/docs/API_docs/constructors/updateChatParticipantAdd.md b/docs/API_docs/constructors/updateChatParticipantAdd.md new file mode 100644 index 0000000000..72dc65d177 --- /dev/null +++ b/docs/API_docs/constructors/updateChatParticipantAdd.md @@ -0,0 +1,33 @@ +--- +title: "updateChatParticipantAdd" +description: "New group member." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChatParticipantAdd +[Back to constructors index](/API_docs/constructors/index.html) + + + +New group member. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chat\_id|[long](/API_docs/types/long.html) | Yes|Group ID| +|user\_id|[long](/API_docs/types/long.html) | Yes|ID of the new member| +|inviter\_id|[long](/API_docs/types/long.html) | Yes|ID of the user, who added member to the group| +|date|[int](/API_docs/types/int.html) | Yes|When was the participant added| +|version|[int](/API_docs/types/int.html) | Yes|Chat version number| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChatParticipantAdd = ['_' => 'updateChatParticipantAdd', 'chat_id' => long, 'user_id' => long, 'inviter_id' => long, 'date' => int, 'version' => int]; +``` diff --git a/docs/API_docs/constructors/updateChatParticipantAdmin.md b/docs/API_docs/constructors/updateChatParticipantAdmin.md new file mode 100644 index 0000000000..56f7cf7d06 --- /dev/null +++ b/docs/API_docs/constructors/updateChatParticipantAdmin.md @@ -0,0 +1,32 @@ +--- +title: "updateChatParticipantAdmin" +description: "Admin permissions of a user in a basic group were changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChatParticipantAdmin +[Back to constructors index](/API_docs/constructors/index.html) + + + +Admin permissions of a user in a [basic group](https://core.telegram.org/api/channel#basic-groups) were changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chat\_id|[long](/API_docs/types/long.html) | Yes|Chat ID| +|user\_id|[long](/API_docs/types/long.html) | Yes|ID of the (de)admined user| +|is\_admin|[Bool](/API_docs/types/Bool.html) | Yes|Whether the user was rendered admin| +|version|[int](/API_docs/types/int.html) | Yes|Used in basic groups to reorder updates and make sure that all of them was received.| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChatParticipantAdmin = ['_' => 'updateChatParticipantAdmin', 'chat_id' => long, 'user_id' => long, 'is_admin' => Bool, 'version' => int]; +``` diff --git a/docs/API_docs/constructors/updateChatParticipantDelete.md b/docs/API_docs/constructors/updateChatParticipantDelete.md new file mode 100644 index 0000000000..6072a06316 --- /dev/null +++ b/docs/API_docs/constructors/updateChatParticipantDelete.md @@ -0,0 +1,31 @@ +--- +title: "updateChatParticipantDelete" +description: "A member has left the group." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChatParticipantDelete +[Back to constructors index](/API_docs/constructors/index.html) + + + +A member has left the group. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chat\_id|[long](/API_docs/types/long.html) | Yes|Group ID| +|user\_id|[long](/API_docs/types/long.html) | Yes|ID of the user| +|version|[int](/API_docs/types/int.html) | Yes|Used in basic groups to reorder updates and make sure that all of them was received.| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChatParticipantDelete = ['_' => 'updateChatParticipantDelete', 'chat_id' => long, 'user_id' => long, 'version' => int]; +``` diff --git a/docs/API_docs/constructors/updateChatParticipants.md b/docs/API_docs/constructors/updateChatParticipants.md new file mode 100644 index 0000000000..903adae909 --- /dev/null +++ b/docs/API_docs/constructors/updateChatParticipants.md @@ -0,0 +1,29 @@ +--- +title: "updateChatParticipants" +description: "Composition of chat participants changed." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChatParticipants +[Back to constructors index](/API_docs/constructors/index.html) + + + +Composition of chat participants changed. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|participants|[ChatParticipants](/API_docs/types/ChatParticipants.html) | Yes|Updated chat participants| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChatParticipants = ['_' => 'updateChatParticipants', 'participants' => ChatParticipants]; +``` diff --git a/docs/API_docs/constructors/updateChatUserTyping.md b/docs/API_docs/constructors/updateChatUserTyping.md new file mode 100644 index 0000000000..f00040eea2 --- /dev/null +++ b/docs/API_docs/constructors/updateChatUserTyping.md @@ -0,0 +1,31 @@ +--- +title: "updateChatUserTyping" +description: "The user is preparing a message in a group; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateChatUserTyping +[Back to constructors index](/API_docs/constructors/index.html) + + + +The user is preparing a message in a group; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chat\_id|[long](/API_docs/types/long.html) | Yes|Group id| +|from\_id|[Peer](/API_docs/types/Peer.html) | Yes|Peer that started typing (can be the chat itself, in case of anonymous admins).| +|action|[SendMessageAction](/API_docs/types/SendMessageAction.html) | Yes|Type of action| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateChatUserTyping = ['_' => 'updateChatUserTyping', 'chat_id' => long, 'from_id' => Peer, 'action' => SendMessageAction]; +``` diff --git a/docs/API_docs/constructors/updateConfig.md b/docs/API_docs/constructors/updateConfig.md new file mode 100644 index 0000000000..8b9128d2dd --- /dev/null +++ b/docs/API_docs/constructors/updateConfig.md @@ -0,0 +1,24 @@ +--- +title: "updateConfig" +description: "The server-side configuration has changed; the client should re-fetch the config using help.getConfig" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateConfig +[Back to constructors index](/API_docs/constructors/index.html) + + + +The server-side configuration has changed; the client should re-fetch the config using [help.getConfig](../methods/help.getConfig.html) + + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateConfig = ['_' => 'updateConfig']; +``` diff --git a/docs/API_docs/constructors/updateContactsReset.md b/docs/API_docs/constructors/updateContactsReset.md new file mode 100644 index 0000000000..f839ca7f3f --- /dev/null +++ b/docs/API_docs/constructors/updateContactsReset.md @@ -0,0 +1,24 @@ +--- +title: "updateContactsReset" +description: "All contacts were deleted" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateContactsReset +[Back to constructors index](/API_docs/constructors/index.html) + + + +All contacts were deleted + + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateContactsReset = ['_' => 'updateContactsReset']; +``` diff --git a/docs/API_docs/constructors/updateDcOptions.md b/docs/API_docs/constructors/updateDcOptions.md new file mode 100644 index 0000000000..0809effb52 --- /dev/null +++ b/docs/API_docs/constructors/updateDcOptions.md @@ -0,0 +1,29 @@ +--- +title: "updateDcOptions" +description: "Changes in the data center configuration options." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateDcOptions +[Back to constructors index](/API_docs/constructors/index.html) + + + +Changes in the data center configuration options. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|dc\_options|Array of [DcOption](/API_docs/types/DcOption.html) | Yes|New connection options| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateDcOptions = ['_' => 'updateDcOptions', 'dc_options' => [DcOption, DcOption]]; +``` diff --git a/docs/API_docs/constructors/updateDeleteChannelMessages.md b/docs/API_docs/constructors/updateDeleteChannelMessages.md new file mode 100644 index 0000000000..19844fc659 --- /dev/null +++ b/docs/API_docs/constructors/updateDeleteChannelMessages.md @@ -0,0 +1,32 @@ +--- +title: "updateDeleteChannelMessages" +description: "Some messages in a supergroup/channel were deleted" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateDeleteChannelMessages +[Back to constructors index](/API_docs/constructors/index.html) + + + +Some messages in a [supergroup/channel](https://core.telegram.org/api/channel) were deleted + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel\_id|[long](/API_docs/types/long.html) | Yes|Channel ID| +|messages|Array of [int](/API_docs/types/int.html) | Yes|IDs of messages that were deleted| +|pts|[int](/API_docs/types/int.html) | Yes|[Event count after generation](https://core.telegram.org/api/updates)| +|pts\_count|[int](/API_docs/types/int.html) | Yes|[Number of events that were generated](https://core.telegram.org/api/updates)| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateDeleteChannelMessages = ['_' => 'updateDeleteChannelMessages', 'channel_id' => long, 'messages' => [int, int], 'pts' => int, 'pts_count' => int]; +``` diff --git a/docs/API_docs/constructors/updateDeleteMessages.md b/docs/API_docs/constructors/updateDeleteMessages.md new file mode 100644 index 0000000000..7661ce18cd --- /dev/null +++ b/docs/API_docs/constructors/updateDeleteMessages.md @@ -0,0 +1,31 @@ +--- +title: "updateDeleteMessages" +description: "Messages were deleted." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateDeleteMessages +[Back to constructors index](/API_docs/constructors/index.html) + + + +Messages were deleted. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|messages|Array of [int](/API_docs/types/int.html) | Yes|List of identifiers of deleted messages| +|pts|[int](/API_docs/types/int.html) | Yes|New quality of actions in a message box| +|pts\_count|[int](/API_docs/types/int.html) | Yes|Number of generated [events](https://core.telegram.org/api/updates)| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateDeleteMessages = ['_' => 'updateDeleteMessages', 'messages' => [int, int], 'pts' => int, 'pts_count' => int]; +``` diff --git a/docs/API_docs/constructors/updateDeleteQuickReply.md b/docs/API_docs/constructors/updateDeleteQuickReply.md new file mode 100644 index 0000000000..a2a0b327aa --- /dev/null +++ b/docs/API_docs/constructors/updateDeleteQuickReply.md @@ -0,0 +1,27 @@ +--- +title: "updateDeleteQuickReply" +description: "updateDeleteQuickReply attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateDeleteQuickReply +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|shortcut\_id|[int](/API_docs/types/int.html) | Yes| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateDeleteQuickReply = ['_' => 'updateDeleteQuickReply', 'shortcut_id' => int]; +``` diff --git a/docs/API_docs/constructors/updateDeleteQuickReplyMessages.md b/docs/API_docs/constructors/updateDeleteQuickReplyMessages.md new file mode 100644 index 0000000000..2233646a79 --- /dev/null +++ b/docs/API_docs/constructors/updateDeleteQuickReplyMessages.md @@ -0,0 +1,28 @@ +--- +title: "updateDeleteQuickReplyMessages" +description: "updateDeleteQuickReplyMessages attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateDeleteQuickReplyMessages +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|shortcut\_id|[int](/API_docs/types/int.html) | Yes| +|messages|Array of [int](/API_docs/types/int.html) | Yes| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateDeleteQuickReplyMessages = ['_' => 'updateDeleteQuickReplyMessages', 'shortcut_id' => int, 'messages' => [int, int]]; +``` diff --git a/docs/API_docs/constructors/updateDeleteScheduledMessages.md b/docs/API_docs/constructors/updateDeleteScheduledMessages.md new file mode 100644 index 0000000000..3bd9ab8ca5 --- /dev/null +++ b/docs/API_docs/constructors/updateDeleteScheduledMessages.md @@ -0,0 +1,30 @@ +--- +title: "updateDeleteScheduledMessages" +description: "Some scheduled messages were deleted from the schedule queue of a chat" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateDeleteScheduledMessages +[Back to constructors index](/API_docs/constructors/index.html) + + + +Some [scheduled messages](https://core.telegram.org/api/scheduled-messages) were deleted from the schedule queue of a chat + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|Peer| +|messages|Array of [int](/API_docs/types/int.html) | Yes|Deleted scheduled messages| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateDeleteScheduledMessages = ['_' => 'updateDeleteScheduledMessages', 'peer' => long, 'messages' => [int, int]]; +``` diff --git a/docs/API_docs/constructors/updateDialogFilter.md b/docs/API_docs/constructors/updateDialogFilter.md new file mode 100644 index 0000000000..ec40b4bc6f --- /dev/null +++ b/docs/API_docs/constructors/updateDialogFilter.md @@ -0,0 +1,30 @@ +--- +title: "updateDialogFilter" +description: "A new folder was added" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateDialogFilter +[Back to constructors index](/API_docs/constructors/index.html) + + + +A new [folder](https://core.telegram.org/api/folders) was added + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[int](/API_docs/types/int.html) | Yes|[Folder](https://core.telegram.org/api/folders) ID| +|filter|[DialogFilter](/API_docs/types/DialogFilter.html) | Optional|[Folder](https://core.telegram.org/api/folders) info| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateDialogFilter = ['_' => 'updateDialogFilter', 'id' => int, 'filter' => DialogFilter]; +``` diff --git a/docs/API_docs/constructors/updateDialogFilterOrder.md b/docs/API_docs/constructors/updateDialogFilterOrder.md new file mode 100644 index 0000000000..ab8a1b80df --- /dev/null +++ b/docs/API_docs/constructors/updateDialogFilterOrder.md @@ -0,0 +1,29 @@ +--- +title: "updateDialogFilterOrder" +description: "New folder order" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateDialogFilterOrder +[Back to constructors index](/API_docs/constructors/index.html) + + + +New [folder](https://core.telegram.org/api/folders) order + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|order|Array of [int](/API_docs/types/int.html) | Yes|Ordered [folder IDs](https://core.telegram.org/api/folders)| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateDialogFilterOrder = ['_' => 'updateDialogFilterOrder', 'order' => [int, int]]; +``` diff --git a/docs/API_docs/constructors/updateDialogFilters.md b/docs/API_docs/constructors/updateDialogFilters.md new file mode 100644 index 0000000000..bd9fbeb9e0 --- /dev/null +++ b/docs/API_docs/constructors/updateDialogFilters.md @@ -0,0 +1,24 @@ +--- +title: "updateDialogFilters" +description: "Clients should update folder info" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateDialogFilters +[Back to constructors index](/API_docs/constructors/index.html) + + + +Clients should update [folder](https://core.telegram.org/api/folders) info + + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateDialogFilters = ['_' => 'updateDialogFilters']; +``` diff --git a/docs/API_docs/constructors/updateDialogPinned.md b/docs/API_docs/constructors/updateDialogPinned.md new file mode 100644 index 0000000000..6f6cfa6794 --- /dev/null +++ b/docs/API_docs/constructors/updateDialogPinned.md @@ -0,0 +1,31 @@ +--- +title: "updateDialogPinned" +description: "A dialog was pinned/unpinned" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateDialogPinned +[Back to constructors index](/API_docs/constructors/index.html) + + + +A dialog was pinned/unpinned + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|pinned|[Bool](/API_docs/types/Bool.html) | Optional|Whether the dialog was pinned| +|folder\_id|[int](/API_docs/types/int.html) | Optional|[Peer folder ID, for more info click here](https://core.telegram.org/api/folders#peer-folders)| +|peer|[DialogPeer](/API_docs/types/DialogPeer.html) | Yes|The dialog| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateDialogPinned = ['_' => 'updateDialogPinned', 'pinned' => Bool, 'folder_id' => int, 'peer' => DialogPeer]; +``` diff --git a/docs/API_docs/constructors/updateDialogUnreadMark.md b/docs/API_docs/constructors/updateDialogUnreadMark.md new file mode 100644 index 0000000000..4c7d4e8ea8 --- /dev/null +++ b/docs/API_docs/constructors/updateDialogUnreadMark.md @@ -0,0 +1,30 @@ +--- +title: "updateDialogUnreadMark" +description: "The manual unread mark of a chat was changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateDialogUnreadMark +[Back to constructors index](/API_docs/constructors/index.html) + + + +The manual unread mark of a chat was changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|unread|[Bool](/API_docs/types/Bool.html) | Optional|Was the chat marked or unmarked as read| +|peer|[DialogPeer](/API_docs/types/DialogPeer.html) | Yes|The dialog| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateDialogUnreadMark = ['_' => 'updateDialogUnreadMark', 'unread' => Bool, 'peer' => DialogPeer]; +``` diff --git a/docs/API_docs/constructors/updateDraftMessage.md b/docs/API_docs/constructors/updateDraftMessage.md new file mode 100644 index 0000000000..2e933fba32 --- /dev/null +++ b/docs/API_docs/constructors/updateDraftMessage.md @@ -0,0 +1,31 @@ +--- +title: "updateDraftMessage" +description: "Notifies a change of a message draft." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateDraftMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Notifies a change of a message [draft](https://core.telegram.org/api/drafts). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|The peer to which the draft is associated| +|top\_msg\_id|[int](/API_docs/types/int.html) | Optional|ID of the [forum topic](https://core.telegram.org/api/forum#forum-topics) to which the draft is associated| +|draft|[DraftMessage](/API_docs/types/DraftMessage.html) | Optional|The draft| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateDraftMessage = ['_' => 'updateDraftMessage', 'peer' => long, 'top_msg_id' => int, 'draft' => DraftMessage]; +``` diff --git a/docs/API_docs/constructors/updateEditChannelMessage.md b/docs/API_docs/constructors/updateEditChannelMessage.md new file mode 100644 index 0000000000..bfc0d43c80 --- /dev/null +++ b/docs/API_docs/constructors/updateEditChannelMessage.md @@ -0,0 +1,31 @@ +--- +title: "updateEditChannelMessage" +description: "A message was edited in a channel/supergroup" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateEditChannelMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +A message was edited in a [channel/supergroup](https://core.telegram.org/api/channel) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|message|[Message](/API_docs/types/Message.html) | Optional|The new message| +|pts|[int](/API_docs/types/int.html) | Yes|[Event count after generation](https://core.telegram.org/api/updates)| +|pts\_count|[int](/API_docs/types/int.html) | Yes|[Number of events that were generated](https://core.telegram.org/api/updates)| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateEditChannelMessage = ['_' => 'updateEditChannelMessage', 'message' => Message, 'pts' => int, 'pts_count' => int]; +``` diff --git a/docs/API_docs/constructors/updateEditMessage.md b/docs/API_docs/constructors/updateEditMessage.md new file mode 100644 index 0000000000..4ffb817772 --- /dev/null +++ b/docs/API_docs/constructors/updateEditMessage.md @@ -0,0 +1,31 @@ +--- +title: "updateEditMessage" +description: "A message was edited" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateEditMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +A message was edited + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|message|[Message](/API_docs/types/Message.html) | Optional|The new edited message| +|pts|[int](/API_docs/types/int.html) | Yes|[PTS](https://core.telegram.org/api/updates)| +|pts\_count|[int](/API_docs/types/int.html) | Yes|[PTS count](https://core.telegram.org/api/updates)| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateEditMessage = ['_' => 'updateEditMessage', 'message' => Message, 'pts' => int, 'pts_count' => int]; +``` diff --git a/docs/API_docs/constructors/updateEncryptedChatTyping.md b/docs/API_docs/constructors/updateEncryptedChatTyping.md new file mode 100644 index 0000000000..43bca11fa8 --- /dev/null +++ b/docs/API_docs/constructors/updateEncryptedChatTyping.md @@ -0,0 +1,29 @@ +--- +title: "updateEncryptedChatTyping" +description: "Interlocutor is typing a message in an encrypted chat. Update period is 6 second. If upon this time there is no repeated update, it shall be considered that the interlocutor stopped typing." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateEncryptedChatTyping +[Back to constructors index](/API_docs/constructors/index.html) + + + +Interlocutor is typing a message in an encrypted chat. Update period is 6 second. If upon this time there is no repeated update, it shall be considered that the interlocutor stopped typing. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chat\_id|[int](/API_docs/types/int.html) | Yes|Chat ID| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateEncryptedChatTyping = ['_' => 'updateEncryptedChatTyping', 'chat_id' => int]; +``` diff --git a/docs/API_docs/constructors/updateEncryptedMessagesRead.md b/docs/API_docs/constructors/updateEncryptedMessagesRead.md new file mode 100644 index 0000000000..85685f05d7 --- /dev/null +++ b/docs/API_docs/constructors/updateEncryptedMessagesRead.md @@ -0,0 +1,31 @@ +--- +title: "updateEncryptedMessagesRead" +description: "Communication history in an encrypted chat was marked as read." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateEncryptedMessagesRead +[Back to constructors index](/API_docs/constructors/index.html) + + + +Communication history in an encrypted chat was marked as read. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chat\_id|[int](/API_docs/types/int.html) | Yes|Chat ID| +|max\_date|[int](/API_docs/types/int.html) | Yes|Maximum value of data for read messages| +|date|[int](/API_docs/types/int.html) | Yes|Time when messages were read| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateEncryptedMessagesRead = ['_' => 'updateEncryptedMessagesRead', 'chat_id' => int, 'max_date' => int, 'date' => int]; +``` diff --git a/docs/API_docs/constructors/updateEncryption.md b/docs/API_docs/constructors/updateEncryption.md new file mode 100644 index 0000000000..7e0fb975c0 --- /dev/null +++ b/docs/API_docs/constructors/updateEncryption.md @@ -0,0 +1,30 @@ +--- +title: "updateEncryption" +description: "Change of state in an encrypted chat." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateEncryption +[Back to constructors index](/API_docs/constructors/index.html) + + + +Change of state in an encrypted chat. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chat|[EncryptedChat](/API_docs/types/EncryptedChat.html) | Optional|Encrypted chat| +|date|[int](/API_docs/types/int.html) | Yes|Date of change| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateEncryption = ['_' => 'updateEncryption', 'chat' => EncryptedChat, 'date' => int]; +``` diff --git a/docs/API_docs/constructors/updateFavedStickers.md b/docs/API_docs/constructors/updateFavedStickers.md new file mode 100644 index 0000000000..2dc190586d --- /dev/null +++ b/docs/API_docs/constructors/updateFavedStickers.md @@ -0,0 +1,24 @@ +--- +title: "updateFavedStickers" +description: "The list of favorited stickers was changed, the client should call messages.getFavedStickers to refetch the new list" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateFavedStickers +[Back to constructors index](/API_docs/constructors/index.html) + + + +The list of favorited stickers was changed, the client should call [messages.getFavedStickers](../methods/messages.getFavedStickers.html) to refetch the new list + + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateFavedStickers = ['_' => 'updateFavedStickers']; +``` diff --git a/docs/API_docs/constructors/updateFolderPeers.md b/docs/API_docs/constructors/updateFolderPeers.md new file mode 100644 index 0000000000..d7b0b9ea8e --- /dev/null +++ b/docs/API_docs/constructors/updateFolderPeers.md @@ -0,0 +1,31 @@ +--- +title: "updateFolderPeers" +description: "The peer list of a peer folder was updated" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateFolderPeers +[Back to constructors index](/API_docs/constructors/index.html) + + + +The peer list of a [peer folder](https://core.telegram.org/api/folders#peer-folders) was updated + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|folder\_peers|Array of [FolderPeer](/API_docs/types/FolderPeer.html) | Yes|New peer list| +|pts|[int](/API_docs/types/int.html) | Yes|[Event count after generation](https://core.telegram.org/api/updates)| +|pts\_count|[int](/API_docs/types/int.html) | Yes|[Number of events that were generated](https://core.telegram.org/api/updates)| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateFolderPeers = ['_' => 'updateFolderPeers', 'folder_peers' => [FolderPeer, FolderPeer], 'pts' => int, 'pts_count' => int]; +``` diff --git a/docs/API_docs/constructors/updateGeoLiveViewed.md b/docs/API_docs/constructors/updateGeoLiveViewed.md new file mode 100644 index 0000000000..f550e29be4 --- /dev/null +++ b/docs/API_docs/constructors/updateGeoLiveViewed.md @@ -0,0 +1,30 @@ +--- +title: "updateGeoLiveViewed" +description: "Live geoposition message was viewed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateGeoLiveViewed +[Back to constructors index](/API_docs/constructors/index.html) + + + +Live geoposition message was viewed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|The user that viewed the live geoposition| +|msg\_id|[int](/API_docs/types/int.html) | Yes|Message ID of geoposition message| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateGeoLiveViewed = ['_' => 'updateGeoLiveViewed', 'peer' => long, 'msg_id' => int]; +``` diff --git a/docs/API_docs/constructors/updateGroupCall.md b/docs/API_docs/constructors/updateGroupCall.md new file mode 100644 index 0000000000..9a45de1f63 --- /dev/null +++ b/docs/API_docs/constructors/updateGroupCall.md @@ -0,0 +1,30 @@ +--- +title: "updateGroupCall" +description: "A new groupcall was started" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateGroupCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +A new groupcall was started + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|chat\_id|[long](/API_docs/types/long.html) | Yes|The [channel/supergroup](https://core.telegram.org/api/channel) where this group call or livestream takes place| +|call|[GroupCall](/API_docs/types/GroupCall.html) | Yes|Info about the group call or livestream| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateGroupCall = ['_' => 'updateGroupCall', 'chat_id' => long, 'call' => GroupCall]; +``` diff --git a/docs/API_docs/constructors/updateGroupCallConnection.md b/docs/API_docs/constructors/updateGroupCallConnection.md new file mode 100644 index 0000000000..0639e467ea --- /dev/null +++ b/docs/API_docs/constructors/updateGroupCallConnection.md @@ -0,0 +1,30 @@ +--- +title: "updateGroupCallConnection" +description: "New WebRTC parameters" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateGroupCallConnection +[Back to constructors index](/API_docs/constructors/index.html) + + + +New WebRTC parameters + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|presentation|[Bool](/API_docs/types/Bool.html) | Optional|Are these parameters related to the screen capture session currently in progress?| +|params|[DataJSON](/API_docs/types/DataJSON.html) | Yes|WebRTC parameters| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateGroupCallConnection = ['_' => 'updateGroupCallConnection', 'presentation' => Bool, 'params' => DataJSON]; +``` diff --git a/docs/API_docs/constructors/updateGroupCallParticipants.md b/docs/API_docs/constructors/updateGroupCallParticipants.md new file mode 100644 index 0000000000..92a9ef6843 --- /dev/null +++ b/docs/API_docs/constructors/updateGroupCallParticipants.md @@ -0,0 +1,31 @@ +--- +title: "updateGroupCallParticipants" +description: "The participant list of a certain group call has changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateGroupCallParticipants +[Back to constructors index](/API_docs/constructors/index.html) + + + +The participant list of a certain group call has changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | Yes|Group call| +|participants|Array of [GroupCallParticipant](/API_docs/types/GroupCallParticipant.html) | Yes|New participant list| +|version|[int](/API_docs/types/int.html) | Yes|Version| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateGroupCallParticipants = ['_' => 'updateGroupCallParticipants', 'call' => InputGroupCall, 'participants' => [GroupCallParticipant, GroupCallParticipant], 'version' => int]; +``` diff --git a/docs/API_docs/constructors/updateInlineBotCallbackQuery.md b/docs/API_docs/constructors/updateInlineBotCallbackQuery.md new file mode 100644 index 0000000000..2e5dffd12b --- /dev/null +++ b/docs/API_docs/constructors/updateInlineBotCallbackQuery.md @@ -0,0 +1,34 @@ +--- +title: "updateInlineBotCallbackQuery" +description: "This notification is received by bots when a button is pressed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateInlineBotCallbackQuery +[Back to constructors index](/API_docs/constructors/index.html) + + + +This notification is received by bots when a button is pressed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|query\_id|[long](/API_docs/types/long.html) | Yes|Query ID| +|user\_id|[long](/API_docs/types/long.html) | Yes|ID of the user that pressed the button| +|msg\_id|[InputBotInlineMessageID](/API_docs/types/InputBotInlineMessageID.html) | Yes|ID of the inline message with the button| +|chat\_instance|[long](/API_docs/types/long.html) | Yes|Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games.| +|data|[bytes](/API_docs/types/bytes.html) | Optional|Data associated with the callback button. Be aware that a bad client can send arbitrary data in this field.| +|game\_short\_name|[string](/API_docs/types/string.html) | Optional|Short name of a Game to be returned, serves as the unique identifier for the game| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateInlineBotCallbackQuery = ['_' => 'updateInlineBotCallbackQuery', 'query_id' => long, 'user_id' => long, 'msg_id' => InputBotInlineMessageID, 'chat_instance' => long, 'data' => 'bytes', 'game_short_name' => 'string']; +``` diff --git a/docs/API_docs/constructors/updateLangPack.md b/docs/API_docs/constructors/updateLangPack.md new file mode 100644 index 0000000000..13249df94a --- /dev/null +++ b/docs/API_docs/constructors/updateLangPack.md @@ -0,0 +1,29 @@ +--- +title: "updateLangPack" +description: "Language pack updated" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateLangPack +[Back to constructors index](/API_docs/constructors/index.html) + + + +Language pack updated + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|difference|[LangPackDifference](/API_docs/types/LangPackDifference.html) | Yes|Changed strings| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateLangPack = ['_' => 'updateLangPack', 'difference' => LangPackDifference]; +``` diff --git a/docs/API_docs/constructors/updateLangPackTooLong.md b/docs/API_docs/constructors/updateLangPackTooLong.md new file mode 100644 index 0000000000..199dde31d0 --- /dev/null +++ b/docs/API_docs/constructors/updateLangPackTooLong.md @@ -0,0 +1,29 @@ +--- +title: "updateLangPackTooLong" +description: "A language pack has changed, the client should manually fetch the changed strings using langpack.getDifference" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateLangPackTooLong +[Back to constructors index](/API_docs/constructors/index.html) + + + +A language pack has changed, the client should manually fetch the changed strings using [langpack.getDifference](../methods/langpack.getDifference.html) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|lang\_code|[string](/API_docs/types/string.html) | Yes|Language code| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateLangPackTooLong = ['_' => 'updateLangPackTooLong', 'lang_code' => 'string']; +``` diff --git a/docs/API_docs/constructors/updateLoginToken.md b/docs/API_docs/constructors/updateLoginToken.md new file mode 100644 index 0000000000..140e888af8 --- /dev/null +++ b/docs/API_docs/constructors/updateLoginToken.md @@ -0,0 +1,24 @@ +--- +title: "updateLoginToken" +description: "A login token (for login via QR code) was accepted." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateLoginToken +[Back to constructors index](/API_docs/constructors/index.html) + + + +A login token (for login via QR code) was accepted. + + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateLoginToken = ['_' => 'updateLoginToken']; +``` diff --git a/docs/API_docs/constructors/updateMessageExtendedMedia.md b/docs/API_docs/constructors/updateMessageExtendedMedia.md new file mode 100644 index 0000000000..fc397a9270 --- /dev/null +++ b/docs/API_docs/constructors/updateMessageExtendedMedia.md @@ -0,0 +1,31 @@ +--- +title: "updateMessageExtendedMedia" +description: "Extended media update" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateMessageExtendedMedia +[Back to constructors index](/API_docs/constructors/index.html) + + + +Extended media update + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|Peer| +|msg\_id|[int](/API_docs/types/int.html) | Yes|Message ID| +|extended\_media|[MessageExtendedMedia](/API_docs/types/MessageExtendedMedia.html) | Yes|Extended media| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateMessageExtendedMedia = ['_' => 'updateMessageExtendedMedia', 'peer' => long, 'msg_id' => int, 'extended_media' => MessageExtendedMedia]; +``` diff --git a/docs/API_docs/constructors/updateMessageID.md b/docs/API_docs/constructors/updateMessageID.md new file mode 100644 index 0000000000..6895b6f8d8 --- /dev/null +++ b/docs/API_docs/constructors/updateMessageID.md @@ -0,0 +1,29 @@ +--- +title: "updateMessageID" +description: "Sent message with random_id client identifier was assigned an identifier." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateMessageID +[Back to constructors index](/API_docs/constructors/index.html) + + + +Sent message with **random\_id** client identifier was assigned an identifier. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[int](/API_docs/types/int.html) | Yes|**id** identifier of a respective [Message](../types/Message.html)| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateMessageID = ['_' => 'updateMessageID', 'id' => int]; +``` diff --git a/docs/API_docs/constructors/updateMessagePoll.md b/docs/API_docs/constructors/updateMessagePoll.md new file mode 100644 index 0000000000..e7f60f66c9 --- /dev/null +++ b/docs/API_docs/constructors/updateMessagePoll.md @@ -0,0 +1,31 @@ +--- +title: "updateMessagePoll" +description: "The results of a poll have changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateMessagePoll +[Back to constructors index](/API_docs/constructors/index.html) + + + +The results of a poll have changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|poll\_id|[long](/API_docs/types/long.html) | Yes|Poll ID| +|poll|[Poll](/API_docs/types/Poll.html) | Optional|If the server knows the client hasn't cached this poll yet, the poll itself| +|results|[PollResults](/API_docs/types/PollResults.html) | Yes|New poll results| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateMessagePoll = ['_' => 'updateMessagePoll', 'poll_id' => long, 'poll' => Poll, 'results' => PollResults]; +``` diff --git a/docs/API_docs/constructors/updateMessagePollVote.md b/docs/API_docs/constructors/updateMessagePollVote.md new file mode 100644 index 0000000000..c6229da398 --- /dev/null +++ b/docs/API_docs/constructors/updateMessagePollVote.md @@ -0,0 +1,32 @@ +--- +title: "updateMessagePollVote" +description: "A specific peer has voted in a poll" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateMessagePollVote +[Back to constructors index](/API_docs/constructors/index.html) + + + +A specific peer has voted in a poll + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|poll\_id|[long](/API_docs/types/long.html) | Yes|Poll ID| +|peer|[long](/API_docs/types/long.html) | Yes|The peer that voted in the poll| +|options|Array of [bytes](/API_docs/types/bytes.html) | Yes|Chosen option(s)| +|qts|[int](/API_docs/types/int.html) | Yes|New **qts** value, see [updates »](https://core.telegram.org/api/updates) for more info.| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateMessagePollVote = ['_' => 'updateMessagePollVote', 'poll_id' => long, 'peer' => long, 'options' => ['bytes', 'bytes'], 'qts' => int]; +``` diff --git a/docs/API_docs/constructors/updateMessageReactions.md b/docs/API_docs/constructors/updateMessageReactions.md new file mode 100644 index 0000000000..f982795d83 --- /dev/null +++ b/docs/API_docs/constructors/updateMessageReactions.md @@ -0,0 +1,32 @@ +--- +title: "updateMessageReactions" +description: "New message reactions » are available" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateMessageReactions +[Back to constructors index](/API_docs/constructors/index.html) + + + +New [message reactions »](https://core.telegram.org/api/reactions) are available + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|Peer| +|msg\_id|[int](/API_docs/types/int.html) | Yes|Message ID| +|top\_msg\_id|[int](/API_docs/types/int.html) | Optional|[Forum topic ID](https://core.telegram.org/api/forum#forum-topics)| +|reactions|[MessageReactions](/API_docs/types/MessageReactions.html) | Yes|Reactions| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateMessageReactions = ['_' => 'updateMessageReactions', 'peer' => long, 'msg_id' => int, 'top_msg_id' => int, 'reactions' => MessageReactions]; +``` diff --git a/docs/API_docs/constructors/updateMoveStickerSetToTop.md b/docs/API_docs/constructors/updateMoveStickerSetToTop.md new file mode 100644 index 0000000000..e03703ad0a --- /dev/null +++ b/docs/API_docs/constructors/updateMoveStickerSetToTop.md @@ -0,0 +1,31 @@ +--- +title: "updateMoveStickerSetToTop" +description: "A stickerset was just moved to top, see here for more info »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateMoveStickerSetToTop +[Back to constructors index](/API_docs/constructors/index.html) + + + +A stickerset was just moved to top, [see here for more info »](https://core.telegram.org/api/stickers#recent-stickersets) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|masks|[Bool](/API_docs/types/Bool.html) | Optional|This update is referring to a [mask stickerset](https://core.telegram.org/api/stickers#mask-stickers)| +|emojis|[Bool](/API_docs/types/Bool.html) | Optional|This update is referring to a [custom emoji stickerset](https://core.telegram.org/api/custom-emoji)| +|stickerset|[long](/API_docs/types/long.html) | Yes|[Stickerset](https://core.telegram.org/api/stickers) ID| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateMoveStickerSetToTop = ['_' => 'updateMoveStickerSetToTop', 'masks' => Bool, 'emojis' => Bool, 'stickerset' => long]; +``` diff --git a/docs/API_docs/constructors/updateNewAuthorization.md b/docs/API_docs/constructors/updateNewAuthorization.md new file mode 100644 index 0000000000..f2f5ca4839 --- /dev/null +++ b/docs/API_docs/constructors/updateNewAuthorization.md @@ -0,0 +1,33 @@ +--- +title: "updateNewAuthorization" +description: "A new session logged into the current user's account through an unknown device." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateNewAuthorization +[Back to constructors index](/API_docs/constructors/index.html) + + + +A new session logged into the current user's account through an unknown device. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|unconfirmed|[Bool](/API_docs/types/Bool.html) | Optional|Whether the session is [unconfirmed, see here »](https://core.telegram.org/api/auth#confirming-login) for more info.| +|hash|[long](/API_docs/types/long.html) | Yes|[Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation)| +|date|[int](/API_docs/types/int.html) | Optional|Authorization date| +|device|[string](/API_docs/types/string.html) | Optional|Name of device, for example *Android*| +|location|[string](/API_docs/types/string.html) | Optional|Location, for example *USA, NY (IP=1.2.3.4)*| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateNewAuthorization = ['_' => 'updateNewAuthorization', 'unconfirmed' => Bool, 'hash' => long, 'date' => int, 'device' => 'string', 'location' => 'string']; +``` diff --git a/docs/API_docs/constructors/updateNewChannelMessage.md b/docs/API_docs/constructors/updateNewChannelMessage.md new file mode 100644 index 0000000000..aa8f0c4f0a --- /dev/null +++ b/docs/API_docs/constructors/updateNewChannelMessage.md @@ -0,0 +1,31 @@ +--- +title: "updateNewChannelMessage" +description: "A new message was sent in a channel/supergroup" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateNewChannelMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +A new message was sent in a [channel/supergroup](https://core.telegram.org/api/channel) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|message|[Message](/API_docs/types/Message.html) | Optional|New message| +|pts|[int](/API_docs/types/int.html) | Yes|[Event count after generation](https://core.telegram.org/api/updates)| +|pts\_count|[int](/API_docs/types/int.html) | Yes|[Number of events that were generated](https://core.telegram.org/api/updates)| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateNewChannelMessage = ['_' => 'updateNewChannelMessage', 'message' => Message, 'pts' => int, 'pts_count' => int]; +``` diff --git a/docs/API_docs/constructors/updateNewEncryptedMessage.md b/docs/API_docs/constructors/updateNewEncryptedMessage.md new file mode 100644 index 0000000000..b6e6651291 --- /dev/null +++ b/docs/API_docs/constructors/updateNewEncryptedMessage.md @@ -0,0 +1,30 @@ +--- +title: "updateNewEncryptedMessage" +description: "New encrypted message." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateNewEncryptedMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +New encrypted message. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|message|[EncryptedMessage](/API_docs/types/EncryptedMessage.html) | Yes|Message| +|qts|[int](/API_docs/types/int.html) | Yes|New **qts** value, see [updates »](https://core.telegram.org/api/updates) for more info.| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateNewEncryptedMessage = ['_' => 'updateNewEncryptedMessage', 'message' => EncryptedMessage, 'qts' => int]; +``` diff --git a/docs/API_docs/constructors/updateNewMessage.md b/docs/API_docs/constructors/updateNewMessage.md new file mode 100644 index 0000000000..72579a3032 --- /dev/null +++ b/docs/API_docs/constructors/updateNewMessage.md @@ -0,0 +1,31 @@ +--- +title: "updateNewMessage" +description: "New message in a private chat or in a basic group." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateNewMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +New message in a private chat or in a [basic group](https://core.telegram.org/api/channel#basic-groups). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|message|[Message](/API_docs/types/Message.html) | Optional|Message| +|pts|[int](/API_docs/types/int.html) | Yes|New quantity of actions in a message box| +|pts\_count|[int](/API_docs/types/int.html) | Yes|Number of generated events| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateNewMessage = ['_' => 'updateNewMessage', 'message' => Message, 'pts' => int, 'pts_count' => int]; +``` diff --git a/docs/API_docs/constructors/updateNewQuickReply.md b/docs/API_docs/constructors/updateNewQuickReply.md new file mode 100644 index 0000000000..507974b158 --- /dev/null +++ b/docs/API_docs/constructors/updateNewQuickReply.md @@ -0,0 +1,27 @@ +--- +title: "updateNewQuickReply" +description: "updateNewQuickReply attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateNewQuickReply +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|quick\_reply|[QuickReply](/API_docs/types/QuickReply.html) | Yes| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateNewQuickReply = ['_' => 'updateNewQuickReply', 'quick_reply' => QuickReply]; +``` diff --git a/docs/API_docs/constructors/updateNewScheduledMessage.md b/docs/API_docs/constructors/updateNewScheduledMessage.md new file mode 100644 index 0000000000..24a2c42fc4 --- /dev/null +++ b/docs/API_docs/constructors/updateNewScheduledMessage.md @@ -0,0 +1,29 @@ +--- +title: "updateNewScheduledMessage" +description: "A message was added to the schedule queue of a chat" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateNewScheduledMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +A message was added to the [schedule queue of a chat](https://core.telegram.org/api/scheduled-messages) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|message|[Message](/API_docs/types/Message.html) | Optional|Message| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateNewScheduledMessage = ['_' => 'updateNewScheduledMessage', 'message' => Message]; +``` diff --git a/docs/API_docs/constructors/updateNewStickerSet.md b/docs/API_docs/constructors/updateNewStickerSet.md new file mode 100644 index 0000000000..c54969c853 --- /dev/null +++ b/docs/API_docs/constructors/updateNewStickerSet.md @@ -0,0 +1,29 @@ +--- +title: "updateNewStickerSet" +description: "A new stickerset was installed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateNewStickerSet +[Back to constructors index](/API_docs/constructors/index.html) + + + +A new stickerset was installed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|stickerset|[messages.StickerSet](/API_docs/constructors/messages.StickerSet.html) | Yes|The installed stickerset| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateNewStickerSet = ['_' => 'updateNewStickerSet', 'stickerset' => messages.StickerSet]; +``` diff --git a/docs/API_docs/constructors/updateNewStoryReaction.md b/docs/API_docs/constructors/updateNewStoryReaction.md new file mode 100644 index 0000000000..d22b7cb429 --- /dev/null +++ b/docs/API_docs/constructors/updateNewStoryReaction.md @@ -0,0 +1,29 @@ +--- +title: "updateNewStoryReaction" +description: "updateNewStoryReaction attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateNewStoryReaction +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|story\_id|[int](/API_docs/types/int.html) | Yes| +|peer|[long](/API_docs/types/long.html) | Yes| +|reaction|[Reaction](/API_docs/types/Reaction.html) | Optional| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateNewStoryReaction = ['_' => 'updateNewStoryReaction', 'story_id' => int, 'peer' => long, 'reaction' => Reaction]; +``` diff --git a/docs/API_docs/constructors/updateNotifySettings.md b/docs/API_docs/constructors/updateNotifySettings.md new file mode 100644 index 0000000000..096ff84a5a --- /dev/null +++ b/docs/API_docs/constructors/updateNotifySettings.md @@ -0,0 +1,30 @@ +--- +title: "updateNotifySettings" +description: "Changes in notification settings." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateNotifySettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +Changes in notification settings. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[NotifyPeer](/API_docs/types/NotifyPeer.html) | Yes|Notification source| +|notify\_settings|[PeerNotifySettings](/API_docs/types/PeerNotifySettings.html) | Yes|New notification settings| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateNotifySettings = ['_' => 'updateNotifySettings', 'peer' => NotifyPeer, 'notify_settings' => PeerNotifySettings]; +``` diff --git a/docs/API_docs/constructors/updatePeerBlocked.md b/docs/API_docs/constructors/updatePeerBlocked.md new file mode 100644 index 0000000000..dc4dbc66b7 --- /dev/null +++ b/docs/API_docs/constructors/updatePeerBlocked.md @@ -0,0 +1,31 @@ +--- +title: "updatePeerBlocked" +description: "We blocked a peer, see here » for more info on blocklists." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updatePeerBlocked +[Back to constructors index](/API_docs/constructors/index.html) + + + +We blocked a peer, see [here »](https://core.telegram.org/api/block) for more info on blocklists. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|blocked|[Bool](/API_docs/types/Bool.html) | Optional|Whether the peer was blocked or unblocked| +|blocked\_my\_stories\_from|[Bool](/API_docs/types/Bool.html) | Optional|Whether the peer was added/removed to/from the story blocklist; if not set, this update affects the main blocklist, see [here »](https://core.telegram.org/api/block) for more info.| +|peer\_id|[Peer](/API_docs/types/Peer.html) | Yes|The (un)blocked peer| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updatePeerBlocked = ['_' => 'updatePeerBlocked', 'blocked' => Bool, 'blocked_my_stories_from' => Bool, 'peer_id' => Peer]; +``` diff --git a/docs/API_docs/constructors/updatePeerHistoryTTL.md b/docs/API_docs/constructors/updatePeerHistoryTTL.md new file mode 100644 index 0000000000..cf47fe0044 --- /dev/null +++ b/docs/API_docs/constructors/updatePeerHistoryTTL.md @@ -0,0 +1,30 @@ +--- +title: "updatePeerHistoryTTL" +description: "The Time-To-Live for messages sent by the current user in a specific chat has changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updatePeerHistoryTTL +[Back to constructors index](/API_docs/constructors/index.html) + + + +The Time-To-Live for messages sent by the current user in a specific chat has changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|The chat| +|ttl\_period|[int](/API_docs/types/int.html) | Optional|The new Time-To-Live| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updatePeerHistoryTTL = ['_' => 'updatePeerHistoryTTL', 'peer' => long, 'ttl_period' => int]; +``` diff --git a/docs/API_docs/constructors/updatePeerLocated.md b/docs/API_docs/constructors/updatePeerLocated.md new file mode 100644 index 0000000000..3204b1a63f --- /dev/null +++ b/docs/API_docs/constructors/updatePeerLocated.md @@ -0,0 +1,29 @@ +--- +title: "updatePeerLocated" +description: "List of peers near you was updated" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updatePeerLocated +[Back to constructors index](/API_docs/constructors/index.html) + + + +List of peers near you was updated + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peers|Array of [PeerLocated](/API_docs/types/PeerLocated.html) | Yes|Geolocated peer list update| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updatePeerLocated = ['_' => 'updatePeerLocated', 'peers' => [PeerLocated, PeerLocated]]; +``` diff --git a/docs/API_docs/constructors/updatePeerSettings.md b/docs/API_docs/constructors/updatePeerSettings.md new file mode 100644 index 0000000000..15e212238a --- /dev/null +++ b/docs/API_docs/constructors/updatePeerSettings.md @@ -0,0 +1,30 @@ +--- +title: "updatePeerSettings" +description: "Settings of a certain peer have changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updatePeerSettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +Settings of a certain peer have changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|The peer| +|settings|[PeerSettings](/API_docs/types/PeerSettings.html) | Yes|Associated peer settings| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updatePeerSettings = ['_' => 'updatePeerSettings', 'peer' => long, 'settings' => PeerSettings]; +``` diff --git a/docs/API_docs/constructors/updatePeerWallpaper.md b/docs/API_docs/constructors/updatePeerWallpaper.md new file mode 100644 index 0000000000..3e58e20057 --- /dev/null +++ b/docs/API_docs/constructors/updatePeerWallpaper.md @@ -0,0 +1,31 @@ +--- +title: "updatePeerWallpaper" +description: "The wallpaper » of a given peer has changed." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updatePeerWallpaper +[Back to constructors index](/API_docs/constructors/index.html) + + + +The [wallpaper »](https://core.telegram.org/api/wallpapers) of a given peer has changed. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|wallpaper\_overridden|[Bool](/API_docs/types/Bool.html) | Optional|Whether the other user has chosen a custom wallpaper for us using [messages.setChatWallPaper](../methods/messages.setChatWallPaper.html) and the `for_both` flag, see [here »](https://core.telegram.org/api/wallpapers#installing-wallpapers-in-a-specific-chat-or-channel) for more info.| +|peer|[long](/API_docs/types/long.html) | Yes|The peer where the wallpaper has changed.| +|wallpaper|[WallPaper](/API_docs/types/WallPaper.html) | Optional|The new wallpaper, if none the wallpaper was removed and the default wallpaper should be used.| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updatePeerWallpaper = ['_' => 'updatePeerWallpaper', 'wallpaper_overridden' => Bool, 'peer' => long, 'wallpaper' => WallPaper]; +``` diff --git a/docs/API_docs/constructors/updatePendingJoinRequests.md b/docs/API_docs/constructors/updatePendingJoinRequests.md new file mode 100644 index 0000000000..ba29406ff7 --- /dev/null +++ b/docs/API_docs/constructors/updatePendingJoinRequests.md @@ -0,0 +1,31 @@ +--- +title: "updatePendingJoinRequests" +description: "Someone has requested to join a chat or channel" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updatePendingJoinRequests +[Back to constructors index](/API_docs/constructors/index.html) + + + +Someone has requested to join a chat or channel + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|Chat or channel| +|requests\_pending|[int](/API_docs/types/int.html) | Yes|Number of pending [join requests »](https://core.telegram.org/api/invites#join-requests) for the chat or channel| +|recent\_requesters|Array of [long](/API_docs/types/long.html) | Yes|IDs of users that have recently requested to join| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updatePendingJoinRequests = ['_' => 'updatePendingJoinRequests', 'peer' => long, 'requests_pending' => int, 'recent_requesters' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/updatePhoneCall.md b/docs/API_docs/constructors/updatePhoneCall.md new file mode 100644 index 0000000000..e1ec72ce82 --- /dev/null +++ b/docs/API_docs/constructors/updatePhoneCall.md @@ -0,0 +1,29 @@ +--- +title: "updatePhoneCall" +description: "An incoming phone call" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updatePhoneCall +[Back to constructors index](/API_docs/constructors/index.html) + + + +An incoming phone call + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|phone\_call|[PhoneCall](/API_docs/types/PhoneCall.html) | Optional|Phone call| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updatePhoneCall = ['_' => 'updatePhoneCall', 'phone_call' => PhoneCall]; +``` diff --git a/docs/API_docs/constructors/updatePhoneCallSignalingData.md b/docs/API_docs/constructors/updatePhoneCallSignalingData.md new file mode 100644 index 0000000000..00d42475b2 --- /dev/null +++ b/docs/API_docs/constructors/updatePhoneCallSignalingData.md @@ -0,0 +1,30 @@ +--- +title: "updatePhoneCallSignalingData" +description: "Incoming phone call signaling payload" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updatePhoneCallSignalingData +[Back to constructors index](/API_docs/constructors/index.html) + + + +Incoming phone call signaling payload + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|phone\_call\_id|[long](/API_docs/types/long.html) | Yes|Phone call ID| +|data|[bytes](/API_docs/types/bytes.html) | Yes|Signaling payload| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updatePhoneCallSignalingData = ['_' => 'updatePhoneCallSignalingData', 'phone_call_id' => long, 'data' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/updatePinnedChannelMessages.md b/docs/API_docs/constructors/updatePinnedChannelMessages.md new file mode 100644 index 0000000000..9586a8a575 --- /dev/null +++ b/docs/API_docs/constructors/updatePinnedChannelMessages.md @@ -0,0 +1,33 @@ +--- +title: "updatePinnedChannelMessages" +description: "Messages were pinned/unpinned in a channel/supergroup" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updatePinnedChannelMessages +[Back to constructors index](/API_docs/constructors/index.html) + + + +Messages were pinned/unpinned in a [channel/supergroup](https://core.telegram.org/api/channel) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|pinned|[Bool](/API_docs/types/Bool.html) | Optional|Whether the messages were pinned or unpinned| +|channel\_id|[long](/API_docs/types/long.html) | Yes|Channel ID| +|messages|Array of [int](/API_docs/types/int.html) | Yes|Messages| +|pts|[int](/API_docs/types/int.html) | Yes|[Event count after generation](https://core.telegram.org/api/updates)| +|pts\_count|[int](/API_docs/types/int.html) | Yes|[Number of events that were generated](https://core.telegram.org/api/updates)| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updatePinnedChannelMessages = ['_' => 'updatePinnedChannelMessages', 'pinned' => Bool, 'channel_id' => long, 'messages' => [int, int], 'pts' => int, 'pts_count' => int]; +``` diff --git a/docs/API_docs/constructors/updatePinnedDialogs.md b/docs/API_docs/constructors/updatePinnedDialogs.md new file mode 100644 index 0000000000..651a64a76b --- /dev/null +++ b/docs/API_docs/constructors/updatePinnedDialogs.md @@ -0,0 +1,30 @@ +--- +title: "updatePinnedDialogs" +description: "Pinned dialogs were updated" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updatePinnedDialogs +[Back to constructors index](/API_docs/constructors/index.html) + + + +Pinned dialogs were updated + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|folder\_id|[int](/API_docs/types/int.html) | Optional|[Peer folder ID, for more info click here](https://core.telegram.org/api/folders#peer-folders)| +|order|Array of [DialogPeer](/API_docs/types/DialogPeer.html) | Optional|New order of pinned dialogs| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updatePinnedDialogs = ['_' => 'updatePinnedDialogs', 'folder_id' => int, 'order' => [DialogPeer, DialogPeer]]; +``` diff --git a/docs/API_docs/constructors/updatePinnedMessages.md b/docs/API_docs/constructors/updatePinnedMessages.md new file mode 100644 index 0000000000..0ab2c893c9 --- /dev/null +++ b/docs/API_docs/constructors/updatePinnedMessages.md @@ -0,0 +1,33 @@ +--- +title: "updatePinnedMessages" +description: "Some messages were pinned in a chat" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updatePinnedMessages +[Back to constructors index](/API_docs/constructors/index.html) + + + +Some messages were pinned in a chat + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|pinned|[Bool](/API_docs/types/Bool.html) | Optional|Whether the messages were pinned or unpinned| +|peer|[long](/API_docs/types/long.html) | Yes|Peer| +|messages|Array of [int](/API_docs/types/int.html) | Yes|Message IDs| +|pts|[int](/API_docs/types/int.html) | Yes|[Event count after generation](https://core.telegram.org/api/updates)| +|pts\_count|[int](/API_docs/types/int.html) | Yes|[Number of events that were generated](https://core.telegram.org/api/updates)| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updatePinnedMessages = ['_' => 'updatePinnedMessages', 'pinned' => Bool, 'peer' => long, 'messages' => [int, int], 'pts' => int, 'pts_count' => int]; +``` diff --git a/docs/API_docs/constructors/updatePinnedSavedDialogs.md b/docs/API_docs/constructors/updatePinnedSavedDialogs.md new file mode 100644 index 0000000000..183ae7dcc8 --- /dev/null +++ b/docs/API_docs/constructors/updatePinnedSavedDialogs.md @@ -0,0 +1,29 @@ +--- +title: "updatePinnedSavedDialogs" +description: "Pinned saved dialogs » were updated" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updatePinnedSavedDialogs +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Pinned saved dialogs »](https://core.telegram.org/api/saved-messages) were updated + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|order|Array of [DialogPeer](/API_docs/types/DialogPeer.html) | Optional|New order of pinned saved dialogs| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updatePinnedSavedDialogs = ['_' => 'updatePinnedSavedDialogs', 'order' => [DialogPeer, DialogPeer]]; +``` diff --git a/docs/API_docs/constructors/updatePrivacy.md b/docs/API_docs/constructors/updatePrivacy.md new file mode 100644 index 0000000000..59a420a2e5 --- /dev/null +++ b/docs/API_docs/constructors/updatePrivacy.md @@ -0,0 +1,30 @@ +--- +title: "updatePrivacy" +description: "Privacy rules were changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updatePrivacy +[Back to constructors index](/API_docs/constructors/index.html) + + + +Privacy rules were changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|key|[PrivacyKey](/API_docs/types/PrivacyKey.html) | Yes|Peers to which the privacy rules apply| +|rules|Array of [PrivacyRule](/API_docs/types/PrivacyRule.html) | Yes|New privacy rules| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updatePrivacy = ['_' => 'updatePrivacy', 'key' => PrivacyKey, 'rules' => [PrivacyRule, PrivacyRule]]; +``` diff --git a/docs/API_docs/constructors/updatePtsChanged.md b/docs/API_docs/constructors/updatePtsChanged.md new file mode 100644 index 0000000000..b790cdbf1d --- /dev/null +++ b/docs/API_docs/constructors/updatePtsChanged.md @@ -0,0 +1,24 @@ +--- +title: "updatePtsChanged" +description: "Common message box sequence PTS has changed, state has to be refetched using updates.getState" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updatePtsChanged +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Common message box sequence PTS](https://core.telegram.org/api/updates) has changed, [state has to be refetched using updates.getState](https://core.telegram.org/api/updates#fetching-state) + + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updatePtsChanged = ['_' => 'updatePtsChanged']; +``` diff --git a/docs/API_docs/constructors/updateQuickReplies.md b/docs/API_docs/constructors/updateQuickReplies.md new file mode 100644 index 0000000000..4beeadc9ce --- /dev/null +++ b/docs/API_docs/constructors/updateQuickReplies.md @@ -0,0 +1,27 @@ +--- +title: "updateQuickReplies" +description: "updateQuickReplies attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateQuickReplies +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|quick\_replies|Array of [QuickReply](/API_docs/types/QuickReply.html) | Yes| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateQuickReplies = ['_' => 'updateQuickReplies', 'quick_replies' => [QuickReply, QuickReply]]; +``` diff --git a/docs/API_docs/constructors/updateQuickReplyMessage.md b/docs/API_docs/constructors/updateQuickReplyMessage.md new file mode 100644 index 0000000000..28f7fe70ad --- /dev/null +++ b/docs/API_docs/constructors/updateQuickReplyMessage.md @@ -0,0 +1,27 @@ +--- +title: "updateQuickReplyMessage" +description: "updateQuickReplyMessage attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateQuickReplyMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|message|[Message](/API_docs/types/Message.html) | Optional| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateQuickReplyMessage = ['_' => 'updateQuickReplyMessage', 'message' => Message]; +``` diff --git a/docs/API_docs/constructors/updateReadChannelDiscussionInbox.md b/docs/API_docs/constructors/updateReadChannelDiscussionInbox.md new file mode 100644 index 0000000000..d38561e021 --- /dev/null +++ b/docs/API_docs/constructors/updateReadChannelDiscussionInbox.md @@ -0,0 +1,33 @@ +--- +title: "updateReadChannelDiscussionInbox" +description: "Incoming comments in a discussion thread were marked as read" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateReadChannelDiscussionInbox +[Back to constructors index](/API_docs/constructors/index.html) + + + +Incoming comments in a [discussion thread](https://core.telegram.org/api/threads) were marked as read + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel\_id|[long](/API_docs/types/long.html) | Yes|[Discussion group ID](https://core.telegram.org/api/channel)| +|top\_msg\_id|[int](/API_docs/types/int.html) | Yes|ID of the group message that started the [thread](https://core.telegram.org/api/threads) (message in linked discussion group)| +|read\_max\_id|[int](/API_docs/types/int.html) | Yes|Message ID of latest read incoming message for this [thread](https://core.telegram.org/api/threads)| +|broadcast\_id|[long](/API_docs/types/long.html) | Optional|If set, contains the ID of the [channel](https://core.telegram.org/api/channel) that contains the post that started the [comment thread](https://core.telegram.org/api/threads) in the discussion group (`channel_id`)| +|broadcast\_post|[int](/API_docs/types/int.html) | Optional|If set, contains the ID of the channel post that started the [comment thread](https://core.telegram.org/api/threads)| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateReadChannelDiscussionInbox = ['_' => 'updateReadChannelDiscussionInbox', 'channel_id' => long, 'top_msg_id' => int, 'read_max_id' => int, 'broadcast_id' => long, 'broadcast_post' => int]; +``` diff --git a/docs/API_docs/constructors/updateReadChannelDiscussionOutbox.md b/docs/API_docs/constructors/updateReadChannelDiscussionOutbox.md new file mode 100644 index 0000000000..2ac19f9005 --- /dev/null +++ b/docs/API_docs/constructors/updateReadChannelDiscussionOutbox.md @@ -0,0 +1,31 @@ +--- +title: "updateReadChannelDiscussionOutbox" +description: "Outgoing comments in a discussion thread were marked as read" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateReadChannelDiscussionOutbox +[Back to constructors index](/API_docs/constructors/index.html) + + + +Outgoing comments in a [discussion thread](https://core.telegram.org/api/threads) were marked as read + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel\_id|[long](/API_docs/types/long.html) | Yes|[Supergroup ID](https://core.telegram.org/api/channel)| +|top\_msg\_id|[int](/API_docs/types/int.html) | Yes|ID of the group message that started the [thread](https://core.telegram.org/api/threads)| +|read\_max\_id|[int](/API_docs/types/int.html) | Yes|Message ID of latest read outgoing message for this [thread](https://core.telegram.org/api/threads)| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateReadChannelDiscussionOutbox = ['_' => 'updateReadChannelDiscussionOutbox', 'channel_id' => long, 'top_msg_id' => int, 'read_max_id' => int]; +``` diff --git a/docs/API_docs/constructors/updateReadChannelInbox.md b/docs/API_docs/constructors/updateReadChannelInbox.md new file mode 100644 index 0000000000..50ce479924 --- /dev/null +++ b/docs/API_docs/constructors/updateReadChannelInbox.md @@ -0,0 +1,33 @@ +--- +title: "updateReadChannelInbox" +description: "Incoming messages in a channel/supergroup were read" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateReadChannelInbox +[Back to constructors index](/API_docs/constructors/index.html) + + + +Incoming messages in a [channel/supergroup](https://core.telegram.org/api/channel) were read + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|folder\_id|[int](/API_docs/types/int.html) | Optional|[Peer folder ID, for more info click here](https://core.telegram.org/api/folders#peer-folders)| +|channel\_id|[long](/API_docs/types/long.html) | Yes|Channel/supergroup ID| +|max\_id|[int](/API_docs/types/int.html) | Yes|Position up to which all incoming messages are read.| +|still\_unread\_count|[int](/API_docs/types/int.html) | Yes|Count of messages weren't read yet| +|pts|[int](/API_docs/types/int.html) | Yes|[Event count after generation](https://core.telegram.org/api/updates)| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateReadChannelInbox = ['_' => 'updateReadChannelInbox', 'folder_id' => int, 'channel_id' => long, 'max_id' => int, 'still_unread_count' => int, 'pts' => int]; +``` diff --git a/docs/API_docs/constructors/updateReadChannelOutbox.md b/docs/API_docs/constructors/updateReadChannelOutbox.md new file mode 100644 index 0000000000..e19111a1ca --- /dev/null +++ b/docs/API_docs/constructors/updateReadChannelOutbox.md @@ -0,0 +1,30 @@ +--- +title: "updateReadChannelOutbox" +description: "Outgoing messages in a channel/supergroup were read" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateReadChannelOutbox +[Back to constructors index](/API_docs/constructors/index.html) + + + +Outgoing messages in a [channel/supergroup](https://core.telegram.org/api/channel) were read + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|channel\_id|[long](/API_docs/types/long.html) | Yes|Channel/supergroup ID| +|max\_id|[int](/API_docs/types/int.html) | Yes|Position up to which all outgoing messages are read.| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateReadChannelOutbox = ['_' => 'updateReadChannelOutbox', 'channel_id' => long, 'max_id' => int]; +``` diff --git a/docs/API_docs/constructors/updateReadFeaturedEmojiStickers.md b/docs/API_docs/constructors/updateReadFeaturedEmojiStickers.md new file mode 100644 index 0000000000..09195be318 --- /dev/null +++ b/docs/API_docs/constructors/updateReadFeaturedEmojiStickers.md @@ -0,0 +1,24 @@ +--- +title: "updateReadFeaturedEmojiStickers" +description: "Some featured custom emoji stickers were marked as read" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateReadFeaturedEmojiStickers +[Back to constructors index](/API_docs/constructors/index.html) + + + +Some featured [custom emoji stickers](https://core.telegram.org/api/custom-emoji) were marked as read + + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateReadFeaturedEmojiStickers = ['_' => 'updateReadFeaturedEmojiStickers']; +``` diff --git a/docs/API_docs/constructors/updateReadFeaturedStickers.md b/docs/API_docs/constructors/updateReadFeaturedStickers.md new file mode 100644 index 0000000000..488090423a --- /dev/null +++ b/docs/API_docs/constructors/updateReadFeaturedStickers.md @@ -0,0 +1,24 @@ +--- +title: "updateReadFeaturedStickers" +description: "Some featured stickers were marked as read" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateReadFeaturedStickers +[Back to constructors index](/API_docs/constructors/index.html) + + + +Some featured stickers were marked as read + + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateReadFeaturedStickers = ['_' => 'updateReadFeaturedStickers']; +``` diff --git a/docs/API_docs/constructors/updateReadHistoryInbox.md b/docs/API_docs/constructors/updateReadHistoryInbox.md new file mode 100644 index 0000000000..3c13cd3f02 --- /dev/null +++ b/docs/API_docs/constructors/updateReadHistoryInbox.md @@ -0,0 +1,34 @@ +--- +title: "updateReadHistoryInbox" +description: "Incoming messages were read" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateReadHistoryInbox +[Back to constructors index](/API_docs/constructors/index.html) + + + +Incoming messages were read + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|folder\_id|[int](/API_docs/types/int.html) | Optional|[Peer folder ID, for more info click here](https://core.telegram.org/api/folders#peer-folders)| +|peer|[long](/API_docs/types/long.html) | Yes|Peer| +|max\_id|[int](/API_docs/types/int.html) | Yes|Maximum ID of messages read| +|still\_unread\_count|[int](/API_docs/types/int.html) | Yes|Number of messages that are still unread| +|pts|[int](/API_docs/types/int.html) | Yes|[Event count after generation](https://core.telegram.org/api/updates)| +|pts\_count|[int](/API_docs/types/int.html) | Yes|[Number of events that were generated](https://core.telegram.org/api/updates)| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateReadHistoryInbox = ['_' => 'updateReadHistoryInbox', 'folder_id' => int, 'peer' => long, 'max_id' => int, 'still_unread_count' => int, 'pts' => int, 'pts_count' => int]; +``` diff --git a/docs/API_docs/constructors/updateReadHistoryOutbox.md b/docs/API_docs/constructors/updateReadHistoryOutbox.md new file mode 100644 index 0000000000..5b25d25292 --- /dev/null +++ b/docs/API_docs/constructors/updateReadHistoryOutbox.md @@ -0,0 +1,32 @@ +--- +title: "updateReadHistoryOutbox" +description: "Outgoing messages were read" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateReadHistoryOutbox +[Back to constructors index](/API_docs/constructors/index.html) + + + +Outgoing messages were read + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|Peer| +|max\_id|[int](/API_docs/types/int.html) | Yes|Maximum ID of read outgoing messages| +|pts|[int](/API_docs/types/int.html) | Yes|[Event count after generation](https://core.telegram.org/api/updates)| +|pts\_count|[int](/API_docs/types/int.html) | Yes|[Number of events that were generated](https://core.telegram.org/api/updates)| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateReadHistoryOutbox = ['_' => 'updateReadHistoryOutbox', 'peer' => long, 'max_id' => int, 'pts' => int, 'pts_count' => int]; +``` diff --git a/docs/API_docs/constructors/updateReadMessagesContents.md b/docs/API_docs/constructors/updateReadMessagesContents.md new file mode 100644 index 0000000000..c7a43d91e3 --- /dev/null +++ b/docs/API_docs/constructors/updateReadMessagesContents.md @@ -0,0 +1,32 @@ +--- +title: "updateReadMessagesContents" +description: "Contents of messages in the common message box were read" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateReadMessagesContents +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contents of messages in the common [message box](https://core.telegram.org/api/updates) were read + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|messages|Array of [int](/API_docs/types/int.html) | Yes|IDs of read messages| +|pts|[int](/API_docs/types/int.html) | Yes|[Event count after generation](https://core.telegram.org/api/updates)| +|pts\_count|[int](/API_docs/types/int.html) | Yes|[Number of events that were generated](https://core.telegram.org/api/updates)| +|date|[int](/API_docs/types/int.html) | Optional|When was the last message in `messages` marked as read.| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateReadMessagesContents = ['_' => 'updateReadMessagesContents', 'messages' => [int, int], 'pts' => int, 'pts_count' => int, 'date' => int]; +``` diff --git a/docs/API_docs/constructors/updateReadStories.md b/docs/API_docs/constructors/updateReadStories.md new file mode 100644 index 0000000000..f1d1f1fbbd --- /dev/null +++ b/docs/API_docs/constructors/updateReadStories.md @@ -0,0 +1,30 @@ +--- +title: "updateReadStories" +description: "Stories of a specific peer were marked as read." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateReadStories +[Back to constructors index](/API_docs/constructors/index.html) + + + +Stories of a specific peer were marked as read. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|The peer| +|max\_id|[int](/API_docs/types/int.html) | Yes|ID of the last story that was marked as read| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateReadStories = ['_' => 'updateReadStories', 'peer' => long, 'max_id' => int]; +``` diff --git a/docs/API_docs/constructors/updateRecentEmojiStatuses.md b/docs/API_docs/constructors/updateRecentEmojiStatuses.md new file mode 100644 index 0000000000..68e0cbf797 --- /dev/null +++ b/docs/API_docs/constructors/updateRecentEmojiStatuses.md @@ -0,0 +1,24 @@ +--- +title: "updateRecentEmojiStatuses" +description: "The list of recent emoji statuses has changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateRecentEmojiStatuses +[Back to constructors index](/API_docs/constructors/index.html) + + + +The list of recent [emoji statuses](https://core.telegram.org/api/emoji-status) has changed + + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateRecentEmojiStatuses = ['_' => 'updateRecentEmojiStatuses']; +``` diff --git a/docs/API_docs/constructors/updateRecentReactions.md b/docs/API_docs/constructors/updateRecentReactions.md new file mode 100644 index 0000000000..7d4f374b76 --- /dev/null +++ b/docs/API_docs/constructors/updateRecentReactions.md @@ -0,0 +1,24 @@ +--- +title: "updateRecentReactions" +description: "The list of recent message reactions has changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateRecentReactions +[Back to constructors index](/API_docs/constructors/index.html) + + + +The list of recent [message reactions](https://core.telegram.org/api/reactions) has changed + + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateRecentReactions = ['_' => 'updateRecentReactions']; +``` diff --git a/docs/API_docs/constructors/updateRecentStickers.md b/docs/API_docs/constructors/updateRecentStickers.md new file mode 100644 index 0000000000..4f46c91e42 --- /dev/null +++ b/docs/API_docs/constructors/updateRecentStickers.md @@ -0,0 +1,24 @@ +--- +title: "updateRecentStickers" +description: "The recent sticker list was updated" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateRecentStickers +[Back to constructors index](/API_docs/constructors/index.html) + + + +The recent sticker list was updated + + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateRecentStickers = ['_' => 'updateRecentStickers']; +``` diff --git a/docs/API_docs/constructors/updateSavedDialogPinned.md b/docs/API_docs/constructors/updateSavedDialogPinned.md new file mode 100644 index 0000000000..f47cf99ff3 --- /dev/null +++ b/docs/API_docs/constructors/updateSavedDialogPinned.md @@ -0,0 +1,30 @@ +--- +title: "updateSavedDialogPinned" +description: "A saved message dialog was pinned/unpinned" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateSavedDialogPinned +[Back to constructors index](/API_docs/constructors/index.html) + + + +A [saved message dialog](https://core.telegram.org/api/saved-messages) was pinned/unpinned + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|pinned|[Bool](/API_docs/types/Bool.html) | Optional|Whether the dialog was pinned| +|peer|[DialogPeer](/API_docs/types/DialogPeer.html) | Yes|The dialog| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateSavedDialogPinned = ['_' => 'updateSavedDialogPinned', 'pinned' => Bool, 'peer' => DialogPeer]; +``` diff --git a/docs/API_docs/constructors/updateSavedGifs.md b/docs/API_docs/constructors/updateSavedGifs.md new file mode 100644 index 0000000000..67901c59be --- /dev/null +++ b/docs/API_docs/constructors/updateSavedGifs.md @@ -0,0 +1,24 @@ +--- +title: "updateSavedGifs" +description: "The saved gif list has changed, the client should refetch it using messages.getSavedGifs" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateSavedGifs +[Back to constructors index](/API_docs/constructors/index.html) + + + +The saved gif list has changed, the client should refetch it using [messages.getSavedGifs](https://core.telegram.org/method/messages.getSavedGifs) + + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateSavedGifs = ['_' => 'updateSavedGifs']; +``` diff --git a/docs/API_docs/constructors/updateSavedReactionTags.md b/docs/API_docs/constructors/updateSavedReactionTags.md new file mode 100644 index 0000000000..b6d54b0a40 --- /dev/null +++ b/docs/API_docs/constructors/updateSavedReactionTags.md @@ -0,0 +1,22 @@ +--- +title: "updateSavedReactionTags" +description: "updateSavedReactionTags attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateSavedReactionTags +[Back to constructors index](/API_docs/constructors/index.html) + + + + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateSavedReactionTags = ['_' => 'updateSavedReactionTags']; +``` diff --git a/docs/API_docs/constructors/updateSavedRingtones.md b/docs/API_docs/constructors/updateSavedRingtones.md new file mode 100644 index 0000000000..300dc88605 --- /dev/null +++ b/docs/API_docs/constructors/updateSavedRingtones.md @@ -0,0 +1,24 @@ +--- +title: "updateSavedRingtones" +description: "The list of saved notification sounds has changed, use account.getSavedRingtones to fetch the new list." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateSavedRingtones +[Back to constructors index](/API_docs/constructors/index.html) + + + +The list of saved notification sounds has changed, use [account.getSavedRingtones](../methods/account.getSavedRingtones.html) to fetch the new list. + + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateSavedRingtones = ['_' => 'updateSavedRingtones']; +``` diff --git a/docs/API_docs/constructors/updateSentStoryReaction.md b/docs/API_docs/constructors/updateSentStoryReaction.md new file mode 100644 index 0000000000..cd761e6fe8 --- /dev/null +++ b/docs/API_docs/constructors/updateSentStoryReaction.md @@ -0,0 +1,31 @@ +--- +title: "updateSentStoryReaction" +description: "Indicates we reacted to a story »." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateSentStoryReaction +[Back to constructors index](/API_docs/constructors/index.html) + + + +Indicates we [reacted to a story »](https://core.telegram.org/api/stories#reactions). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|The peer that sent the story| +|story\_id|[int](/API_docs/types/int.html) | Yes|ID of the story we reacted to| +|reaction|[Reaction](/API_docs/types/Reaction.html) | Optional|The reaction that was sent| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateSentStoryReaction = ['_' => 'updateSentStoryReaction', 'peer' => long, 'story_id' => int, 'reaction' => Reaction]; +``` diff --git a/docs/API_docs/constructors/updateServiceNotification.md b/docs/API_docs/constructors/updateServiceNotification.md new file mode 100644 index 0000000000..9a9b8b1b5a --- /dev/null +++ b/docs/API_docs/constructors/updateServiceNotification.md @@ -0,0 +1,98 @@ +--- +title: "updateServiceNotification" +description: "A service message for the user." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateServiceNotification +[Back to constructors index](/API_docs/constructors/index.html) + + + +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). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|popup|[Bool](/API_docs/types/Bool.html) | Optional|If set, the message must be displayed in a popup.| +|invert\_media|[Bool](/API_docs/types/Bool.html) | Optional|If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.| +|inbox\_date|[int](/API_docs/types/int.html) | Optional|When was the notification received
The message must also be stored locally as part of the message history with the user id `777000` (Telegram Notifications).| +|type|[string](/API_docs/types/string.html) | Yes|String, identical in format and contents to the [**type**](https://core.telegram.org/api/errors#error-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).| +|message|[string](/API_docs/types/string.html) | Yes|Message text| +|media|[MessageMedia](/API_docs/types/MessageMedia.html) | Optional|Media content (optional)| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Yes|[Message entities for styled text](https://core.telegram.org/api/entities)| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | + + + +### Type: [Update](/API_docs/types/Update.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$updateServiceNotification = ['_' => 'updateServiceNotification', 'popup' => Bool, 'invert_media' => Bool, 'inbox_date' => int, 'type' => 'string', 'message' => 'string', 'media' => MessageMedia, 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', ]; +``` diff --git a/docs/API_docs/constructors/updateShort.md b/docs/API_docs/constructors/updateShort.md new file mode 100644 index 0000000000..a8efd70f97 --- /dev/null +++ b/docs/API_docs/constructors/updateShort.md @@ -0,0 +1,30 @@ +--- +title: "updateShort" +description: "Shortened constructor containing info on one update not requiring auxiliary data" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateShort +[Back to constructors index](/API_docs/constructors/index.html) + + + +Shortened constructor containing info on one update not requiring auxiliary data + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|update|[Update](/API_docs/types/Update.html) | Yes|Update| +|date|[int](/API_docs/types/int.html) | Yes|Date of event| + + + +### Type: [Updates](/API_docs/types/Updates.html) + + +### Example: + +``` +$updateShort = ['_' => 'updateShort', 'update' => Update, 'date' => int]; +``` diff --git a/docs/API_docs/constructors/updateShortChatMessage.md b/docs/API_docs/constructors/updateShortChatMessage.md new file mode 100644 index 0000000000..3bcd157303 --- /dev/null +++ b/docs/API_docs/constructors/updateShortChatMessage.md @@ -0,0 +1,105 @@ +--- +title: "updateShortChatMessage" +description: "Shortened constructor containing info on one new incoming text message from a chat" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateShortChatMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Shortened constructor containing info on one new incoming text message from a chat + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|out|[Bool](/API_docs/types/Bool.html) | Optional|Whether the message is outgoing| +|mentioned|[Bool](/API_docs/types/Bool.html) | Optional|Whether we were mentioned in this message| +|media\_unread|[Bool](/API_docs/types/Bool.html) | Optional|Whether the message contains some **unread** mentions| +|silent|[Bool](/API_docs/types/Bool.html) | Optional|If true, the message is a silent message, no notifications should be triggered| +|id|[int](/API_docs/types/int.html) | Yes|ID of the message| +|from\_id|[long](/API_docs/types/long.html) | Yes|ID of the sender of the message| +|chat\_id|[long](/API_docs/types/long.html) | Yes|ID of the chat where the message was sent| +|message|[string](/API_docs/types/string.html) | Yes|Message| +|pts|[int](/API_docs/types/int.html) | Yes|[PTS](https://core.telegram.org/api/updates)| +|pts\_count|[int](/API_docs/types/int.html) | Yes|[PTS count](https://core.telegram.org/api/updates)| +|date|[int](/API_docs/types/int.html) | Yes|[date](https://core.telegram.org/api/updates)| +|fwd\_from|[MessageFwdHeader](/API_docs/types/MessageFwdHeader.html) | Optional|Info about a forwarded message| +|via\_bot\_id|[long](/API_docs/types/long.html) | Optional|Info about the inline bot used to generate this message| +|reply\_to|[MessageReplyHeader](/API_docs/types/MessageReplyHeader.html) | Optional|Reply (thread) information| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|[Entities](https://core.telegram.org/api/entities) for styled text| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|ttl\_period|[int](/API_docs/types/int.html) | Optional|Time To Live of the message, once updateShortChatMessage.date+updateShortChatMessage.ttl\_period === time(), the message will be deleted on the server, and must be deleted locally as well.| + + + +### Type: [Updates](/API_docs/types/Updates.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$updateShortChatMessage = ['_' => 'updateShortChatMessage', 'out' => Bool, 'mentioned' => Bool, 'media_unread' => Bool, 'silent' => Bool, 'id' => int, 'from_id' => long, 'chat_id' => long, 'message' => 'string', 'pts' => int, 'pts_count' => int, 'date' => int, 'fwd_from' => MessageFwdHeader, 'via_bot_id' => long, 'reply_to' => MessageReplyHeader, 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'ttl_period' => int]; +``` diff --git a/docs/API_docs/constructors/updateShortMessage.md b/docs/API_docs/constructors/updateShortMessage.md new file mode 100644 index 0000000000..4883f26903 --- /dev/null +++ b/docs/API_docs/constructors/updateShortMessage.md @@ -0,0 +1,104 @@ +--- +title: "updateShortMessage" +description: "Info about a message sent to (received from) another user" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateShortMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about a message sent to (received from) another user + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|out|[Bool](/API_docs/types/Bool.html) | Optional|Whether the message is outgoing| +|mentioned|[Bool](/API_docs/types/Bool.html) | Optional|Whether we were mentioned in the message| +|media\_unread|[Bool](/API_docs/types/Bool.html) | Optional|Whether there are some **unread** mentions in this message| +|silent|[Bool](/API_docs/types/Bool.html) | Optional|If true, the message is a silent message, no notifications should be triggered| +|id|[int](/API_docs/types/int.html) | Yes|The message ID| +|user\_id|[long](/API_docs/types/long.html) | Yes|The ID of the sender (if `outgoing` will be the ID of the destination) of the message| +|message|[string](/API_docs/types/string.html) | Yes|The message| +|pts|[int](/API_docs/types/int.html) | Yes|[PTS](https://core.telegram.org/api/updates)| +|pts\_count|[int](/API_docs/types/int.html) | Yes|[PTS count](https://core.telegram.org/api/updates)| +|date|[int](/API_docs/types/int.html) | Yes|[date](https://core.telegram.org/api/updates)| +|fwd\_from|[MessageFwdHeader](/API_docs/types/MessageFwdHeader.html) | Optional|Info about a forwarded message| +|via\_bot\_id|[long](/API_docs/types/long.html) | Optional|Info about the inline bot used to generate this message| +|reply\_to|[MessageReplyHeader](/API_docs/types/MessageReplyHeader.html) | Optional|Reply and [thread](https://core.telegram.org/api/threads) information| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|[Entities](https://core.telegram.org/api/entities) for styled text| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|ttl\_period|[int](/API_docs/types/int.html) | Optional|Time To Live of the message, once message.date+message.ttl\_period === time(), the message will be deleted on the server, and must be deleted locally as well.| + + + +### Type: [Updates](/API_docs/types/Updates.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$updateShortMessage = ['_' => 'updateShortMessage', 'out' => Bool, 'mentioned' => Bool, 'media_unread' => Bool, 'silent' => Bool, 'id' => int, 'user_id' => long, 'message' => 'string', 'pts' => int, 'pts_count' => int, 'date' => int, 'fwd_from' => MessageFwdHeader, 'via_bot_id' => long, 'reply_to' => MessageReplyHeader, 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'ttl_period' => int]; +``` diff --git a/docs/API_docs/constructors/updateShortSentMessage.md b/docs/API_docs/constructors/updateShortSentMessage.md new file mode 100644 index 0000000000..ba61a35995 --- /dev/null +++ b/docs/API_docs/constructors/updateShortSentMessage.md @@ -0,0 +1,97 @@ +--- +title: "updateShortSentMessage" +description: "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)." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateShortSentMessage +[Back to constructors index](/API_docs/constructors/index.html) + + + +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). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|out|[Bool](/API_docs/types/Bool.html) | Optional|Whether the message is outgoing| +|id|[int](/API_docs/types/int.html) | Yes|ID of the sent message| +|pts|[int](/API_docs/types/int.html) | Yes|[PTS](https://core.telegram.org/api/updates)| +|pts\_count|[int](/API_docs/types/int.html) | Yes|[PTS count](https://core.telegram.org/api/updates)| +|date|[int](/API_docs/types/int.html) | Yes|[date](https://core.telegram.org/api/updates)| +|media|[MessageMedia](/API_docs/types/MessageMedia.html) | Optional|Attached media| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Optional|[Entities](https://core.telegram.org/api/entities) for styled text| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|ttl\_period|[int](/API_docs/types/int.html) | Optional|Time To Live of the message, once message.date+message.ttl\_period === time(), the message will be deleted on the server, and must be deleted locally as well.| + + + +### Type: [Updates](/API_docs/types/Updates.html) + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + +### Example: + +``` +$updateShortSentMessage = ['_' => 'updateShortSentMessage', 'out' => Bool, 'id' => int, 'pts' => int, 'pts_count' => int, 'date' => int, 'media' => MessageMedia, 'entities' => [MessageEntity, MessageEntity]parse_mode: 'string', , 'ttl_period' => int]; +``` diff --git a/docs/API_docs/constructors/updateSmsJob.md b/docs/API_docs/constructors/updateSmsJob.md new file mode 100644 index 0000000000..381bd6dbde --- /dev/null +++ b/docs/API_docs/constructors/updateSmsJob.md @@ -0,0 +1,27 @@ +--- +title: "updateSmsJob" +description: "updateSmsJob attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateSmsJob +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|job\_id|[string](/API_docs/types/string.html) | Yes| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateSmsJob = ['_' => 'updateSmsJob', 'job_id' => 'string']; +``` diff --git a/docs/API_docs/constructors/updateStickerSets.md b/docs/API_docs/constructors/updateStickerSets.md new file mode 100644 index 0000000000..290af8486e --- /dev/null +++ b/docs/API_docs/constructors/updateStickerSets.md @@ -0,0 +1,30 @@ +--- +title: "updateStickerSets" +description: "Installed stickersets have changed, the client should refetch them as described in the docs." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateStickerSets +[Back to constructors index](/API_docs/constructors/index.html) + + + +Installed stickersets have changed, the client should refetch them as [described in the docs](https://core.telegram.org/api/stickers#installing-stickersets). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|masks|[Bool](/API_docs/types/Bool.html) | Optional|Whether mask stickersets have changed| +|emojis|[Bool](/API_docs/types/Bool.html) | Optional|Whether the list of installed [custom emoji stickersets](https://core.telegram.org/api/custom-emoji) has changed| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateStickerSets = ['_' => 'updateStickerSets', 'masks' => Bool, 'emojis' => Bool]; +``` diff --git a/docs/API_docs/constructors/updateStickerSetsOrder.md b/docs/API_docs/constructors/updateStickerSetsOrder.md new file mode 100644 index 0000000000..dfed1f5b64 --- /dev/null +++ b/docs/API_docs/constructors/updateStickerSetsOrder.md @@ -0,0 +1,31 @@ +--- +title: "updateStickerSetsOrder" +description: "The order of stickersets was changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateStickerSetsOrder +[Back to constructors index](/API_docs/constructors/index.html) + + + +The order of stickersets was changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|masks|[Bool](/API_docs/types/Bool.html) | Optional|Whether the updated stickers are mask stickers| +|emojis|[Bool](/API_docs/types/Bool.html) | Optional|Whether the updated stickers are custom emoji stickers| +|order|Array of [long](/API_docs/types/long.html) | Yes|New sticker order by sticker ID| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateStickerSetsOrder = ['_' => 'updateStickerSetsOrder', 'masks' => Bool, 'emojis' => Bool, 'order' => [long, long]]; +``` diff --git a/docs/API_docs/constructors/updateStoriesStealthMode.md b/docs/API_docs/constructors/updateStoriesStealthMode.md new file mode 100644 index 0000000000..55de54e6ef --- /dev/null +++ b/docs/API_docs/constructors/updateStoriesStealthMode.md @@ -0,0 +1,29 @@ +--- +title: "updateStoriesStealthMode" +description: "Indicates that stories stealth mode was activated." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateStoriesStealthMode +[Back to constructors index](/API_docs/constructors/index.html) + + + +Indicates that [stories stealth mode](https://core.telegram.org/api/stories#stealth-mode) was activated. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|stealth\_mode|[StoriesStealthMode](/API_docs/types/StoriesStealthMode.html) | Yes|Information about the current [stealth mode](https://core.telegram.org/api/stories#stealth-mode) session.| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateStoriesStealthMode = ['_' => 'updateStoriesStealthMode', 'stealth_mode' => StoriesStealthMode]; +``` diff --git a/docs/API_docs/constructors/updateStory.md b/docs/API_docs/constructors/updateStory.md new file mode 100644 index 0000000000..fda66a4e46 --- /dev/null +++ b/docs/API_docs/constructors/updateStory.md @@ -0,0 +1,30 @@ +--- +title: "updateStory" +description: "A new story was posted." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateStory +[Back to constructors index](/API_docs/constructors/index.html) + + + +A new story was posted. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|ID of the poster.| +|story|[StoryItem](/API_docs/types/StoryItem.html) | Yes|The story that was posted.| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateStory = ['_' => 'updateStory', 'peer' => long, 'story' => StoryItem]; +``` diff --git a/docs/API_docs/constructors/updateStoryID.md b/docs/API_docs/constructors/updateStoryID.md new file mode 100644 index 0000000000..c66d88c7bc --- /dev/null +++ b/docs/API_docs/constructors/updateStoryID.md @@ -0,0 +1,31 @@ +--- +title: "updateStoryID" +description: "A story was successfully uploaded." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateStoryID +[Back to constructors index](/API_docs/constructors/index.html) + + + +A story was successfully uploaded. + +Once a story is successfully uploaded, an [updateStoryID](../constructors/updateStoryID.html) will be returned, indicating the story ID (`id`) that was attributed to the story (like for messages, `random_id` indicates the `random_id` that was passed to [stories.sendStory](../methods/stories.sendStory.html): this way, you can tell which story was assigned a specific `id` by checking which [stories.sendStory](../methods/stories.sendStory.html) call has the returned `random_id`). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[int](/API_docs/types/int.html) | Yes|The `id` that was attributed to the story.| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateStoryID = ['_' => 'updateStoryID', 'id' => int]; +``` diff --git a/docs/API_docs/constructors/updateTheme.md b/docs/API_docs/constructors/updateTheme.md new file mode 100644 index 0000000000..c5b0bda51a --- /dev/null +++ b/docs/API_docs/constructors/updateTheme.md @@ -0,0 +1,29 @@ +--- +title: "updateTheme" +description: "A cloud theme was updated" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateTheme +[Back to constructors index](/API_docs/constructors/index.html) + + + +A cloud theme was updated + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|theme|[Theme](/API_docs/types/Theme.html) | Yes|Theme| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateTheme = ['_' => 'updateTheme', 'theme' => Theme]; +``` diff --git a/docs/API_docs/constructors/updateTranscribedAudio.md b/docs/API_docs/constructors/updateTranscribedAudio.md new file mode 100644 index 0000000000..420df5c503 --- /dev/null +++ b/docs/API_docs/constructors/updateTranscribedAudio.md @@ -0,0 +1,33 @@ +--- +title: "updateTranscribedAudio" +description: "A pending voice message transcription » initiated with messages.transcribeAudio was updated." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateTranscribedAudio +[Back to constructors index](/API_docs/constructors/index.html) + + + +A pending [voice message transcription »](https://core.telegram.org/api/transcribe) initiated with [messages.transcribeAudio](../methods/messages.transcribeAudio.html) was updated. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|pending|[Bool](/API_docs/types/Bool.html) | Optional|Whether this transcription is still pending and further [updateTranscribedAudio](../constructors/updateTranscribedAudio.html) about it will be sent in the future.| +|peer|[long](/API_docs/types/long.html) | Yes|Peer of the transcribed message| +|msg\_id|[int](/API_docs/types/int.html) | Yes|Transcribed message ID| +|transcription\_id|[long](/API_docs/types/long.html) | Yes|Transcription ID| +|text|[string](/API_docs/types/string.html) | Yes|Transcribed text| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateTranscribedAudio = ['_' => 'updateTranscribedAudio', 'pending' => Bool, 'peer' => long, 'msg_id' => int, 'transcription_id' => long, 'text' => 'string']; +``` diff --git a/docs/API_docs/constructors/updateUser.md b/docs/API_docs/constructors/updateUser.md new file mode 100644 index 0000000000..687f3d834e --- /dev/null +++ b/docs/API_docs/constructors/updateUser.md @@ -0,0 +1,29 @@ +--- +title: "updateUser" +description: "User information was updated, it must be refetched using users.getFullUser." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateUser +[Back to constructors index](/API_docs/constructors/index.html) + + + +User information was updated, it must be refetched using [users.getFullUser](../methods/users.getFullUser.html). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|User ID| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateUser = ['_' => 'updateUser', 'user_id' => long]; +``` diff --git a/docs/API_docs/constructors/updateUserEmojiStatus.md b/docs/API_docs/constructors/updateUserEmojiStatus.md new file mode 100644 index 0000000000..8dc22243e5 --- /dev/null +++ b/docs/API_docs/constructors/updateUserEmojiStatus.md @@ -0,0 +1,30 @@ +--- +title: "updateUserEmojiStatus" +description: "The emoji status of a certain user has changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateUserEmojiStatus +[Back to constructors index](/API_docs/constructors/index.html) + + + +The [emoji status](https://core.telegram.org/api/emoji-status) of a certain user has changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|User ID| +|emoji\_status|[EmojiStatus](/API_docs/types/EmojiStatus.html) | Optional|New [emoji status](https://core.telegram.org/api/emoji-status)| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateUserEmojiStatus = ['_' => 'updateUserEmojiStatus', 'user_id' => long, 'emoji_status' => EmojiStatus]; +``` diff --git a/docs/API_docs/constructors/updateUserName.md b/docs/API_docs/constructors/updateUserName.md new file mode 100644 index 0000000000..bed45abac6 --- /dev/null +++ b/docs/API_docs/constructors/updateUserName.md @@ -0,0 +1,32 @@ +--- +title: "updateUserName" +description: "Changes the user's first name, last name and username." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateUserName +[Back to constructors index](/API_docs/constructors/index.html) + + + +Changes the user's first name, last name and username. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|User identifier| +|first\_name|[string](/API_docs/types/string.html) | Yes|New first name. Corresponds to the new value of **real\_first\_name** field of the [userFull](../constructors/userFull.html) constructor.| +|last\_name|[string](/API_docs/types/string.html) | Yes|New last name. Corresponds to the new value of **real\_last\_name** field of the [userFull](../constructors/userFull.html) constructor.| +|usernames|Array of [Username](/API_docs/types/Username.html) | Yes|Usernames.| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateUserName = ['_' => 'updateUserName', 'user_id' => long, 'first_name' => 'string', 'last_name' => 'string', 'usernames' => [Username, Username]]; +``` diff --git a/docs/API_docs/constructors/updateUserPhone.md b/docs/API_docs/constructors/updateUserPhone.md new file mode 100644 index 0000000000..6beaa3019d --- /dev/null +++ b/docs/API_docs/constructors/updateUserPhone.md @@ -0,0 +1,30 @@ +--- +title: "updateUserPhone" +description: "A user's phone number was changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateUserPhone +[Back to constructors index](/API_docs/constructors/index.html) + + + +A user's phone number was changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|User ID| +|phone|[string](/API_docs/types/string.html) | Yes|New phone number| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateUserPhone = ['_' => 'updateUserPhone', 'user_id' => long, 'phone' => 'string']; +``` diff --git a/docs/API_docs/constructors/updateUserStatus.md b/docs/API_docs/constructors/updateUserStatus.md new file mode 100644 index 0000000000..e8020b51c4 --- /dev/null +++ b/docs/API_docs/constructors/updateUserStatus.md @@ -0,0 +1,30 @@ +--- +title: "updateUserStatus" +description: "Contact status update." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateUserStatus +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contact status update. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|User identifier| +|status|[UserStatus](/API_docs/types/UserStatus.html) | Optional|New status| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateUserStatus = ['_' => 'updateUserStatus', 'user_id' => long, 'status' => UserStatus]; +``` diff --git a/docs/API_docs/constructors/updateUserTyping.md b/docs/API_docs/constructors/updateUserTyping.md new file mode 100644 index 0000000000..002a22a709 --- /dev/null +++ b/docs/API_docs/constructors/updateUserTyping.md @@ -0,0 +1,30 @@ +--- +title: "updateUserTyping" +description: "The user is preparing a message; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateUserTyping +[Back to constructors index](/API_docs/constructors/index.html) + + + +The user is preparing a message; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|user\_id|[long](/API_docs/types/long.html) | Yes|User id| +|action|[SendMessageAction](/API_docs/types/SendMessageAction.html) | Yes|Action type| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateUserTyping = ['_' => 'updateUserTyping', 'user_id' => long, 'action' => SendMessageAction]; +``` diff --git a/docs/API_docs/constructors/updateWebPage.md b/docs/API_docs/constructors/updateWebPage.md new file mode 100644 index 0000000000..6435882982 --- /dev/null +++ b/docs/API_docs/constructors/updateWebPage.md @@ -0,0 +1,31 @@ +--- +title: "updateWebPage" +description: "An instant view webpage preview was generated" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateWebPage +[Back to constructors index](/API_docs/constructors/index.html) + + + +An [instant view](https://instantview.telegram.org) webpage preview was generated + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|webpage|[WebPage](/API_docs/types/WebPage.html) | Optional|Webpage preview| +|pts|[int](/API_docs/types/int.html) | Yes|[Event count after generation](https://core.telegram.org/api/updates)| +|pts\_count|[int](/API_docs/types/int.html) | Yes|[Number of events that were generated](https://core.telegram.org/api/updates)| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateWebPage = ['_' => 'updateWebPage', 'webpage' => WebPage, 'pts' => int, 'pts_count' => int]; +``` diff --git a/docs/API_docs/constructors/updateWebViewResultSent.md b/docs/API_docs/constructors/updateWebViewResultSent.md new file mode 100644 index 0000000000..81b8cf668e --- /dev/null +++ b/docs/API_docs/constructors/updateWebViewResultSent.md @@ -0,0 +1,29 @@ +--- +title: "updateWebViewResultSent" +description: "Indicates to a bot that a webview was closed and an inline message was sent on behalf of the user using messages.sendWebViewResultMessage" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updateWebViewResultSent +[Back to constructors index](/API_docs/constructors/index.html) + + + +Indicates to a bot that a webview was closed and an inline message was sent on behalf of the user using [messages.sendWebViewResultMessage](../methods/messages.sendWebViewResultMessage.html) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|query\_id|[long](/API_docs/types/long.html) | Yes|Web app interaction ID| + + + +### Type: [Update](/API_docs/types/Update.html) + + +### Example: + +``` +$updateWebViewResultSent = ['_' => 'updateWebViewResultSent', 'query_id' => long]; +``` diff --git a/docs/API_docs/constructors/updates.channelDifference.md b/docs/API_docs/constructors/updates.channelDifference.md new file mode 100644 index 0000000000..0f4296968a --- /dev/null +++ b/docs/API_docs/constructors/updates.channelDifference.md @@ -0,0 +1,36 @@ +--- +title: "updates.channelDifference" +description: "The new updates" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/updates_channelDifference.html +--- +# Constructor: updates.channelDifference +[Back to constructors index](/API_docs/constructors/index.html) + + + +The new updates + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|final|[Bool](/API_docs/types/Bool.html) | Optional|Whether there are more updates to be fetched using getDifference, starting from the provided `pts`| +|pts|[int](/API_docs/types/int.html) | Yes|The [PTS](https://core.telegram.org/api/updates) from which to start getting updates the next time| +|timeout|[int](/API_docs/types/int.html) | Optional|Clients are supposed to refetch the channel difference after timeout seconds have elapsed| +|new\_messages|Array of [Message](/API_docs/types/Message.html) | Yes|New messages| +|other\_updates|Array of [Update](/API_docs/types/Update.html) | Yes|Other updates| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users| + + + +### Type: [updates.ChannelDifference](/API_docs/types/updates.ChannelDifference.html) + + +### Example: + +``` +$updates_channelDifference = ['_' => 'updates.channelDifference', 'final' => Bool, 'pts' => int, 'timeout' => int, 'new_messages' => [Message, Message], 'other_updates' => [Update, Update], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/updates.channelDifferenceEmpty.md b/docs/API_docs/constructors/updates.channelDifferenceEmpty.md new file mode 100644 index 0000000000..ca499226fb --- /dev/null +++ b/docs/API_docs/constructors/updates.channelDifferenceEmpty.md @@ -0,0 +1,32 @@ +--- +title: "updates.channelDifferenceEmpty" +description: "There are no new updates" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/updates_channelDifferenceEmpty.html +--- +# Constructor: updates.channelDifferenceEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +There are no new updates + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|final|[Bool](/API_docs/types/Bool.html) | Optional|Whether there are more updates that must be fetched (always false)| +|pts|[int](/API_docs/types/int.html) | Yes|The latest [PTS](https://core.telegram.org/api/updates)| +|timeout|[int](/API_docs/types/int.html) | Optional|Clients are supposed to refetch the channel difference after timeout seconds have elapsed| + + + +### Type: [updates.ChannelDifference](/API_docs/types/updates.ChannelDifference.html) + + +### Example: + +``` +$updates_channelDifferenceEmpty = ['_' => 'updates.channelDifferenceEmpty', 'final' => Bool, 'pts' => int, 'timeout' => int]; +``` diff --git a/docs/API_docs/constructors/updates.channelDifferenceTooLong.md b/docs/API_docs/constructors/updates.channelDifferenceTooLong.md new file mode 100644 index 0000000000..8c0f997de1 --- /dev/null +++ b/docs/API_docs/constructors/updates.channelDifferenceTooLong.md @@ -0,0 +1,50 @@ +--- +title: "updates.channelDifferenceTooLong" +description: "The provided pts + limit < remote pts. Simply, there are too many updates to be fetched (more than limit), the client has to resolve the update gap in one of the following ways (assuming the existence of a persistent database to locally store messages)" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/updates_channelDifferenceTooLong.html +--- +# Constructor: updates.channelDifferenceTooLong +[Back to constructors index](/API_docs/constructors/index.html) + + + +The provided `pts + limit < remote pts`. Simply, there are too many updates to be fetched (more than `limit`), the client has to resolve the update gap in one of the following ways (assuming the existence of a persistent database to locally store messages): + +1. Delete all known messages in the chat, begin from scratch by refetching all messages manually with [messages.getHistory](../methods/messages.getHistory.html). It is easy to implement, but suddenly disappearing messages look awful to the user. +2. Save all messages loaded in the memory until application restart, but delete all messages from the database. Messages left in the memory must be lazily updated using calls to [messages.getHistory](../methods/messages.getHistory.html). + It will look much smoother to the user, they will need to redownload messages only after client restart. + Unsynchronized messages left in memory shouldn't be saved to the database, results of [messages.getHistory](../methods/messages.getHistory.html) and [messages.getMessages](../methods/messages.getMessages.html) must be used to update the state of deleted and edited messages left in the memory. +3. Save all messages loaded in the memory and stored in the database without saving that some messages form continuous ranges. + Messages in the database will be excluded when paginating through or searching the local message history after application restart and will be available only through individual message queries. + Every message should still be checked using [messages.getHistory](../methods/messages.getHistory.html). + It has more disadvantages over 2) than advantages. +4. Save all messages with saving all data about continuous message ranges. + Messages from the database may be used when paginating through or searching the local message history. + The messages should still be lazily checked using [messages.getHistory](../methods/messages.getHistory.html), but they are still available offline. + It is the best way for gaps support, but it is pretty hard to implement correctly. + +It should be also noted that some messages like live location messages shouldn't be deleted. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|final|[Bool](/API_docs/types/Bool.html) | Optional|Whether there are more updates that must be fetched (always false)| +|timeout|[int](/API_docs/types/int.html) | Optional|Clients are supposed to refetch the channel difference after timeout seconds have elapsed| +|dialog|[Dialog](/API_docs/types/Dialog.html) | Yes|Dialog containing the latest [PTS](https://core.telegram.org/api/updates) that can be used to reset the channel state| +|messages|Array of [Message](/API_docs/types/Message.html) | Yes|The latest messages| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Chats from messages| +|users|Array of [User](/API_docs/types/User.html) | Yes|Users from messages| + + + +### Type: [updates.ChannelDifference](/API_docs/types/updates.ChannelDifference.html) + + +### Example: + +``` +$updates_channelDifferenceTooLong = ['_' => 'updates.channelDifferenceTooLong', 'final' => Bool, 'timeout' => int, 'dialog' => Dialog, 'messages' => [Message, Message], 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/updates.difference.md b/docs/API_docs/constructors/updates.difference.md new file mode 100644 index 0000000000..68f83ff511 --- /dev/null +++ b/docs/API_docs/constructors/updates.difference.md @@ -0,0 +1,35 @@ +--- +title: "updates.difference" +description: "Full list of occurred events." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/updates_difference.html +--- +# Constructor: updates.difference +[Back to constructors index](/API_docs/constructors/index.html) + + + +Full list of occurred events. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|new\_messages|Array of [Message](/API_docs/types/Message.html) | Yes|List of new messages| +|new\_encrypted\_messages|Array of [EncryptedMessage](/API_docs/types/EncryptedMessage.html) | Yes|List of new encrypted secret chat messages| +|other\_updates|Array of [Update](/API_docs/types/Update.html) | Yes|List of updates| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|List of chats mentioned in events| +|users|Array of [User](/API_docs/types/User.html) | Yes|List of users mentioned in events| +|state|[updates.State](/API_docs/constructors/updates.State.html) | Yes|Current state| + + + +### Type: [updates.Difference](/API_docs/types/updates.Difference.html) + + +### Example: + +``` +$updates_difference = ['_' => 'updates.difference', 'new_messages' => [Message, Message], 'new_encrypted_messages' => [EncryptedMessage, EncryptedMessage], 'other_updates' => [Update, Update], 'chats' => [Chat, Chat], 'users' => [User, User], 'state' => updates.State]; +``` diff --git a/docs/API_docs/constructors/updates.differenceEmpty.md b/docs/API_docs/constructors/updates.differenceEmpty.md new file mode 100644 index 0000000000..d934883965 --- /dev/null +++ b/docs/API_docs/constructors/updates.differenceEmpty.md @@ -0,0 +1,31 @@ +--- +title: "updates.differenceEmpty" +description: "No events." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/updates_differenceEmpty.html +--- +# Constructor: updates.differenceEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +No events. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|date|[int](/API_docs/types/int.html) | Yes|Current date| +|seq|[int](/API_docs/types/int.html) | Yes|Number of sent updates| + + + +### Type: [updates.Difference](/API_docs/types/updates.Difference.html) + + +### Example: + +``` +$updates_differenceEmpty = ['_' => 'updates.differenceEmpty', 'date' => int, 'seq' => int]; +``` diff --git a/docs/API_docs/constructors/updates.differenceSlice.md b/docs/API_docs/constructors/updates.differenceSlice.md new file mode 100644 index 0000000000..b381db482a --- /dev/null +++ b/docs/API_docs/constructors/updates.differenceSlice.md @@ -0,0 +1,35 @@ +--- +title: "updates.differenceSlice" +description: "Incomplete list of occurred events." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/updates_differenceSlice.html +--- +# Constructor: updates.differenceSlice +[Back to constructors index](/API_docs/constructors/index.html) + + + +Incomplete list of occurred events. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|new\_messages|Array of [Message](/API_docs/types/Message.html) | Yes|List of new messages| +|new\_encrypted\_messages|Array of [EncryptedMessage](/API_docs/types/EncryptedMessage.html) | Yes|New messages from the [encrypted event sequence](https://core.telegram.org/api/updates)| +|other\_updates|Array of [Update](/API_docs/types/Update.html) | Yes|List of updates| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|List of chats mentioned in events| +|users|Array of [User](/API_docs/types/User.html) | Yes|List of users mentioned in events| +|intermediate\_state|[updates.State](/API_docs/constructors/updates.State.html) | Yes|Intermediary state| + + + +### Type: [updates.Difference](/API_docs/types/updates.Difference.html) + + +### Example: + +``` +$updates_differenceSlice = ['_' => 'updates.differenceSlice', 'new_messages' => [Message, Message], 'new_encrypted_messages' => [EncryptedMessage, EncryptedMessage], 'other_updates' => [Update, Update], 'chats' => [Chat, Chat], 'users' => [User, User], 'intermediate_state' => updates.State]; +``` diff --git a/docs/API_docs/constructors/updates.differenceTooLong.md b/docs/API_docs/constructors/updates.differenceTooLong.md new file mode 100644 index 0000000000..ef7445040a --- /dev/null +++ b/docs/API_docs/constructors/updates.differenceTooLong.md @@ -0,0 +1,30 @@ +--- +title: "updates.differenceTooLong" +description: "The difference is too long, and the specified state must be used to refetch updates." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/updates_differenceTooLong.html +--- +# Constructor: updates.differenceTooLong +[Back to constructors index](/API_docs/constructors/index.html) + + + +The difference is [too long](https://core.telegram.org/api/updates#recovering-gaps), and the specified state must be used to refetch updates. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|pts|[int](/API_docs/types/int.html) | Yes|The new state to use.| + + + +### Type: [updates.Difference](/API_docs/types/updates.Difference.html) + + +### Example: + +``` +$updates_differenceTooLong = ['_' => 'updates.differenceTooLong', 'pts' => int]; +``` diff --git a/docs/API_docs/constructors/updates.md b/docs/API_docs/constructors/updates.md new file mode 100644 index 0000000000..de48a4a249 --- /dev/null +++ b/docs/API_docs/constructors/updates.md @@ -0,0 +1,33 @@ +--- +title: "updates" +description: "Full constructor of updates" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updates +[Back to constructors index](/API_docs/constructors/index.html) + + + +Full constructor of updates + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|updates|Array of [Update](/API_docs/types/Update.html) | Yes|List of updates| +|users|Array of [User](/API_docs/types/User.html) | Yes|List of users mentioned in updates| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|List of chats mentioned in updates| +|date|[int](/API_docs/types/int.html) | Yes|Current date| +|seq|[int](/API_docs/types/int.html) | Yes|Total number of sent updates| + + + +### Type: [Updates](/API_docs/types/Updates.html) + + +### Example: + +``` +$updates = ['_' => 'updates', 'updates' => [Update, Update], 'users' => [User, User], 'chats' => [Chat, Chat], 'date' => int, 'seq' => int]; +``` diff --git a/docs/API_docs/constructors/updates.state.md b/docs/API_docs/constructors/updates.state.md new file mode 100644 index 0000000000..2290f3c476 --- /dev/null +++ b/docs/API_docs/constructors/updates.state.md @@ -0,0 +1,34 @@ +--- +title: "updates.state" +description: "Updates state." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/updates_state.html +--- +# Constructor: updates.state +[Back to constructors index](/API_docs/constructors/index.html) + + + +Updates state. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|pts|[int](/API_docs/types/int.html) | Yes|Number of events occurred in a text box| +|qts|[int](/API_docs/types/int.html) | Yes|Position in a sequence of updates in secret chats. For further details refer to article [secret chats](https://core.telegram.org/api/end-to-end)| +|date|[int](/API_docs/types/int.html) | Yes|Date of condition| +|seq|[int](/API_docs/types/int.html) | Yes|Number of sent updates| +|unread\_count|[int](/API_docs/types/int.html) | Yes|Number of unread messages| + + + +### Type: [updates.State](/API_docs/types/updates.State.html) + + +### Example: + +``` +$updates_state = ['_' => 'updates.state', 'pts' => int, 'qts' => int, 'date' => int, 'seq' => int, 'unread_count' => int]; +``` diff --git a/docs/API_docs/constructors/updatesCombined.md b/docs/API_docs/constructors/updatesCombined.md new file mode 100644 index 0000000000..661614d9ec --- /dev/null +++ b/docs/API_docs/constructors/updatesCombined.md @@ -0,0 +1,34 @@ +--- +title: "updatesCombined" +description: "Constructor for a group of updates." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updatesCombined +[Back to constructors index](/API_docs/constructors/index.html) + + + +Constructor for a group of updates. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|updates|Array of [Update](/API_docs/types/Update.html) | Yes|List of updates| +|users|Array of [User](/API_docs/types/User.html) | Yes|List of users mentioned in updates| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|List of chats mentioned in updates| +|date|[int](/API_docs/types/int.html) | Yes|Current date| +|seq\_start|[int](/API_docs/types/int.html) | Yes|Value **seq** for the earliest update in a group| +|seq|[int](/API_docs/types/int.html) | Yes|Value **seq** for the latest update in a group| + + + +### Type: [Updates](/API_docs/types/Updates.html) + + +### Example: + +``` +$updatesCombined = ['_' => 'updatesCombined', 'updates' => [Update, Update], 'users' => [User, User], 'chats' => [Chat, Chat], 'date' => int, 'seq_start' => int, 'seq' => int]; +``` diff --git a/docs/API_docs/constructors/updatesTooLong.md b/docs/API_docs/constructors/updatesTooLong.md new file mode 100644 index 0000000000..064cdc72f1 --- /dev/null +++ b/docs/API_docs/constructors/updatesTooLong.md @@ -0,0 +1,24 @@ +--- +title: "updatesTooLong" +description: "Too many updates, it is necessary to execute updates.getDifference." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: updatesTooLong +[Back to constructors index](/API_docs/constructors/index.html) + + + +Too many updates, it is necessary to execute [updates.getDifference](../methods/updates.getDifference.html). + + + + +### Type: [Updates](/API_docs/types/Updates.html) + + +### Example: + +``` +$updatesTooLong = ['_' => 'updatesTooLong']; +``` diff --git a/docs/API_docs/constructors/upload.cdnFile.md b/docs/API_docs/constructors/upload.cdnFile.md new file mode 100644 index 0000000000..f3a0b246e9 --- /dev/null +++ b/docs/API_docs/constructors/upload.cdnFile.md @@ -0,0 +1,30 @@ +--- +title: "upload.cdnFile" +description: "Represent a chunk of a CDN file." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/upload_cdnFile.html +--- +# Constructor: upload.cdnFile +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represent a chunk of a [CDN](https://core.telegram.org/cdn) file. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|bytes|[bytes](/API_docs/types/bytes.html) | Yes|The data| + + + +### Type: [upload.CdnFile](/API_docs/types/upload.CdnFile.html) + + +### Example: + +``` +$upload_cdnFile = ['_' => 'upload.cdnFile', 'bytes' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/upload.cdnFileReuploadNeeded.md b/docs/API_docs/constructors/upload.cdnFileReuploadNeeded.md new file mode 100644 index 0000000000..afff9a780e --- /dev/null +++ b/docs/API_docs/constructors/upload.cdnFileReuploadNeeded.md @@ -0,0 +1,30 @@ +--- +title: "upload.cdnFileReuploadNeeded" +description: "The file was cleared from the temporary RAM cache of the CDN and has to be re-uploaded." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/upload_cdnFileReuploadNeeded.html +--- +# Constructor: upload.cdnFileReuploadNeeded +[Back to constructors index](/API_docs/constructors/index.html) + + + +The file was cleared from the temporary RAM cache of the [CDN](https://core.telegram.org/cdn) and has to be re-uploaded. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|request\_token|[bytes](/API_docs/types/bytes.html) | Yes|Request token (see [CDN](https://core.telegram.org/cdn))| + + + +### Type: [upload.CdnFile](/API_docs/types/upload.CdnFile.html) + + +### Example: + +``` +$upload_cdnFileReuploadNeeded = ['_' => 'upload.cdnFileReuploadNeeded', 'request_token' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/upload.file.md b/docs/API_docs/constructors/upload.file.md new file mode 100644 index 0000000000..15e21d988a --- /dev/null +++ b/docs/API_docs/constructors/upload.file.md @@ -0,0 +1,32 @@ +--- +title: "upload.file" +description: "File content." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/upload_file.html +--- +# Constructor: upload.file +[Back to constructors index](/API_docs/constructors/index.html) + + + +File content. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[storage.FileType](/API_docs/constructors/storage.FileType.html) | Yes|File type| +|mtime|[int](/API_docs/types/int.html) | Yes|Modification time| +|bytes|[bytes](/API_docs/types/bytes.html) | Yes|Binary data, file content| + + + +### Type: [upload.File](/API_docs/types/upload.File.html) + + +### Example: + +``` +$upload_file = ['_' => 'upload.file', 'type' => storage.FileType, 'mtime' => int, 'bytes' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/upload.fileCdnRedirect.md b/docs/API_docs/constructors/upload.fileCdnRedirect.md new file mode 100644 index 0000000000..789939684e --- /dev/null +++ b/docs/API_docs/constructors/upload.fileCdnRedirect.md @@ -0,0 +1,34 @@ +--- +title: "upload.fileCdnRedirect" +description: "The file must be downloaded from a CDN DC." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/upload_fileCdnRedirect.html +--- +# Constructor: upload.fileCdnRedirect +[Back to constructors index](/API_docs/constructors/index.html) + + + +The file must be downloaded from a [CDN DC](https://core.telegram.org/cdn). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|dc\_id|[int](/API_docs/types/int.html) | Yes|[CDN DC](https://core.telegram.org/cdn) ID| +|file\_token|[string](/API_docs/types/string.html) | Yes| +|encryption\_key|[string](/API_docs/types/string.html) | Yes| +|encryption\_iv|[string](/API_docs/types/string.html) | Yes| +|file\_hashes|Array of [FileHash](/API_docs/types/FileHash.html) | Yes|File hashes (see [CDN files](https://core.telegram.org/cdn))| + + + +### Type: [upload.File](/API_docs/types/upload.File.html) + + +### Example: + +``` +$upload_fileCdnRedirect = ['_' => 'upload.fileCdnRedirect', 'dc_id' => int, 'file_token' => 'string', 'encryption_key' => 'string', 'encryption_iv' => 'string', 'file_hashes' => [FileHash, FileHash]]; +``` diff --git a/docs/API_docs/constructors/upload.webFile.md b/docs/API_docs/constructors/upload.webFile.md new file mode 100644 index 0000000000..46ed1724ef --- /dev/null +++ b/docs/API_docs/constructors/upload.webFile.md @@ -0,0 +1,34 @@ +--- +title: "upload.webFile" +description: "Represents a chunk of an HTTP webfile downloaded through telegram's secure MTProto servers" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/upload_webFile.html +--- +# Constructor: upload.webFile +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a chunk of an [HTTP webfile](https://core.telegram.org/api/files) downloaded through telegram's secure MTProto servers + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|size|[int](/API_docs/types/int.html) | Yes|File size| +|mime\_type|[string](/API_docs/types/string.html) | Yes|Mime type| +|file\_type|[storage.FileType](/API_docs/constructors/storage.FileType.html) | Yes|File type| +|mtime|[int](/API_docs/types/int.html) | Yes|Modified time| +|bytes|[bytes](/API_docs/types/bytes.html) | Yes|Data| + + + +### Type: [upload.WebFile](/API_docs/types/upload.WebFile.html) + + +### Example: + +``` +$upload_webFile = ['_' => 'upload.webFile', 'size' => int, 'mime_type' => 'string', 'file_type' => storage.FileType, 'mtime' => int, 'bytes' => 'bytes']; +``` diff --git a/docs/API_docs/constructors/urlAuthResultAccepted.md b/docs/API_docs/constructors/urlAuthResultAccepted.md new file mode 100644 index 0000000000..49d92b83eb --- /dev/null +++ b/docs/API_docs/constructors/urlAuthResultAccepted.md @@ -0,0 +1,29 @@ +--- +title: "urlAuthResultAccepted" +description: "Details about an accepted authorization request, for more info click here »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: urlAuthResultAccepted +[Back to constructors index](/API_docs/constructors/index.html) + + + +Details about an accepted authorization request, for more info [click here »](https://core.telegram.org/api/url-authorization) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|The URL name of the website on which the user has logged in.| + + + +### Type: [UrlAuthResult](/API_docs/types/UrlAuthResult.html) + + +### Example: + +``` +$urlAuthResultAccepted = ['_' => 'urlAuthResultAccepted', 'url' => 'string']; +``` diff --git a/docs/API_docs/constructors/urlAuthResultDefault.md b/docs/API_docs/constructors/urlAuthResultDefault.md new file mode 100644 index 0000000000..7637a8c98a --- /dev/null +++ b/docs/API_docs/constructors/urlAuthResultDefault.md @@ -0,0 +1,24 @@ +--- +title: "urlAuthResultDefault" +description: "Details about an accepted authorization request, for more info click here »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: urlAuthResultDefault +[Back to constructors index](/API_docs/constructors/index.html) + + + +Details about an accepted authorization request, for more info [click here »](https://core.telegram.org/api/url-authorization) + + + + +### Type: [UrlAuthResult](/API_docs/types/UrlAuthResult.html) + + +### Example: + +``` +$urlAuthResultDefault = ['_' => 'urlAuthResultDefault']; +``` diff --git a/docs/API_docs/constructors/urlAuthResultRequest.md b/docs/API_docs/constructors/urlAuthResultRequest.md new file mode 100644 index 0000000000..09ce94bcb6 --- /dev/null +++ b/docs/API_docs/constructors/urlAuthResultRequest.md @@ -0,0 +1,31 @@ +--- +title: "urlAuthResultRequest" +description: "Details about the authorization request, for more info click here »" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: urlAuthResultRequest +[Back to constructors index](/API_docs/constructors/index.html) + + + +Details about the authorization request, for more info [click here »](https://core.telegram.org/api/url-authorization) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|request\_write\_access|[Bool](/API_docs/types/Bool.html) | Optional|Whether the bot would like to send messages to the user| +|bot|[User](/API_docs/types/User.html) | Optional|Username of a bot, which will be used for user authorization. If not specified, the current bot's username will be assumed. The url's domain must be the same as the domain linked with the bot. See [Linking your domain to the bot](https://core.telegram.org/widgets/login#linking-your-domain-to-the-bot) for more details.| +|domain|[string](/API_docs/types/string.html) | Yes|The domain name of the website on which the user will log in.| + + + +### Type: [UrlAuthResult](/API_docs/types/UrlAuthResult.html) + + +### Example: + +``` +$urlAuthResultRequest = ['_' => 'urlAuthResultRequest', 'request_write_access' => Bool, 'bot' => User, 'domain' => 'string']; +``` diff --git a/docs/API_docs/constructors/user.md b/docs/API_docs/constructors/user.md new file mode 100644 index 0000000000..029fdc4ac6 --- /dev/null +++ b/docs/API_docs/constructors/user.md @@ -0,0 +1,69 @@ +--- +title: "user" +description: "Indicates info about a certain user" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: user +[Back to constructors index](/API_docs/constructors/index.html) + + + +Indicates info about a certain user + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|self|[Bool](/API_docs/types/Bool.html) | Optional|Whether this user indicates the currently logged in user| +|contact|[Bool](/API_docs/types/Bool.html) | Optional|Whether this user is a contact| +|mutual\_contact|[Bool](/API_docs/types/Bool.html) | Optional|Whether this user is a mutual contact| +|deleted|[Bool](/API_docs/types/Bool.html) | Optional|Whether the account of this user was deleted| +|bot|[Bool](/API_docs/types/Bool.html) | Optional|Is this user a bot?| +|bot\_chat\_history|[Bool](/API_docs/types/Bool.html) | Optional|Can the bot see all messages in groups?| +|bot\_nochats|[Bool](/API_docs/types/Bool.html) | Optional|Can the bot be added to groups?| +|verified|[Bool](/API_docs/types/Bool.html) | Optional|Whether this user is verified| +|restricted|[Bool](/API_docs/types/Bool.html) | Optional|Access to this user must be restricted for the reason specified in `restriction_reason`| +|min|[Bool](/API_docs/types/Bool.html) | Optional|See [min](https://core.telegram.org/api/min)| +|bot\_inline\_geo|[Bool](/API_docs/types/Bool.html) | Optional|Whether the bot can request our geolocation in inline mode| +|support|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is an official support user| +|scam|[Bool](/API_docs/types/Bool.html) | Optional|This may be a scam user| +|apply\_min\_photo|[Bool](/API_docs/types/Bool.html) | Optional|If set, the profile picture for this user should be refetched| +|fake|[Bool](/API_docs/types/Bool.html) | Optional|If set, this user was reported by many users as a fake or scam user: be careful when interacting with them.| +|bot\_attach\_menu|[Bool](/API_docs/types/Bool.html) | Optional|Whether this bot offers an [attachment menu web app](https://core.telegram.org/api/bots/attach)| +|premium|[Bool](/API_docs/types/Bool.html) | Optional|Whether this user is a Telegram Premium user| +|attach\_menu\_enabled|[Bool](/API_docs/types/Bool.html) | Optional|Whether we installed the [attachment menu web app](https://core.telegram.org/api/bots/attach) offered by this bot| +|bot\_can\_edit|[Bool](/API_docs/types/Bool.html) | Optional| +|close\_friend|[Bool](/API_docs/types/Bool.html) | Optional| +|stories\_hidden|[Bool](/API_docs/types/Bool.html) | Optional| +|stories\_unavailable|[Bool](/API_docs/types/Bool.html) | Optional| +|contact\_require\_premium|[Bool](/API_docs/types/Bool.html) | Optional| +|bot\_business|[Bool](/API_docs/types/Bool.html) | Optional| +|id|[long](/API_docs/types/long.html) | Yes|ID of the user| +|access\_hash|[long](/API_docs/types/long.html) | Optional|Access hash of the user| +|first\_name|[string](/API_docs/types/string.html) | Optional|First name| +|last\_name|[string](/API_docs/types/string.html) | Optional|Last name| +|username|[string](/API_docs/types/string.html) | Optional|Username| +|phone|[string](/API_docs/types/string.html) | Optional|Phone number| +|photo|[UserProfilePhoto](/API_docs/types/UserProfilePhoto.html) | Optional|Profile picture of user| +|status|[UserStatus](/API_docs/types/UserStatus.html) | Optional|Online status of user| +|bot\_info\_version|[int](/API_docs/types/int.html) | Optional|Version of the [bot\_info field in userFull](../constructors/userFull.html), incremented every time it changes| +|restriction\_reason|Array of [RestrictionReason](/API_docs/types/RestrictionReason.html) | Optional|Contains the reason why access to this user must be restricted.| +|bot\_inline\_placeholder|[string](/API_docs/types/string.html) | Optional|Inline placeholder for this inline bot| +|lang\_code|[string](/API_docs/types/string.html) | Optional|Language code of the user| +|emoji\_status|[EmojiStatus](/API_docs/types/EmojiStatus.html) | Optional|[Emoji status](https://core.telegram.org/api/emoji-status)| +|usernames|Array of [Username](/API_docs/types/Username.html) | Optional| +|stories\_max\_id|[int](/API_docs/types/int.html) | Optional| +|color|[PeerColor](/API_docs/types/PeerColor.html) | Optional| +|profile\_color|[PeerColor](/API_docs/types/PeerColor.html) | Optional| + + + +### Type: [User](/API_docs/types/User.html) + + +### Example: + +``` +$user = ['_' => 'user', 'self' => Bool, 'contact' => Bool, 'mutual_contact' => Bool, 'deleted' => Bool, 'bot' => Bool, 'bot_chat_history' => Bool, 'bot_nochats' => Bool, 'verified' => Bool, 'restricted' => Bool, 'min' => Bool, 'bot_inline_geo' => Bool, 'support' => Bool, 'scam' => Bool, 'apply_min_photo' => Bool, 'fake' => Bool, 'bot_attach_menu' => Bool, 'premium' => Bool, 'attach_menu_enabled' => Bool, 'bot_can_edit' => Bool, 'close_friend' => Bool, 'stories_hidden' => Bool, 'stories_unavailable' => Bool, 'contact_require_premium' => Bool, 'bot_business' => Bool, 'id' => long, 'access_hash' => long, 'first_name' => 'string', 'last_name' => 'string', 'username' => 'string', 'phone' => 'string', 'photo' => UserProfilePhoto, 'status' => UserStatus, 'bot_info_version' => int, 'restriction_reason' => [RestrictionReason, RestrictionReason], 'bot_inline_placeholder' => 'string', 'lang_code' => 'string', 'emoji_status' => EmojiStatus, 'usernames' => [Username, Username], 'stories_max_id' => int, 'color' => PeerColor, 'profile_color' => PeerColor]; +``` diff --git a/docs/API_docs/constructors/userEmpty.md b/docs/API_docs/constructors/userEmpty.md new file mode 100644 index 0000000000..5d343246ef --- /dev/null +++ b/docs/API_docs/constructors/userEmpty.md @@ -0,0 +1,29 @@ +--- +title: "userEmpty" +description: "Empty constructor, non-existent user." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: userEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Empty constructor, non-existent user. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|User identifier or `0`| + + + +### Type: [User](/API_docs/types/User.html) + + +### Example: + +``` +$userEmpty = ['_' => 'userEmpty', 'id' => long]; +``` diff --git a/docs/API_docs/constructors/userFull.md b/docs/API_docs/constructors/userFull.md new file mode 100644 index 0000000000..1fa07d227a --- /dev/null +++ b/docs/API_docs/constructors/userFull.md @@ -0,0 +1,69 @@ +--- +title: "userFull" +description: "Extended user info" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: userFull +[Back to constructors index](/API_docs/constructors/index.html) + + + +Extended user info + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|blocked|[Bool](/API_docs/types/Bool.html) | Optional|Whether you have blocked this user| +|phone\_calls\_available|[Bool](/API_docs/types/Bool.html) | Optional|Whether this user can make VoIP calls| +|phone\_calls\_private|[Bool](/API_docs/types/Bool.html) | Optional|Whether this user's privacy settings allow you to call them| +|can\_pin\_message|[Bool](/API_docs/types/Bool.html) | Optional|Whether you can pin messages in the chat with this user, you can do this only for a chat with yourself| +|has\_scheduled|[Bool](/API_docs/types/Bool.html) | Optional|Whether [scheduled messages](https://core.telegram.org/api/scheduled-messages) are available| +|video\_calls\_available|[Bool](/API_docs/types/Bool.html) | Optional|Whether the user can receive video calls| +|voice\_messages\_forbidden|[Bool](/API_docs/types/Bool.html) | Optional|Whether this user doesn't allow sending voice messages in a private chat with them| +|translations\_disabled|[Bool](/API_docs/types/Bool.html) | Optional|Whether the [real-time chat translation popup](https://core.telegram.org/api/translation) should be hidden.| +|stories\_pinned\_available|[Bool](/API_docs/types/Bool.html) | Optional|Whether this user has some [pinned stories](https://core.telegram.org/api/stories#pinned-or-archived-stories).| +|blocked\_my\_stories\_from|[Bool](/API_docs/types/Bool.html) | Optional|Whether we've [blocked this user, preventing them from seeing our stories »](https://core.telegram.org/api/block).| +|wallpaper\_overridden|[Bool](/API_docs/types/Bool.html) | Optional|Whether the other user has chosen a custom wallpaper for us using [messages.setChatWallPaper](../methods/messages.setChatWallPaper.html) and the `for_both` flag, see [here »](https://core.telegram.org/api/wallpapers#installing-wallpapers-in-a-specific-chat-or-channel) for more info.| +|contact\_require\_premium|[Bool](/API_docs/types/Bool.html) | Optional| +|read\_dates\_private|[Bool](/API_docs/types/Bool.html) | Optional| +|sponsored\_enabled|[Bool](/API_docs/types/Bool.html) | Optional| +|id|[long](/API_docs/types/long.html) | Yes|User ID| +|about|[string](/API_docs/types/string.html) | Optional|Bio of the user| +|settings|[PeerSettings](/API_docs/types/PeerSettings.html) | Yes|Peer settings| +|personal\_photo|[Photo](/API_docs/types/Photo.html) | Optional|Personal profile photo, to be shown instead of `profile_photo`.| +|profile\_photo|[Photo](/API_docs/types/Photo.html) | Optional|Profile photo| +|fallback\_photo|[Photo](/API_docs/types/Photo.html) | Optional|Fallback profile photo, displayed if no photo is present in `profile_photo` or `personal_photo`, due to privacy settings.| +|notify\_settings|[PeerNotifySettings](/API_docs/types/PeerNotifySettings.html) | Yes|Notification settings| +|bot\_info|[BotInfo](/API_docs/types/BotInfo.html) | Optional|For bots, info about the bot (bot commands, etc)| +|pinned\_msg\_id|[int](/API_docs/types/int.html) | Optional|Message ID of the last [pinned message](https://core.telegram.org/api/pin)| +|common\_chats\_count|[int](/API_docs/types/int.html) | Yes|Chats in common with this user| +|folder\_id|[int](/API_docs/types/int.html) | Optional|[Peer folder ID, for more info click here](https://core.telegram.org/api/folders#peer-folders)| +|ttl\_period|[int](/API_docs/types/int.html) | Optional|Time To Live of all messages in this chat; once a message is this many seconds old, it must be deleted.| +|theme\_emoticon|[string](/API_docs/types/string.html) | Optional|Emoji associated with chat theme| +|private\_forward\_name|[string](/API_docs/types/string.html) | Optional|Anonymized text to be shown instead of the user's name on forwarded messages| +|bot\_group\_admin\_rights|[ChatAdminRights](/API_docs/types/ChatAdminRights.html) | Optional|A [suggested set of administrator rights](https://core.telegram.org/api/rights#suggested-bot-rights) for the bot, to be shown when adding the bot as admin to a group, see [here for more info on how to handle them »](https://core.telegram.org/api/rights#suggested-bot-rights).| +|bot\_broadcast\_admin\_rights|[ChatAdminRights](/API_docs/types/ChatAdminRights.html) | Optional|A [suggested set of administrator rights](https://core.telegram.org/api/rights#suggested-bot-rights) for the bot, to be shown when adding the bot as admin to a channel, see [here for more info on how to handle them »](https://core.telegram.org/api/rights#suggested-bot-rights).| +|premium\_gifts|Array of [PremiumGiftOption](/API_docs/types/PremiumGiftOption.html) | Optional|Telegram Premium subscriptions gift options| +|wallpaper|[WallPaper](/API_docs/types/WallPaper.html) | Optional|[Wallpaper](https://core.telegram.org/api/wallpapers) to use in the private chat with the user.| +|stories|[PeerStories](/API_docs/types/PeerStories.html) | Optional|Active [stories »](https://core.telegram.org/api/stories)| +|business\_work\_hours|[BusinessWorkHours](/API_docs/types/BusinessWorkHours.html) | Optional| +|business\_location|[BusinessLocation](/API_docs/types/BusinessLocation.html) | Optional| +|business\_greeting\_message|[BusinessGreetingMessage](/API_docs/types/BusinessGreetingMessage.html) | Optional| +|business\_away\_message|[BusinessAwayMessage](/API_docs/types/BusinessAwayMessage.html) | Optional| +|business\_intro|[BusinessIntro](/API_docs/types/BusinessIntro.html) | Optional| +|birthday|[Birthday](/API_docs/types/Birthday.html) | Optional| +|personal\_channel\_id|[long](/API_docs/types/long.html) | Optional| +|personal\_channel\_message|[int](/API_docs/types/int.html) | Optional| + + + +### Type: [UserFull](/API_docs/types/UserFull.html) + + +### Example: + +``` +$userFull = ['_' => 'userFull', 'blocked' => Bool, 'phone_calls_available' => Bool, 'phone_calls_private' => Bool, 'can_pin_message' => Bool, 'has_scheduled' => Bool, 'video_calls_available' => Bool, 'voice_messages_forbidden' => Bool, 'translations_disabled' => Bool, 'stories_pinned_available' => Bool, 'blocked_my_stories_from' => Bool, 'wallpaper_overridden' => Bool, 'contact_require_premium' => Bool, 'read_dates_private' => Bool, 'sponsored_enabled' => Bool, 'id' => long, 'about' => 'string', 'settings' => PeerSettings, 'personal_photo' => Photo, 'profile_photo' => Photo, 'fallback_photo' => Photo, 'notify_settings' => PeerNotifySettings, 'bot_info' => BotInfo, 'pinned_msg_id' => int, 'common_chats_count' => int, 'folder_id' => int, 'ttl_period' => int, 'theme_emoticon' => 'string', 'private_forward_name' => 'string', 'bot_group_admin_rights' => ChatAdminRights, 'bot_broadcast_admin_rights' => ChatAdminRights, 'premium_gifts' => [PremiumGiftOption, PremiumGiftOption], 'wallpaper' => WallPaper, 'stories' => PeerStories, 'business_work_hours' => BusinessWorkHours, 'business_location' => BusinessLocation, 'business_greeting_message' => BusinessGreetingMessage, 'business_away_message' => BusinessAwayMessage, 'business_intro' => BusinessIntro, 'birthday' => Birthday, 'personal_channel_id' => long, 'personal_channel_message' => int]; +``` diff --git a/docs/API_docs/constructors/userProfilePhoto.md b/docs/API_docs/constructors/userProfilePhoto.md new file mode 100644 index 0000000000..9e623bf54b --- /dev/null +++ b/docs/API_docs/constructors/userProfilePhoto.md @@ -0,0 +1,33 @@ +--- +title: "userProfilePhoto" +description: "User profile photo." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: userProfilePhoto +[Back to constructors index](/API_docs/constructors/index.html) + + + +User profile photo. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|has\_video|[Bool](/API_docs/types/Bool.html) | Optional|Whether an [animated profile picture](https://core.telegram.org/api/files#animated-profile-pictures) is available for this user| +|personal|[Bool](/API_docs/types/Bool.html) | Optional|Whether this profile photo is only visible to us (i.e. it was set using [photos.uploadContactProfilePhoto](../methods/photos.uploadContactProfilePhoto.html)).| +|photo\_id|[long](/API_docs/types/long.html) | Yes|Identifier of the respective photo| +|stripped\_thumb|[bytes](/API_docs/types/bytes.html) | Optional|[Stripped thumbnail](https://core.telegram.org/api/files#stripped-thumbnails)| +|dc\_id|[int](/API_docs/types/int.html) | Yes|DC ID where the photo is stored| + + + +### Type: [UserProfilePhoto](/API_docs/types/UserProfilePhoto.html) + + +### Example: + +``` +$userProfilePhoto = ['_' => 'userProfilePhoto', 'has_video' => Bool, 'personal' => Bool, 'photo_id' => long, 'stripped_thumb' => 'bytes', 'dc_id' => int]; +``` diff --git a/docs/API_docs/constructors/userProfilePhotoEmpty.md b/docs/API_docs/constructors/userProfilePhotoEmpty.md new file mode 100644 index 0000000000..56aaf628a3 --- /dev/null +++ b/docs/API_docs/constructors/userProfilePhotoEmpty.md @@ -0,0 +1,24 @@ +--- +title: "userProfilePhotoEmpty" +description: "Profile photo has not been set, or was hidden." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: userProfilePhotoEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +Profile photo has not been set, or was hidden. + + + + +### Type: [UserProfilePhoto](/API_docs/types/UserProfilePhoto.html) + + +### Example: + +``` +$userProfilePhotoEmpty = ['_' => 'userProfilePhotoEmpty']; +``` diff --git a/docs/API_docs/constructors/userStatusEmpty.md b/docs/API_docs/constructors/userStatusEmpty.md new file mode 100644 index 0000000000..2f5be5df28 --- /dev/null +++ b/docs/API_docs/constructors/userStatusEmpty.md @@ -0,0 +1,24 @@ +--- +title: "userStatusEmpty" +description: "User status has not been set yet." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: userStatusEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +User status has not been set yet. + + + + +### Type: [UserStatus](/API_docs/types/UserStatus.html) + + +### Example: + +``` +$userStatusEmpty = ['_' => 'userStatusEmpty']; +``` diff --git a/docs/API_docs/constructors/userStatusLastMonth.md b/docs/API_docs/constructors/userStatusLastMonth.md new file mode 100644 index 0000000000..fdef7279bd --- /dev/null +++ b/docs/API_docs/constructors/userStatusLastMonth.md @@ -0,0 +1,29 @@ +--- +title: "userStatusLastMonth" +description: "Online status: last seen last month" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: userStatusLastMonth +[Back to constructors index](/API_docs/constructors/index.html) + + + +Online status: last seen last month + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|by\_me|[Bool](/API_docs/types/Bool.html) | Optional| + + + +### Type: [UserStatus](/API_docs/types/UserStatus.html) + + +### Example: + +``` +$userStatusLastMonth = ['_' => 'userStatusLastMonth', 'by_me' => Bool]; +``` diff --git a/docs/API_docs/constructors/userStatusLastWeek.md b/docs/API_docs/constructors/userStatusLastWeek.md new file mode 100644 index 0000000000..30e950c156 --- /dev/null +++ b/docs/API_docs/constructors/userStatusLastWeek.md @@ -0,0 +1,29 @@ +--- +title: "userStatusLastWeek" +description: "Online status: last seen last week" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: userStatusLastWeek +[Back to constructors index](/API_docs/constructors/index.html) + + + +Online status: last seen last week + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|by\_me|[Bool](/API_docs/types/Bool.html) | Optional| + + + +### Type: [UserStatus](/API_docs/types/UserStatus.html) + + +### Example: + +``` +$userStatusLastWeek = ['_' => 'userStatusLastWeek', 'by_me' => Bool]; +``` diff --git a/docs/API_docs/constructors/userStatusOffline.md b/docs/API_docs/constructors/userStatusOffline.md new file mode 100644 index 0000000000..af6597bf51 --- /dev/null +++ b/docs/API_docs/constructors/userStatusOffline.md @@ -0,0 +1,29 @@ +--- +title: "userStatusOffline" +description: "The user's offline status." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: userStatusOffline +[Back to constructors index](/API_docs/constructors/index.html) + + + +The user's offline status. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|was\_online|[int](/API_docs/types/int.html) | Yes|Time the user was last seen online| + + + +### Type: [UserStatus](/API_docs/types/UserStatus.html) + + +### Example: + +``` +$userStatusOffline = ['_' => 'userStatusOffline', 'was_online' => int]; +``` diff --git a/docs/API_docs/constructors/userStatusOnline.md b/docs/API_docs/constructors/userStatusOnline.md new file mode 100644 index 0000000000..cfd01b6cda --- /dev/null +++ b/docs/API_docs/constructors/userStatusOnline.md @@ -0,0 +1,29 @@ +--- +title: "userStatusOnline" +description: "Online status of the user." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: userStatusOnline +[Back to constructors index](/API_docs/constructors/index.html) + + + +Online status of the user. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|expires|[int](/API_docs/types/int.html) | Yes|Time to expiration of the current online status| + + + +### Type: [UserStatus](/API_docs/types/UserStatus.html) + + +### Example: + +``` +$userStatusOnline = ['_' => 'userStatusOnline', 'expires' => int]; +``` diff --git a/docs/API_docs/constructors/userStatusRecently.md b/docs/API_docs/constructors/userStatusRecently.md new file mode 100644 index 0000000000..2993de8cd9 --- /dev/null +++ b/docs/API_docs/constructors/userStatusRecently.md @@ -0,0 +1,29 @@ +--- +title: "userStatusRecently" +description: "Online status: last seen recently" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: userStatusRecently +[Back to constructors index](/API_docs/constructors/index.html) + + + +Online status: last seen recently + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|by\_me|[Bool](/API_docs/types/Bool.html) | Optional| + + + +### Type: [UserStatus](/API_docs/types/UserStatus.html) + + +### Example: + +``` +$userStatusRecently = ['_' => 'userStatusRecently', 'by_me' => Bool]; +``` diff --git a/docs/API_docs/constructors/username.md b/docs/API_docs/constructors/username.md new file mode 100644 index 0000000000..50d91a61e6 --- /dev/null +++ b/docs/API_docs/constructors/username.md @@ -0,0 +1,31 @@ +--- +title: "username" +description: "Contains information about a username." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: username +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains information about a username. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|editable|[Bool](/API_docs/types/Bool.html) | Optional|Whether the username is editable, meaning it wasn't bought on [fragment](https://fragment.com).| +|active|[Bool](/API_docs/types/Bool.html) | Optional|Whether the username is active.| +|username|[string](/API_docs/types/string.html) | Yes|The username.| + + + +### Type: [Username](/API_docs/types/Username.html) + + +### Example: + +``` +$username = ['_' => 'username', 'editable' => Bool, 'active' => Bool, 'username' => 'string']; +``` diff --git a/docs/API_docs/constructors/users.userFull.md b/docs/API_docs/constructors/users.userFull.md new file mode 100644 index 0000000000..5b07a59601 --- /dev/null +++ b/docs/API_docs/constructors/users.userFull.md @@ -0,0 +1,32 @@ +--- +title: "users.userFull" +description: "Full user information" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/constructors/users_userFull.html +--- +# Constructor: users.userFull +[Back to constructors index](/API_docs/constructors/index.html) + + + +Full user information + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|full\_user|[UserFull](/API_docs/types/UserFull.html) | Yes|Full user information| +|chats|Array of [Chat](/API_docs/types/Chat.html) | Yes|Mentioned chats| +|users|Array of [User](/API_docs/types/User.html) | Yes|Mentioned users| + + + +### Type: [users.UserFull](/API_docs/types/users.UserFull.html) + + +### Example: + +``` +$users_userFull = ['_' => 'users.userFull', 'full_user' => UserFull, 'chats' => [Chat, Chat], 'users' => [User, User]]; +``` diff --git a/docs/API_docs/constructors/videoSize.md b/docs/API_docs/constructors/videoSize.md new file mode 100644 index 0000000000..f7a97e0c8d --- /dev/null +++ b/docs/API_docs/constructors/videoSize.md @@ -0,0 +1,33 @@ +--- +title: "videoSize" +description: "An animated profile picture in MPEG4 format" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: videoSize +[Back to constructors index](/API_docs/constructors/index.html) + + + +An [animated profile picture](https://core.telegram.org/api/files#animated-profile-pictures) in MPEG4 format + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[string](/API_docs/types/string.html) | Yes|`u` for animated profile pictures, and `v` for trimmed and downscaled video previews| +|w|[int](/API_docs/types/int.html) | Yes|Video width| +|h|[int](/API_docs/types/int.html) | Yes|Video height| +|size|[int](/API_docs/types/int.html) | Yes|File size| +|video\_start\_ts|[double](/API_docs/types/double.html) | Optional|Timestamp that should be shown as static preview to the user (seconds)| + + + +### Type: [VideoSize](/API_docs/types/VideoSize.html) + + +### Example: + +``` +$videoSize = ['_' => 'videoSize', 'type' => 'string', 'w' => int, 'h' => int, 'size' => int, 'video_start_ts' => double]; +``` diff --git a/docs/API_docs/constructors/videoSizeEmojiMarkup.md b/docs/API_docs/constructors/videoSizeEmojiMarkup.md new file mode 100644 index 0000000000..b736d5944a --- /dev/null +++ b/docs/API_docs/constructors/videoSizeEmojiMarkup.md @@ -0,0 +1,30 @@ +--- +title: "videoSizeEmojiMarkup" +description: "An animated profile picture based on a custom emoji sticker." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: videoSizeEmojiMarkup +[Back to constructors index](/API_docs/constructors/index.html) + + + +An [animated profile picture](https://core.telegram.org/api/files#animated-profile-pictures) based on a [custom emoji sticker](https://core.telegram.org/api/custom-emoji). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|emoji\_id|[long](/API_docs/types/long.html) | Yes|[Custom emoji ID](https://core.telegram.org/api/custom-emoji): the custom emoji sticker is shown at the center of the profile picture and occupies at most 67% of it.| +|background\_colors|Array of [int](/API_docs/types/int.html) | Yes|1, 2, 3 or 4 RBG-24 colors used to generate a solid (1), gradient (2) or freeform gradient (3, 4) background, similar to how [fill wallpapers](https://core.telegram.org/api/wallpapers#fill-types) are generated. The rotation angle for gradient backgrounds is 0.| + + + +### Type: [VideoSize](/API_docs/types/VideoSize.html) + + +### Example: + +``` +$videoSizeEmojiMarkup = ['_' => 'videoSizeEmojiMarkup', 'emoji_id' => long, 'background_colors' => [int, int]]; +``` diff --git a/docs/API_docs/constructors/videoSizeStickerMarkup.md b/docs/API_docs/constructors/videoSizeStickerMarkup.md new file mode 100644 index 0000000000..e3c0958c1b --- /dev/null +++ b/docs/API_docs/constructors/videoSizeStickerMarkup.md @@ -0,0 +1,31 @@ +--- +title: "videoSizeStickerMarkup" +description: "An animated profile picture based on a sticker." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: videoSizeStickerMarkup +[Back to constructors index](/API_docs/constructors/index.html) + + + +An [animated profile picture](https://core.telegram.org/api/files#animated-profile-pictures) based on a [sticker](https://core.telegram.org/api/stickers). + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|stickerset|[InputStickerSet](/API_docs/types/InputStickerSet.html) | Optional|Stickerset| +|sticker\_id|[long](/API_docs/types/long.html) | Yes|Sticker ID| +|background\_colors|Array of [int](/API_docs/types/int.html) | Yes|1, 2, 3 or 4 RBG-24 colors used to generate a solid (1), gradient (2) or freeform gradient (3, 4) background, similar to how [fill wallpapers](https://core.telegram.org/api/wallpapers#fill-types) are generated. The rotation angle for gradient backgrounds is 0.| + + + +### Type: [VideoSize](/API_docs/types/VideoSize.html) + + +### Example: + +``` +$videoSizeStickerMarkup = ['_' => 'videoSizeStickerMarkup', 'stickerset' => InputStickerSet, 'sticker_id' => long, 'background_colors' => [int, int]]; +``` diff --git a/docs/API_docs/constructors/wallPaper.md b/docs/API_docs/constructors/wallPaper.md new file mode 100644 index 0000000000..570e59a17a --- /dev/null +++ b/docs/API_docs/constructors/wallPaper.md @@ -0,0 +1,37 @@ +--- +title: "wallPaper" +description: "Represents a wallpaper based on an image." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: wallPaper +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a [wallpaper](https://core.telegram.org/api/wallpapers) based on an image. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Identifier| +|creator|[Bool](/API_docs/types/Bool.html) | Optional|Whether we created this wallpaper| +|default|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is the default wallpaper| +|pattern|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is a [pattern wallpaper »](https://core.telegram.org/api/wallpapers#pattern-wallpapers)| +|dark|[Bool](/API_docs/types/Bool.html) | Optional|Whether this wallpaper should be used in dark mode.| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash| +|slug|[string](/API_docs/types/string.html) | Yes|Unique wallpaper ID, used when generating [wallpaper links](https://core.telegram.org/api/links#wallpaper-links) or [importing wallpaper links](https://core.telegram.org/api/wallpapers).| +|document|[Document](/API_docs/types/Document.html) | Optional|The actual wallpaper| +|settings|[WallPaperSettings](/API_docs/types/WallPaperSettings.html) | Optional|Info on how to generate the wallpaper, according to [these instructions »](https://core.telegram.org/api/wallpapers).| + + + +### Type: [WallPaper](/API_docs/types/WallPaper.html) + + +### Example: + +``` +$wallPaper = ['_' => 'wallPaper', 'id' => long, 'creator' => Bool, 'default' => Bool, 'pattern' => Bool, 'dark' => Bool, 'access_hash' => long, 'slug' => 'string', 'document' => Document, 'settings' => WallPaperSettings]; +``` diff --git a/docs/API_docs/constructors/wallPaperNoFile.md b/docs/API_docs/constructors/wallPaperNoFile.md new file mode 100644 index 0000000000..bcb5c06661 --- /dev/null +++ b/docs/API_docs/constructors/wallPaperNoFile.md @@ -0,0 +1,32 @@ +--- +title: "wallPaperNoFile" +description: "Represents a wallpaper only based on colors/gradients." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: wallPaperNoFile +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a [wallpaper](https://core.telegram.org/api/wallpapers) only based on colors/gradients. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Wallpaper ID| +|default|[Bool](/API_docs/types/Bool.html) | Optional|Whether this is the default wallpaper| +|dark|[Bool](/API_docs/types/Bool.html) | Optional|Whether this wallpaper should be used in dark mode.| +|settings|[WallPaperSettings](/API_docs/types/WallPaperSettings.html) | Optional|Info on how to generate the wallpaper.| + + + +### Type: [WallPaper](/API_docs/types/WallPaper.html) + + +### Example: + +``` +$wallPaperNoFile = ['_' => 'wallPaperNoFile', 'id' => long, 'default' => Bool, 'dark' => Bool, 'settings' => WallPaperSettings]; +``` diff --git a/docs/API_docs/constructors/wallPaperSettings.md b/docs/API_docs/constructors/wallPaperSettings.md new file mode 100644 index 0000000000..cab98abb27 --- /dev/null +++ b/docs/API_docs/constructors/wallPaperSettings.md @@ -0,0 +1,37 @@ +--- +title: "wallPaperSettings" +description: "Wallpaper rendering information." +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: wallPaperSettings +[Back to constructors index](/API_docs/constructors/index.html) + + + +[Wallpaper](https://core.telegram.org/api/wallpapers) rendering information. + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|blur|[Bool](/API_docs/types/Bool.html) | Optional|For [image wallpapers »](https://core.telegram.org/api/wallpapers#image-wallpapers): if set, the JPEG must be downscaled to fit in 450x450 square and then box-blurred with radius 12.| +|motion|[Bool](/API_docs/types/Bool.html) | Optional|If set, the background needs to be slightly moved when the device is rotated.| +|background\_color|[int](/API_docs/types/int.html) | Optional|Used for [solid »](https://core.telegram.org/api/wallpapers#solid-fill), [gradient »](https://core.telegram.org/api/wallpapers#gradient-fill) and [freeform gradient »](https://core.telegram.org/api/wallpapers#freeform-gradient-fill) fills.| +|second\_background\_color|[int](/API_docs/types/int.html) | Optional|Used for [gradient »](https://core.telegram.org/api/wallpapers#gradient-fill) and [freeform gradient »](https://core.telegram.org/api/wallpapers#freeform-gradient-fill) fills.| +|third\_background\_color|[int](/API_docs/types/int.html) | Optional|Used for [freeform gradient »](https://core.telegram.org/api/wallpapers#freeform-gradient-fill) fills.| +|fourth\_background\_color|[int](/API_docs/types/int.html) | Optional|Used for [freeform gradient »](https://core.telegram.org/api/wallpapers#freeform-gradient-fill) fills.| +|intensity|[int](/API_docs/types/int.html) | Optional|Used for [pattern wallpapers »](https://core.telegram.org/api/wallpapers#pattern-wallpapers).| +|rotation|[int](/API_docs/types/int.html) | Optional|Clockwise rotation angle of the gradient, in degrees; 0-359. Should be always divisible by 45.| +|emoticon|[string](/API_docs/types/string.html) | Optional|If set, this wallpaper can be used as a channel wallpaper and is represented by the specified UTF-8 emoji.| + + + +### Type: [WallPaperSettings](/API_docs/types/WallPaperSettings.html) + + +### Example: + +``` +$wallPaperSettings = ['_' => 'wallPaperSettings', 'blur' => Bool, 'motion' => Bool, 'background_color' => int, 'second_background_color' => int, 'third_background_color' => int, 'fourth_background_color' => int, 'intensity' => int, 'rotation' => int, 'emoticon' => 'string']; +``` diff --git a/docs/API_docs/constructors/webAuthorization.md b/docs/API_docs/constructors/webAuthorization.md new file mode 100644 index 0000000000..a03e948171 --- /dev/null +++ b/docs/API_docs/constructors/webAuthorization.md @@ -0,0 +1,37 @@ +--- +title: "webAuthorization" +description: "Represents a bot logged in using the Telegram login widget" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: webAuthorization +[Back to constructors index](/API_docs/constructors/index.html) + + + +Represents a bot logged in using the [Telegram login widget](https://core.telegram.org/widgets/login) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|hash|[long](/API_docs/types/long.html) | Yes|Authorization hash| +|bot\_id|[long](/API_docs/types/long.html) | Yes|Bot ID| +|domain|[string](/API_docs/types/string.html) | Yes|The domain name of the website on which the user has logged in.| +|browser|[string](/API_docs/types/string.html) | Yes|Browser user-agent| +|platform|[string](/API_docs/types/string.html) | Yes|Platform| +|date\_created|[int](/API_docs/types/int.html) | Yes|When was the web session created| +|date\_active|[int](/API_docs/types/int.html) | Yes|When was the web session last active| +|ip|[string](/API_docs/types/string.html) | Yes|IP address| +|region|[string](/API_docs/types/string.html) | Yes|Region, determined from IP address| + + + +### Type: [WebAuthorization](/API_docs/types/WebAuthorization.html) + + +### Example: + +``` +$webAuthorization = ['_' => 'webAuthorization', 'hash' => long, 'bot_id' => long, 'domain' => 'string', 'browser' => 'string', 'platform' => 'string', 'date_created' => int, 'date_active' => int, 'ip' => 'string', 'region' => 'string']; +``` diff --git a/docs/API_docs/constructors/webDocument.md b/docs/API_docs/constructors/webDocument.md new file mode 100644 index 0000000000..af460a978a --- /dev/null +++ b/docs/API_docs/constructors/webDocument.md @@ -0,0 +1,33 @@ +--- +title: "webDocument" +description: "Remote document" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: webDocument +[Back to constructors index](/API_docs/constructors/index.html) + + + +Remote document + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|Document URL| +|access\_hash|[long](/API_docs/types/long.html) | Yes|Access hash| +|size|[int](/API_docs/types/int.html) | Yes|File size| +|mime\_type|[string](/API_docs/types/string.html) | Yes|MIME type| +|attributes|Array of [DocumentAttribute](/API_docs/types/DocumentAttribute.html) | Yes|Attributes for media types| + + + +### Type: [WebDocument](/API_docs/types/WebDocument.html) + + +### Example: + +``` +$webDocument = ['_' => 'webDocument', 'url' => 'string', 'access_hash' => long, 'size' => int, 'mime_type' => 'string', 'attributes' => [DocumentAttribute, DocumentAttribute]]; +``` diff --git a/docs/API_docs/constructors/webDocumentNoProxy.md b/docs/API_docs/constructors/webDocumentNoProxy.md new file mode 100644 index 0000000000..0e261ab62c --- /dev/null +++ b/docs/API_docs/constructors/webDocumentNoProxy.md @@ -0,0 +1,32 @@ +--- +title: "webDocumentNoProxy" +description: "Remote document that can be downloaded without proxying through telegram" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: webDocumentNoProxy +[Back to constructors index](/API_docs/constructors/index.html) + + + +Remote document that can be downloaded without [proxying through telegram](https://core.telegram.org/api/files) + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|url|[string](/API_docs/types/string.html) | Yes|Document URL| +|size|[int](/API_docs/types/int.html) | Yes|File size| +|mime\_type|[string](/API_docs/types/string.html) | Yes|MIME type| +|attributes|Array of [DocumentAttribute](/API_docs/types/DocumentAttribute.html) | Yes|Attributes for media types| + + + +### Type: [WebDocument](/API_docs/types/WebDocument.html) + + +### Example: + +``` +$webDocumentNoProxy = ['_' => 'webDocumentNoProxy', 'url' => 'string', 'size' => int, 'mime_type' => 'string', 'attributes' => [DocumentAttribute, DocumentAttribute]]; +``` diff --git a/docs/API_docs/constructors/webPage.md b/docs/API_docs/constructors/webPage.md new file mode 100644 index 0000000000..b3639261aa --- /dev/null +++ b/docs/API_docs/constructors/webPage.md @@ -0,0 +1,47 @@ +--- +title: "webPage" +description: "Webpage preview" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: webPage +[Back to constructors index](/API_docs/constructors/index.html) + + + +Webpage preview + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|has\_large\_media|[Bool](/API_docs/types/Bool.html) | Optional|Whether the size of the media in the preview can be changed.| +|id|[long](/API_docs/types/long.html) | Yes|Preview ID| +|url|[string](/API_docs/types/string.html) | Yes|URL of previewed webpage| +|display\_url|[string](/API_docs/types/string.html) | Yes|Webpage URL to be displayed to the user| +|hash|[int](/API_docs/types/int.html) | Yes| +|type|[string](/API_docs/types/string.html) | Optional|Type of the web page. Can be: article, photo, audio, video, document, profile, app, or something else| +|site\_name|[string](/API_docs/types/string.html) | Optional|Short name of the site (e.g., Google Docs, App Store)| +|title|[string](/API_docs/types/string.html) | Optional|Title of the content| +|description|[string](/API_docs/types/string.html) | Optional|Content description| +|photo|[Photo](/API_docs/types/Photo.html) | Optional|Image representing the content| +|embed\_url|[string](/API_docs/types/string.html) | Optional|URL to show in the embedded preview| +|embed\_type|[string](/API_docs/types/string.html) | Optional|MIME type of the embedded preview, (e.g., text/html or video/mp4)| +|embed\_width|[int](/API_docs/types/int.html) | Optional|Width of the embedded preview| +|embed\_height|[int](/API_docs/types/int.html) | Optional|Height of the embedded preview| +|duration|[int](/API_docs/types/int.html) | Optional|Duration of the content, in seconds| +|author|[string](/API_docs/types/string.html) | Optional|Author of the content| +|document|[Document](/API_docs/types/Document.html) | Optional|Preview of the content as a media file| +|cached\_page|[Page](/API_docs/types/Page.html) | Optional|Page contents in [instant view](https://instantview.telegram.org) format| +|attributes|Array of [WebPageAttribute](/API_docs/types/WebPageAttribute.html) | Optional|Webpage attributes| + + + +### Type: [WebPage](/API_docs/types/WebPage.html) + + +### Example: + +``` +$webPage = ['_' => 'webPage', 'has_large_media' => Bool, 'id' => long, 'url' => 'string', 'display_url' => 'string', 'hash' => int, 'type' => 'string', 'site_name' => 'string', 'title' => 'string', 'description' => 'string', 'photo' => Photo, 'embed_url' => 'string', 'embed_type' => 'string', 'embed_width' => int, 'embed_height' => int, 'duration' => int, 'author' => 'string', 'document' => Document, 'cached_page' => Page, 'attributes' => [WebPageAttribute, WebPageAttribute]]; +``` diff --git a/docs/API_docs/constructors/webPageAttributeStickerSet.md b/docs/API_docs/constructors/webPageAttributeStickerSet.md new file mode 100644 index 0000000000..7b29edc6d1 --- /dev/null +++ b/docs/API_docs/constructors/webPageAttributeStickerSet.md @@ -0,0 +1,29 @@ +--- +title: "webPageAttributeStickerSet" +description: "webPageAttributeStickerSet attributes, type and example" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: webPageAttributeStickerSet +[Back to constructors index](/API_docs/constructors/index.html) + + + +### Attributes: + +| Name | Type | Required | +|----------|---------------|----------| +|emojis|[Bool](/API_docs/types/Bool.html) | Optional| +|text\_color|[Bool](/API_docs/types/Bool.html) | Optional| +|stickers|Array of [Document](/API_docs/types/Document.html) | Yes| + + + +### Type: [WebPageAttribute](/API_docs/types/WebPageAttribute.html) + + +### Example: + +``` +$webPageAttributeStickerSet = ['_' => 'webPageAttributeStickerSet', 'emojis' => Bool, 'text_color' => Bool, 'stickers' => [Document, Document]]; +``` diff --git a/docs/API_docs/constructors/webPageAttributeStory.md b/docs/API_docs/constructors/webPageAttributeStory.md new file mode 100644 index 0000000000..5a461824ce --- /dev/null +++ b/docs/API_docs/constructors/webPageAttributeStory.md @@ -0,0 +1,31 @@ +--- +title: "webPageAttributeStory" +description: "Webpage preview of a Telegram story" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: webPageAttributeStory +[Back to constructors index](/API_docs/constructors/index.html) + + + +Webpage preview of a Telegram story + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|peer|[long](/API_docs/types/long.html) | Yes|Peer that posted the story| +|id|[int](/API_docs/types/int.html) | Yes|[Story ID](https://core.telegram.org/api/stories#watching-stories)| +|story|[StoryItem](/API_docs/types/StoryItem.html) | Optional|May contain the story, if not the story should be fetched when and if needed using [stories.getStoriesByID](../methods/stories.getStoriesByID.html) with the above `id` and `peer`.| + + + +### Type: [WebPageAttribute](/API_docs/types/WebPageAttribute.html) + + +### Example: + +``` +$webPageAttributeStory = ['_' => 'webPageAttributeStory', 'peer' => long, 'id' => int, 'story' => StoryItem]; +``` diff --git a/docs/API_docs/constructors/webPageAttributeTheme.md b/docs/API_docs/constructors/webPageAttributeTheme.md new file mode 100644 index 0000000000..657bffb64b --- /dev/null +++ b/docs/API_docs/constructors/webPageAttributeTheme.md @@ -0,0 +1,30 @@ +--- +title: "webPageAttributeTheme" +description: "Page theme" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: webPageAttributeTheme +[Back to constructors index](/API_docs/constructors/index.html) + + + +Page theme + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|documents|Array of [Document](/API_docs/types/Document.html) | Optional|Theme files| +|settings|[ThemeSettings](/API_docs/types/ThemeSettings.html) | Optional|Theme settings| + + + +### Type: [WebPageAttribute](/API_docs/types/WebPageAttribute.html) + + +### Example: + +``` +$webPageAttributeTheme = ['_' => 'webPageAttributeTheme', 'documents' => [Document, Document], 'settings' => ThemeSettings]; +``` diff --git a/docs/API_docs/constructors/webPageEmpty.md b/docs/API_docs/constructors/webPageEmpty.md new file mode 100644 index 0000000000..d909e2b0cf --- /dev/null +++ b/docs/API_docs/constructors/webPageEmpty.md @@ -0,0 +1,30 @@ +--- +title: "webPageEmpty" +description: "No preview is available for the webpage" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: webPageEmpty +[Back to constructors index](/API_docs/constructors/index.html) + + + +No preview is available for the webpage + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|Preview ID| +|url|[string](/API_docs/types/string.html) | Optional|URL of the webpage.| + + + +### Type: [WebPage](/API_docs/types/WebPage.html) + + +### Example: + +``` +$webPageEmpty = ['_' => 'webPageEmpty', 'id' => long, 'url' => 'string']; +``` diff --git a/docs/API_docs/constructors/webPageNotModified.md b/docs/API_docs/constructors/webPageNotModified.md new file mode 100644 index 0000000000..e520e5d510 --- /dev/null +++ b/docs/API_docs/constructors/webPageNotModified.md @@ -0,0 +1,29 @@ +--- +title: "webPageNotModified" +description: "The preview of the webpage hasn't changed" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: webPageNotModified +[Back to constructors index](/API_docs/constructors/index.html) + + + +The preview of the webpage hasn't changed + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|cached\_page\_views|[int](/API_docs/types/int.html) | Optional|Page view count| + + + +### Type: [WebPage](/API_docs/types/WebPage.html) + + +### Example: + +``` +$webPageNotModified = ['_' => 'webPageNotModified', 'cached_page_views' => int]; +``` diff --git a/docs/API_docs/constructors/webPagePending.md b/docs/API_docs/constructors/webPagePending.md new file mode 100644 index 0000000000..e4d5003bf3 --- /dev/null +++ b/docs/API_docs/constructors/webPagePending.md @@ -0,0 +1,31 @@ +--- +title: "webPagePending" +description: "A preview of the webpage is currently being generated" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: webPagePending +[Back to constructors index](/API_docs/constructors/index.html) + + + +A preview of the webpage is currently being generated + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|id|[long](/API_docs/types/long.html) | Yes|ID of preview| +|url|[string](/API_docs/types/string.html) | Optional|URL of the webpage| +|date|[int](/API_docs/types/int.html) | Yes|When was the processing started| + + + +### Type: [WebPage](/API_docs/types/WebPage.html) + + +### Example: + +``` +$webPagePending = ['_' => 'webPagePending', 'id' => long, 'url' => 'string', 'date' => int]; +``` diff --git a/docs/API_docs/constructors/webViewMessageSent.md b/docs/API_docs/constructors/webViewMessageSent.md new file mode 100644 index 0000000000..a44b288eb0 --- /dev/null +++ b/docs/API_docs/constructors/webViewMessageSent.md @@ -0,0 +1,29 @@ +--- +title: "webViewMessageSent" +description: "Info about a sent inline webview message" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: webViewMessageSent +[Back to constructors index](/API_docs/constructors/index.html) + + + +Info about a sent inline webview message + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|msg\_id|[InputBotInlineMessageID](/API_docs/types/InputBotInlineMessageID.html) | Optional|Message ID| + + + +### Type: [WebViewMessageSent](/API_docs/types/WebViewMessageSent.html) + + +### Example: + +``` +$webViewMessageSent = ['_' => 'webViewMessageSent', 'msg_id' => InputBotInlineMessageID]; +``` diff --git a/docs/API_docs/constructors/webViewResultUrl.md b/docs/API_docs/constructors/webViewResultUrl.md new file mode 100644 index 0000000000..61ee544c18 --- /dev/null +++ b/docs/API_docs/constructors/webViewResultUrl.md @@ -0,0 +1,30 @@ +--- +title: "webViewResultUrl" +description: "Contains the webview URL with appropriate theme and user info parameters added" +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: webViewResultUrl +[Back to constructors index](/API_docs/constructors/index.html) + + + +Contains the webview URL with appropriate theme and user info parameters added + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|query\_id|[long](/API_docs/types/long.html) | Yes|Webview session ID| +|url|[string](/API_docs/types/string.html) | Yes|Webview URL to open| + + + +### Type: [WebViewResult](/API_docs/types/WebViewResult.html) + + +### Example: + +``` +$webViewResultUrl = ['_' => 'webViewResultUrl', 'query_id' => long, 'url' => 'string']; +``` diff --git a/docs/API_docs/index.md b/docs/API_docs/index.md new file mode 100644 index 0000000000..5b2d01d4ec --- /dev/null +++ b/docs/API_docs/index.md @@ -0,0 +1,17 @@ +--- +title: "Telegram RPC API" +description: "MadelineProto API documentation (layer 179)" +has_children: true +has_toc: false +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Telegram RPC API + +[Back to main documentation](..) + + +[Methods](methods/) + +[Constructors](constructors/) + +[Types](types/) diff --git a/docs/API_docs/methods/account.acceptAuthorization.md b/docs/API_docs/methods/account.acceptAuthorization.md new file mode 100644 index 0000000000..28651edbc4 --- /dev/null +++ b/docs/API_docs/methods/account.acceptAuthorization.md @@ -0,0 +1,46 @@ +--- +title: "account.acceptAuthorization" +description: "Sends a Telegram Passport authorization form, effectively sharing data with the service" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_acceptAuthorization.html +--- +# Method: account.acceptAuthorization +[Back to methods index](index.html) + + + +Sends a Telegram Passport authorization form, effectively sharing data with the service + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|bot\_id|[long](/API_docs/types/long.html) | Bot ID | Yes| +|scope|[string](/API_docs/types/string.html) | Telegram Passport element types requested by the service | Optional| +|public\_key|[string](/API_docs/types/string.html) | Service's public key | Optional| +|value\_hashes|Array of [SecureValueHash](/API_docs/types/SecureValueHash.html) | Types of values sent and their hashes | Yes| +|credentials|[SecureCredentialsEncrypted](/API_docs/types/SecureCredentialsEncrypted.html) | Encrypted values | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->acceptAuthorization(bot_id: $long, scope: 'string', public_key: 'string', value_hashes: [$SecureValueHash, $SecureValueHash], credentials: $SecureCredentialsEncrypted, ); +``` + diff --git a/docs/API_docs/methods/account.cancelPasswordEmail.md b/docs/API_docs/methods/account.cancelPasswordEmail.md new file mode 100644 index 0000000000..6aa0af0cf6 --- /dev/null +++ b/docs/API_docs/methods/account.cancelPasswordEmail.md @@ -0,0 +1,37 @@ +--- +title: "account.cancelPasswordEmail" +description: "Cancel the code that was sent to verify an email to use as [2FA recovery method](https://core.telegram.org/api/srp)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_cancelPasswordEmail.html +--- +# Method: account.cancelPasswordEmail +[Back to methods index](index.html) + + + +Cancel the code that was sent to verify an email to use as [2FA recovery method](https://core.telegram.org/api/srp). + + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->cancelPasswordEmail(); +``` + diff --git a/docs/API_docs/methods/account.changeAuthorizationSettings.md b/docs/API_docs/methods/account.changeAuthorizationSettings.md new file mode 100644 index 0000000000..9ca5bf1d41 --- /dev/null +++ b/docs/API_docs/methods/account.changeAuthorizationSettings.md @@ -0,0 +1,45 @@ +--- +title: "account.changeAuthorizationSettings" +description: "Change settings related to a session." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_changeAuthorizationSettings.html +--- +# Method: account.changeAuthorizationSettings +[Back to methods index](index.html) + + + +Change settings related to a session. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|confirmed|[Bool](/API_docs/types/Bool.html) | If set, [confirms a newly logged in session »](https://core.telegram.org/api/auth#confirming-login). | Optional| +|hash|Array of [long](/API_docs/types/long.html) | Session ID from the [authorization](../constructors/authorization.html) constructor, fetchable using [account.getAuthorizations](../methods/account.getAuthorizations.html) | Optional| +|encrypted\_requests\_disabled|[Bool](/API_docs/types/Bool.html) | Whether to enable or disable receiving encrypted chats: if the flag is not set, the previous setting is not changed | Optional| +|call\_requests\_disabled|[Bool](/API_docs/types/Bool.html) | Whether to enable or disable receiving calls: if the flag is not set, the previous setting is not changed | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->changeAuthorizationSettings(confirmed: $Bool, hash: [$long, $long], encrypted_requests_disabled: $Bool, call_requests_disabled: $Bool, ); +``` + diff --git a/docs/API_docs/methods/account.changePhone.md b/docs/API_docs/methods/account.changePhone.md new file mode 100644 index 0000000000..26e0863bb5 --- /dev/null +++ b/docs/API_docs/methods/account.changePhone.md @@ -0,0 +1,44 @@ +--- +title: "account.changePhone" +description: "Change the phone number of the current account" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_changePhone.html +--- +# Method: account.changePhone +[Back to methods index](index.html) + + + +Change the phone number of the current account + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|phone\_number|[string](/API_docs/types/string.html) | New phone number | Optional| +|phone\_code\_hash|[string](/API_docs/types/string.html) | Phone code hash received when calling [account.sendChangePhoneCode](../methods/account.sendChangePhoneCode.html) | Optional| +|phone\_code|[string](/API_docs/types/string.html) | Phone code received when calling [account.sendChangePhoneCode](../methods/account.sendChangePhoneCode.html) | Optional| + + +### Return type: [User](/API_docs/types/User.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$User = $MadelineProto->account->changePhone(phone_number: 'string', phone_code_hash: 'string', phone_code: 'string', ); +``` + diff --git a/docs/API_docs/methods/account.checkUsername.md b/docs/API_docs/methods/account.checkUsername.md new file mode 100644 index 0000000000..6a5b5e8906 --- /dev/null +++ b/docs/API_docs/methods/account.checkUsername.md @@ -0,0 +1,42 @@ +--- +title: "account.checkUsername" +description: "Validates a username and checks availability." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_checkUsername.html +--- +# Method: account.checkUsername +[Back to methods index](index.html) + + + +Validates a username and checks availability. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|username|[string](/API_docs/types/string.html) | username
Accepted characters: A-z (case-insensitive), 0-9 and underscores.
Length: 5-32 characters. | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->checkUsername(username: 'string', ); +``` + diff --git a/docs/API_docs/methods/account.clearRecentEmojiStatuses.md b/docs/API_docs/methods/account.clearRecentEmojiStatuses.md new file mode 100644 index 0000000000..4d7834b6e7 --- /dev/null +++ b/docs/API_docs/methods/account.clearRecentEmojiStatuses.md @@ -0,0 +1,37 @@ +--- +title: "account.clearRecentEmojiStatuses" +description: "Clears list of recently used [emoji statuses](https://core.telegram.org/api/emoji-status)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_clearRecentEmojiStatuses.html +--- +# Method: account.clearRecentEmojiStatuses +[Back to methods index](index.html) + + + +Clears list of recently used [emoji statuses](https://core.telegram.org/api/emoji-status) + + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->clearRecentEmojiStatuses(); +``` + diff --git a/docs/API_docs/methods/account.confirmPasswordEmail.md b/docs/API_docs/methods/account.confirmPasswordEmail.md new file mode 100644 index 0000000000..67e693a4ff --- /dev/null +++ b/docs/API_docs/methods/account.confirmPasswordEmail.md @@ -0,0 +1,42 @@ +--- +title: "account.confirmPasswordEmail" +description: "Verify an email to use as [2FA recovery method](https://core.telegram.org/api/srp)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_confirmPasswordEmail.html +--- +# Method: account.confirmPasswordEmail +[Back to methods index](index.html) + + + +Verify an email to use as [2FA recovery method](https://core.telegram.org/api/srp). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|code|[string](/API_docs/types/string.html) | The phone code that was received after [setting a recovery email](https://core.telegram.org/api/srp#email-verification) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->confirmPasswordEmail(code: 'string', ); +``` + diff --git a/docs/API_docs/methods/account.confirmPhone.md b/docs/API_docs/methods/account.confirmPhone.md new file mode 100644 index 0000000000..8b31086630 --- /dev/null +++ b/docs/API_docs/methods/account.confirmPhone.md @@ -0,0 +1,43 @@ +--- +title: "account.confirmPhone" +description: "Confirm a phone number to cancel account deletion, for more info [click here »](https://core.telegram.org/api/account-deletion)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_confirmPhone.html +--- +# Method: account.confirmPhone +[Back to methods index](index.html) + + + +Confirm a phone number to cancel account deletion, for more info [click here »](https://core.telegram.org/api/account-deletion) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|phone\_code\_hash|[string](/API_docs/types/string.html) | Phone code hash, for more info [click here »](https://core.telegram.org/api/account-deletion) | Optional| +|phone\_code|[string](/API_docs/types/string.html) | SMS code, for more info [click here »](https://core.telegram.org/api/account-deletion) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->confirmPhone(phone_code_hash: 'string', phone_code: 'string', ); +``` + diff --git a/docs/API_docs/methods/account.createBusinessChatLink.md b/docs/API_docs/methods/account.createBusinessChatLink.md new file mode 100644 index 0000000000..0fabff1743 --- /dev/null +++ b/docs/API_docs/methods/account.createBusinessChatLink.md @@ -0,0 +1,40 @@ +--- +title: "account.createBusinessChatLink" +description: "account.createBusinessChatLink parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_createBusinessChatLink.html +--- +# Method: account.createBusinessChatLink +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|link|[InputBusinessChatLink](/API_docs/types/InputBusinessChatLink.html) | Yes| + + +### Return type: [BusinessChatLink](/API_docs/types/BusinessChatLink.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$BusinessChatLink = $MadelineProto->account->createBusinessChatLink(link: $InputBusinessChatLink, ); +``` + diff --git a/docs/API_docs/methods/account.createTheme.md b/docs/API_docs/methods/account.createTheme.md new file mode 100644 index 0000000000..1474aac876 --- /dev/null +++ b/docs/API_docs/methods/account.createTheme.md @@ -0,0 +1,45 @@ +--- +title: "account.createTheme" +description: "Create a theme" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_createTheme.html +--- +# Method: account.createTheme +[Back to methods index](index.html) + + + +Create a theme + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|slug|[string](/API_docs/types/string.html) | Unique theme ID used to generate [theme deep links](https://core.telegram.org/api/links#theme-links), can be empty to autogenerate a random ID. | Optional| +|title|[string](/API_docs/types/string.html) | Theme name | Optional| +|document|[MessageMedia, Update, Message or InputDocument](/API_docs/types/InputDocument.html) | Theme file | Optional| +|settings|Array of [InputThemeSettings](/API_docs/types/InputThemeSettings.html) | Theme settings, multiple values can be provided for the different base themes (day/night mode, etc). | Optional| + + +### Return type: [Theme](/API_docs/types/Theme.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Theme = $MadelineProto->account->createTheme(slug: 'string', title: 'string', document: $InputDocument, settings: [$InputThemeSettings, $InputThemeSettings], ); +``` + diff --git a/docs/API_docs/methods/account.declinePasswordReset.md b/docs/API_docs/methods/account.declinePasswordReset.md new file mode 100644 index 0000000000..014a692ece --- /dev/null +++ b/docs/API_docs/methods/account.declinePasswordReset.md @@ -0,0 +1,37 @@ +--- +title: "account.declinePasswordReset" +description: "Abort a pending 2FA password reset, [see here for more info »](https://core.telegram.org/api/srp#password-reset)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_declinePasswordReset.html +--- +# Method: account.declinePasswordReset +[Back to methods index](index.html) + + + +Abort a pending 2FA password reset, [see here for more info »](https://core.telegram.org/api/srp#password-reset) + + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->declinePasswordReset(); +``` + diff --git a/docs/API_docs/methods/account.deleteAccount.md b/docs/API_docs/methods/account.deleteAccount.md new file mode 100644 index 0000000000..74eb6b4007 --- /dev/null +++ b/docs/API_docs/methods/account.deleteAccount.md @@ -0,0 +1,45 @@ +--- +title: "account.deleteAccount" +description: "Delete the user's account from the telegram servers." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_deleteAccount.html +--- +# Method: account.deleteAccount +[Back to methods index](index.html) + + + +Delete the user's account from the telegram servers. + +Can also be used to delete the account of a user that provided the login code, but forgot the 2FA password and no recovery method is configured, see [here »](https://core.telegram.org/api/srp#password-recovery) for more info on password recovery, and [here »](https://core.telegram.org/api/account-deletion) for more info on account deletion. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|reason|[string](/API_docs/types/string.html) | Why is the account being deleted, can be empty | Optional| +|password|[InputCheckPasswordSRP](/API_docs/types/InputCheckPasswordSRP.html) | [2FA password](https://core.telegram.org/api/srp): this field can be omitted even for accounts with 2FA enabled: in this case account account deletion will be delayed by 7 days [as specified in the docs »](https://core.telegram.org/api/account-deletion) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->deleteAccount(reason: 'string', password: $InputCheckPasswordSRP, ); +``` + diff --git a/docs/API_docs/methods/account.deleteAutoSaveExceptions.md b/docs/API_docs/methods/account.deleteAutoSaveExceptions.md new file mode 100644 index 0000000000..920e25552d --- /dev/null +++ b/docs/API_docs/methods/account.deleteAutoSaveExceptions.md @@ -0,0 +1,37 @@ +--- +title: "account.deleteAutoSaveExceptions" +description: "Clear all peer-specific autosave settings." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_deleteAutoSaveExceptions.html +--- +# Method: account.deleteAutoSaveExceptions +[Back to methods index](index.html) + + + +Clear all peer-specific autosave settings. + + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->deleteAutoSaveExceptions(); +``` + diff --git a/docs/API_docs/methods/account.deleteBusinessChatLink.md b/docs/API_docs/methods/account.deleteBusinessChatLink.md new file mode 100644 index 0000000000..5600e6af98 --- /dev/null +++ b/docs/API_docs/methods/account.deleteBusinessChatLink.md @@ -0,0 +1,40 @@ +--- +title: "account.deleteBusinessChatLink" +description: "account.deleteBusinessChatLink parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_deleteBusinessChatLink.html +--- +# Method: account.deleteBusinessChatLink +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|slug|[string](/API_docs/types/string.html) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->deleteBusinessChatLink(slug: 'string', ); +``` + diff --git a/docs/API_docs/methods/account.deleteSecureValue.md b/docs/API_docs/methods/account.deleteSecureValue.md new file mode 100644 index 0000000000..023892a478 --- /dev/null +++ b/docs/API_docs/methods/account.deleteSecureValue.md @@ -0,0 +1,42 @@ +--- +title: "account.deleteSecureValue" +description: "Delete stored [Telegram Passport](https://core.telegram.org/passport) documents, [for more info see the passport docs »](https://core.telegram.org/passport/encryption#encryption)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_deleteSecureValue.html +--- +# Method: account.deleteSecureValue +[Back to methods index](index.html) + + + +Delete stored [Telegram Passport](https://core.telegram.org/passport) documents, [for more info see the passport docs »](https://core.telegram.org/passport/encryption#encryption) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|types|Array of [SecureValueType](/API_docs/types/SecureValueType.html) | Document types to delete | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->deleteSecureValue(types: [$SecureValueType, $SecureValueType], ); +``` + diff --git a/docs/API_docs/methods/account.disablePeerConnectedBot.md b/docs/API_docs/methods/account.disablePeerConnectedBot.md new file mode 100644 index 0000000000..5d24b2168d --- /dev/null +++ b/docs/API_docs/methods/account.disablePeerConnectedBot.md @@ -0,0 +1,40 @@ +--- +title: "account.disablePeerConnectedBot" +description: "account.disablePeerConnectedBot parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_disablePeerConnectedBot.html +--- +# Method: account.disablePeerConnectedBot +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->disablePeerConnectedBot(peer: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/account.editBusinessChatLink.md b/docs/API_docs/methods/account.editBusinessChatLink.md new file mode 100644 index 0000000000..aa8bf66e3f --- /dev/null +++ b/docs/API_docs/methods/account.editBusinessChatLink.md @@ -0,0 +1,41 @@ +--- +title: "account.editBusinessChatLink" +description: "account.editBusinessChatLink parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_editBusinessChatLink.html +--- +# Method: account.editBusinessChatLink +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|slug|[string](/API_docs/types/string.html) | Optional| +|link|[InputBusinessChatLink](/API_docs/types/InputBusinessChatLink.html) | Yes| + + +### Return type: [BusinessChatLink](/API_docs/types/BusinessChatLink.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$BusinessChatLink = $MadelineProto->account->editBusinessChatLink(slug: 'string', link: $InputBusinessChatLink, ); +``` + diff --git a/docs/API_docs/methods/account.finishTakeoutSession.md b/docs/API_docs/methods/account.finishTakeoutSession.md new file mode 100644 index 0000000000..c988cbbcdb --- /dev/null +++ b/docs/API_docs/methods/account.finishTakeoutSession.md @@ -0,0 +1,42 @@ +--- +title: "account.finishTakeoutSession" +description: "Terminate a [takeout session, see here » for more info](https://core.telegram.org/api/takeout)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_finishTakeoutSession.html +--- +# Method: account.finishTakeoutSession +[Back to methods index](index.html) + + + +Terminate a [takeout session, see here » for more info](https://core.telegram.org/api/takeout). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|success|[Bool](/API_docs/types/Bool.html) | Data exported successfully | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->finishTakeoutSession(success: $Bool, ); +``` + diff --git a/docs/API_docs/methods/account.getAccountTTL.md b/docs/API_docs/methods/account.getAccountTTL.md new file mode 100644 index 0000000000..3838bfb2d8 --- /dev/null +++ b/docs/API_docs/methods/account.getAccountTTL.md @@ -0,0 +1,37 @@ +--- +title: "account.getAccountTTL" +description: "Get days to live of account" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getAccountTTL.html +--- +# Method: account.getAccountTTL +[Back to methods index](index.html) + + + +Get days to live of account + + + +### Return type: [AccountDaysTTL](/API_docs/types/AccountDaysTTL.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$AccountDaysTTL = $MadelineProto->account->getAccountTTL(); +``` + diff --git a/docs/API_docs/methods/account.getAllSecureValues.md b/docs/API_docs/methods/account.getAllSecureValues.md new file mode 100644 index 0000000000..7f95f649a6 --- /dev/null +++ b/docs/API_docs/methods/account.getAllSecureValues.md @@ -0,0 +1,37 @@ +--- +title: "account.getAllSecureValues" +description: "Get all saved [Telegram Passport](https://core.telegram.org/passport) documents, [for more info see the passport docs »](https://core.telegram.org/passport/encryption#encryption)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getAllSecureValues.html +--- +# Method: account.getAllSecureValues +[Back to methods index](index.html) + + + +Get all saved [Telegram Passport](https://core.telegram.org/passport) documents, [for more info see the passport docs »](https://core.telegram.org/passport/encryption#encryption) + + + +### Return type: [Vector\_of\_SecureValue](/API_docs/types/SecureValue.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_SecureValue = $MadelineProto->account->getAllSecureValues(); +``` + diff --git a/docs/API_docs/methods/account.getAuthorizationForm.md b/docs/API_docs/methods/account.getAuthorizationForm.md new file mode 100644 index 0000000000..1393098d4b --- /dev/null +++ b/docs/API_docs/methods/account.getAuthorizationForm.md @@ -0,0 +1,44 @@ +--- +title: "account.getAuthorizationForm" +description: "Returns a Telegram Passport authorization form for sharing data with a service" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getAuthorizationForm.html +--- +# Method: account.getAuthorizationForm +[Back to methods index](index.html) + + + +Returns a Telegram Passport authorization form for sharing data with a service + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|bot\_id|[long](/API_docs/types/long.html) | User identifier of the service's bot | Yes| +|scope|[string](/API_docs/types/string.html) | Telegram Passport element types requested by the service | Optional| +|public\_key|[string](/API_docs/types/string.html) | Service's public key | Optional| + + +### Return type: [account.AuthorizationForm](/API_docs/types/account.AuthorizationForm.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_AuthorizationForm = $MadelineProto->account->getAuthorizationForm(bot_id: $long, scope: 'string', public_key: 'string', ); +``` + diff --git a/docs/API_docs/methods/account.getAuthorizations.md b/docs/API_docs/methods/account.getAuthorizations.md new file mode 100644 index 0000000000..1ce320dd2c --- /dev/null +++ b/docs/API_docs/methods/account.getAuthorizations.md @@ -0,0 +1,37 @@ +--- +title: "account.getAuthorizations" +description: "Get logged-in sessions" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getAuthorizations.html +--- +# Method: account.getAuthorizations +[Back to methods index](index.html) + + + +Get logged-in sessions + + + +### Return type: [account.Authorizations](/API_docs/types/account.Authorizations.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_Authorizations = $MadelineProto->account->getAuthorizations(); +``` + diff --git a/docs/API_docs/methods/account.getAutoDownloadSettings.md b/docs/API_docs/methods/account.getAutoDownloadSettings.md new file mode 100644 index 0000000000..8a928005dc --- /dev/null +++ b/docs/API_docs/methods/account.getAutoDownloadSettings.md @@ -0,0 +1,37 @@ +--- +title: "account.getAutoDownloadSettings" +description: "Get media autodownload settings" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getAutoDownloadSettings.html +--- +# Method: account.getAutoDownloadSettings +[Back to methods index](index.html) + + + +Get media autodownload settings + + + +### Return type: [account.AutoDownloadSettings](/API_docs/types/account.AutoDownloadSettings.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_AutoDownloadSettings = $MadelineProto->account->getAutoDownloadSettings(); +``` + diff --git a/docs/API_docs/methods/account.getAutoSaveSettings.md b/docs/API_docs/methods/account.getAutoSaveSettings.md new file mode 100644 index 0000000000..659b39810c --- /dev/null +++ b/docs/API_docs/methods/account.getAutoSaveSettings.md @@ -0,0 +1,37 @@ +--- +title: "account.getAutoSaveSettings" +description: "Get autosave settings" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getAutoSaveSettings.html +--- +# Method: account.getAutoSaveSettings +[Back to methods index](index.html) + + + +Get autosave settings + + + +### Return type: [account.AutoSaveSettings](/API_docs/types/account.AutoSaveSettings.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_AutoSaveSettings = $MadelineProto->account->getAutoSaveSettings(); +``` + diff --git a/docs/API_docs/methods/account.getBotBusinessConnection.md b/docs/API_docs/methods/account.getBotBusinessConnection.md new file mode 100644 index 0000000000..525e416776 --- /dev/null +++ b/docs/API_docs/methods/account.getBotBusinessConnection.md @@ -0,0 +1,40 @@ +--- +title: "account.getBotBusinessConnection" +description: "account.getBotBusinessConnection parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getBotBusinessConnection.html +--- +# Method: account.getBotBusinessConnection +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|connection\_id|[string](/API_docs/types/string.html) | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->account->getBotBusinessConnection(connection_id: 'string', ); +``` + diff --git a/docs/API_docs/methods/account.getBusinessChatLinks.md b/docs/API_docs/methods/account.getBusinessChatLinks.md new file mode 100644 index 0000000000..5f195fdae3 --- /dev/null +++ b/docs/API_docs/methods/account.getBusinessChatLinks.md @@ -0,0 +1,35 @@ +--- +title: "account.getBusinessChatLinks" +description: "account.getBusinessChatLinks parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getBusinessChatLinks.html +--- +# Method: account.getBusinessChatLinks +[Back to methods index](index.html) + + + + + +### Return type: [account.BusinessChatLinks](/API_docs/types/account.BusinessChatLinks.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_BusinessChatLinks = $MadelineProto->account->getBusinessChatLinks(); +``` + diff --git a/docs/API_docs/methods/account.getChannelDefaultEmojiStatuses.md b/docs/API_docs/methods/account.getChannelDefaultEmojiStatuses.md new file mode 100644 index 0000000000..054113f043 --- /dev/null +++ b/docs/API_docs/methods/account.getChannelDefaultEmojiStatuses.md @@ -0,0 +1,42 @@ +--- +title: "account.getChannelDefaultEmojiStatuses" +description: "Get a list of default suggested [channel emoji statuses](https://core.telegram.org/api/emoji-status)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getChannelDefaultEmojiStatuses.html +--- +# Method: account.getChannelDefaultEmojiStatuses +[Back to methods index](index.html) + + + +Get a list of default suggested [channel emoji statuses](https://core.telegram.org/api/emoji-status). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [account.EmojiStatuses](/API_docs/types/account.EmojiStatuses.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_EmojiStatuses = $MadelineProto->account->getChannelDefaultEmojiStatuses(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/account.getChannelRestrictedStatusEmojis.md b/docs/API_docs/methods/account.getChannelRestrictedStatusEmojis.md new file mode 100644 index 0000000000..42fcd6e89d --- /dev/null +++ b/docs/API_docs/methods/account.getChannelRestrictedStatusEmojis.md @@ -0,0 +1,42 @@ +--- +title: "account.getChannelRestrictedStatusEmojis" +description: "Returns fetch the full list of [custom emoji IDs »](https://core.telegram.org/api/custom-emoji) that cannot be used in [channel emoji statuses »](https://core.telegram.org/api/emoji-status)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getChannelRestrictedStatusEmojis.html +--- +# Method: account.getChannelRestrictedStatusEmojis +[Back to methods index](index.html) + + + +Returns fetch the full list of [custom emoji IDs »](https://core.telegram.org/api/custom-emoji) that cannot be used in [channel emoji statuses »](https://core.telegram.org/api/emoji-status). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [EmojiList](/API_docs/types/EmojiList.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$EmojiList = $MadelineProto->account->getChannelRestrictedStatusEmojis(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/account.getChatThemes.md b/docs/API_docs/methods/account.getChatThemes.md new file mode 100644 index 0000000000..7fd977b357 --- /dev/null +++ b/docs/API_docs/methods/account.getChatThemes.md @@ -0,0 +1,42 @@ +--- +title: "account.getChatThemes" +description: "Get all available chat [themes »](https://core.telegram.org/api/themes)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getChatThemes.html +--- +# Method: account.getChatThemes +[Back to methods index](index.html) + + + +Get all available chat [themes »](https://core.telegram.org/api/themes). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [account.Themes](/API_docs/types/account.Themes.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_Themes = $MadelineProto->account->getChatThemes(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/account.getConnectedBots.md b/docs/API_docs/methods/account.getConnectedBots.md new file mode 100644 index 0000000000..6aa0cab326 --- /dev/null +++ b/docs/API_docs/methods/account.getConnectedBots.md @@ -0,0 +1,35 @@ +--- +title: "account.getConnectedBots" +description: "account.getConnectedBots parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getConnectedBots.html +--- +# Method: account.getConnectedBots +[Back to methods index](index.html) + + + + + +### Return type: [account.ConnectedBots](/API_docs/types/account.ConnectedBots.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_ConnectedBots = $MadelineProto->account->getConnectedBots(); +``` + diff --git a/docs/API_docs/methods/account.getContactSignUpNotification.md b/docs/API_docs/methods/account.getContactSignUpNotification.md new file mode 100644 index 0000000000..af4e2e363c --- /dev/null +++ b/docs/API_docs/methods/account.getContactSignUpNotification.md @@ -0,0 +1,37 @@ +--- +title: "account.getContactSignUpNotification" +description: "Whether the user will receive notifications when contacts sign up" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getContactSignUpNotification.html +--- +# Method: account.getContactSignUpNotification +[Back to methods index](index.html) + + + +Whether the user will receive notifications when contacts sign up + + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->getContactSignUpNotification(); +``` + diff --git a/docs/API_docs/methods/account.getContentSettings.md b/docs/API_docs/methods/account.getContentSettings.md new file mode 100644 index 0000000000..31681d6292 --- /dev/null +++ b/docs/API_docs/methods/account.getContentSettings.md @@ -0,0 +1,37 @@ +--- +title: "account.getContentSettings" +description: "Get sensitive content settings" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getContentSettings.html +--- +# Method: account.getContentSettings +[Back to methods index](index.html) + + + +Get sensitive content settings + + + +### Return type: [account.ContentSettings](/API_docs/types/account.ContentSettings.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_ContentSettings = $MadelineProto->account->getContentSettings(); +``` + diff --git a/docs/API_docs/methods/account.getDefaultBackgroundEmojis.md b/docs/API_docs/methods/account.getDefaultBackgroundEmojis.md new file mode 100644 index 0000000000..65edc03fb1 --- /dev/null +++ b/docs/API_docs/methods/account.getDefaultBackgroundEmojis.md @@ -0,0 +1,42 @@ +--- +title: "account.getDefaultBackgroundEmojis" +description: "Get a set of suggested [custom emoji stickers](https://core.telegram.org/api/custom-emoji) that can be used in an [accent color pattern](https://core.telegram.org/api/colors)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getDefaultBackgroundEmojis.html +--- +# Method: account.getDefaultBackgroundEmojis +[Back to methods index](index.html) + + + +Get a set of suggested [custom emoji stickers](https://core.telegram.org/api/custom-emoji) that can be used in an [accent color pattern](https://core.telegram.org/api/colors). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [EmojiList](/API_docs/types/EmojiList.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$EmojiList = $MadelineProto->account->getDefaultBackgroundEmojis(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/account.getDefaultEmojiStatuses.md b/docs/API_docs/methods/account.getDefaultEmojiStatuses.md new file mode 100644 index 0000000000..cf938407a3 --- /dev/null +++ b/docs/API_docs/methods/account.getDefaultEmojiStatuses.md @@ -0,0 +1,42 @@ +--- +title: "account.getDefaultEmojiStatuses" +description: "Get a list of default suggested [emoji statuses](https://core.telegram.org/api/emoji-status)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getDefaultEmojiStatuses.html +--- +# Method: account.getDefaultEmojiStatuses +[Back to methods index](index.html) + + + +Get a list of default suggested [emoji statuses](https://core.telegram.org/api/emoji-status) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [account.EmojiStatuses](/API_docs/types/account.EmojiStatuses.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_EmojiStatuses = $MadelineProto->account->getDefaultEmojiStatuses(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/account.getDefaultGroupPhotoEmojis.md b/docs/API_docs/methods/account.getDefaultGroupPhotoEmojis.md new file mode 100644 index 0000000000..dfb57ec3af --- /dev/null +++ b/docs/API_docs/methods/account.getDefaultGroupPhotoEmojis.md @@ -0,0 +1,42 @@ +--- +title: "account.getDefaultGroupPhotoEmojis" +description: "Get a set of suggested [custom emoji stickers](https://core.telegram.org/api/custom-emoji) that can be [used as group picture](https://core.telegram.org/api/files#sticker-profile-pictures)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getDefaultGroupPhotoEmojis.html +--- +# Method: account.getDefaultGroupPhotoEmojis +[Back to methods index](index.html) + + + +Get a set of suggested [custom emoji stickers](https://core.telegram.org/api/custom-emoji) that can be [used as group picture](https://core.telegram.org/api/files#sticker-profile-pictures) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [EmojiList](/API_docs/types/EmojiList.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$EmojiList = $MadelineProto->account->getDefaultGroupPhotoEmojis(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/account.getDefaultProfilePhotoEmojis.md b/docs/API_docs/methods/account.getDefaultProfilePhotoEmojis.md new file mode 100644 index 0000000000..68a0f3114d --- /dev/null +++ b/docs/API_docs/methods/account.getDefaultProfilePhotoEmojis.md @@ -0,0 +1,42 @@ +--- +title: "account.getDefaultProfilePhotoEmojis" +description: "Get a set of suggested [custom emoji stickers](https://core.telegram.org/api/custom-emoji) that can be [used as profile picture](https://core.telegram.org/api/files#sticker-profile-pictures)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getDefaultProfilePhotoEmojis.html +--- +# Method: account.getDefaultProfilePhotoEmojis +[Back to methods index](index.html) + + + +Get a set of suggested [custom emoji stickers](https://core.telegram.org/api/custom-emoji) that can be [used as profile picture](https://core.telegram.org/api/files#sticker-profile-pictures) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [EmojiList](/API_docs/types/EmojiList.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$EmojiList = $MadelineProto->account->getDefaultProfilePhotoEmojis(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/account.getGlobalPrivacySettings.md b/docs/API_docs/methods/account.getGlobalPrivacySettings.md new file mode 100644 index 0000000000..680b787b6f --- /dev/null +++ b/docs/API_docs/methods/account.getGlobalPrivacySettings.md @@ -0,0 +1,37 @@ +--- +title: "account.getGlobalPrivacySettings" +description: "Get global privacy settings" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getGlobalPrivacySettings.html +--- +# Method: account.getGlobalPrivacySettings +[Back to methods index](index.html) + + + +Get global privacy settings + + + +### Return type: [GlobalPrivacySettings](/API_docs/types/GlobalPrivacySettings.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$GlobalPrivacySettings = $MadelineProto->account->getGlobalPrivacySettings(); +``` + diff --git a/docs/API_docs/methods/account.getMultiWallPapers.md b/docs/API_docs/methods/account.getMultiWallPapers.md new file mode 100644 index 0000000000..feaed6ae1d --- /dev/null +++ b/docs/API_docs/methods/account.getMultiWallPapers.md @@ -0,0 +1,42 @@ +--- +title: "account.getMultiWallPapers" +description: "Get info about multiple [wallpapers](https://core.telegram.org/api/wallpapers)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getMultiWallPapers.html +--- +# Method: account.getMultiWallPapers +[Back to methods index](index.html) + + + +Get info about multiple [wallpapers](https://core.telegram.org/api/wallpapers) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|wallpapers|Array of [InputWallPaper](/API_docs/types/InputWallPaper.html) | [Wallpapers](https://core.telegram.org/api/wallpapers) to fetch info about | Yes| + + +### Return type: [Vector\_of\_WallPaper](/API_docs/types/WallPaper.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_WallPaper = $MadelineProto->account->getMultiWallPapers(wallpapers: [$InputWallPaper, $InputWallPaper], ); +``` + diff --git a/docs/API_docs/methods/account.getNotifyExceptions.md b/docs/API_docs/methods/account.getNotifyExceptions.md new file mode 100644 index 0000000000..0be1c170e4 --- /dev/null +++ b/docs/API_docs/methods/account.getNotifyExceptions.md @@ -0,0 +1,44 @@ +--- +title: "account.getNotifyExceptions" +description: "Returns list of chats with non-default notification settings" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getNotifyExceptions.html +--- +# Method: account.getNotifyExceptions +[Back to methods index](index.html) + + + +Returns list of chats with non-default notification settings + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|compare\_sound|[Bool](/API_docs/types/Bool.html) | If set, chats with non-default sound will be returned | Optional| +|compare\_stories|[Bool](/API_docs/types/Bool.html) | If set, chats with non-default notification settings for stories will be returned | Optional| +|peer|[InputNotifyPeer](/API_docs/types/InputNotifyPeer.html) | If specified, only chats of the specified category will be returned | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->account->getNotifyExceptions(compare_sound: $Bool, compare_stories: $Bool, peer: $InputNotifyPeer, ); +``` + diff --git a/docs/API_docs/methods/account.getNotifySettings.md b/docs/API_docs/methods/account.getNotifySettings.md new file mode 100644 index 0000000000..82e19e469b --- /dev/null +++ b/docs/API_docs/methods/account.getNotifySettings.md @@ -0,0 +1,42 @@ +--- +title: "account.getNotifySettings" +description: "Gets current notification settings for a given user/group, from all users/all groups." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getNotifySettings.html +--- +# Method: account.getNotifySettings +[Back to methods index](index.html) + + + +Gets current notification settings for a given user/group, from all users/all groups. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[InputNotifyPeer](/API_docs/types/InputNotifyPeer.html) | Notification source | Yes| + + +### Return type: [PeerNotifySettings](/API_docs/types/PeerNotifySettings.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$PeerNotifySettings = $MadelineProto->account->getNotifySettings(peer: $InputNotifyPeer, ); +``` + diff --git a/docs/API_docs/methods/account.getPassword.md b/docs/API_docs/methods/account.getPassword.md new file mode 100644 index 0000000000..663448e586 --- /dev/null +++ b/docs/API_docs/methods/account.getPassword.md @@ -0,0 +1,37 @@ +--- +title: "account.getPassword" +description: "Obtain configuration for two-factor authorization with password" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getPassword.html +--- +# Method: account.getPassword +[Back to methods index](index.html) + + + +Obtain configuration for two-factor authorization with password + + + +### Return type: [account.Password](/API_docs/types/account.Password.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_Password = $MadelineProto->account->getPassword(); +``` + diff --git a/docs/API_docs/methods/account.getPasswordSettings.md b/docs/API_docs/methods/account.getPasswordSettings.md new file mode 100644 index 0000000000..742e23a632 --- /dev/null +++ b/docs/API_docs/methods/account.getPasswordSettings.md @@ -0,0 +1,42 @@ +--- +title: "account.getPasswordSettings" +description: "You cannot use this method directly; use $MadelineProto->update2fa($params), instead (see https://docs.madelineproto.xyz for more info)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getPasswordSettings.html +--- +# Method: account.getPasswordSettings +[Back to methods index](index.html) + + + +You cannot use this method directly; use $MadelineProto->update2fa($params), instead (see https://docs.madelineproto.xyz for more info) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|password|[InputCheckPasswordSRP](/API_docs/types/InputCheckPasswordSRP.html) | The password (see [SRP](https://core.telegram.org/api/srp)) | Yes| + + +### Return type: [account.PasswordSettings](/API_docs/types/account.PasswordSettings.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_PasswordSettings = $MadelineProto->account->getPasswordSettings(password: $InputCheckPasswordSRP, ); +``` + diff --git a/docs/API_docs/methods/account.getPrivacy.md b/docs/API_docs/methods/account.getPrivacy.md new file mode 100644 index 0000000000..b69f08b0ac --- /dev/null +++ b/docs/API_docs/methods/account.getPrivacy.md @@ -0,0 +1,42 @@ +--- +title: "account.getPrivacy" +description: "Get privacy settings of current account" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getPrivacy.html +--- +# Method: account.getPrivacy +[Back to methods index](index.html) + + + +Get privacy settings of current account + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|key|[InputPrivacyKey](/API_docs/types/InputPrivacyKey.html) | Peer category whose privacy settings should be fetched | Yes| + + +### Return type: [account.PrivacyRules](/API_docs/types/account.PrivacyRules.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_PrivacyRules = $MadelineProto->account->getPrivacy(key: $InputPrivacyKey, ); +``` + diff --git a/docs/API_docs/methods/account.getReactionsNotifySettings.md b/docs/API_docs/methods/account.getReactionsNotifySettings.md new file mode 100644 index 0000000000..c52ce7d87c --- /dev/null +++ b/docs/API_docs/methods/account.getReactionsNotifySettings.md @@ -0,0 +1,35 @@ +--- +title: "account.getReactionsNotifySettings" +description: "account.getReactionsNotifySettings parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getReactionsNotifySettings.html +--- +# Method: account.getReactionsNotifySettings +[Back to methods index](index.html) + + + + + +### Return type: [ReactionsNotifySettings](/API_docs/types/ReactionsNotifySettings.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$ReactionsNotifySettings = $MadelineProto->account->getReactionsNotifySettings(); +``` + diff --git a/docs/API_docs/methods/account.getRecentEmojiStatuses.md b/docs/API_docs/methods/account.getRecentEmojiStatuses.md new file mode 100644 index 0000000000..7a8012069a --- /dev/null +++ b/docs/API_docs/methods/account.getRecentEmojiStatuses.md @@ -0,0 +1,42 @@ +--- +title: "account.getRecentEmojiStatuses" +description: "Get recently used [emoji statuses](https://core.telegram.org/api/emoji-status)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getRecentEmojiStatuses.html +--- +# Method: account.getRecentEmojiStatuses +[Back to methods index](index.html) + + + +Get recently used [emoji statuses](https://core.telegram.org/api/emoji-status) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [account.EmojiStatuses](/API_docs/types/account.EmojiStatuses.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_EmojiStatuses = $MadelineProto->account->getRecentEmojiStatuses(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/account.getSavedRingtones.md b/docs/API_docs/methods/account.getSavedRingtones.md new file mode 100644 index 0000000000..b908b331a1 --- /dev/null +++ b/docs/API_docs/methods/account.getSavedRingtones.md @@ -0,0 +1,42 @@ +--- +title: "account.getSavedRingtones" +description: "Fetch saved notification sounds" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getSavedRingtones.html +--- +# Method: account.getSavedRingtones +[Back to methods index](index.html) + + + +Fetch saved notification sounds + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [account.SavedRingtones](/API_docs/types/account.SavedRingtones.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_SavedRingtones = $MadelineProto->account->getSavedRingtones(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/account.getSecureValue.md b/docs/API_docs/methods/account.getSecureValue.md new file mode 100644 index 0000000000..c9b502b4ea --- /dev/null +++ b/docs/API_docs/methods/account.getSecureValue.md @@ -0,0 +1,42 @@ +--- +title: "account.getSecureValue" +description: "Get saved [Telegram Passport](https://core.telegram.org/passport) document, [for more info see the passport docs »](https://core.telegram.org/passport/encryption#encryption)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getSecureValue.html +--- +# Method: account.getSecureValue +[Back to methods index](index.html) + + + +Get saved [Telegram Passport](https://core.telegram.org/passport) document, [for more info see the passport docs »](https://core.telegram.org/passport/encryption#encryption) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|types|Array of [SecureValueType](/API_docs/types/SecureValueType.html) | Requested value types | Yes| + + +### Return type: [Vector\_of\_SecureValue](/API_docs/types/SecureValue.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_SecureValue = $MadelineProto->account->getSecureValue(types: [$SecureValueType, $SecureValueType], ); +``` + diff --git a/docs/API_docs/methods/account.getTheme.md b/docs/API_docs/methods/account.getTheme.md new file mode 100644 index 0000000000..4e9c8b74f4 --- /dev/null +++ b/docs/API_docs/methods/account.getTheme.md @@ -0,0 +1,43 @@ +--- +title: "account.getTheme" +description: "Get theme information" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getTheme.html +--- +# Method: account.getTheme +[Back to methods index](index.html) + + + +Get theme information + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|format|[string](/API_docs/types/string.html) | Theme format, a string that identifies the theming engines supported by the client | Optional| +|theme|[InputTheme](/API_docs/types/InputTheme.html) | Theme | Yes| + + +### Return type: [Theme](/API_docs/types/Theme.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Theme = $MadelineProto->account->getTheme(format: 'string', theme: $InputTheme, ); +``` + diff --git a/docs/API_docs/methods/account.getThemes.md b/docs/API_docs/methods/account.getThemes.md new file mode 100644 index 0000000000..9318a6decf --- /dev/null +++ b/docs/API_docs/methods/account.getThemes.md @@ -0,0 +1,43 @@ +--- +title: "account.getThemes" +description: "Get installed themes" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getThemes.html +--- +# Method: account.getThemes +[Back to methods index](index.html) + + + +Get installed themes + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|format|[string](/API_docs/types/string.html) | Theme format, a string that identifies the theming engines supported by the client | Optional| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [account.Themes](/API_docs/types/account.Themes.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_Themes = $MadelineProto->account->getThemes(format: 'string', hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/account.getTmpPassword.md b/docs/API_docs/methods/account.getTmpPassword.md new file mode 100644 index 0000000000..0a9a412828 --- /dev/null +++ b/docs/API_docs/methods/account.getTmpPassword.md @@ -0,0 +1,43 @@ +--- +title: "account.getTmpPassword" +description: "Get temporary payment password" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getTmpPassword.html +--- +# Method: account.getTmpPassword +[Back to methods index](index.html) + + + +Get temporary payment password + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|password|[InputCheckPasswordSRP](/API_docs/types/InputCheckPasswordSRP.html) | SRP password parameters | Yes| +|period|[int](/API_docs/types/int.html) | Time during which the temporary password will be valid, in seconds; should be between 60 and 86400 | Optional| + + +### Return type: [account.TmpPassword](/API_docs/types/account.TmpPassword.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_TmpPassword = $MadelineProto->account->getTmpPassword(password: $InputCheckPasswordSRP, period: $int, ); +``` + diff --git a/docs/API_docs/methods/account.getWallPaper.md b/docs/API_docs/methods/account.getWallPaper.md new file mode 100644 index 0000000000..39b15bd358 --- /dev/null +++ b/docs/API_docs/methods/account.getWallPaper.md @@ -0,0 +1,42 @@ +--- +title: "account.getWallPaper" +description: "Get info about a certain [wallpaper](https://core.telegram.org/api/wallpapers)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getWallPaper.html +--- +# Method: account.getWallPaper +[Back to methods index](index.html) + + + +Get info about a certain [wallpaper](https://core.telegram.org/api/wallpapers) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|wallpaper|[InputWallPaper](/API_docs/types/InputWallPaper.html) | The [wallpaper](https://core.telegram.org/api/wallpapers) to get info about | Yes| + + +### Return type: [WallPaper](/API_docs/types/WallPaper.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$WallPaper = $MadelineProto->account->getWallPaper(wallpaper: $InputWallPaper, ); +``` + diff --git a/docs/API_docs/methods/account.getWallPapers.md b/docs/API_docs/methods/account.getWallPapers.md new file mode 100644 index 0000000000..9890ece20a --- /dev/null +++ b/docs/API_docs/methods/account.getWallPapers.md @@ -0,0 +1,42 @@ +--- +title: "account.getWallPapers" +description: "Returns a list of available [wallpapers](https://core.telegram.org/api/wallpapers)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getWallPapers.html +--- +# Method: account.getWallPapers +[Back to methods index](index.html) + + + +Returns a list of available [wallpapers](https://core.telegram.org/api/wallpapers). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [account.WallPapers](/API_docs/types/account.WallPapers.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_WallPapers = $MadelineProto->account->getWallPapers(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/account.getWebAuthorizations.md b/docs/API_docs/methods/account.getWebAuthorizations.md new file mode 100644 index 0000000000..493c353d8f --- /dev/null +++ b/docs/API_docs/methods/account.getWebAuthorizations.md @@ -0,0 +1,37 @@ +--- +title: "account.getWebAuthorizations" +description: "Get web [login widget](https://core.telegram.org/widgets/login) authorizations" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_getWebAuthorizations.html +--- +# Method: account.getWebAuthorizations +[Back to methods index](index.html) + + + +Get web [login widget](https://core.telegram.org/widgets/login) authorizations + + + +### Return type: [account.WebAuthorizations](/API_docs/types/account.WebAuthorizations.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_WebAuthorizations = $MadelineProto->account->getWebAuthorizations(); +``` + diff --git a/docs/API_docs/methods/account.initTakeoutSession.md b/docs/API_docs/methods/account.initTakeoutSession.md new file mode 100644 index 0000000000..a0e9c29ffd --- /dev/null +++ b/docs/API_docs/methods/account.initTakeoutSession.md @@ -0,0 +1,48 @@ +--- +title: "account.initTakeoutSession" +description: "Initialize a [takeout session, see here » for more info](https://core.telegram.org/api/takeout)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_initTakeoutSession.html +--- +# Method: account.initTakeoutSession +[Back to methods index](index.html) + + + +Initialize a [takeout session, see here » for more info](https://core.telegram.org/api/takeout). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|contacts|[Bool](/API_docs/types/Bool.html) | Whether to export contacts | Optional| +|message\_users|[Bool](/API_docs/types/Bool.html) | Whether to export messages in private chats | Optional| +|message\_chats|[Bool](/API_docs/types/Bool.html) | Whether to export messages in [basic groups](https://core.telegram.org/api/channel#basic-groups) | Optional| +|message\_megagroups|[Bool](/API_docs/types/Bool.html) | Whether to export messages in [supergroups](https://core.telegram.org/api/channel#supergroups) | Optional| +|message\_channels|[Bool](/API_docs/types/Bool.html) | Whether to export messages in [channels](https://core.telegram.org/api/channel#channels) | Optional| +|files|[Bool](/API_docs/types/Bool.html) | Whether to export files | Optional| +|file\_max\_size|[long](/API_docs/types/long.html) | Maximum size of files to export | Optional| + + +### Return type: [account.Takeout](/API_docs/types/account.Takeout.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_Takeout = $MadelineProto->account->initTakeoutSession(contacts: $Bool, message_users: $Bool, message_chats: $Bool, message_megagroups: $Bool, message_channels: $Bool, files: $Bool, file_max_size: $long, ); +``` + diff --git a/docs/API_docs/methods/account.installTheme.md b/docs/API_docs/methods/account.installTheme.md new file mode 100644 index 0000000000..94f5fff970 --- /dev/null +++ b/docs/API_docs/methods/account.installTheme.md @@ -0,0 +1,45 @@ +--- +title: "account.installTheme" +description: "Install a theme" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_installTheme.html +--- +# Method: account.installTheme +[Back to methods index](index.html) + + + +Install a theme + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|dark|[Bool](/API_docs/types/Bool.html) | Whether to install the dark version | Optional| +|theme|[InputTheme](/API_docs/types/InputTheme.html) | Theme to install | Optional| +|format|[string](/API_docs/types/string.html) | Theme format, a string that identifies the theming engines supported by the client | Optional| +|base\_theme|[BaseTheme](/API_docs/types/BaseTheme.html) | Indicates a basic theme provided by all clients | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->installTheme(dark: $Bool, theme: $InputTheme, format: 'string', base_theme: $BaseTheme, ); +``` + diff --git a/docs/API_docs/methods/account.installWallPaper.md b/docs/API_docs/methods/account.installWallPaper.md new file mode 100644 index 0000000000..15548844c3 --- /dev/null +++ b/docs/API_docs/methods/account.installWallPaper.md @@ -0,0 +1,43 @@ +--- +title: "account.installWallPaper" +description: "Install [wallpaper](https://core.telegram.org/api/wallpapers)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_installWallPaper.html +--- +# Method: account.installWallPaper +[Back to methods index](index.html) + + + +Install [wallpaper](https://core.telegram.org/api/wallpapers) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|wallpaper|[InputWallPaper](/API_docs/types/InputWallPaper.html) | [Wallpaper](https://core.telegram.org/api/wallpapers) to install | Yes| +|settings|[WallPaperSettings](/API_docs/types/WallPaperSettings.html) | [Wallpaper](https://core.telegram.org/api/wallpapers) settings | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->installWallPaper(wallpaper: $InputWallPaper, settings: $WallPaperSettings, ); +``` + diff --git a/docs/API_docs/methods/account.invalidateSignInCodes.md b/docs/API_docs/methods/account.invalidateSignInCodes.md new file mode 100644 index 0000000000..909ce93652 --- /dev/null +++ b/docs/API_docs/methods/account.invalidateSignInCodes.md @@ -0,0 +1,42 @@ +--- +title: "account.invalidateSignInCodes" +description: "Invalidate the specified login codes, see [here »](https://core.telegram.org/api/auth#invalidating-login-codes) for more info." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_invalidateSignInCodes.html +--- +# Method: account.invalidateSignInCodes +[Back to methods index](index.html) + + + +Invalidate the specified login codes, see [here »](https://core.telegram.org/api/auth#invalidating-login-codes) for more info. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|codes|Array of [string](/API_docs/types/string.html) | The login codes to invalidate. | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->invalidateSignInCodes(codes: ['string', 'string'], ); +``` + diff --git a/docs/API_docs/methods/account.registerDevice.md b/docs/API_docs/methods/account.registerDevice.md new file mode 100644 index 0000000000..88f3a6a2a5 --- /dev/null +++ b/docs/API_docs/methods/account.registerDevice.md @@ -0,0 +1,47 @@ +--- +title: "account.registerDevice" +description: "Register device to receive [PUSH notifications](https://core.telegram.org/api/push-updates)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_registerDevice.html +--- +# Method: account.registerDevice +[Back to methods index](index.html) + + + +Register device to receive [PUSH notifications](https://core.telegram.org/api/push-updates) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|no\_muted|[Bool](/API_docs/types/Bool.html) | Avoid receiving (silent and invisible background) notifications. Useful to save battery. | Optional| +|token\_type|[int](/API_docs/types/int.html) | Device token type, see [PUSH updates](https://core.telegram.org/api/push-updates#subscribing-to-notifications) for the possible values. | Optional| +|token|[string](/API_docs/types/string.html) | Device token, see [PUSH updates](https://core.telegram.org/api/push-updates#subscribing-to-notifications) for the possible values. | Optional| +|app\_sandbox|[Bool](/API_docs/types/Bool.html) | If [(boolTrue)](../constructors/boolTrue.html) is transmitted, a sandbox-certificate will be used during transmission. | Yes| +|secret|[bytes](/API_docs/types/bytes.html) | For FCM and APNS VoIP, optional encryption key used to encrypt push notifications | Yes| +|other\_uids|Array of [long](/API_docs/types/long.html) | List of user identifiers of other users currently using the client | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->registerDevice(no_muted: $Bool, token_type: $int, token: 'string', app_sandbox: $Bool, secret: 'bytes', other_uids: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/account.reorderUsernames.md b/docs/API_docs/methods/account.reorderUsernames.md new file mode 100644 index 0000000000..d43dbf471f --- /dev/null +++ b/docs/API_docs/methods/account.reorderUsernames.md @@ -0,0 +1,42 @@ +--- +title: "account.reorderUsernames" +description: "Reorder usernames associated with the currently logged-in user." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_reorderUsernames.html +--- +# Method: account.reorderUsernames +[Back to methods index](index.html) + + + +Reorder usernames associated with the currently logged-in user. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|order|Array of [string](/API_docs/types/string.html) | The new order for active usernames. All active usernames must be specified. | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->reorderUsernames(order: ['string', 'string'], ); +``` + diff --git a/docs/API_docs/methods/account.reportPeer.md b/docs/API_docs/methods/account.reportPeer.md new file mode 100644 index 0000000000..1bf6692e0a --- /dev/null +++ b/docs/API_docs/methods/account.reportPeer.md @@ -0,0 +1,50 @@ +--- +title: "account.reportPeer" +description: "Report a peer for violation of telegram's Terms of Service" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_reportPeer.html +--- +# Method: account.reportPeer +[Back to methods index](index.html) + + + +Report a peer for violation of telegram's Terms of Service + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The peer to report | Optional| +|reason|[ReportReason](/API_docs/types/ReportReason.html) | The reason why this peer is being reported | Yes| +|message|[string](/API_docs/types/string.html) | Comment for report moderation | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->reportPeer(peer: $InputPeer, reason: $ReportReason, message: 'string', ); +``` + + +## Return value + +If the length of the provided message is bigger than 4096, the message will be split in chunks and the method will be called multiple times, with the same parameters (except for the message), and an array of [Bool](../types/Bool.html) will be returned instead. + + diff --git a/docs/API_docs/methods/account.reportProfilePhoto.md b/docs/API_docs/methods/account.reportProfilePhoto.md new file mode 100644 index 0000000000..fc3a5b1023 --- /dev/null +++ b/docs/API_docs/methods/account.reportProfilePhoto.md @@ -0,0 +1,51 @@ +--- +title: "account.reportProfilePhoto" +description: "Report a profile photo of a dialog" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_reportProfilePhoto.html +--- +# Method: account.reportProfilePhoto +[Back to methods index](index.html) + + + +Report a profile photo of a dialog + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The dialog | Optional| +|photo\_id|[MessageMedia, Update, Message or InputPhoto](/API_docs/types/InputPhoto.html) | Dialog photo ID | Optional| +|reason|[ReportReason](/API_docs/types/ReportReason.html) | Report reason | Yes| +|message|[string](/API_docs/types/string.html) | Comment for report moderation | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->reportProfilePhoto(peer: $InputPeer, photo_id: $InputPhoto, reason: $ReportReason, message: 'string', ); +``` + + +## Return value + +If the length of the provided message is bigger than 4096, the message will be split in chunks and the method will be called multiple times, with the same parameters (except for the message), and an array of [Bool](../types/Bool.html) will be returned instead. + + diff --git a/docs/API_docs/methods/account.resendPasswordEmail.md b/docs/API_docs/methods/account.resendPasswordEmail.md new file mode 100644 index 0000000000..1e4e9edb22 --- /dev/null +++ b/docs/API_docs/methods/account.resendPasswordEmail.md @@ -0,0 +1,37 @@ +--- +title: "account.resendPasswordEmail" +description: "Resend the code to verify an email to use as [2FA recovery method](https://core.telegram.org/api/srp)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_resendPasswordEmail.html +--- +# Method: account.resendPasswordEmail +[Back to methods index](index.html) + + + +Resend the code to verify an email to use as [2FA recovery method](https://core.telegram.org/api/srp). + + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->resendPasswordEmail(); +``` + diff --git a/docs/API_docs/methods/account.resetAuthorization.md b/docs/API_docs/methods/account.resetAuthorization.md new file mode 100644 index 0000000000..beccaa0fca --- /dev/null +++ b/docs/API_docs/methods/account.resetAuthorization.md @@ -0,0 +1,42 @@ +--- +title: "account.resetAuthorization" +description: "Log out an active [authorized session](https://core.telegram.org/api/auth) by its hash" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_resetAuthorization.html +--- +# Method: account.resetAuthorization +[Back to methods index](index.html) + + + +Log out an active [authorized session](https://core.telegram.org/api/auth) by its hash + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | Session hash | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->resetAuthorization(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/account.resetNotifySettings.md b/docs/API_docs/methods/account.resetNotifySettings.md new file mode 100644 index 0000000000..a746f0b915 --- /dev/null +++ b/docs/API_docs/methods/account.resetNotifySettings.md @@ -0,0 +1,37 @@ +--- +title: "account.resetNotifySettings" +description: "Resets all notification settings from users and groups." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_resetNotifySettings.html +--- +# Method: account.resetNotifySettings +[Back to methods index](index.html) + + + +Resets all notification settings from users and groups. + + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->resetNotifySettings(); +``` + diff --git a/docs/API_docs/methods/account.resetPassword.md b/docs/API_docs/methods/account.resetPassword.md new file mode 100644 index 0000000000..c5347dcb31 --- /dev/null +++ b/docs/API_docs/methods/account.resetPassword.md @@ -0,0 +1,37 @@ +--- +title: "account.resetPassword" +description: "Initiate a 2FA password reset: can only be used if the user is already logged-in, [see here for more info »](https://core.telegram.org/api/srp#password-reset)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_resetPassword.html +--- +# Method: account.resetPassword +[Back to methods index](index.html) + + + +Initiate a 2FA password reset: can only be used if the user is already logged-in, [see here for more info »](https://core.telegram.org/api/srp#password-reset) + + + +### Return type: [account.ResetPasswordResult](/API_docs/types/account.ResetPasswordResult.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_ResetPasswordResult = $MadelineProto->account->resetPassword(); +``` + diff --git a/docs/API_docs/methods/account.resetWallPapers.md b/docs/API_docs/methods/account.resetWallPapers.md new file mode 100644 index 0000000000..e6c7d21fd5 --- /dev/null +++ b/docs/API_docs/methods/account.resetWallPapers.md @@ -0,0 +1,37 @@ +--- +title: "account.resetWallPapers" +description: "Delete all installed [wallpapers](https://core.telegram.org/api/wallpapers), reverting to the default wallpaper set." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_resetWallPapers.html +--- +# Method: account.resetWallPapers +[Back to methods index](index.html) + + + +Delete all installed [wallpapers](https://core.telegram.org/api/wallpapers), reverting to the default wallpaper set. + + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->resetWallPapers(); +``` + diff --git a/docs/API_docs/methods/account.resetWebAuthorization.md b/docs/API_docs/methods/account.resetWebAuthorization.md new file mode 100644 index 0000000000..ceb8b046b6 --- /dev/null +++ b/docs/API_docs/methods/account.resetWebAuthorization.md @@ -0,0 +1,42 @@ +--- +title: "account.resetWebAuthorization" +description: "Log out an active web [telegram login](https://core.telegram.org/widgets/login) session" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_resetWebAuthorization.html +--- +# Method: account.resetWebAuthorization +[Back to methods index](index.html) + + + +Log out an active web [telegram login](https://core.telegram.org/widgets/login) session + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Session](../constructors/webAuthorization.html) hash | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->resetWebAuthorization(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/account.resetWebAuthorizations.md b/docs/API_docs/methods/account.resetWebAuthorizations.md new file mode 100644 index 0000000000..bb5c683532 --- /dev/null +++ b/docs/API_docs/methods/account.resetWebAuthorizations.md @@ -0,0 +1,37 @@ +--- +title: "account.resetWebAuthorizations" +description: "Reset all active web [telegram login](https://core.telegram.org/widgets/login) sessions" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_resetWebAuthorizations.html +--- +# Method: account.resetWebAuthorizations +[Back to methods index](index.html) + + + +Reset all active web [telegram login](https://core.telegram.org/widgets/login) sessions + + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->resetWebAuthorizations(); +``` + diff --git a/docs/API_docs/methods/account.resolveBusinessChatLink.md b/docs/API_docs/methods/account.resolveBusinessChatLink.md new file mode 100644 index 0000000000..839a9280e5 --- /dev/null +++ b/docs/API_docs/methods/account.resolveBusinessChatLink.md @@ -0,0 +1,40 @@ +--- +title: "account.resolveBusinessChatLink" +description: "account.resolveBusinessChatLink parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_resolveBusinessChatLink.html +--- +# Method: account.resolveBusinessChatLink +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|slug|[string](/API_docs/types/string.html) | Optional| + + +### Return type: [account.ResolvedBusinessChatLinks](/API_docs/types/account.ResolvedBusinessChatLinks.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_ResolvedBusinessChatLinks = $MadelineProto->account->resolveBusinessChatLink(slug: 'string', ); +``` + diff --git a/docs/API_docs/methods/account.saveAutoDownloadSettings.md b/docs/API_docs/methods/account.saveAutoDownloadSettings.md new file mode 100644 index 0000000000..0f8eaa388f --- /dev/null +++ b/docs/API_docs/methods/account.saveAutoDownloadSettings.md @@ -0,0 +1,44 @@ +--- +title: "account.saveAutoDownloadSettings" +description: "Change media autodownload settings" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_saveAutoDownloadSettings.html +--- +# Method: account.saveAutoDownloadSettings +[Back to methods index](index.html) + + + +Change media autodownload settings + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|low|[Bool](/API_docs/types/Bool.html) | Whether to save media in the low data usage preset | Optional| +|high|[Bool](/API_docs/types/Bool.html) | Whether to save media in the high data usage preset | Optional| +|settings|[AutoDownloadSettings](/API_docs/types/AutoDownloadSettings.html) | Media autodownload settings | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->saveAutoDownloadSettings(low: $Bool, high: $Bool, settings: $AutoDownloadSettings, ); +``` + diff --git a/docs/API_docs/methods/account.saveAutoSaveSettings.md b/docs/API_docs/methods/account.saveAutoSaveSettings.md new file mode 100644 index 0000000000..9bb17e08cd --- /dev/null +++ b/docs/API_docs/methods/account.saveAutoSaveSettings.md @@ -0,0 +1,46 @@ +--- +title: "account.saveAutoSaveSettings" +description: "Modify autosave settings" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_saveAutoSaveSettings.html +--- +# Method: account.saveAutoSaveSettings +[Back to methods index](index.html) + + + +Modify autosave settings + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|users|[Bool](/API_docs/types/Bool.html) | Whether the new settings should affect all private chats | Optional| +|chats|[Bool](/API_docs/types/Bool.html) | Whether the new settings should affect all groups | Optional| +|broadcasts|[Bool](/API_docs/types/Bool.html) | Whether the new settings should affect all [channels](https://core.telegram.org/api/channel) | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Whether the new settings should affect a specific peer | Optional| +|settings|[AutoSaveSettings](/API_docs/types/AutoSaveSettings.html) | The new autosave settings | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->saveAutoSaveSettings(users: $Bool, chats: $Bool, broadcasts: $Bool, peer: $InputPeer, settings: $AutoSaveSettings, ); +``` + diff --git a/docs/API_docs/methods/account.saveRingtone.md b/docs/API_docs/methods/account.saveRingtone.md new file mode 100644 index 0000000000..5e62fcd12b --- /dev/null +++ b/docs/API_docs/methods/account.saveRingtone.md @@ -0,0 +1,46 @@ +--- +title: "account.saveRingtone" +description: "Save or remove saved notification sound." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_saveRingtone.html +--- +# Method: account.saveRingtone +[Back to methods index](index.html) + + + +Save or remove saved notification sound. + +If the notification sound is already in MP3 format, [account.savedRingtone](../constructors/account.savedRingtone.html) will be returned. +Otherwise, it will be automatically converted and a [account.savedRingtoneConverted](../constructors/account.savedRingtoneConverted.html) will be returned, containing a new [document](../constructors/document.html) object that should be used to refer to the ringtone from now on (ie when deleting it using the `unsave` parameter, or when downloading it). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|[MessageMedia, Update, Message or InputDocument](/API_docs/types/InputDocument.html) | Notification sound uploaded using [account.uploadRingtone](../methods/account.uploadRingtone.html) | Optional| +|unsave|[Bool](/API_docs/types/Bool.html) | Whether to add or delete the notification sound | Yes| + + +### Return type: [account.SavedRingtone](/API_docs/types/account.SavedRingtone.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_SavedRingtone = $MadelineProto->account->saveRingtone(id: $InputDocument, unsave: $Bool, ); +``` + diff --git a/docs/API_docs/methods/account.saveSecureValue.md b/docs/API_docs/methods/account.saveSecureValue.md new file mode 100644 index 0000000000..a57f223952 --- /dev/null +++ b/docs/API_docs/methods/account.saveSecureValue.md @@ -0,0 +1,43 @@ +--- +title: "account.saveSecureValue" +description: "Securely save [Telegram Passport](https://core.telegram.org/passport) document, [for more info see the passport docs »](https://core.telegram.org/passport/encryption#encryption)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_saveSecureValue.html +--- +# Method: account.saveSecureValue +[Back to methods index](index.html) + + + +Securely save [Telegram Passport](https://core.telegram.org/passport) document, [for more info see the passport docs »](https://core.telegram.org/passport/encryption#encryption) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|value|[InputSecureValue](/API_docs/types/InputSecureValue.html) | Secure value, [for more info see the passport docs »](https://core.telegram.org/passport/encryption#encryption) | Yes| +|secure\_secret\_id|[long](/API_docs/types/long.html) | Passport secret hash, [for more info see the passport docs »](https://core.telegram.org/passport/encryption#encryption) | Yes| + + +### Return type: [SecureValue](/API_docs/types/SecureValue.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$SecureValue = $MadelineProto->account->saveSecureValue(value: $InputSecureValue, secure_secret_id: $long, ); +``` + diff --git a/docs/API_docs/methods/account.saveTheme.md b/docs/API_docs/methods/account.saveTheme.md new file mode 100644 index 0000000000..d7c6ea5327 --- /dev/null +++ b/docs/API_docs/methods/account.saveTheme.md @@ -0,0 +1,43 @@ +--- +title: "account.saveTheme" +description: "Save a theme" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_saveTheme.html +--- +# Method: account.saveTheme +[Back to methods index](index.html) + + + +Save a theme + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|theme|[InputTheme](/API_docs/types/InputTheme.html) | Theme to save | Yes| +|unsave|[Bool](/API_docs/types/Bool.html) | Unsave | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->saveTheme(theme: $InputTheme, unsave: $Bool, ); +``` + diff --git a/docs/API_docs/methods/account.saveWallPaper.md b/docs/API_docs/methods/account.saveWallPaper.md new file mode 100644 index 0000000000..671462db93 --- /dev/null +++ b/docs/API_docs/methods/account.saveWallPaper.md @@ -0,0 +1,44 @@ +--- +title: "account.saveWallPaper" +description: "Install/uninstall [wallpaper](https://core.telegram.org/api/wallpapers)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_saveWallPaper.html +--- +# Method: account.saveWallPaper +[Back to methods index](index.html) + + + +Install/uninstall [wallpaper](https://core.telegram.org/api/wallpapers) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|wallpaper|[InputWallPaper](/API_docs/types/InputWallPaper.html) | [Wallpaper](https://core.telegram.org/api/wallpapers) to install or uninstall | Yes| +|unsave|[Bool](/API_docs/types/Bool.html) | Uninstall wallpaper? | Yes| +|settings|[WallPaperSettings](/API_docs/types/WallPaperSettings.html) | Wallpaper settings | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->saveWallPaper(wallpaper: $InputWallPaper, unsave: $Bool, settings: $WallPaperSettings, ); +``` + diff --git a/docs/API_docs/methods/account.sendChangePhoneCode.md b/docs/API_docs/methods/account.sendChangePhoneCode.md new file mode 100644 index 0000000000..63ac8b3e5d --- /dev/null +++ b/docs/API_docs/methods/account.sendChangePhoneCode.md @@ -0,0 +1,43 @@ +--- +title: "account.sendChangePhoneCode" +description: "Verify a new phone number to associate to the current account" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_sendChangePhoneCode.html +--- +# Method: account.sendChangePhoneCode +[Back to methods index](index.html) + + + +Verify a new phone number to associate to the current account + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|phone\_number|[string](/API_docs/types/string.html) | New phone number | Optional| +|settings|[CodeSettings](/API_docs/types/CodeSettings.html) | Phone code settings | Yes| + + +### Return type: [auth.SentCode](/API_docs/types/auth.SentCode.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$auth_SentCode = $MadelineProto->account->sendChangePhoneCode(phone_number: 'string', settings: $CodeSettings, ); +``` + diff --git a/docs/API_docs/methods/account.sendConfirmPhoneCode.md b/docs/API_docs/methods/account.sendConfirmPhoneCode.md new file mode 100644 index 0000000000..0dc3d41f84 --- /dev/null +++ b/docs/API_docs/methods/account.sendConfirmPhoneCode.md @@ -0,0 +1,43 @@ +--- +title: "account.sendConfirmPhoneCode" +description: "Send confirmation code to cancel account deletion, for more info [click here »](https://core.telegram.org/api/account-deletion)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_sendConfirmPhoneCode.html +--- +# Method: account.sendConfirmPhoneCode +[Back to methods index](index.html) + + + +Send confirmation code to cancel account deletion, for more info [click here »](https://core.telegram.org/api/account-deletion) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|[string](/API_docs/types/string.html) | The hash from the service notification, for more info [click here »](https://core.telegram.org/api/account-deletion) | Optional| +|settings|[CodeSettings](/API_docs/types/CodeSettings.html) | Phone code settings | Yes| + + +### Return type: [auth.SentCode](/API_docs/types/auth.SentCode.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$auth_SentCode = $MadelineProto->account->sendConfirmPhoneCode(hash: 'string', settings: $CodeSettings, ); +``` + diff --git a/docs/API_docs/methods/account.sendVerifyEmailCode.md b/docs/API_docs/methods/account.sendVerifyEmailCode.md new file mode 100644 index 0000000000..615d842669 --- /dev/null +++ b/docs/API_docs/methods/account.sendVerifyEmailCode.md @@ -0,0 +1,43 @@ +--- +title: "account.sendVerifyEmailCode" +description: "Send an email verification code." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_sendVerifyEmailCode.html +--- +# Method: account.sendVerifyEmailCode +[Back to methods index](index.html) + + + +Send an email verification code. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|purpose|[EmailVerifyPurpose](/API_docs/types/EmailVerifyPurpose.html) | Verification purpose. | Yes| +|email|[string](/API_docs/types/string.html) | The email where to send the code. | Optional| + + +### Return type: [account.SentEmailCode](/API_docs/types/account.SentEmailCode.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_SentEmailCode = $MadelineProto->account->sendVerifyEmailCode(purpose: $EmailVerifyPurpose, email: 'string', ); +``` + diff --git a/docs/API_docs/methods/account.sendVerifyPhoneCode.md b/docs/API_docs/methods/account.sendVerifyPhoneCode.md new file mode 100644 index 0000000000..ebcf758ca1 --- /dev/null +++ b/docs/API_docs/methods/account.sendVerifyPhoneCode.md @@ -0,0 +1,43 @@ +--- +title: "account.sendVerifyPhoneCode" +description: "Send the verification phone code for telegram [passport](https://core.telegram.org/passport)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_sendVerifyPhoneCode.html +--- +# Method: account.sendVerifyPhoneCode +[Back to methods index](index.html) + + + +Send the verification phone code for telegram [passport](https://core.telegram.org/passport). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|phone\_number|[string](/API_docs/types/string.html) | The phone number to verify | Optional| +|settings|[CodeSettings](/API_docs/types/CodeSettings.html) | Phone code settings | Yes| + + +### Return type: [auth.SentCode](/API_docs/types/auth.SentCode.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$auth_SentCode = $MadelineProto->account->sendVerifyPhoneCode(phone_number: 'string', settings: $CodeSettings, ); +``` + diff --git a/docs/API_docs/methods/account.setAccountTTL.md b/docs/API_docs/methods/account.setAccountTTL.md new file mode 100644 index 0000000000..6813032f48 --- /dev/null +++ b/docs/API_docs/methods/account.setAccountTTL.md @@ -0,0 +1,42 @@ +--- +title: "account.setAccountTTL" +description: "Set account self-destruction period" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_setAccountTTL.html +--- +# Method: account.setAccountTTL +[Back to methods index](index.html) + + + +Set account self-destruction period + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|ttl|[AccountDaysTTL](/API_docs/types/AccountDaysTTL.html) | Time to live in days | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->setAccountTTL(ttl: $AccountDaysTTL, ); +``` + diff --git a/docs/API_docs/methods/account.setAuthorizationTTL.md b/docs/API_docs/methods/account.setAuthorizationTTL.md new file mode 100644 index 0000000000..557293bcc6 --- /dev/null +++ b/docs/API_docs/methods/account.setAuthorizationTTL.md @@ -0,0 +1,42 @@ +--- +title: "account.setAuthorizationTTL" +description: "Set time-to-live of current session" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_setAuthorizationTTL.html +--- +# Method: account.setAuthorizationTTL +[Back to methods index](index.html) + + + +Set time-to-live of current session + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|authorization\_ttl\_days|[int](/API_docs/types/int.html) | Time-to-live of current session in days | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->setAuthorizationTTL(authorization_ttl_days: $int, ); +``` + diff --git a/docs/API_docs/methods/account.setContactSignUpNotification.md b/docs/API_docs/methods/account.setContactSignUpNotification.md new file mode 100644 index 0000000000..9d4747049d --- /dev/null +++ b/docs/API_docs/methods/account.setContactSignUpNotification.md @@ -0,0 +1,42 @@ +--- +title: "account.setContactSignUpNotification" +description: "Toggle contact sign up notifications" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_setContactSignUpNotification.html +--- +# Method: account.setContactSignUpNotification +[Back to methods index](index.html) + + + +Toggle contact sign up notifications + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|silent|[Bool](/API_docs/types/Bool.html) | Whether to disable contact sign up notifications | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->setContactSignUpNotification(silent: $Bool, ); +``` + diff --git a/docs/API_docs/methods/account.setContentSettings.md b/docs/API_docs/methods/account.setContentSettings.md new file mode 100644 index 0000000000..cd94d5bc75 --- /dev/null +++ b/docs/API_docs/methods/account.setContentSettings.md @@ -0,0 +1,42 @@ +--- +title: "account.setContentSettings" +description: "Set sensitive content settings (for viewing or hiding NSFW content)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_setContentSettings.html +--- +# Method: account.setContentSettings +[Back to methods index](index.html) + + + +Set sensitive content settings (for viewing or hiding NSFW content) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|sensitive\_enabled|[Bool](/API_docs/types/Bool.html) | Enable NSFW content | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->setContentSettings(sensitive_enabled: $Bool, ); +``` + diff --git a/docs/API_docs/methods/account.setGlobalPrivacySettings.md b/docs/API_docs/methods/account.setGlobalPrivacySettings.md new file mode 100644 index 0000000000..11c3b91567 --- /dev/null +++ b/docs/API_docs/methods/account.setGlobalPrivacySettings.md @@ -0,0 +1,42 @@ +--- +title: "account.setGlobalPrivacySettings" +description: "Set global privacy settings" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_setGlobalPrivacySettings.html +--- +# Method: account.setGlobalPrivacySettings +[Back to methods index](index.html) + + + +Set global privacy settings + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|settings|[GlobalPrivacySettings](/API_docs/types/GlobalPrivacySettings.html) | Global privacy settings | Yes| + + +### Return type: [GlobalPrivacySettings](/API_docs/types/GlobalPrivacySettings.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$GlobalPrivacySettings = $MadelineProto->account->setGlobalPrivacySettings(settings: $GlobalPrivacySettings, ); +``` + diff --git a/docs/API_docs/methods/account.setPrivacy.md b/docs/API_docs/methods/account.setPrivacy.md new file mode 100644 index 0000000000..0c5b809e06 --- /dev/null +++ b/docs/API_docs/methods/account.setPrivacy.md @@ -0,0 +1,43 @@ +--- +title: "account.setPrivacy" +description: "Change privacy settings of current account" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_setPrivacy.html +--- +# Method: account.setPrivacy +[Back to methods index](index.html) + + + +Change privacy settings of current account + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|key|[InputPrivacyKey](/API_docs/types/InputPrivacyKey.html) | New privacy rule | Yes| +|rules|Array of [InputPrivacyRule](/API_docs/types/InputPrivacyRule.html) | Peers to which the privacy rule will apply. | Yes| + + +### Return type: [account.PrivacyRules](/API_docs/types/account.PrivacyRules.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_PrivacyRules = $MadelineProto->account->setPrivacy(key: $InputPrivacyKey, rules: [$InputPrivacyRule, $InputPrivacyRule], ); +``` + diff --git a/docs/API_docs/methods/account.setReactionsNotifySettings.md b/docs/API_docs/methods/account.setReactionsNotifySettings.md new file mode 100644 index 0000000000..a7148fab19 --- /dev/null +++ b/docs/API_docs/methods/account.setReactionsNotifySettings.md @@ -0,0 +1,40 @@ +--- +title: "account.setReactionsNotifySettings" +description: "account.setReactionsNotifySettings parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_setReactionsNotifySettings.html +--- +# Method: account.setReactionsNotifySettings +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|settings|[ReactionsNotifySettings](/API_docs/types/ReactionsNotifySettings.html) | Yes| + + +### Return type: [ReactionsNotifySettings](/API_docs/types/ReactionsNotifySettings.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$ReactionsNotifySettings = $MadelineProto->account->setReactionsNotifySettings(settings: $ReactionsNotifySettings, ); +``` + diff --git a/docs/API_docs/methods/account.toggleConnectedBotPaused.md b/docs/API_docs/methods/account.toggleConnectedBotPaused.md new file mode 100644 index 0000000000..d337584c4d --- /dev/null +++ b/docs/API_docs/methods/account.toggleConnectedBotPaused.md @@ -0,0 +1,41 @@ +--- +title: "account.toggleConnectedBotPaused" +description: "account.toggleConnectedBotPaused parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_toggleConnectedBotPaused.html +--- +# Method: account.toggleConnectedBotPaused +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional| +|paused|[Bool](/API_docs/types/Bool.html) | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->toggleConnectedBotPaused(peer: $InputPeer, paused: $Bool, ); +``` + diff --git a/docs/API_docs/methods/account.toggleSponsoredMessages.md b/docs/API_docs/methods/account.toggleSponsoredMessages.md new file mode 100644 index 0000000000..d852a814ed --- /dev/null +++ b/docs/API_docs/methods/account.toggleSponsoredMessages.md @@ -0,0 +1,40 @@ +--- +title: "account.toggleSponsoredMessages" +description: "account.toggleSponsoredMessages parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_toggleSponsoredMessages.html +--- +# Method: account.toggleSponsoredMessages +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|enabled|[Bool](/API_docs/types/Bool.html) | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->toggleSponsoredMessages(enabled: $Bool, ); +``` + diff --git a/docs/API_docs/methods/account.toggleUsername.md b/docs/API_docs/methods/account.toggleUsername.md new file mode 100644 index 0000000000..05865d7bc8 --- /dev/null +++ b/docs/API_docs/methods/account.toggleUsername.md @@ -0,0 +1,43 @@ +--- +title: "account.toggleUsername" +description: "Activate or deactivate a purchased [fragment.com](https://fragment.com) username associated to the currently logged-in user." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_toggleUsername.html +--- +# Method: account.toggleUsername +[Back to methods index](index.html) + + + +Activate or deactivate a purchased [fragment.com](https://fragment.com) username associated to the currently logged-in user. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|username|[string](/API_docs/types/string.html) | Username | Optional| +|active|[Bool](/API_docs/types/Bool.html) | Whether to activate or deactivate it | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->toggleUsername(username: 'string', active: $Bool, ); +``` + diff --git a/docs/API_docs/methods/account.unregisterDevice.md b/docs/API_docs/methods/account.unregisterDevice.md new file mode 100644 index 0000000000..03b4241ad0 --- /dev/null +++ b/docs/API_docs/methods/account.unregisterDevice.md @@ -0,0 +1,44 @@ +--- +title: "account.unregisterDevice" +description: "Deletes a device by its token, stops sending PUSH-notifications to it." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_unregisterDevice.html +--- +# Method: account.unregisterDevice +[Back to methods index](index.html) + + + +Deletes a device by its token, stops sending PUSH-notifications to it. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|token\_type|[int](/API_docs/types/int.html) | Device token type, see [PUSH updates](https://core.telegram.org/api/push-updates#subscribing-to-notifications) for the possible values. | Optional| +|token|[string](/API_docs/types/string.html) | Device token, see [PUSH updates](https://core.telegram.org/api/push-updates#subscribing-to-notifications) for the possible values. | Optional| +|other\_uids|Array of [long](/API_docs/types/long.html) | List of user identifiers of other users currently using the client | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->unregisterDevice(token_type: $int, token: 'string', other_uids: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/account.updateBirthday.md b/docs/API_docs/methods/account.updateBirthday.md new file mode 100644 index 0000000000..683aabad38 --- /dev/null +++ b/docs/API_docs/methods/account.updateBirthday.md @@ -0,0 +1,40 @@ +--- +title: "account.updateBirthday" +description: "account.updateBirthday parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_updateBirthday.html +--- +# Method: account.updateBirthday +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|birthday|[Birthday](/API_docs/types/Birthday.html) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->updateBirthday(birthday: $Birthday, ); +``` + diff --git a/docs/API_docs/methods/account.updateBusinessAwayMessage.md b/docs/API_docs/methods/account.updateBusinessAwayMessage.md new file mode 100644 index 0000000000..0011834952 --- /dev/null +++ b/docs/API_docs/methods/account.updateBusinessAwayMessage.md @@ -0,0 +1,46 @@ +--- +title: "account.updateBusinessAwayMessage" +description: "account.updateBusinessAwayMessage parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_updateBusinessAwayMessage.html +--- +# Method: account.updateBusinessAwayMessage +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|message|[InputBusinessAwayMessage](/API_docs/types/InputBusinessAwayMessage.html) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->updateBusinessAwayMessage(message: $InputBusinessAwayMessage, ); +``` + + +## Return value + +If the length of the provided message is bigger than 4096, the message will be split in chunks and the method will be called multiple times, with the same parameters (except for the message), and an array of [Bool](../types/Bool.html) will be returned instead. + + diff --git a/docs/API_docs/methods/account.updateBusinessGreetingMessage.md b/docs/API_docs/methods/account.updateBusinessGreetingMessage.md new file mode 100644 index 0000000000..025c376a33 --- /dev/null +++ b/docs/API_docs/methods/account.updateBusinessGreetingMessage.md @@ -0,0 +1,46 @@ +--- +title: "account.updateBusinessGreetingMessage" +description: "account.updateBusinessGreetingMessage parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_updateBusinessGreetingMessage.html +--- +# Method: account.updateBusinessGreetingMessage +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|message|[InputBusinessGreetingMessage](/API_docs/types/InputBusinessGreetingMessage.html) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->updateBusinessGreetingMessage(message: $InputBusinessGreetingMessage, ); +``` + + +## Return value + +If the length of the provided message is bigger than 4096, the message will be split in chunks and the method will be called multiple times, with the same parameters (except for the message), and an array of [Bool](../types/Bool.html) will be returned instead. + + diff --git a/docs/API_docs/methods/account.updateBusinessIntro.md b/docs/API_docs/methods/account.updateBusinessIntro.md new file mode 100644 index 0000000000..d5cd94926a --- /dev/null +++ b/docs/API_docs/methods/account.updateBusinessIntro.md @@ -0,0 +1,40 @@ +--- +title: "account.updateBusinessIntro" +description: "account.updateBusinessIntro parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_updateBusinessIntro.html +--- +# Method: account.updateBusinessIntro +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|intro|[InputBusinessIntro](/API_docs/types/InputBusinessIntro.html) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->updateBusinessIntro(intro: $InputBusinessIntro, ); +``` + diff --git a/docs/API_docs/methods/account.updateBusinessLocation.md b/docs/API_docs/methods/account.updateBusinessLocation.md new file mode 100644 index 0000000000..1b2d199896 --- /dev/null +++ b/docs/API_docs/methods/account.updateBusinessLocation.md @@ -0,0 +1,41 @@ +--- +title: "account.updateBusinessLocation" +description: "account.updateBusinessLocation parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_updateBusinessLocation.html +--- +# Method: account.updateBusinessLocation +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|geo\_point|[InputGeoPoint](/API_docs/types/InputGeoPoint.html) | Optional| +|address|[string](/API_docs/types/string.html) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->updateBusinessLocation(geo_point: $InputGeoPoint, address: 'string', ); +``` + diff --git a/docs/API_docs/methods/account.updateBusinessWorkHours.md b/docs/API_docs/methods/account.updateBusinessWorkHours.md new file mode 100644 index 0000000000..cc2f63b0a2 --- /dev/null +++ b/docs/API_docs/methods/account.updateBusinessWorkHours.md @@ -0,0 +1,40 @@ +--- +title: "account.updateBusinessWorkHours" +description: "account.updateBusinessWorkHours parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_updateBusinessWorkHours.html +--- +# Method: account.updateBusinessWorkHours +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|business\_work\_hours|[BusinessWorkHours](/API_docs/types/BusinessWorkHours.html) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->updateBusinessWorkHours(business_work_hours: $BusinessWorkHours, ); +``` + diff --git a/docs/API_docs/methods/account.updateColor.md b/docs/API_docs/methods/account.updateColor.md new file mode 100644 index 0000000000..d2d65ad83f --- /dev/null +++ b/docs/API_docs/methods/account.updateColor.md @@ -0,0 +1,44 @@ +--- +title: "account.updateColor" +description: "Update the [accent color and background custom emoji »](https://core.telegram.org/api/colors) of the current account." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_updateColor.html +--- +# Method: account.updateColor +[Back to methods index](index.html) + + + +Update the [accent color and background custom emoji »](https://core.telegram.org/api/colors) of the current account. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|for\_profile|[Bool](/API_docs/types/Bool.html) | Whether to change the accent color emoji pattern of the profile page; otherwise, the accent color and emoji pattern of messages will be changed. | Optional| +|color|[int](/API_docs/types/int.html) | [ID of the accent color palette »](https://core.telegram.org/api/colors) to use (not RGB24, see [here »](https://core.telegram.org/api/colors) for more info). | Optional| +|background\_emoji\_id|[long](/API_docs/types/long.html) | Custom emoji ID used in the accent color pattern. | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->updateColor(for_profile: $Bool, color: $int, background_emoji_id: $long, ); +``` + diff --git a/docs/API_docs/methods/account.updateConnectedBot.md b/docs/API_docs/methods/account.updateConnectedBot.md new file mode 100644 index 0000000000..4510b1eabd --- /dev/null +++ b/docs/API_docs/methods/account.updateConnectedBot.md @@ -0,0 +1,43 @@ +--- +title: "account.updateConnectedBot" +description: "account.updateConnectedBot parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_updateConnectedBot.html +--- +# Method: account.updateConnectedBot +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|can\_reply|[Bool](/API_docs/types/Bool.html) | Optional| +|deleted|[Bool](/API_docs/types/Bool.html) | Optional| +|bot|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Optional| +|recipients|[InputBusinessBotRecipients](/API_docs/types/InputBusinessBotRecipients.html) | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->account->updateConnectedBot(can_reply: $Bool, deleted: $Bool, bot: $InputUser, recipients: $InputBusinessBotRecipients, ); +``` + diff --git a/docs/API_docs/methods/account.updateDeviceLocked.md b/docs/API_docs/methods/account.updateDeviceLocked.md new file mode 100644 index 0000000000..cea8f1416a --- /dev/null +++ b/docs/API_docs/methods/account.updateDeviceLocked.md @@ -0,0 +1,42 @@ +--- +title: "account.updateDeviceLocked" +description: "When client-side passcode lock feature is enabled, will not show message texts in incoming [PUSH notifications](https://core.telegram.org/api/push-updates)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_updateDeviceLocked.html +--- +# Method: account.updateDeviceLocked +[Back to methods index](index.html) + + + +When client-side passcode lock feature is enabled, will not show message texts in incoming [PUSH notifications](https://core.telegram.org/api/push-updates). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|period|[int](/API_docs/types/int.html) | Inactivity period after which to start hiding message texts in [PUSH notifications](https://core.telegram.org/api/push-updates). | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->updateDeviceLocked(period: $int, ); +``` + diff --git a/docs/API_docs/methods/account.updateEmojiStatus.md b/docs/API_docs/methods/account.updateEmojiStatus.md new file mode 100644 index 0000000000..56257f44e9 --- /dev/null +++ b/docs/API_docs/methods/account.updateEmojiStatus.md @@ -0,0 +1,42 @@ +--- +title: "account.updateEmojiStatus" +description: "Set an [emoji status](https://core.telegram.org/api/emoji-status)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_updateEmojiStatus.html +--- +# Method: account.updateEmojiStatus +[Back to methods index](index.html) + + + +Set an [emoji status](https://core.telegram.org/api/emoji-status) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|emoji\_status|[EmojiStatus](/API_docs/types/EmojiStatus.html) | [Emoji status](https://core.telegram.org/api/emoji-status) to set | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->updateEmojiStatus(emoji_status: $EmojiStatus, ); +``` + diff --git a/docs/API_docs/methods/account.updateNotifySettings.md b/docs/API_docs/methods/account.updateNotifySettings.md new file mode 100644 index 0000000000..ed5c2a4067 --- /dev/null +++ b/docs/API_docs/methods/account.updateNotifySettings.md @@ -0,0 +1,43 @@ +--- +title: "account.updateNotifySettings" +description: "Edits notification settings from a given user/group, from all users/all groups." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_updateNotifySettings.html +--- +# Method: account.updateNotifySettings +[Back to methods index](index.html) + + + +Edits notification settings from a given user/group, from all users/all groups. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[InputNotifyPeer](/API_docs/types/InputNotifyPeer.html) | Notification source | Yes| +|settings|[InputPeerNotifySettings](/API_docs/types/InputPeerNotifySettings.html) | Notification settings | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->updateNotifySettings(peer: $InputNotifyPeer, settings: $InputPeerNotifySettings, ); +``` + diff --git a/docs/API_docs/methods/account.updatePasswordSettings.md b/docs/API_docs/methods/account.updatePasswordSettings.md new file mode 100644 index 0000000000..6ad890a2ac --- /dev/null +++ b/docs/API_docs/methods/account.updatePasswordSettings.md @@ -0,0 +1,43 @@ +--- +title: "account.updatePasswordSettings" +description: "You cannot use this method directly; use $MadelineProto->update2fa($params), instead (see https://docs.madelineproto.xyz for more info)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_updatePasswordSettings.html +--- +# Method: account.updatePasswordSettings +[Back to methods index](index.html) + + + +You cannot use this method directly; use $MadelineProto->update2fa($params), instead (see https://docs.madelineproto.xyz for more info) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|password|[InputCheckPasswordSRP](/API_docs/types/InputCheckPasswordSRP.html) | The old password (see [SRP](https://core.telegram.org/api/srp)) | Yes| +|new\_settings|[account.PasswordInputSettings](/API_docs/types/account.PasswordInputSettings.html) | The new password (see [SRP](https://core.telegram.org/api/srp)) | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->updatePasswordSettings(password: $InputCheckPasswordSRP, new_settings: $account.PasswordInputSettings, ); +``` + diff --git a/docs/API_docs/methods/account.updatePersonalChannel.md b/docs/API_docs/methods/account.updatePersonalChannel.md new file mode 100644 index 0000000000..5763cb21bc --- /dev/null +++ b/docs/API_docs/methods/account.updatePersonalChannel.md @@ -0,0 +1,40 @@ +--- +title: "account.updatePersonalChannel" +description: "account.updatePersonalChannel parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_updatePersonalChannel.html +--- +# Method: account.updatePersonalChannel +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->updatePersonalChannel(channel: $InputChannel, ); +``` + diff --git a/docs/API_docs/methods/account.updateProfile.md b/docs/API_docs/methods/account.updateProfile.md new file mode 100644 index 0000000000..95ac4670aa --- /dev/null +++ b/docs/API_docs/methods/account.updateProfile.md @@ -0,0 +1,44 @@ +--- +title: "account.updateProfile" +description: "Updates user profile." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_updateProfile.html +--- +# Method: account.updateProfile +[Back to methods index](index.html) + + + +Updates user profile. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|first\_name|[string](/API_docs/types/string.html) | New user first name | Optional| +|last\_name|[string](/API_docs/types/string.html) | New user last name | Optional| +|about|[string](/API_docs/types/string.html) | New bio | Optional| + + +### Return type: [User](/API_docs/types/User.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$User = $MadelineProto->account->updateProfile(first_name: 'string', last_name: 'string', about: 'string', ); +``` + diff --git a/docs/API_docs/methods/account.updateStatus.md b/docs/API_docs/methods/account.updateStatus.md new file mode 100644 index 0000000000..04a79946f0 --- /dev/null +++ b/docs/API_docs/methods/account.updateStatus.md @@ -0,0 +1,42 @@ +--- +title: "account.updateStatus" +description: "Updates online user status." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_updateStatus.html +--- +# Method: account.updateStatus +[Back to methods index](index.html) + + + +Updates online user status. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|offline|[Bool](/API_docs/types/Bool.html) | If [(boolTrue)](../constructors/boolTrue.html) is transmitted, user status will change to [(userStatusOffline)](../constructors/userStatusOffline.html). | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->updateStatus(offline: $Bool, ); +``` + diff --git a/docs/API_docs/methods/account.updateTheme.md b/docs/API_docs/methods/account.updateTheme.md new file mode 100644 index 0000000000..83709aca60 --- /dev/null +++ b/docs/API_docs/methods/account.updateTheme.md @@ -0,0 +1,47 @@ +--- +title: "account.updateTheme" +description: "Update theme" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_updateTheme.html +--- +# Method: account.updateTheme +[Back to methods index](index.html) + + + +Update theme + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|format|[string](/API_docs/types/string.html) | Theme format, a string that identifies the theming engines supported by the client | Optional| +|theme|[InputTheme](/API_docs/types/InputTheme.html) | Theme to update | Yes| +|slug|[string](/API_docs/types/string.html) | Unique theme ID | Optional| +|title|[string](/API_docs/types/string.html) | Theme name | Optional| +|document|[MessageMedia, Update, Message or InputDocument](/API_docs/types/InputDocument.html) | Theme file | Optional| +|settings|Array of [InputThemeSettings](/API_docs/types/InputThemeSettings.html) | Theme settings | Optional| + + +### Return type: [Theme](/API_docs/types/Theme.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Theme = $MadelineProto->account->updateTheme(format: 'string', theme: $InputTheme, slug: 'string', title: 'string', document: $InputDocument, settings: [$InputThemeSettings, $InputThemeSettings], ); +``` + diff --git a/docs/API_docs/methods/account.updateUsername.md b/docs/API_docs/methods/account.updateUsername.md new file mode 100644 index 0000000000..8d6943a138 --- /dev/null +++ b/docs/API_docs/methods/account.updateUsername.md @@ -0,0 +1,42 @@ +--- +title: "account.updateUsername" +description: "Changes username for the current user." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_updateUsername.html +--- +# Method: account.updateUsername +[Back to methods index](index.html) + + + +Changes username for the current user. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|username|[string](/API_docs/types/string.html) | username or empty string if username is to be removed
Accepted characters: a-z (case-insensitive), 0-9 and underscores.
Length: 5-32 characters. | Optional| + + +### Return type: [User](/API_docs/types/User.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$User = $MadelineProto->account->updateUsername(username: 'string', ); +``` + diff --git a/docs/API_docs/methods/account.uploadRingtone.md b/docs/API_docs/methods/account.uploadRingtone.md new file mode 100644 index 0000000000..1d96979372 --- /dev/null +++ b/docs/API_docs/methods/account.uploadRingtone.md @@ -0,0 +1,44 @@ +--- +title: "account.uploadRingtone" +description: "Upload notification sound, use [account.saveRingtone](../methods/account.saveRingtone.html) to convert it and add it to the list of saved notification sounds." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_uploadRingtone.html +--- +# Method: account.uploadRingtone +[Back to methods index](index.html) + + + +Upload notification sound, use [account.saveRingtone](../methods/account.saveRingtone.html) to convert it and add it to the list of saved notification sounds. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|file|[File path or InputFile](/API_docs/types/InputFile.html) | Notification sound | Yes| +|file\_name|[string](/API_docs/types/string.html) | File name | Optional| +|mime\_type|[string](/API_docs/types/string.html) | MIME type of file | Optional| + + +### Return type: [Document](/API_docs/types/Document.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Document = $MadelineProto->account->uploadRingtone(file: $InputFile, file_name: 'string', mime_type: 'string', ); +``` + diff --git a/docs/API_docs/methods/account.uploadTheme.md b/docs/API_docs/methods/account.uploadTheme.md new file mode 100644 index 0000000000..b97ea77b79 --- /dev/null +++ b/docs/API_docs/methods/account.uploadTheme.md @@ -0,0 +1,45 @@ +--- +title: "account.uploadTheme" +description: "Upload theme" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_uploadTheme.html +--- +# Method: account.uploadTheme +[Back to methods index](index.html) + + + +Upload theme + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|file|[File path or InputFile](/API_docs/types/InputFile.html) | [Previously uploaded](https://core.telegram.org/api/themes#uploading-theme-files) theme file with platform-specific colors for UI components, can be left unset when creating themes that only modify the wallpaper or accent colors. | Yes| +|thumb|[File path or InputFile](/API_docs/types/InputFile.html) | Thumbnail | Optional| +|file\_name|[string](/API_docs/types/string.html) | File name | Optional| +|mime\_type|[string](/API_docs/types/string.html) | MIME type, must be `application/x-tgtheme-{format}`, where `format` depends on the client | Optional| + + +### Return type: [Document](/API_docs/types/Document.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Document = $MadelineProto->account->uploadTheme(file: $InputFile, thumb: $InputFile, file_name: 'string', mime_type: 'string', ); +``` + diff --git a/docs/API_docs/methods/account.uploadWallPaper.md b/docs/API_docs/methods/account.uploadWallPaper.md new file mode 100644 index 0000000000..0b6990e662 --- /dev/null +++ b/docs/API_docs/methods/account.uploadWallPaper.md @@ -0,0 +1,45 @@ +--- +title: "account.uploadWallPaper" +description: "Create and upload a new [wallpaper](https://core.telegram.org/api/wallpapers)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_uploadWallPaper.html +--- +# Method: account.uploadWallPaper +[Back to methods index](index.html) + + + +Create and upload a new [wallpaper](https://core.telegram.org/api/wallpapers) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|for\_chat|[Bool](/API_docs/types/Bool.html) | Set this flag when uploading wallpapers to be passed to [messages.setChatWallPaper](../methods/messages.setChatWallPaper.html). | Optional| +|file|[File path or InputFile](/API_docs/types/InputFile.html) | The JPG/PNG wallpaper | Yes| +|mime\_type|[string](/API_docs/types/string.html) | MIME type of uploaded wallpaper | Optional| +|settings|[WallPaperSettings](/API_docs/types/WallPaperSettings.html) | Wallpaper settings | Yes| + + +### Return type: [WallPaper](/API_docs/types/WallPaper.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$WallPaper = $MadelineProto->account->uploadWallPaper(for_chat: $Bool, file: $InputFile, mime_type: 'string', settings: $WallPaperSettings, ); +``` + diff --git a/docs/API_docs/methods/account.verifyEmail.md b/docs/API_docs/methods/account.verifyEmail.md new file mode 100644 index 0000000000..862d7fce08 --- /dev/null +++ b/docs/API_docs/methods/account.verifyEmail.md @@ -0,0 +1,43 @@ +--- +title: "account.verifyEmail" +description: "Verify an email address." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_verifyEmail.html +--- +# Method: account.verifyEmail +[Back to methods index](index.html) + + + +Verify an email address. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|purpose|[EmailVerifyPurpose](/API_docs/types/EmailVerifyPurpose.html) | Verification purpose | Yes| +|verification|[EmailVerification](/API_docs/types/EmailVerification.html) | Email verification code or token | Yes| + + +### Return type: [account.EmailVerified](/API_docs/types/account.EmailVerified.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$account_EmailVerified = $MadelineProto->account->verifyEmail(purpose: $EmailVerifyPurpose, verification: $EmailVerification, ); +``` + diff --git a/docs/API_docs/methods/account.verifyPhone.md b/docs/API_docs/methods/account.verifyPhone.md new file mode 100644 index 0000000000..0d82b88beb --- /dev/null +++ b/docs/API_docs/methods/account.verifyPhone.md @@ -0,0 +1,44 @@ +--- +title: "account.verifyPhone" +description: "Verify a phone number for telegram [passport](https://core.telegram.org/passport)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/account_verifyPhone.html +--- +# Method: account.verifyPhone +[Back to methods index](index.html) + + + +Verify a phone number for telegram [passport](https://core.telegram.org/passport). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|phone\_number|[string](/API_docs/types/string.html) | Phone number | Optional| +|phone\_code\_hash|[string](/API_docs/types/string.html) | Phone code hash received from the call to [account.sendVerifyPhoneCode](../methods/account.sendVerifyPhoneCode.html) | Optional| +|phone\_code|[string](/API_docs/types/string.html) | Code received after the call to [account.sendVerifyPhoneCode](../methods/account.sendVerifyPhoneCode.html) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->account->verifyPhone(phone_number: 'string', phone_code_hash: 'string', phone_code: 'string', ); +``` + diff --git a/docs/API_docs/methods/api_index.md b/docs/API_docs/methods/api_index.md new file mode 100644 index 0000000000..e0c9ab077f --- /dev/null +++ b/docs/API_docs/methods/api_index.md @@ -0,0 +1,2542 @@ +--- +title: Methods (API) +description: List of methods +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Methods +[Back to API documentation index](..) + +[Go to the new description-version method index](index.html) + +$MadelineProto->[logout](https://docs.madelineproto.xyz/logout.html)(); + +$MadelineProto->[phoneLogin](https://docs.madelineproto.xyz/phoneLogin.html)($number); + +$MadelineProto->[completePhoneLogin](https://docs.madelineproto.xyz/completePhoneLogin.html)($code); + +$MadelineProto->[complete2FALogin](https://docs.madelineproto.xyz/complete2FAlogin.html)($password); + +$MadelineProto->[botLogin](https://docs.madelineproto.xyz/botLogin.html)($token); + + +$MadelineProto->[getDialogs](https://docs.madelineproto.xyz/getDialogs.html)(); + +$MadelineProto->[getPwrChat](https://docs.madelineproto.xyz/getPwrChat.html)($id); + +$MadelineProto->[getInfo](https://docs.madelineproto.xyz/getInfo.html)($id); + +$MadelineProto->[getFullInfo](https://docs.madelineproto.xyz/getFullInfo.html)($id); + +$MadelineProto->[getSelf](https://docs.madelineproto.xyz/getSelf.html)(); + + +$MadelineProto->[requestCall](https://docs.madelineproto.xyz/requestCall.html)($id); + +$MadelineProto->[requestSecretChat](https://docs.madelineproto.xyz/requestSecretChat.html)($id); + +*** +

+$MadelineProto->[account->acceptAuthorization](/API_docs/methods/account.acceptAuthorization.html)(\[bot_id: $[long](/API_docs/types/long.html), scope: $[string](/API_docs/types/string.html), public_key: $[string](/API_docs/types/string.html), value_hashes: \[$[SecureValueHash](/API_docs/types/SecureValueHash.html)\], credentials: $[SecureCredentialsEncrypted](/API_docs/types/SecureCredentialsEncrypted.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->cancelPasswordEmail](/API_docs/methods/account.cancelPasswordEmail.html)(\[\]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->changeAuthorizationSettings](/API_docs/methods/account.changeAuthorizationSettings.html)(\[confirmed: $[Bool](/API_docs/types/Bool.html), hash: $[long](/API_docs/types/long.html), encrypted_requests_disabled: $[Bool](/API_docs/types/Bool.html), call_requests_disabled: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->changePhone](/API_docs/methods/account.changePhone.html)(\[phone_number: $[string](/API_docs/types/string.html), phone_code_hash: $[string](/API_docs/types/string.html), phone_code: $[string](/API_docs/types/string.html), \]) === [$User](/API_docs/types/User.html) + +*** +

+$MadelineProto->[account->checkUsername](/API_docs/methods/account.checkUsername.html)(\[username: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->clearRecentEmojiStatuses](/API_docs/methods/account.clearRecentEmojiStatuses.html)(\[\]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->confirmPasswordEmail](/API_docs/methods/account.confirmPasswordEmail.html)(\[code: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->confirmPhone](/API_docs/methods/account.confirmPhone.html)(\[phone_code_hash: $[string](/API_docs/types/string.html), phone_code: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->createBusinessChatLink](/API_docs/methods/account.createBusinessChatLink.html)(\[link: $[InputBusinessChatLink](/API_docs/types/InputBusinessChatLink.html), \]) === [$BusinessChatLink](/API_docs/types/BusinessChatLink.html) + +*** +

+$MadelineProto->[account->createTheme](/API_docs/methods/account.createTheme.html)(\[slug: $[string](/API_docs/types/string.html), title: $[string](/API_docs/types/string.html), document: $[InputDocument](/API_docs/types/InputDocument.html), settings: \[$[InputThemeSettings](/API_docs/types/InputThemeSettings.html)\], \]) === [$Theme](/API_docs/types/Theme.html) + +*** +

+$MadelineProto->[account->declinePasswordReset](/API_docs/methods/account.declinePasswordReset.html)(\[\]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->deleteAccount](/API_docs/methods/account.deleteAccount.html)(\[reason: $[string](/API_docs/types/string.html), password: $[InputCheckPasswordSRP](/API_docs/types/InputCheckPasswordSRP.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->deleteAutoSaveExceptions](/API_docs/methods/account.deleteAutoSaveExceptions.html)(\[\]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->deleteBusinessChatLink](/API_docs/methods/account.deleteBusinessChatLink.html)(\[slug: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->deleteSecureValue](/API_docs/methods/account.deleteSecureValue.html)(\[types: \[$[SecureValueType](/API_docs/types/SecureValueType.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->disablePeerConnectedBot](/API_docs/methods/account.disablePeerConnectedBot.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->editBusinessChatLink](/API_docs/methods/account.editBusinessChatLink.html)(\[slug: $[string](/API_docs/types/string.html), link: $[InputBusinessChatLink](/API_docs/types/InputBusinessChatLink.html), \]) === [$BusinessChatLink](/API_docs/types/BusinessChatLink.html) + +*** +

+$MadelineProto->[account->finishTakeoutSession](/API_docs/methods/account.finishTakeoutSession.html)(\[success: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->getAccountTTL](/API_docs/methods/account.getAccountTTL.html)(\[\]) === [$AccountDaysTTL](/API_docs/types/AccountDaysTTL.html) + +*** +

+$MadelineProto->[account->getAllSecureValues](/API_docs/methods/account.getAllSecureValues.html)(\[\]) === [$Vector\_of\_SecureValue](/API_docs/types/SecureValue.html) + +*** +

+$MadelineProto->[account->getAuthorizationForm](/API_docs/methods/account.getAuthorizationForm.html)(\[bot_id: $[long](/API_docs/types/long.html), scope: $[string](/API_docs/types/string.html), public_key: $[string](/API_docs/types/string.html), \]) === [$account.AuthorizationForm](/API_docs/types/account.AuthorizationForm.html) + +*** +

+$MadelineProto->[account->getAuthorizations](/API_docs/methods/account.getAuthorizations.html)(\[\]) === [$account.Authorizations](/API_docs/types/account.Authorizations.html) + +*** +

+$MadelineProto->[account->getAutoDownloadSettings](/API_docs/methods/account.getAutoDownloadSettings.html)(\[\]) === [$account.AutoDownloadSettings](/API_docs/types/account.AutoDownloadSettings.html) + +*** +

+$MadelineProto->[account->getAutoSaveSettings](/API_docs/methods/account.getAutoSaveSettings.html)(\[\]) === [$account.AutoSaveSettings](/API_docs/types/account.AutoSaveSettings.html) + +*** +

+$MadelineProto->[account->getBotBusinessConnection](/API_docs/methods/account.getBotBusinessConnection.html)(\[connection_id: $[string](/API_docs/types/string.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[account->getBusinessChatLinks](/API_docs/methods/account.getBusinessChatLinks.html)(\[\]) === [$account.BusinessChatLinks](/API_docs/types/account.BusinessChatLinks.html) + +*** +

+$MadelineProto->[account->getChannelDefaultEmojiStatuses](/API_docs/methods/account.getChannelDefaultEmojiStatuses.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$account.EmojiStatuses](/API_docs/types/account.EmojiStatuses.html) + +*** +

+$MadelineProto->[account->getChannelRestrictedStatusEmojis](/API_docs/methods/account.getChannelRestrictedStatusEmojis.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$EmojiList](/API_docs/types/EmojiList.html) + +*** +

+$MadelineProto->[account->getChatThemes](/API_docs/methods/account.getChatThemes.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$account.Themes](/API_docs/types/account.Themes.html) + +*** +

+$MadelineProto->[account->getConnectedBots](/API_docs/methods/account.getConnectedBots.html)(\[\]) === [$account.ConnectedBots](/API_docs/types/account.ConnectedBots.html) + +*** +

+$MadelineProto->[account->getContactSignUpNotification](/API_docs/methods/account.getContactSignUpNotification.html)(\[\]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->getContentSettings](/API_docs/methods/account.getContentSettings.html)(\[\]) === [$account.ContentSettings](/API_docs/types/account.ContentSettings.html) + +*** +

+$MadelineProto->[account->getDefaultBackgroundEmojis](/API_docs/methods/account.getDefaultBackgroundEmojis.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$EmojiList](/API_docs/types/EmojiList.html) + +*** +

+$MadelineProto->[account->getDefaultEmojiStatuses](/API_docs/methods/account.getDefaultEmojiStatuses.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$account.EmojiStatuses](/API_docs/types/account.EmojiStatuses.html) + +*** +

+$MadelineProto->[account->getDefaultGroupPhotoEmojis](/API_docs/methods/account.getDefaultGroupPhotoEmojis.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$EmojiList](/API_docs/types/EmojiList.html) + +*** +

+$MadelineProto->[account->getDefaultProfilePhotoEmojis](/API_docs/methods/account.getDefaultProfilePhotoEmojis.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$EmojiList](/API_docs/types/EmojiList.html) + +*** +

+$MadelineProto->[account->getGlobalPrivacySettings](/API_docs/methods/account.getGlobalPrivacySettings.html)(\[\]) === [$GlobalPrivacySettings](/API_docs/types/GlobalPrivacySettings.html) + +*** +

+$MadelineProto->[account->getMultiWallPapers](/API_docs/methods/account.getMultiWallPapers.html)(\[wallpapers: \[$[InputWallPaper](/API_docs/types/InputWallPaper.html)\], \]) === [$Vector\_of\_WallPaper](/API_docs/types/WallPaper.html) + +*** +

+$MadelineProto->[account->getNotifyExceptions](/API_docs/methods/account.getNotifyExceptions.html)(\[compare_sound: $[Bool](/API_docs/types/Bool.html), compare_stories: $[Bool](/API_docs/types/Bool.html), peer: $[InputNotifyPeer](/API_docs/types/InputNotifyPeer.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[account->getNotifySettings](/API_docs/methods/account.getNotifySettings.html)(\[peer: $[InputNotifyPeer](/API_docs/types/InputNotifyPeer.html), \]) === [$PeerNotifySettings](/API_docs/types/PeerNotifySettings.html) + +*** +

+$MadelineProto->[account->getPassword](/API_docs/methods/account.getPassword.html)(\[\]) === [$account.Password](/API_docs/types/account.Password.html) + +*** +

+$MadelineProto->[account->getPasswordSettings](/API_docs/methods/account.getPasswordSettings.html)(\[password: $[InputCheckPasswordSRP](/API_docs/types/InputCheckPasswordSRP.html), \]) === [$account.PasswordSettings](/API_docs/types/account.PasswordSettings.html) + +*** +

+$MadelineProto->[account->getPrivacy](/API_docs/methods/account.getPrivacy.html)(\[key: $[InputPrivacyKey](/API_docs/types/InputPrivacyKey.html), \]) === [$account.PrivacyRules](/API_docs/types/account.PrivacyRules.html) + +*** +

+$MadelineProto->[account->getReactionsNotifySettings](/API_docs/methods/account.getReactionsNotifySettings.html)(\[\]) === [$ReactionsNotifySettings](/API_docs/types/ReactionsNotifySettings.html) + +*** +

+$MadelineProto->[account->getRecentEmojiStatuses](/API_docs/methods/account.getRecentEmojiStatuses.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$account.EmojiStatuses](/API_docs/types/account.EmojiStatuses.html) + +*** +

+$MadelineProto->[account->getSavedRingtones](/API_docs/methods/account.getSavedRingtones.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$account.SavedRingtones](/API_docs/types/account.SavedRingtones.html) + +*** +

+$MadelineProto->[account->getSecureValue](/API_docs/methods/account.getSecureValue.html)(\[types: \[$[SecureValueType](/API_docs/types/SecureValueType.html)\], \]) === [$Vector\_of\_SecureValue](/API_docs/types/SecureValue.html) + +*** +

+$MadelineProto->[account->getTheme](/API_docs/methods/account.getTheme.html)(\[format: $[string](/API_docs/types/string.html), theme: $[InputTheme](/API_docs/types/InputTheme.html), \]) === [$Theme](/API_docs/types/Theme.html) + +*** +

+$MadelineProto->[account->getThemes](/API_docs/methods/account.getThemes.html)(\[format: $[string](/API_docs/types/string.html), hash: $[long](/API_docs/types/long.html), \]) === [$account.Themes](/API_docs/types/account.Themes.html) + +*** +

+$MadelineProto->[account->getTmpPassword](/API_docs/methods/account.getTmpPassword.html)(\[password: $[InputCheckPasswordSRP](/API_docs/types/InputCheckPasswordSRP.html), period: $[int](/API_docs/types/int.html), \]) === [$account.TmpPassword](/API_docs/types/account.TmpPassword.html) + +*** +

+$MadelineProto->[account->getWallPaper](/API_docs/methods/account.getWallPaper.html)(\[wallpaper: $[InputWallPaper](/API_docs/types/InputWallPaper.html), \]) === [$WallPaper](/API_docs/types/WallPaper.html) + +*** +

+$MadelineProto->[account->getWallPapers](/API_docs/methods/account.getWallPapers.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$account.WallPapers](/API_docs/types/account.WallPapers.html) + +*** +

+$MadelineProto->[account->getWebAuthorizations](/API_docs/methods/account.getWebAuthorizations.html)(\[\]) === [$account.WebAuthorizations](/API_docs/types/account.WebAuthorizations.html) + +*** +

+$MadelineProto->[account->initTakeoutSession](/API_docs/methods/account.initTakeoutSession.html)(\[contacts: $[Bool](/API_docs/types/Bool.html), message_users: $[Bool](/API_docs/types/Bool.html), message_chats: $[Bool](/API_docs/types/Bool.html), message_megagroups: $[Bool](/API_docs/types/Bool.html), message_channels: $[Bool](/API_docs/types/Bool.html), files: $[Bool](/API_docs/types/Bool.html), file_max_size: $[long](/API_docs/types/long.html), \]) === [$account.Takeout](/API_docs/types/account.Takeout.html) + +*** +

+$MadelineProto->[account->installTheme](/API_docs/methods/account.installTheme.html)(\[dark: $[Bool](/API_docs/types/Bool.html), theme: $[InputTheme](/API_docs/types/InputTheme.html), format: $[string](/API_docs/types/string.html), base_theme: $[BaseTheme](/API_docs/types/BaseTheme.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->installWallPaper](/API_docs/methods/account.installWallPaper.html)(\[wallpaper: $[InputWallPaper](/API_docs/types/InputWallPaper.html), settings: $[WallPaperSettings](/API_docs/types/WallPaperSettings.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->invalidateSignInCodes](/API_docs/methods/account.invalidateSignInCodes.html)(\[codes: \[$[string](/API_docs/types/string.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->registerDevice](/API_docs/methods/account.registerDevice.html)(\[no_muted: $[Bool](/API_docs/types/Bool.html), token_type: $[int](/API_docs/types/int.html), token: $[string](/API_docs/types/string.html), app_sandbox: $[Bool](/API_docs/types/Bool.html), secret: $[bytes](/API_docs/types/bytes.html), other_uids: \[$[long](/API_docs/types/long.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->reorderUsernames](/API_docs/methods/account.reorderUsernames.html)(\[order: \[$[string](/API_docs/types/string.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->reportPeer](/API_docs/methods/account.reportPeer.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), reason: $[ReportReason](/API_docs/types/ReportReason.html), message: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->reportProfilePhoto](/API_docs/methods/account.reportProfilePhoto.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), photo_id: $[InputPhoto](/API_docs/types/InputPhoto.html), reason: $[ReportReason](/API_docs/types/ReportReason.html), message: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->resendPasswordEmail](/API_docs/methods/account.resendPasswordEmail.html)(\[\]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->resetAuthorization](/API_docs/methods/account.resetAuthorization.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->resetNotifySettings](/API_docs/methods/account.resetNotifySettings.html)(\[\]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->resetPassword](/API_docs/methods/account.resetPassword.html)(\[\]) === [$account.ResetPasswordResult](/API_docs/types/account.ResetPasswordResult.html) + +*** +

+$MadelineProto->[account->resetWallPapers](/API_docs/methods/account.resetWallPapers.html)(\[\]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->resetWebAuthorization](/API_docs/methods/account.resetWebAuthorization.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->resetWebAuthorizations](/API_docs/methods/account.resetWebAuthorizations.html)(\[\]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->resolveBusinessChatLink](/API_docs/methods/account.resolveBusinessChatLink.html)(\[slug: $[string](/API_docs/types/string.html), \]) === [$account.ResolvedBusinessChatLinks](/API_docs/types/account.ResolvedBusinessChatLinks.html) + +*** +

+$MadelineProto->[account->saveAutoDownloadSettings](/API_docs/methods/account.saveAutoDownloadSettings.html)(\[low: $[Bool](/API_docs/types/Bool.html), high: $[Bool](/API_docs/types/Bool.html), settings: $[AutoDownloadSettings](/API_docs/types/AutoDownloadSettings.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->saveAutoSaveSettings](/API_docs/methods/account.saveAutoSaveSettings.html)(\[users: $[Bool](/API_docs/types/Bool.html), chats: $[Bool](/API_docs/types/Bool.html), broadcasts: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), settings: $[AutoSaveSettings](/API_docs/types/AutoSaveSettings.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->saveRingtone](/API_docs/methods/account.saveRingtone.html)(\[id: $[InputDocument](/API_docs/types/InputDocument.html), unsave: $[Bool](/API_docs/types/Bool.html), \]) === [$account.SavedRingtone](/API_docs/types/account.SavedRingtone.html) + +*** +

+$MadelineProto->[account->saveSecureValue](/API_docs/methods/account.saveSecureValue.html)(\[value: $[InputSecureValue](/API_docs/types/InputSecureValue.html), secure_secret_id: $[long](/API_docs/types/long.html), \]) === [$SecureValue](/API_docs/types/SecureValue.html) + +*** +

+$MadelineProto->[account->saveTheme](/API_docs/methods/account.saveTheme.html)(\[theme: $[InputTheme](/API_docs/types/InputTheme.html), unsave: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->saveWallPaper](/API_docs/methods/account.saveWallPaper.html)(\[wallpaper: $[InputWallPaper](/API_docs/types/InputWallPaper.html), unsave: $[Bool](/API_docs/types/Bool.html), settings: $[WallPaperSettings](/API_docs/types/WallPaperSettings.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->sendChangePhoneCode](/API_docs/methods/account.sendChangePhoneCode.html)(\[phone_number: $[string](/API_docs/types/string.html), settings: $[CodeSettings](/API_docs/types/CodeSettings.html), \]) === [$auth.SentCode](/API_docs/types/auth.SentCode.html) + +*** +

+$MadelineProto->[account->sendConfirmPhoneCode](/API_docs/methods/account.sendConfirmPhoneCode.html)(\[hash: $[string](/API_docs/types/string.html), settings: $[CodeSettings](/API_docs/types/CodeSettings.html), \]) === [$auth.SentCode](/API_docs/types/auth.SentCode.html) + +*** +

+$MadelineProto->[account->sendVerifyEmailCode](/API_docs/methods/account.sendVerifyEmailCode.html)(\[purpose: $[EmailVerifyPurpose](/API_docs/types/EmailVerifyPurpose.html), email: $[string](/API_docs/types/string.html), \]) === [$account.SentEmailCode](/API_docs/types/account.SentEmailCode.html) + +*** +

+$MadelineProto->[account->sendVerifyPhoneCode](/API_docs/methods/account.sendVerifyPhoneCode.html)(\[phone_number: $[string](/API_docs/types/string.html), settings: $[CodeSettings](/API_docs/types/CodeSettings.html), \]) === [$auth.SentCode](/API_docs/types/auth.SentCode.html) + +*** +

+$MadelineProto->[account->setAccountTTL](/API_docs/methods/account.setAccountTTL.html)(\[ttl: $[AccountDaysTTL](/API_docs/types/AccountDaysTTL.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->setAuthorizationTTL](/API_docs/methods/account.setAuthorizationTTL.html)(\[authorization_ttl_days: $[int](/API_docs/types/int.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->setContactSignUpNotification](/API_docs/methods/account.setContactSignUpNotification.html)(\[silent: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->setContentSettings](/API_docs/methods/account.setContentSettings.html)(\[sensitive_enabled: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->setGlobalPrivacySettings](/API_docs/methods/account.setGlobalPrivacySettings.html)(\[settings: $[GlobalPrivacySettings](/API_docs/types/GlobalPrivacySettings.html), \]) === [$GlobalPrivacySettings](/API_docs/types/GlobalPrivacySettings.html) + +*** +

+$MadelineProto->[account->setPrivacy](/API_docs/methods/account.setPrivacy.html)(\[key: $[InputPrivacyKey](/API_docs/types/InputPrivacyKey.html), rules: \[$[InputPrivacyRule](/API_docs/types/InputPrivacyRule.html)\], \]) === [$account.PrivacyRules](/API_docs/types/account.PrivacyRules.html) + +*** +

+$MadelineProto->[account->setReactionsNotifySettings](/API_docs/methods/account.setReactionsNotifySettings.html)(\[settings: $[ReactionsNotifySettings](/API_docs/types/ReactionsNotifySettings.html), \]) === [$ReactionsNotifySettings](/API_docs/types/ReactionsNotifySettings.html) + +*** +

+$MadelineProto->[account->toggleConnectedBotPaused](/API_docs/methods/account.toggleConnectedBotPaused.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), paused: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->toggleSponsoredMessages](/API_docs/methods/account.toggleSponsoredMessages.html)(\[enabled: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->toggleUsername](/API_docs/methods/account.toggleUsername.html)(\[username: $[string](/API_docs/types/string.html), active: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->unregisterDevice](/API_docs/methods/account.unregisterDevice.html)(\[token_type: $[int](/API_docs/types/int.html), token: $[string](/API_docs/types/string.html), other_uids: \[$[long](/API_docs/types/long.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->updateBirthday](/API_docs/methods/account.updateBirthday.html)(\[birthday: $[Birthday](/API_docs/types/Birthday.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->updateBusinessAwayMessage](/API_docs/methods/account.updateBusinessAwayMessage.html)(\[message: $[InputBusinessAwayMessage](/API_docs/types/InputBusinessAwayMessage.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->updateBusinessGreetingMessage](/API_docs/methods/account.updateBusinessGreetingMessage.html)(\[message: $[InputBusinessGreetingMessage](/API_docs/types/InputBusinessGreetingMessage.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->updateBusinessIntro](/API_docs/methods/account.updateBusinessIntro.html)(\[intro: $[InputBusinessIntro](/API_docs/types/InputBusinessIntro.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->updateBusinessLocation](/API_docs/methods/account.updateBusinessLocation.html)(\[geo_point: $[InputGeoPoint](/API_docs/types/InputGeoPoint.html), address: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->updateBusinessWorkHours](/API_docs/methods/account.updateBusinessWorkHours.html)(\[business_work_hours: $[BusinessWorkHours](/API_docs/types/BusinessWorkHours.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->updateColor](/API_docs/methods/account.updateColor.html)(\[for_profile: $[Bool](/API_docs/types/Bool.html), color: $[int](/API_docs/types/int.html), background_emoji_id: $[long](/API_docs/types/long.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->updateConnectedBot](/API_docs/methods/account.updateConnectedBot.html)(\[can_reply: $[Bool](/API_docs/types/Bool.html), deleted: $[Bool](/API_docs/types/Bool.html), bot: $[InputUser](/API_docs/types/InputUser.html), recipients: $[InputBusinessBotRecipients](/API_docs/types/InputBusinessBotRecipients.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[account->updateDeviceLocked](/API_docs/methods/account.updateDeviceLocked.html)(\[period: $[int](/API_docs/types/int.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->updateEmojiStatus](/API_docs/methods/account.updateEmojiStatus.html)(\[emoji_status: $[EmojiStatus](/API_docs/types/EmojiStatus.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->updateNotifySettings](/API_docs/methods/account.updateNotifySettings.html)(\[peer: $[InputNotifyPeer](/API_docs/types/InputNotifyPeer.html), settings: $[InputPeerNotifySettings](/API_docs/types/InputPeerNotifySettings.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->updatePasswordSettings](/API_docs/methods/account.updatePasswordSettings.html)(\[password: $[InputCheckPasswordSRP](/API_docs/types/InputCheckPasswordSRP.html), new_settings: $[account.PasswordInputSettings](/API_docs/types/account.PasswordInputSettings.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->updatePersonalChannel](/API_docs/methods/account.updatePersonalChannel.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->updateProfile](/API_docs/methods/account.updateProfile.html)(\[first_name: $[string](/API_docs/types/string.html), last_name: $[string](/API_docs/types/string.html), about: $[string](/API_docs/types/string.html), \]) === [$User](/API_docs/types/User.html) + +*** +

+$MadelineProto->[account->updateStatus](/API_docs/methods/account.updateStatus.html)(\[offline: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[account->updateTheme](/API_docs/methods/account.updateTheme.html)(\[format: $[string](/API_docs/types/string.html), theme: $[InputTheme](/API_docs/types/InputTheme.html), slug: $[string](/API_docs/types/string.html), title: $[string](/API_docs/types/string.html), document: $[InputDocument](/API_docs/types/InputDocument.html), settings: \[$[InputThemeSettings](/API_docs/types/InputThemeSettings.html)\], \]) === [$Theme](/API_docs/types/Theme.html) + +*** +

+$MadelineProto->[account->updateUsername](/API_docs/methods/account.updateUsername.html)(\[username: $[string](/API_docs/types/string.html), \]) === [$User](/API_docs/types/User.html) + +*** +

+$MadelineProto->[account->uploadRingtone](/API_docs/methods/account.uploadRingtone.html)(\[file: $[InputFile](/API_docs/types/InputFile.html), file_name: $[string](/API_docs/types/string.html), mime_type: $[string](/API_docs/types/string.html), \]) === [$Document](/API_docs/types/Document.html) + +*** +

+$MadelineProto->[account->uploadTheme](/API_docs/methods/account.uploadTheme.html)(\[file: $[InputFile](/API_docs/types/InputFile.html), thumb: $[InputFile](/API_docs/types/InputFile.html), file_name: $[string](/API_docs/types/string.html), mime_type: $[string](/API_docs/types/string.html), \]) === [$Document](/API_docs/types/Document.html) + +*** +

+$MadelineProto->[account->uploadWallPaper](/API_docs/methods/account.uploadWallPaper.html)(\[for_chat: $[Bool](/API_docs/types/Bool.html), file: $[InputFile](/API_docs/types/InputFile.html), mime_type: $[string](/API_docs/types/string.html), settings: $[WallPaperSettings](/API_docs/types/WallPaperSettings.html), \]) === [$WallPaper](/API_docs/types/WallPaper.html) + +*** +

+$MadelineProto->[account->verifyEmail](/API_docs/methods/account.verifyEmail.html)(\[purpose: $[EmailVerifyPurpose](/API_docs/types/EmailVerifyPurpose.html), verification: $[EmailVerification](/API_docs/types/EmailVerification.html), \]) === [$account.EmailVerified](/API_docs/types/account.EmailVerified.html) + +*** +

+$MadelineProto->[account->verifyPhone](/API_docs/methods/account.verifyPhone.html)(\[phone_number: $[string](/API_docs/types/string.html), phone_code_hash: $[string](/API_docs/types/string.html), phone_code: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[auth->acceptLoginToken](/API_docs/methods/auth.acceptLoginToken.html)(\[token: $[bytes](/API_docs/types/bytes.html), \]) === [$Authorization](/API_docs/types/Authorization.html) + +*** +

+$MadelineProto->[auth->bindTempAuthKey](/API_docs/methods/auth.bindTempAuthKey.html)(\[perm_auth_key_id: $[long](/API_docs/types/long.html), nonce: $[long](/API_docs/types/long.html), expires_at: $[int](/API_docs/types/int.html), encrypted_message: $[bytes](/API_docs/types/bytes.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[auth->cancelCode](/API_docs/methods/auth.cancelCode.html)(\[phone_number: $[string](/API_docs/types/string.html), phone_code_hash: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[auth->checkPassword](/API_docs/methods/auth.checkPassword.html)(\[password: $[InputCheckPasswordSRP](/API_docs/types/InputCheckPasswordSRP.html), \]) === [$auth.Authorization](/API_docs/types/auth.Authorization.html) + +*** +

+$MadelineProto->[auth->checkRecoveryPassword](/API_docs/methods/auth.checkRecoveryPassword.html)(\[code: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[auth->dropTempAuthKeys](/API_docs/methods/auth.dropTempAuthKeys.html)(\[except_auth_keys: \[$[long](/API_docs/types/long.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[auth->exportAuthorization](/API_docs/methods/auth.exportAuthorization.html)(\[dc_id: $[int](/API_docs/types/int.html), \]) === [$auth.ExportedAuthorization](/API_docs/types/auth.ExportedAuthorization.html) + +*** +

+$MadelineProto->[auth->exportLoginToken](/API_docs/methods/auth.exportLoginToken.html)(\[api_id: $[int](/API_docs/types/int.html), api_hash: $[string](/API_docs/types/string.html), except_ids: \[$[long](/API_docs/types/long.html)\], \]) === [$auth.LoginToken](/API_docs/types/auth.LoginToken.html) + +*** +

+$MadelineProto->[auth->importAuthorization](/API_docs/methods/auth.importAuthorization.html)(\[id: $[long](/API_docs/types/long.html), bytes: $[bytes](/API_docs/types/bytes.html), \]) === [$auth.Authorization](/API_docs/types/auth.Authorization.html) + +*** +

+$MadelineProto->[auth->importBotAuthorization](/API_docs/methods/auth.importBotAuthorization.html)(\[api_id: $[int](/API_docs/types/int.html), api_hash: $[string](/API_docs/types/string.html), bot_auth_token: $[string](/API_docs/types/string.html), \]) === [$auth.Authorization](/API_docs/types/auth.Authorization.html) + +*** +

+$MadelineProto->[auth->importLoginToken](/API_docs/methods/auth.importLoginToken.html)(\[token: $[bytes](/API_docs/types/bytes.html), \]) === [$auth.LoginToken](/API_docs/types/auth.LoginToken.html) + +*** +

+$MadelineProto->[auth->importWebTokenAuthorization](/API_docs/methods/auth.importWebTokenAuthorization.html)(\[api_id: $[int](/API_docs/types/int.html), api_hash: $[string](/API_docs/types/string.html), web_auth_token: $[string](/API_docs/types/string.html), \]) === [$auth.Authorization](/API_docs/types/auth.Authorization.html) + +*** +

+$MadelineProto->[auth->logOut](/API_docs/methods/auth.logOut.html)(\[\]) === [$auth.LoggedOut](/API_docs/types/auth.LoggedOut.html) + +*** +

+$MadelineProto->[auth->recoverPassword](/API_docs/methods/auth.recoverPassword.html)(\[code: $[string](/API_docs/types/string.html), new_settings: $[account.PasswordInputSettings](/API_docs/types/account.PasswordInputSettings.html), \]) === [$auth.Authorization](/API_docs/types/auth.Authorization.html) + +*** +

+$MadelineProto->[auth->reportMissingCode](/API_docs/methods/auth.reportMissingCode.html)(\[phone_number: $[string](/API_docs/types/string.html), phone_code_hash: $[string](/API_docs/types/string.html), mnc: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[auth->requestFirebaseSms](/API_docs/methods/auth.requestFirebaseSms.html)(\[phone_number: $[string](/API_docs/types/string.html), phone_code_hash: $[string](/API_docs/types/string.html), safety_net_token: $[string](/API_docs/types/string.html), ios_push_secret: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[auth->requestPasswordRecovery](/API_docs/methods/auth.requestPasswordRecovery.html)(\[\]) === [$auth.PasswordRecovery](/API_docs/types/auth.PasswordRecovery.html) + +*** +

+$MadelineProto->[auth->resendCode](/API_docs/methods/auth.resendCode.html)(\[phone_number: $[string](/API_docs/types/string.html), phone_code_hash: $[string](/API_docs/types/string.html), \]) === [$auth.SentCode](/API_docs/types/auth.SentCode.html) + +*** +

+$MadelineProto->[auth->resetAuthorizations](/API_docs/methods/auth.resetAuthorizations.html)(\[\]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[auth->resetLoginEmail](/API_docs/methods/auth.resetLoginEmail.html)(\[phone_number: $[string](/API_docs/types/string.html), phone_code_hash: $[string](/API_docs/types/string.html), \]) === [$auth.SentCode](/API_docs/types/auth.SentCode.html) + +*** +

+$MadelineProto->[auth->sendCode](/API_docs/methods/auth.sendCode.html)(\[phone_number: $[string](/API_docs/types/string.html), api_id: $[int](/API_docs/types/int.html), api_hash: $[string](/API_docs/types/string.html), settings: $[CodeSettings](/API_docs/types/CodeSettings.html), \]) === [$auth.SentCode](/API_docs/types/auth.SentCode.html) + +*** +

+$MadelineProto->[auth->signIn](/API_docs/methods/auth.signIn.html)(\[phone_number: $[string](/API_docs/types/string.html), phone_code_hash: $[string](/API_docs/types/string.html), phone_code: $[string](/API_docs/types/string.html), email_verification: $[EmailVerification](/API_docs/types/EmailVerification.html), \]) === [$auth.Authorization](/API_docs/types/auth.Authorization.html) + +*** +

+$MadelineProto->[auth->signUp](/API_docs/methods/auth.signUp.html)(\[no_joined_notifications: $[Bool](/API_docs/types/Bool.html), phone_number: $[string](/API_docs/types/string.html), phone_code_hash: $[string](/API_docs/types/string.html), first_name: $[string](/API_docs/types/string.html), last_name: $[string](/API_docs/types/string.html), \]) === [$auth.Authorization](/API_docs/types/auth.Authorization.html) + +*** +

+$MadelineProto->[bots->allowSendMessage](/API_docs/methods/bots.allowSendMessage.html)(\[bot: $[InputUser](/API_docs/types/InputUser.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[bots->answerWebhookJSONQuery](/API_docs/methods/bots.answerWebhookJSONQuery.html)(\[query_id: $[long](/API_docs/types/long.html), data: $[DataJSON](/API_docs/types/DataJSON.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[bots->canSendMessage](/API_docs/methods/bots.canSendMessage.html)(\[bot: $[InputUser](/API_docs/types/InputUser.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[bots->getBotCommands](/API_docs/methods/bots.getBotCommands.html)(\[scope: $[BotCommandScope](/API_docs/types/BotCommandScope.html), lang_code: $[string](/API_docs/types/string.html), \]) === [$Vector\_of\_BotCommand](/API_docs/types/BotCommand.html) + +*** +

+$MadelineProto->[bots->getBotInfo](/API_docs/methods/bots.getBotInfo.html)(\[bot: $[InputUser](/API_docs/types/InputUser.html), lang_code: $[string](/API_docs/types/string.html), \]) === [$bots.BotInfo](/API_docs/types/bots.BotInfo.html) + +*** +

+$MadelineProto->[bots->getBotMenuButton](/API_docs/methods/bots.getBotMenuButton.html)(\[user_id: $[InputUser](/API_docs/types/InputUser.html), \]) === [$BotMenuButton](/API_docs/types/BotMenuButton.html) + +*** +

+$MadelineProto->[bots->invokeWebViewCustomMethod](/API_docs/methods/bots.invokeWebViewCustomMethod.html)(\[bot: $[InputUser](/API_docs/types/InputUser.html), custom_method: $[string](/API_docs/types/string.html), params: $[DataJSON](/API_docs/types/DataJSON.html), \]) === [$DataJSON](/API_docs/types/DataJSON.html) + +*** +

+$MadelineProto->[bots->reorderUsernames](/API_docs/methods/bots.reorderUsernames.html)(\[bot: $[InputUser](/API_docs/types/InputUser.html), order: \[$[string](/API_docs/types/string.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[bots->resetBotCommands](/API_docs/methods/bots.resetBotCommands.html)(\[scope: $[BotCommandScope](/API_docs/types/BotCommandScope.html), lang_code: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[bots->sendCustomRequest](/API_docs/methods/bots.sendCustomRequest.html)(\[custom_method: $[string](/API_docs/types/string.html), params: $[DataJSON](/API_docs/types/DataJSON.html), \]) === [$DataJSON](/API_docs/types/DataJSON.html) + +*** +

+$MadelineProto->[bots->setBotBroadcastDefaultAdminRights](/API_docs/methods/bots.setBotBroadcastDefaultAdminRights.html)(\[admin_rights: $[ChatAdminRights](/API_docs/types/ChatAdminRights.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[bots->setBotCommands](/API_docs/methods/bots.setBotCommands.html)(\[scope: $[BotCommandScope](/API_docs/types/BotCommandScope.html), lang_code: $[string](/API_docs/types/string.html), commands: \[$[BotCommand](/API_docs/types/BotCommand.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[bots->setBotGroupDefaultAdminRights](/API_docs/methods/bots.setBotGroupDefaultAdminRights.html)(\[admin_rights: $[ChatAdminRights](/API_docs/types/ChatAdminRights.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[bots->setBotInfo](/API_docs/methods/bots.setBotInfo.html)(\[bot: $[InputUser](/API_docs/types/InputUser.html), lang_code: $[string](/API_docs/types/string.html), name: $[string](/API_docs/types/string.html), about: $[string](/API_docs/types/string.html), description: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[bots->setBotMenuButton](/API_docs/methods/bots.setBotMenuButton.html)(\[user_id: $[InputUser](/API_docs/types/InputUser.html), button: $[BotMenuButton](/API_docs/types/BotMenuButton.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[bots->toggleUsername](/API_docs/methods/bots.toggleUsername.html)(\[bot: $[InputUser](/API_docs/types/InputUser.html), username: $[string](/API_docs/types/string.html), active: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[channels->checkUsername](/API_docs/methods/channels.checkUsername.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), username: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[channels->clickSponsoredMessage](/API_docs/methods/channels.clickSponsoredMessage.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[channels->convertToGigagroup](/API_docs/methods/channels.convertToGigagroup.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->createChannel](/API_docs/methods/channels.createChannel.html)(\[broadcast: $[Bool](/API_docs/types/Bool.html), megagroup: $[Bool](/API_docs/types/Bool.html), for_import: $[Bool](/API_docs/types/Bool.html), forum: $[Bool](/API_docs/types/Bool.html), title: $[string](/API_docs/types/string.html), about: $[string](/API_docs/types/string.html), geo_point: $[InputGeoPoint](/API_docs/types/InputGeoPoint.html), address: $[string](/API_docs/types/string.html), ttl_period: $[int](/API_docs/types/int.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->createForumTopic](/API_docs/methods/channels.createForumTopic.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), title: $[string](/API_docs/types/string.html), icon_color: $[int](/API_docs/types/int.html), icon_emoji_id: $[long](/API_docs/types/long.html), send_as: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->deactivateAllUsernames](/API_docs/methods/channels.deactivateAllUsernames.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[channels->deleteChannel](/API_docs/methods/channels.deleteChannel.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->deleteHistory](/API_docs/methods/channels.deleteHistory.html)(\[for_everyone: $[Bool](/API_docs/types/Bool.html), channel: $[InputChannel](/API_docs/types/InputChannel.html), max_id: $[int](/API_docs/types/int.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->deleteMessages](/API_docs/methods/channels.deleteMessages.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), id: \[$[int](/API_docs/types/int.html)\], \]) === [$messages.AffectedMessages](/API_docs/types/messages.AffectedMessages.html) + +*** +

+$MadelineProto->[channels->deleteParticipantHistory](/API_docs/methods/channels.deleteParticipantHistory.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), participant: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$messages.AffectedHistory](/API_docs/types/messages.AffectedHistory.html) + +*** +

+$MadelineProto->[channels->deleteTopicHistory](/API_docs/methods/channels.deleteTopicHistory.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), top_msg_id: $[int](/API_docs/types/int.html), \]) === [$messages.AffectedHistory](/API_docs/types/messages.AffectedHistory.html) + +*** +

+$MadelineProto->[channels->editAdmin](/API_docs/methods/channels.editAdmin.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), user_id: $[InputUser](/API_docs/types/InputUser.html), admin_rights: $[ChatAdminRights](/API_docs/types/ChatAdminRights.html), rank: $[string](/API_docs/types/string.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->editBanned](/API_docs/methods/channels.editBanned.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), participant: $[InputPeer](/API_docs/types/InputPeer.html), banned_rights: $[ChatBannedRights](/API_docs/types/ChatBannedRights.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->editCreator](/API_docs/methods/channels.editCreator.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), user_id: $[InputUser](/API_docs/types/InputUser.html), password: $[InputCheckPasswordSRP](/API_docs/types/InputCheckPasswordSRP.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->editForumTopic](/API_docs/methods/channels.editForumTopic.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), topic_id: $[int](/API_docs/types/int.html), title: $[string](/API_docs/types/string.html), icon_emoji_id: $[long](/API_docs/types/long.html), closed: $[Bool](/API_docs/types/Bool.html), hidden: $[Bool](/API_docs/types/Bool.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->editLocation](/API_docs/methods/channels.editLocation.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), geo_point: $[InputGeoPoint](/API_docs/types/InputGeoPoint.html), address: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[channels->editPhoto](/API_docs/methods/channels.editPhoto.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), photo: $[InputChatPhoto](/API_docs/types/InputChatPhoto.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->editTitle](/API_docs/methods/channels.editTitle.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), title: $[string](/API_docs/types/string.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->exportMessageLink](/API_docs/methods/channels.exportMessageLink.html)(\[grouped: $[Bool](/API_docs/types/Bool.html), thread: $[Bool](/API_docs/types/Bool.html), channel: $[InputChannel](/API_docs/types/InputChannel.html), id: $[int](/API_docs/types/int.html), \]) === [$ExportedMessageLink](/API_docs/types/ExportedMessageLink.html) + +*** +

+$MadelineProto->[channels->getAdminLog](/API_docs/methods/channels.getAdminLog.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), q: $[string](/API_docs/types/string.html), events_filter: $[ChannelAdminLogEventsFilter](/API_docs/types/ChannelAdminLogEventsFilter.html), admins: \[$[InputUser](/API_docs/types/InputUser.html)\], max_id: $[long](/API_docs/types/long.html), min_id: $[long](/API_docs/types/long.html), limit: $[int](/API_docs/types/int.html), \]) === [$channels.AdminLogResults](/API_docs/types/channels.AdminLogResults.html) + +*** +

+$MadelineProto->[channels->getAdminedPublicChannels](/API_docs/methods/channels.getAdminedPublicChannels.html)(\[by_location: $[Bool](/API_docs/types/Bool.html), check_limit: $[Bool](/API_docs/types/Bool.html), for_personal: $[Bool](/API_docs/types/Bool.html), \]) === [$messages.Chats](/API_docs/types/messages.Chats.html) + +*** +

+$MadelineProto->[channels->getChannelRecommendations](/API_docs/methods/channels.getChannelRecommendations.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), \]) === [$messages.Chats](/API_docs/types/messages.Chats.html) + +*** +

+$MadelineProto->[channels->getChannels](/API_docs/methods/channels.getChannels.html)(\[id: \[$[InputChannel](/API_docs/types/InputChannel.html)\], \]) === [$messages.Chats](/API_docs/types/messages.Chats.html) + +*** +

+$MadelineProto->[channels->getForumTopics](/API_docs/methods/channels.getForumTopics.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), q: $[string](/API_docs/types/string.html), offset_date: $[int](/API_docs/types/int.html), offset_id: $[int](/API_docs/types/int.html), offset_topic: $[int](/API_docs/types/int.html), limit: $[int](/API_docs/types/int.html), \]) === [$messages.ForumTopics](/API_docs/types/messages.ForumTopics.html) + +*** +

+$MadelineProto->[channels->getForumTopicsByID](/API_docs/methods/channels.getForumTopicsByID.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), topics: \[$[int](/API_docs/types/int.html)\], \]) === [$messages.ForumTopics](/API_docs/types/messages.ForumTopics.html) + +*** +

+$MadelineProto->[channels->getFullChannel](/API_docs/methods/channels.getFullChannel.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), \]) === [$messages.ChatFull](/API_docs/types/messages.ChatFull.html) + +*** +

+$MadelineProto->[channels->getGroupsForDiscussion](/API_docs/methods/channels.getGroupsForDiscussion.html)(\[\]) === [$messages.Chats](/API_docs/types/messages.Chats.html) + +*** +

+$MadelineProto->[channels->getInactiveChannels](/API_docs/methods/channels.getInactiveChannels.html)(\[\]) === [$messages.InactiveChats](/API_docs/types/messages.InactiveChats.html) + +*** +

+$MadelineProto->[channels->getLeftChannels](/API_docs/methods/channels.getLeftChannels.html)(\[offset: $[int](/API_docs/types/int.html), \]) === [$messages.Chats](/API_docs/types/messages.Chats.html) + +*** +

+$MadelineProto->[channels->getMessages](/API_docs/methods/channels.getMessages.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), id: \[$[InputMessage](/API_docs/types/InputMessage.html)\], \]) === [$messages.Messages](/API_docs/types/messages.Messages.html) + +*** +

+$MadelineProto->[channels->getParticipant](/API_docs/methods/channels.getParticipant.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), participant: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$channels.ChannelParticipant](/API_docs/types/channels.ChannelParticipant.html) + +*** +

+$MadelineProto->[channels->getParticipants](/API_docs/methods/channels.getParticipants.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), filter: $[ChannelParticipantsFilter](/API_docs/types/ChannelParticipantsFilter.html), offset: $[int](/API_docs/types/int.html), limit: $[int](/API_docs/types/int.html), hash: $[long](/API_docs/types/long.html), \]) === [$channels.ChannelParticipants](/API_docs/types/channels.ChannelParticipants.html) + +*** +

+$MadelineProto->[channels->getSendAs](/API_docs/methods/channels.getSendAs.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$channels.SendAsPeers](/API_docs/types/channels.SendAsPeers.html) + +*** +

+$MadelineProto->[channels->getSponsoredMessages](/API_docs/methods/channels.getSponsoredMessages.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), \]) === [$messages.SponsoredMessages](/API_docs/types/messages.SponsoredMessages.html) + +*** +

+$MadelineProto->[channels->inviteToChannel](/API_docs/methods/channels.inviteToChannel.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), users: \[$[InputUser](/API_docs/types/InputUser.html)\], \]) === [$messages.InvitedUsers](/API_docs/types/messages.InvitedUsers.html) + +*** +

+$MadelineProto->[channels->joinChannel](/API_docs/methods/channels.joinChannel.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->leaveChannel](/API_docs/methods/channels.leaveChannel.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->readHistory](/API_docs/methods/channels.readHistory.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), max_id: $[int](/API_docs/types/int.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[channels->readMessageContents](/API_docs/methods/channels.readMessageContents.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), id: \[$[int](/API_docs/types/int.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[channels->reorderPinnedForumTopics](/API_docs/methods/channels.reorderPinnedForumTopics.html)(\[force: $[Bool](/API_docs/types/Bool.html), channel: $[InputChannel](/API_docs/types/InputChannel.html), order: \[$[int](/API_docs/types/int.html)\], \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->reorderUsernames](/API_docs/methods/channels.reorderUsernames.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), order: \[$[string](/API_docs/types/string.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[channels->reportAntiSpamFalsePositive](/API_docs/methods/channels.reportAntiSpamFalsePositive.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), msg_id: $[int](/API_docs/types/int.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[channels->reportSpam](/API_docs/methods/channels.reportSpam.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), participant: $[InputPeer](/API_docs/types/InputPeer.html), id: \[$[int](/API_docs/types/int.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[channels->reportSponsoredMessage](/API_docs/methods/channels.reportSponsoredMessage.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), option: $[bytes](/API_docs/types/bytes.html), \]) === [$channels.SponsoredMessageReportResult](/API_docs/types/channels.SponsoredMessageReportResult.html) + +*** +

+$MadelineProto->[channels->restrictSponsoredMessages](/API_docs/methods/channels.restrictSponsoredMessages.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), restricted: $[Bool](/API_docs/types/Bool.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->setBoostsToUnblockRestrictions](/API_docs/methods/channels.setBoostsToUnblockRestrictions.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), boosts: $[int](/API_docs/types/int.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->setDiscussionGroup](/API_docs/methods/channels.setDiscussionGroup.html)(\[broadcast: $[InputChannel](/API_docs/types/InputChannel.html), group: $[InputChannel](/API_docs/types/InputChannel.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[channels->setEmojiStickers](/API_docs/methods/channels.setEmojiStickers.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), stickerset: $[InputStickerSet](/API_docs/types/InputStickerSet.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[channels->setStickers](/API_docs/methods/channels.setStickers.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), stickerset: $[InputStickerSet](/API_docs/types/InputStickerSet.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[channels->toggleAntiSpam](/API_docs/methods/channels.toggleAntiSpam.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), enabled: $[Bool](/API_docs/types/Bool.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->toggleForum](/API_docs/methods/channels.toggleForum.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), enabled: $[Bool](/API_docs/types/Bool.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->toggleJoinRequest](/API_docs/methods/channels.toggleJoinRequest.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), enabled: $[Bool](/API_docs/types/Bool.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->toggleJoinToSend](/API_docs/methods/channels.toggleJoinToSend.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), enabled: $[Bool](/API_docs/types/Bool.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->toggleParticipantsHidden](/API_docs/methods/channels.toggleParticipantsHidden.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), enabled: $[Bool](/API_docs/types/Bool.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->togglePreHistoryHidden](/API_docs/methods/channels.togglePreHistoryHidden.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), enabled: $[Bool](/API_docs/types/Bool.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->toggleSignatures](/API_docs/methods/channels.toggleSignatures.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), enabled: $[Bool](/API_docs/types/Bool.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->toggleSlowMode](/API_docs/methods/channels.toggleSlowMode.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), seconds: $[int](/API_docs/types/int.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->toggleUsername](/API_docs/methods/channels.toggleUsername.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), username: $[string](/API_docs/types/string.html), active: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[channels->toggleViewForumAsMessages](/API_docs/methods/channels.toggleViewForumAsMessages.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), enabled: $[Bool](/API_docs/types/Bool.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->updateColor](/API_docs/methods/channels.updateColor.html)(\[for_profile: $[Bool](/API_docs/types/Bool.html), channel: $[InputChannel](/API_docs/types/InputChannel.html), color: $[int](/API_docs/types/int.html), background_emoji_id: $[long](/API_docs/types/long.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->updateEmojiStatus](/API_docs/methods/channels.updateEmojiStatus.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), emoji_status: $[EmojiStatus](/API_docs/types/EmojiStatus.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->updatePinnedForumTopic](/API_docs/methods/channels.updatePinnedForumTopic.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), topic_id: $[int](/API_docs/types/int.html), pinned: $[Bool](/API_docs/types/Bool.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[channels->updateUsername](/API_docs/methods/channels.updateUsername.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), username: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[channels->viewSponsoredMessage](/API_docs/methods/channels.viewSponsoredMessage.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[chatlists->checkChatlistInvite](/API_docs/methods/chatlists.checkChatlistInvite.html)(\[slug: $[string](/API_docs/types/string.html), \]) === [$chatlists.ChatlistInvite](/API_docs/types/chatlists.ChatlistInvite.html) + +*** +

+$MadelineProto->[chatlists->deleteExportedInvite](/API_docs/methods/chatlists.deleteExportedInvite.html)(\[chatlist: $[InputChatlist](/API_docs/types/InputChatlist.html), slug: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[chatlists->editExportedInvite](/API_docs/methods/chatlists.editExportedInvite.html)(\[chatlist: $[InputChatlist](/API_docs/types/InputChatlist.html), slug: $[string](/API_docs/types/string.html), title: $[string](/API_docs/types/string.html), peers: \[$[InputPeer](/API_docs/types/InputPeer.html)\], \]) === [$ExportedChatlistInvite](/API_docs/types/ExportedChatlistInvite.html) + +*** +

+$MadelineProto->[chatlists->exportChatlistInvite](/API_docs/methods/chatlists.exportChatlistInvite.html)(\[chatlist: $[InputChatlist](/API_docs/types/InputChatlist.html), title: $[string](/API_docs/types/string.html), peers: \[$[InputPeer](/API_docs/types/InputPeer.html)\], \]) === [$chatlists.ExportedChatlistInvite](/API_docs/types/chatlists.ExportedChatlistInvite.html) + +*** +

+$MadelineProto->[chatlists->getChatlistUpdates](/API_docs/methods/chatlists.getChatlistUpdates.html)(\[chatlist: $[InputChatlist](/API_docs/types/InputChatlist.html), \]) === [$chatlists.ChatlistUpdates](/API_docs/types/chatlists.ChatlistUpdates.html) + +*** +

+$MadelineProto->[chatlists->getExportedInvites](/API_docs/methods/chatlists.getExportedInvites.html)(\[chatlist: $[InputChatlist](/API_docs/types/InputChatlist.html), \]) === [$chatlists.ExportedInvites](/API_docs/types/chatlists.ExportedInvites.html) + +*** +

+$MadelineProto->[chatlists->getLeaveChatlistSuggestions](/API_docs/methods/chatlists.getLeaveChatlistSuggestions.html)(\[chatlist: $[InputChatlist](/API_docs/types/InputChatlist.html), \]) === [$Vector\_of\_Peer](/API_docs/types/Peer.html) + +*** +

+$MadelineProto->[chatlists->hideChatlistUpdates](/API_docs/methods/chatlists.hideChatlistUpdates.html)(\[chatlist: $[InputChatlist](/API_docs/types/InputChatlist.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[chatlists->joinChatlistInvite](/API_docs/methods/chatlists.joinChatlistInvite.html)(\[slug: $[string](/API_docs/types/string.html), peers: \[$[InputPeer](/API_docs/types/InputPeer.html)\], \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[chatlists->joinChatlistUpdates](/API_docs/methods/chatlists.joinChatlistUpdates.html)(\[chatlist: $[InputChatlist](/API_docs/types/InputChatlist.html), peers: \[$[InputPeer](/API_docs/types/InputPeer.html)\], \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[chatlists->leaveChatlist](/API_docs/methods/chatlists.leaveChatlist.html)(\[chatlist: $[InputChatlist](/API_docs/types/InputChatlist.html), peers: \[$[InputPeer](/API_docs/types/InputPeer.html)\], \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[contacts->acceptContact](/API_docs/methods/contacts.acceptContact.html)(\[id: $[InputUser](/API_docs/types/InputUser.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[contacts->addContact](/API_docs/methods/contacts.addContact.html)(\[add_phone_privacy_exception: $[Bool](/API_docs/types/Bool.html), id: $[InputUser](/API_docs/types/InputUser.html), first_name: $[string](/API_docs/types/string.html), last_name: $[string](/API_docs/types/string.html), phone: $[string](/API_docs/types/string.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[contacts->block](/API_docs/methods/contacts.block.html)(\[my_stories_from: $[Bool](/API_docs/types/Bool.html), id: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[contacts->blockFromReplies](/API_docs/methods/contacts.blockFromReplies.html)(\[delete_message: $[Bool](/API_docs/types/Bool.html), delete_history: $[Bool](/API_docs/types/Bool.html), report_spam: $[Bool](/API_docs/types/Bool.html), msg_id: $[int](/API_docs/types/int.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[contacts->deleteByPhones](/API_docs/methods/contacts.deleteByPhones.html)(\[phones: \[$[string](/API_docs/types/string.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[contacts->deleteContacts](/API_docs/methods/contacts.deleteContacts.html)(\[id: \[$[InputUser](/API_docs/types/InputUser.html)\], \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[contacts->editCloseFriends](/API_docs/methods/contacts.editCloseFriends.html)(\[id: \[$[long](/API_docs/types/long.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[contacts->exportContactToken](/API_docs/methods/contacts.exportContactToken.html)(\[\]) === [$ExportedContactToken](/API_docs/types/ExportedContactToken.html) + +*** +

+$MadelineProto->[contacts->getBirthdays](/API_docs/methods/contacts.getBirthdays.html)(\[\]) === [$contacts.ContactBirthdays](/API_docs/types/contacts.ContactBirthdays.html) + +*** +

+$MadelineProto->[contacts->getBlocked](/API_docs/methods/contacts.getBlocked.html)(\[my_stories_from: $[Bool](/API_docs/types/Bool.html), offset: $[int](/API_docs/types/int.html), limit: $[int](/API_docs/types/int.html), \]) === [$contacts.Blocked](/API_docs/types/contacts.Blocked.html) + +*** +

+$MadelineProto->[contacts->getContactIDs](/API_docs/methods/contacts.getContactIDs.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$Vector\_of\_int](/API_docs/types/int.html) + +*** +

+$MadelineProto->[contacts->getContacts](/API_docs/methods/contacts.getContacts.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$contacts.Contacts](/API_docs/types/contacts.Contacts.html) + +*** +

+$MadelineProto->[contacts->getLocated](/API_docs/methods/contacts.getLocated.html)(\[background: $[Bool](/API_docs/types/Bool.html), geo_point: $[InputGeoPoint](/API_docs/types/InputGeoPoint.html), self_expires: $[int](/API_docs/types/int.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[contacts->getSaved](/API_docs/methods/contacts.getSaved.html)(\[\]) === [$Vector\_of\_SavedContact](/API_docs/types/SavedContact.html) + +*** +

+$MadelineProto->[contacts->getStatuses](/API_docs/methods/contacts.getStatuses.html)(\[\]) === [$Vector\_of\_ContactStatus](/API_docs/types/ContactStatus.html) + +*** +

+$MadelineProto->[contacts->getTopPeers](/API_docs/methods/contacts.getTopPeers.html)(\[correspondents: $[Bool](/API_docs/types/Bool.html), bots_pm: $[Bool](/API_docs/types/Bool.html), bots_inline: $[Bool](/API_docs/types/Bool.html), phone_calls: $[Bool](/API_docs/types/Bool.html), forward_users: $[Bool](/API_docs/types/Bool.html), forward_chats: $[Bool](/API_docs/types/Bool.html), groups: $[Bool](/API_docs/types/Bool.html), channels: $[Bool](/API_docs/types/Bool.html), offset: $[int](/API_docs/types/int.html), limit: $[int](/API_docs/types/int.html), hash: $[long](/API_docs/types/long.html), \]) === [$contacts.TopPeers](/API_docs/types/contacts.TopPeers.html) + +*** +

+$MadelineProto->[contacts->importContactToken](/API_docs/methods/contacts.importContactToken.html)(\[token: $[string](/API_docs/types/string.html), \]) === [$User](/API_docs/types/User.html) + +*** +

+$MadelineProto->[contacts->importContacts](/API_docs/methods/contacts.importContacts.html)(\[contacts: \[$[InputContact](/API_docs/types/InputContact.html)\], \]) === [$contacts.ImportedContacts](/API_docs/types/contacts.ImportedContacts.html) + +*** +

+$MadelineProto->[contacts->resetSaved](/API_docs/methods/contacts.resetSaved.html)(\[\]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[contacts->resetTopPeerRating](/API_docs/methods/contacts.resetTopPeerRating.html)(\[category: $[TopPeerCategory](/API_docs/types/TopPeerCategory.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[contacts->resolvePhone](/API_docs/methods/contacts.resolvePhone.html)(\[phone: $[string](/API_docs/types/string.html), \]) === [$contacts.ResolvedPeer](/API_docs/types/contacts.ResolvedPeer.html) + +*** +

+$MadelineProto->[contacts->resolveUsername](/API_docs/methods/contacts.resolveUsername.html)(\[username: $[string](/API_docs/types/string.html), \]) === [$contacts.ResolvedPeer](/API_docs/types/contacts.ResolvedPeer.html) + +*** +

+$MadelineProto->[contacts->search](/API_docs/methods/contacts.search.html)(\[q: $[string](/API_docs/types/string.html), limit: $[int](/API_docs/types/int.html), \]) === [$contacts.Found](/API_docs/types/contacts.Found.html) + +*** +

+$MadelineProto->[contacts->setBlocked](/API_docs/methods/contacts.setBlocked.html)(\[my_stories_from: $[Bool](/API_docs/types/Bool.html), id: \[$[InputPeer](/API_docs/types/InputPeer.html)\], limit: $[int](/API_docs/types/int.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[contacts->toggleTopPeers](/API_docs/methods/contacts.toggleTopPeers.html)(\[enabled: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[contacts->unblock](/API_docs/methods/contacts.unblock.html)(\[my_stories_from: $[Bool](/API_docs/types/Bool.html), id: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[folders->editPeerFolders](/API_docs/methods/folders.editPeerFolders.html)(\[folder_peers: \[$[InputFolderPeer](/API_docs/types/InputFolderPeer.html)\], \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[fragment->getCollectibleInfo](/API_docs/methods/fragment.getCollectibleInfo.html)(\[collectible: $[InputCollectible](/API_docs/types/InputCollectible.html), \]) === [$fragment.CollectibleInfo](/API_docs/types/fragment.CollectibleInfo.html) + +*** +

+$MadelineProto->[help->acceptTermsOfService](/API_docs/methods/help.acceptTermsOfService.html)(\[id: $[DataJSON](/API_docs/types/DataJSON.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[help->dismissSuggestion](/API_docs/methods/help.dismissSuggestion.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), suggestion: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[help->editUserInfo](/API_docs/methods/help.editUserInfo.html)(\[user_id: $[InputUser](/API_docs/types/InputUser.html), message: $[string](/API_docs/types/string.html), entities: \[$[MessageEntity](/API_docs/types/MessageEntity.html)\], \]) === [$help.UserInfo](/API_docs/types/help.UserInfo.html) + +*** +

+$MadelineProto->[help->getAppConfig](/API_docs/methods/help.getAppConfig.html)(\[hash: $[int](/API_docs/types/int.html), \]) === [$help.AppConfig](/API_docs/types/help.AppConfig.html) + +*** +

+$MadelineProto->[help->getAppUpdate](/API_docs/methods/help.getAppUpdate.html)(\[source: $[string](/API_docs/types/string.html), \]) === [$help.AppUpdate](/API_docs/types/help.AppUpdate.html) + +*** +

+$MadelineProto->[help->getCdnConfig](/API_docs/methods/help.getCdnConfig.html)(\[\]) === [$CdnConfig](/API_docs/types/CdnConfig.html) + +*** +

+$MadelineProto->[help->getConfig](/API_docs/methods/help.getConfig.html)(\[\]) === [$Config](/API_docs/types/Config.html) + +*** +

+$MadelineProto->[help->getCountriesList](/API_docs/methods/help.getCountriesList.html)(\[lang_code: $[string](/API_docs/types/string.html), hash: $[int](/API_docs/types/int.html), \]) === [$help.CountriesList](/API_docs/types/help.CountriesList.html) + +*** +

+$MadelineProto->[help->getDeepLinkInfo](/API_docs/methods/help.getDeepLinkInfo.html)(\[path: $[string](/API_docs/types/string.html), \]) === [$help.DeepLinkInfo](/API_docs/types/help.DeepLinkInfo.html) + +*** +

+$MadelineProto->[help->getInviteText](/API_docs/methods/help.getInviteText.html)(\[\]) === [$help.InviteText](/API_docs/types/help.InviteText.html) + +*** +

+$MadelineProto->[help->getNearestDc](/API_docs/methods/help.getNearestDc.html)(\[\]) === [$NearestDc](/API_docs/types/NearestDc.html) + +*** +

+$MadelineProto->[help->getPassportConfig](/API_docs/methods/help.getPassportConfig.html)(\[hash: $[int](/API_docs/types/int.html), \]) === [$help.PassportConfig](/API_docs/types/help.PassportConfig.html) + +*** +

+$MadelineProto->[help->getPeerColors](/API_docs/methods/help.getPeerColors.html)(\[hash: $[int](/API_docs/types/int.html), \]) === [$help.PeerColors](/API_docs/types/help.PeerColors.html) + +*** +

+$MadelineProto->[help->getPeerProfileColors](/API_docs/methods/help.getPeerProfileColors.html)(\[hash: $[int](/API_docs/types/int.html), \]) === [$help.PeerColors](/API_docs/types/help.PeerColors.html) + +*** +

+$MadelineProto->[help->getPremiumPromo](/API_docs/methods/help.getPremiumPromo.html)(\[\]) === [$help.PremiumPromo](/API_docs/types/help.PremiumPromo.html) + +*** +

+$MadelineProto->[help->getPromoData](/API_docs/methods/help.getPromoData.html)(\[\]) === [$help.PromoData](/API_docs/types/help.PromoData.html) + +*** +

+$MadelineProto->[help->getRecentMeUrls](/API_docs/methods/help.getRecentMeUrls.html)(\[referer: $[string](/API_docs/types/string.html), \]) === [$help.RecentMeUrls](/API_docs/types/help.RecentMeUrls.html) + +*** +

+$MadelineProto->[help->getSupport](/API_docs/methods/help.getSupport.html)(\[\]) === [$help.Support](/API_docs/types/help.Support.html) + +*** +

+$MadelineProto->[help->getSupportName](/API_docs/methods/help.getSupportName.html)(\[\]) === [$help.SupportName](/API_docs/types/help.SupportName.html) + +*** +

+$MadelineProto->[help->getTermsOfServiceUpdate](/API_docs/methods/help.getTermsOfServiceUpdate.html)(\[\]) === [$help.TermsOfServiceUpdate](/API_docs/types/help.TermsOfServiceUpdate.html) + +*** +

+$MadelineProto->[help->getTimezonesList](/API_docs/methods/help.getTimezonesList.html)(\[hash: $[int](/API_docs/types/int.html), \]) === [$help.TimezonesList](/API_docs/types/help.TimezonesList.html) + +*** +

+$MadelineProto->[help->getUserInfo](/API_docs/methods/help.getUserInfo.html)(\[user_id: $[InputUser](/API_docs/types/InputUser.html), \]) === [$help.UserInfo](/API_docs/types/help.UserInfo.html) + +*** +

+$MadelineProto->[help->hidePromoData](/API_docs/methods/help.hidePromoData.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[help->saveAppLog](/API_docs/methods/help.saveAppLog.html)(\[events: \[$[InputAppEvent](/API_docs/types/InputAppEvent.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[help->setBotUpdatesStatus](/API_docs/methods/help.setBotUpdatesStatus.html)(\[pending_updates_count: $[int](/API_docs/types/int.html), message: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[initConnection](/API_docs/methods/initConnection.html)(\[api_id: $[int](/API_docs/types/int.html), device_model: $[string](/API_docs/types/string.html), system_version: $[string](/API_docs/types/string.html), app_version: $[string](/API_docs/types/string.html), system_lang_code: $[string](/API_docs/types/string.html), lang_pack: $[string](/API_docs/types/string.html), lang_code: $[string](/API_docs/types/string.html), proxy: $[InputClientProxy](/API_docs/types/InputClientProxy.html), params: $[JSONValue](/API_docs/types/JSONValue.html), query: $[!X](/API_docs/types/!X.html), \]) === [$X](/API_docs/types/X.html) + +*** +

+$MadelineProto->[invokeAfterMsg](/API_docs/methods/invokeAfterMsg.html)(\[msg_id: $[long](/API_docs/types/long.html), query: $[!X](/API_docs/types/!X.html), \]) === [$X](/API_docs/types/X.html) + +*** +

+$MadelineProto->[invokeAfterMsgs](/API_docs/methods/invokeAfterMsgs.html)(\[msg_ids: \[$[long](/API_docs/types/long.html)\], query: $[!X](/API_docs/types/!X.html), \]) === [$X](/API_docs/types/X.html) + +*** +

+$MadelineProto->[invokeWithBusinessConnection](/API_docs/methods/invokeWithBusinessConnection.html)(\[connection_id: $[string](/API_docs/types/string.html), query: $[!X](/API_docs/types/!X.html), \]) === [$X](/API_docs/types/X.html) + +*** +

+$MadelineProto->[invokeWithLayer](/API_docs/methods/invokeWithLayer.html)(\[layer: $[int](/API_docs/types/int.html), query: $[!X](/API_docs/types/!X.html), \]) === [$X](/API_docs/types/X.html) + +*** +

+$MadelineProto->[invokeWithMessagesRange](/API_docs/methods/invokeWithMessagesRange.html)(\[range: $[MessageRange](/API_docs/types/MessageRange.html), query: $[!X](/API_docs/types/!X.html), \]) === [$X](/API_docs/types/X.html) + +*** +

+$MadelineProto->[invokeWithTakeout](/API_docs/methods/invokeWithTakeout.html)(\[takeout_id: $[long](/API_docs/types/long.html), query: $[!X](/API_docs/types/!X.html), \]) === [$X](/API_docs/types/X.html) + +*** +

+$MadelineProto->[invokeWithoutUpdates](/API_docs/methods/invokeWithoutUpdates.html)(\[query: $[!X](/API_docs/types/!X.html), \]) === [$X](/API_docs/types/X.html) + +*** +

+$MadelineProto->[langpack->getDifference](/API_docs/methods/langpack.getDifference.html)(\[lang_pack: $[string](/API_docs/types/string.html), lang_code: $[string](/API_docs/types/string.html), from_version: $[int](/API_docs/types/int.html), \]) === [$LangPackDifference](/API_docs/types/LangPackDifference.html) + +*** +

+$MadelineProto->[langpack->getLangPack](/API_docs/methods/langpack.getLangPack.html)(\[lang_pack: $[string](/API_docs/types/string.html), lang_code: $[string](/API_docs/types/string.html), \]) === [$LangPackDifference](/API_docs/types/LangPackDifference.html) + +*** +

+$MadelineProto->[langpack->getLanguage](/API_docs/methods/langpack.getLanguage.html)(\[lang_pack: $[string](/API_docs/types/string.html), lang_code: $[string](/API_docs/types/string.html), \]) === [$LangPackLanguage](/API_docs/types/LangPackLanguage.html) + +*** +

+$MadelineProto->[langpack->getLanguages](/API_docs/methods/langpack.getLanguages.html)(\[lang_pack: $[string](/API_docs/types/string.html), \]) === [$Vector\_of\_LangPackLanguage](/API_docs/types/LangPackLanguage.html) + +*** +

+$MadelineProto->[langpack->getStrings](/API_docs/methods/langpack.getStrings.html)(\[lang_pack: $[string](/API_docs/types/string.html), lang_code: $[string](/API_docs/types/string.html), keys: \[$[string](/API_docs/types/string.html)\], \]) === [$Vector\_of\_LangPackString](/API_docs/types/LangPackString.html) + +*** +

+$MadelineProto->[messages->acceptEncryption](/API_docs/methods/messages.acceptEncryption.html)(\[peer: $[InputEncryptedChat](/API_docs/types/InputEncryptedChat.html), g_b: $[bytes](/API_docs/types/bytes.html), key_fingerprint: $[strlong](/API_docs/constructors/strlong.html), \]) === [$EncryptedChat](/API_docs/types/EncryptedChat.html) + +*** +

+$MadelineProto->[messages->acceptUrlAuth](/API_docs/methods/messages.acceptUrlAuth.html)(\[write_allowed: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), msg_id: $[int](/API_docs/types/int.html), button_id: $[int](/API_docs/types/int.html), url: $[string](/API_docs/types/string.html), \]) === [$UrlAuthResult](/API_docs/types/UrlAuthResult.html) + +*** +

+$MadelineProto->[messages->addChatUser](/API_docs/methods/messages.addChatUser.html)(\[chat_id: $[InputPeer](/API_docs/types/InputPeer.html), user_id: $[InputUser](/API_docs/types/InputUser.html), fwd_limit: $[int](/API_docs/types/int.html), \]) === [$messages.InvitedUsers](/API_docs/types/messages.InvitedUsers.html) + +*** +

+$MadelineProto->[messages->checkChatInvite](/API_docs/methods/messages.checkChatInvite.html)(\[hash: $[string](/API_docs/types/string.html), \]) === [$ChatInvite](/API_docs/types/ChatInvite.html) + +*** +

+$MadelineProto->[messages->checkHistoryImport](/API_docs/methods/messages.checkHistoryImport.html)(\[import_head: $[string](/API_docs/types/string.html), \]) === [$messages.HistoryImportParsed](/API_docs/types/messages.HistoryImportParsed.html) + +*** +

+$MadelineProto->[messages->checkHistoryImportPeer](/API_docs/methods/messages.checkHistoryImportPeer.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$messages.CheckedHistoryImportPeer](/API_docs/types/messages.CheckedHistoryImportPeer.html) + +*** +

+$MadelineProto->[messages->checkQuickReplyShortcut](/API_docs/methods/messages.checkQuickReplyShortcut.html)(\[shortcut: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->clearAllDrafts](/API_docs/methods/messages.clearAllDrafts.html)(\[\]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->clearRecentReactions](/API_docs/methods/messages.clearRecentReactions.html)(\[\]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->clearRecentStickers](/API_docs/methods/messages.clearRecentStickers.html)(\[attached: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->createChat](/API_docs/methods/messages.createChat.html)(\[users: \[$[InputUser](/API_docs/types/InputUser.html)\], title: $[string](/API_docs/types/string.html), ttl_period: $[int](/API_docs/types/int.html), \]) === [$messages.InvitedUsers](/API_docs/types/messages.InvitedUsers.html) + +*** +

+$MadelineProto->[messages->deleteChat](/API_docs/methods/messages.deleteChat.html)(\[chat_id: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->deleteChatUser](/API_docs/methods/messages.deleteChatUser.html)(\[revoke_history: $[Bool](/API_docs/types/Bool.html), chat_id: $[InputPeer](/API_docs/types/InputPeer.html), user_id: $[InputUser](/API_docs/types/InputUser.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->deleteExportedChatInvite](/API_docs/methods/messages.deleteExportedChatInvite.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), link: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->deleteHistory](/API_docs/methods/messages.deleteHistory.html)(\[just_clear: $[Bool](/API_docs/types/Bool.html), revoke: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), max_id: $[int](/API_docs/types/int.html), min_date: $[int](/API_docs/types/int.html), max_date: $[int](/API_docs/types/int.html), \]) === [$messages.AffectedHistory](/API_docs/types/messages.AffectedHistory.html) + +*** +

+$MadelineProto->[messages->deleteMessages](/API_docs/methods/messages.deleteMessages.html)(\[revoke: $[Bool](/API_docs/types/Bool.html), id: \[$[int](/API_docs/types/int.html)\], \]) === [$messages.AffectedMessages](/API_docs/types/messages.AffectedMessages.html) + +*** +

+$MadelineProto->[messages->deletePhoneCallHistory](/API_docs/methods/messages.deletePhoneCallHistory.html)(\[revoke: $[Bool](/API_docs/types/Bool.html), \]) === [$messages.AffectedFoundMessages](/API_docs/types/messages.AffectedFoundMessages.html) + +*** +

+$MadelineProto->[messages->deleteQuickReplyMessages](/API_docs/methods/messages.deleteQuickReplyMessages.html)(\[shortcut_id: $[int](/API_docs/types/int.html), id: \[$[int](/API_docs/types/int.html)\], \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->deleteQuickReplyShortcut](/API_docs/methods/messages.deleteQuickReplyShortcut.html)(\[shortcut_id: $[int](/API_docs/types/int.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->deleteRevokedExportedChatInvites](/API_docs/methods/messages.deleteRevokedExportedChatInvites.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), admin_id: $[InputUser](/API_docs/types/InputUser.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->deleteSavedHistory](/API_docs/methods/messages.deleteSavedHistory.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), max_id: $[int](/API_docs/types/int.html), min_date: $[int](/API_docs/types/int.html), max_date: $[int](/API_docs/types/int.html), \]) === [$messages.AffectedHistory](/API_docs/types/messages.AffectedHistory.html) + +*** +

+$MadelineProto->[messages->deleteScheduledMessages](/API_docs/methods/messages.deleteScheduledMessages.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: \[$[int](/API_docs/types/int.html)\], \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->discardEncryption](/API_docs/methods/messages.discardEncryption.html)(\[delete_history: $[Bool](/API_docs/types/Bool.html), chat_id: $[int](/API_docs/types/int.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->editChatAbout](/API_docs/methods/messages.editChatAbout.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), about: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->editChatAdmin](/API_docs/methods/messages.editChatAdmin.html)(\[chat_id: $[InputPeer](/API_docs/types/InputPeer.html), user_id: $[InputUser](/API_docs/types/InputUser.html), is_admin: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->editChatDefaultBannedRights](/API_docs/methods/messages.editChatDefaultBannedRights.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), banned_rights: $[ChatBannedRights](/API_docs/types/ChatBannedRights.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->editChatPhoto](/API_docs/methods/messages.editChatPhoto.html)(\[chat_id: $[InputPeer](/API_docs/types/InputPeer.html), photo: $[InputChatPhoto](/API_docs/types/InputChatPhoto.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->editChatTitle](/API_docs/methods/messages.editChatTitle.html)(\[chat_id: $[InputPeer](/API_docs/types/InputPeer.html), title: $[string](/API_docs/types/string.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->editExportedChatInvite](/API_docs/methods/messages.editExportedChatInvite.html)(\[revoked: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), link: $[string](/API_docs/types/string.html), expire_date: $[int](/API_docs/types/int.html), usage_limit: $[int](/API_docs/types/int.html), request_needed: $[Bool](/API_docs/types/Bool.html), title: $[string](/API_docs/types/string.html), \]) === [$messages.ExportedChatInvite](/API_docs/types/messages.ExportedChatInvite.html) + +*** +

+$MadelineProto->[messages->editInlineBotMessage](/API_docs/methods/messages.editInlineBotMessage.html)(\[no_webpage: $[Bool](/API_docs/types/Bool.html), invert_media: $[Bool](/API_docs/types/Bool.html), id: $[InputBotInlineMessageID](/API_docs/types/InputBotInlineMessageID.html), message: $[string](/API_docs/types/string.html), media: $[InputMedia](/API_docs/types/InputMedia.html), reply_markup: $[ReplyMarkup](/API_docs/types/ReplyMarkup.html), entities: \[$[MessageEntity](/API_docs/types/MessageEntity.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->editMessage](/API_docs/methods/messages.editMessage.html)(\[no_webpage: $[Bool](/API_docs/types/Bool.html), invert_media: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), id: $[int](/API_docs/types/int.html), message: $[string](/API_docs/types/string.html), media: $[InputMedia](/API_docs/types/InputMedia.html), reply_markup: $[ReplyMarkup](/API_docs/types/ReplyMarkup.html), entities: \[$[MessageEntity](/API_docs/types/MessageEntity.html)\], schedule_date: $[int](/API_docs/types/int.html), quick_reply_shortcut_id: $[int](/API_docs/types/int.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->editQuickReplyShortcut](/API_docs/methods/messages.editQuickReplyShortcut.html)(\[shortcut_id: $[int](/API_docs/types/int.html), shortcut: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->exportChatInvite](/API_docs/methods/messages.exportChatInvite.html)(\[legacy_revoke_permanent: $[Bool](/API_docs/types/Bool.html), request_needed: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), expire_date: $[int](/API_docs/types/int.html), usage_limit: $[int](/API_docs/types/int.html), title: $[string](/API_docs/types/string.html), \]) === [$ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) + +*** +

+$MadelineProto->[messages->faveSticker](/API_docs/methods/messages.faveSticker.html)(\[id: $[InputDocument](/API_docs/types/InputDocument.html), unfave: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->forwardMessages](/API_docs/methods/messages.forwardMessages.html)(\[silent: $[Bool](/API_docs/types/Bool.html), background: $[Bool](/API_docs/types/Bool.html), with_my_score: $[Bool](/API_docs/types/Bool.html), drop_author: $[Bool](/API_docs/types/Bool.html), drop_media_captions: $[Bool](/API_docs/types/Bool.html), noforwards: $[Bool](/API_docs/types/Bool.html), from_peer: $[InputPeer](/API_docs/types/InputPeer.html), id: \[$[int](/API_docs/types/int.html)\], to_peer: $[InputPeer](/API_docs/types/InputPeer.html), top_msg_id: $[int](/API_docs/types/int.html), schedule_date: $[int](/API_docs/types/int.html), send_as: $[InputPeer](/API_docs/types/InputPeer.html), quick_reply_shortcut: $[InputQuickReplyShortcut](/API_docs/types/InputQuickReplyShortcut.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->getAdminsWithInvites](/API_docs/methods/messages.getAdminsWithInvites.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$messages.ChatAdminsWithInvites](/API_docs/types/messages.ChatAdminsWithInvites.html) + +*** +

+$MadelineProto->[messages->getAllDrafts](/API_docs/methods/messages.getAllDrafts.html)(\[\]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->getAllStickers](/API_docs/methods/messages.getAllStickers.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$messages.AllStickers](/API_docs/types/messages.AllStickers.html) + +*** +

+$MadelineProto->[messages->getArchivedStickers](/API_docs/methods/messages.getArchivedStickers.html)(\[masks: $[Bool](/API_docs/types/Bool.html), emojis: $[Bool](/API_docs/types/Bool.html), offset_id: $[long](/API_docs/types/long.html), limit: $[int](/API_docs/types/int.html), \]) === [$messages.ArchivedStickers](/API_docs/types/messages.ArchivedStickers.html) + +*** +

+$MadelineProto->[messages->getAttachMenuBot](/API_docs/methods/messages.getAttachMenuBot.html)(\[bot: $[InputUser](/API_docs/types/InputUser.html), \]) === [$AttachMenuBotsBot](/API_docs/types/AttachMenuBotsBot.html) + +*** +

+$MadelineProto->[messages->getAttachMenuBots](/API_docs/methods/messages.getAttachMenuBots.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$AttachMenuBots](/API_docs/types/AttachMenuBots.html) + +*** +

+$MadelineProto->[messages->getAttachedStickers](/API_docs/methods/messages.getAttachedStickers.html)(\[media: $[InputStickeredMedia](/API_docs/types/InputStickeredMedia.html), \]) === [$Vector\_of\_StickerSetCovered](/API_docs/types/StickerSetCovered.html) + +*** +

+$MadelineProto->[messages->getAvailableReactions](/API_docs/methods/messages.getAvailableReactions.html)(\[hash: $[int](/API_docs/types/int.html), \]) === [$messages.AvailableReactions](/API_docs/types/messages.AvailableReactions.html) + +*** +

+$MadelineProto->[messages->getBotApp](/API_docs/methods/messages.getBotApp.html)(\[app: $[InputBotApp](/API_docs/types/InputBotApp.html), hash: $[long](/API_docs/types/long.html), \]) === [$messages.BotApp](/API_docs/types/messages.BotApp.html) + +*** +

+$MadelineProto->[messages->getBotCallbackAnswer](/API_docs/methods/messages.getBotCallbackAnswer.html)(\[game: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), msg_id: $[int](/API_docs/types/int.html), data: $[bytes](/API_docs/types/bytes.html), password: $[InputCheckPasswordSRP](/API_docs/types/InputCheckPasswordSRP.html), \]) === [$messages.BotCallbackAnswer](/API_docs/types/messages.BotCallbackAnswer.html) + +*** +

+$MadelineProto->[messages->getChatInviteImporters](/API_docs/methods/messages.getChatInviteImporters.html)(\[requested: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), link: $[string](/API_docs/types/string.html), q: $[string](/API_docs/types/string.html), offset_date: $[int](/API_docs/types/int.html), offset_user: $[InputUser](/API_docs/types/InputUser.html), limit: $[int](/API_docs/types/int.html), \]) === [$messages.ChatInviteImporters](/API_docs/types/messages.ChatInviteImporters.html) + +*** +

+$MadelineProto->[messages->getChats](/API_docs/methods/messages.getChats.html)(\[id: \[$[long](/API_docs/types/long.html)\], \]) === [$messages.Chats](/API_docs/types/messages.Chats.html) + +*** +

+$MadelineProto->[messages->getCommonChats](/API_docs/methods/messages.getCommonChats.html)(\[user_id: $[InputUser](/API_docs/types/InputUser.html), max_id: $[long](/API_docs/types/long.html), limit: $[int](/API_docs/types/int.html), \]) === [$messages.Chats](/API_docs/types/messages.Chats.html) + +*** +

+$MadelineProto->[messages->getCustomEmojiDocuments](/API_docs/methods/messages.getCustomEmojiDocuments.html)(\[document_id: \[$[long](/API_docs/types/long.html)\], \]) === [$Vector\_of\_Document](/API_docs/types/Document.html) + +*** +

+$MadelineProto->[messages->getDefaultHistoryTTL](/API_docs/methods/messages.getDefaultHistoryTTL.html)(\[\]) === [$DefaultHistoryTTL](/API_docs/types/DefaultHistoryTTL.html) + +*** +

+$MadelineProto->[messages->getDefaultTagReactions](/API_docs/methods/messages.getDefaultTagReactions.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$messages.Reactions](/API_docs/types/messages.Reactions.html) + +*** +

+$MadelineProto->[messages->getDhConfig](/API_docs/methods/messages.getDhConfig.html)(\[version: $[int](/API_docs/types/int.html), random_length: $[int](/API_docs/types/int.html), \]) === [$messages.DhConfig](/API_docs/types/messages.DhConfig.html) + +*** +

+$MadelineProto->[messages->getDialogFilters](/API_docs/methods/messages.getDialogFilters.html)(\[\]) === [$messages.DialogFilters](/API_docs/types/messages.DialogFilters.html) + +*** +

+$MadelineProto->[messages->getDialogUnreadMarks](/API_docs/methods/messages.getDialogUnreadMarks.html)(\[\]) === [$Vector\_of\_DialogPeer](/API_docs/types/DialogPeer.html) + +*** +

+$MadelineProto->[messages->getDialogs](/API_docs/methods/messages.getDialogs.html)(\[exclude_pinned: $[Bool](/API_docs/types/Bool.html), folder_id: $[int](/API_docs/types/int.html), offset_date: $[int](/API_docs/types/int.html), offset_id: $[int](/API_docs/types/int.html), offset_peer: $[InputPeer](/API_docs/types/InputPeer.html), limit: $[int](/API_docs/types/int.html), hash: $[long](/API_docs/types/long.html), \]) === [$messages.Dialogs](/API_docs/types/messages.Dialogs.html) + +*** +

+$MadelineProto->[messages->getDiscussionMessage](/API_docs/methods/messages.getDiscussionMessage.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), msg_id: $[int](/API_docs/types/int.html), \]) === [$messages.DiscussionMessage](/API_docs/types/messages.DiscussionMessage.html) + +*** +

+$MadelineProto->[messages->getDocumentByHash](/API_docs/methods/messages.getDocumentByHash.html)(\[sha256: $[bytes](/API_docs/types/bytes.html), size: $[long](/API_docs/types/long.html), mime_type: $[string](/API_docs/types/string.html), \]) === [$Document](/API_docs/types/Document.html) + +*** +

+$MadelineProto->[messages->getEmojiGroups](/API_docs/methods/messages.getEmojiGroups.html)(\[hash: $[int](/API_docs/types/int.html), \]) === [$messages.EmojiGroups](/API_docs/types/messages.EmojiGroups.html) + +*** +

+$MadelineProto->[messages->getEmojiKeywords](/API_docs/methods/messages.getEmojiKeywords.html)(\[lang_code: $[string](/API_docs/types/string.html), \]) === [$EmojiKeywordsDifference](/API_docs/types/EmojiKeywordsDifference.html) + +*** +

+$MadelineProto->[messages->getEmojiKeywordsDifference](/API_docs/methods/messages.getEmojiKeywordsDifference.html)(\[lang_code: $[string](/API_docs/types/string.html), from_version: $[int](/API_docs/types/int.html), \]) === [$EmojiKeywordsDifference](/API_docs/types/EmojiKeywordsDifference.html) + +*** +

+$MadelineProto->[messages->getEmojiKeywordsLanguages](/API_docs/methods/messages.getEmojiKeywordsLanguages.html)(\[lang_codes: \[$[string](/API_docs/types/string.html)\], \]) === [$Vector\_of\_EmojiLanguage](/API_docs/types/EmojiLanguage.html) + +*** +

+$MadelineProto->[messages->getEmojiProfilePhotoGroups](/API_docs/methods/messages.getEmojiProfilePhotoGroups.html)(\[hash: $[int](/API_docs/types/int.html), \]) === [$messages.EmojiGroups](/API_docs/types/messages.EmojiGroups.html) + +*** +

+$MadelineProto->[messages->getEmojiStatusGroups](/API_docs/methods/messages.getEmojiStatusGroups.html)(\[hash: $[int](/API_docs/types/int.html), \]) === [$messages.EmojiGroups](/API_docs/types/messages.EmojiGroups.html) + +*** +

+$MadelineProto->[messages->getEmojiStickerGroups](/API_docs/methods/messages.getEmojiStickerGroups.html)(\[hash: $[int](/API_docs/types/int.html), \]) === [$messages.EmojiGroups](/API_docs/types/messages.EmojiGroups.html) + +*** +

+$MadelineProto->[messages->getEmojiStickers](/API_docs/methods/messages.getEmojiStickers.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$messages.AllStickers](/API_docs/types/messages.AllStickers.html) + +*** +

+$MadelineProto->[messages->getEmojiURL](/API_docs/methods/messages.getEmojiURL.html)(\[lang_code: $[string](/API_docs/types/string.html), \]) === [$EmojiURL](/API_docs/types/EmojiURL.html) + +*** +

+$MadelineProto->[messages->getExportedChatInvite](/API_docs/methods/messages.getExportedChatInvite.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), link: $[string](/API_docs/types/string.html), \]) === [$messages.ExportedChatInvite](/API_docs/types/messages.ExportedChatInvite.html) + +*** +

+$MadelineProto->[messages->getExportedChatInvites](/API_docs/methods/messages.getExportedChatInvites.html)(\[revoked: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), admin_id: $[InputUser](/API_docs/types/InputUser.html), offset_date: $[int](/API_docs/types/int.html), offset_link: $[string](/API_docs/types/string.html), limit: $[int](/API_docs/types/int.html), \]) === [$messages.ExportedChatInvites](/API_docs/types/messages.ExportedChatInvites.html) + +*** +

+$MadelineProto->[messages->getExtendedMedia](/API_docs/methods/messages.getExtendedMedia.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: \[$[int](/API_docs/types/int.html)\], \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->getFavedStickers](/API_docs/methods/messages.getFavedStickers.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$messages.FavedStickers](/API_docs/types/messages.FavedStickers.html) + +*** +

+$MadelineProto->[messages->getFeaturedEmojiStickers](/API_docs/methods/messages.getFeaturedEmojiStickers.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$messages.FeaturedStickers](/API_docs/types/messages.FeaturedStickers.html) + +*** +

+$MadelineProto->[messages->getFeaturedStickers](/API_docs/methods/messages.getFeaturedStickers.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$messages.FeaturedStickers](/API_docs/types/messages.FeaturedStickers.html) + +*** +

+$MadelineProto->[messages->getFullChat](/API_docs/methods/messages.getFullChat.html)(\[chat_id: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$messages.ChatFull](/API_docs/types/messages.ChatFull.html) + +*** +

+$MadelineProto->[messages->getGameHighScores](/API_docs/methods/messages.getGameHighScores.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: $[int](/API_docs/types/int.html), user_id: $[InputUser](/API_docs/types/InputUser.html), \]) === [$messages.HighScores](/API_docs/types/messages.HighScores.html) + +*** +

+$MadelineProto->[messages->getHistory](/API_docs/methods/messages.getHistory.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), offset_id: $[int](/API_docs/types/int.html), offset_date: $[int](/API_docs/types/int.html), add_offset: $[int](/API_docs/types/int.html), limit: $[int](/API_docs/types/int.html), max_id: $[int](/API_docs/types/int.html), min_id: $[int](/API_docs/types/int.html), hash: $[long](/API_docs/types/long.html), \]) === [$messages.Messages](/API_docs/types/messages.Messages.html) + +*** +

+$MadelineProto->[messages->getInlineBotResults](/API_docs/methods/messages.getInlineBotResults.html)(\[bot: $[InputUser](/API_docs/types/InputUser.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), geo_point: $[InputGeoPoint](/API_docs/types/InputGeoPoint.html), query: $[string](/API_docs/types/string.html), offset: $[string](/API_docs/types/string.html), \]) === [$messages.BotResults](/API_docs/types/messages.BotResults.html) + +*** +

+$MadelineProto->[messages->getInlineGameHighScores](/API_docs/methods/messages.getInlineGameHighScores.html)(\[id: $[InputBotInlineMessageID](/API_docs/types/InputBotInlineMessageID.html), user_id: $[InputUser](/API_docs/types/InputUser.html), \]) === [$messages.HighScores](/API_docs/types/messages.HighScores.html) + +*** +

+$MadelineProto->[messages->getMaskStickers](/API_docs/methods/messages.getMaskStickers.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$messages.AllStickers](/API_docs/types/messages.AllStickers.html) + +*** +

+$MadelineProto->[messages->getMessageEditData](/API_docs/methods/messages.getMessageEditData.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: $[int](/API_docs/types/int.html), \]) === [$messages.MessageEditData](/API_docs/types/messages.MessageEditData.html) + +*** +

+$MadelineProto->[messages->getMessageReactionsList](/API_docs/methods/messages.getMessageReactionsList.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: $[int](/API_docs/types/int.html), reaction: $[Reaction](/API_docs/types/Reaction.html), offset: $[string](/API_docs/types/string.html), limit: $[int](/API_docs/types/int.html), \]) === [$messages.MessageReactionsList](/API_docs/types/messages.MessageReactionsList.html) + +*** +

+$MadelineProto->[messages->getMessageReadParticipants](/API_docs/methods/messages.getMessageReadParticipants.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), msg_id: $[int](/API_docs/types/int.html), \]) === [$Vector\_of\_ReadParticipantDate](/API_docs/types/ReadParticipantDate.html) + +*** +

+$MadelineProto->[messages->getMessages](/API_docs/methods/messages.getMessages.html)(\[id: \[$[InputMessage](/API_docs/types/InputMessage.html)\], \]) === [$messages.Messages](/API_docs/types/messages.Messages.html) + +*** +

+$MadelineProto->[messages->getMessagesReactions](/API_docs/methods/messages.getMessagesReactions.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: \[$[int](/API_docs/types/int.html)\], \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->getMessagesViews](/API_docs/methods/messages.getMessagesViews.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: \[$[int](/API_docs/types/int.html)\], increment: $[Bool](/API_docs/types/Bool.html), \]) === [$messages.MessageViews](/API_docs/types/messages.MessageViews.html) + +*** +

+$MadelineProto->[messages->getMyStickers](/API_docs/methods/messages.getMyStickers.html)(\[offset_id: $[long](/API_docs/types/long.html), limit: $[int](/API_docs/types/int.html), \]) === [$messages.MyStickers](/API_docs/types/messages.MyStickers.html) + +*** +

+$MadelineProto->[messages->getOldFeaturedStickers](/API_docs/methods/messages.getOldFeaturedStickers.html)(\[offset: $[int](/API_docs/types/int.html), limit: $[int](/API_docs/types/int.html), hash: $[long](/API_docs/types/long.html), \]) === [$messages.FeaturedStickers](/API_docs/types/messages.FeaturedStickers.html) + +*** +

+$MadelineProto->[messages->getOnlines](/API_docs/methods/messages.getOnlines.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$ChatOnlines](/API_docs/types/ChatOnlines.html) + +*** +

+$MadelineProto->[messages->getOutboxReadDate](/API_docs/methods/messages.getOutboxReadDate.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), msg_id: $[int](/API_docs/types/int.html), \]) === [$OutboxReadDate](/API_docs/types/OutboxReadDate.html) + +*** +

+$MadelineProto->[messages->getPeerDialogs](/API_docs/methods/messages.getPeerDialogs.html)(\[peers: \[$[InputDialogPeer](/API_docs/types/InputDialogPeer.html)\], \]) === [$messages.PeerDialogs](/API_docs/types/messages.PeerDialogs.html) + +*** +

+$MadelineProto->[messages->getPeerSettings](/API_docs/methods/messages.getPeerSettings.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$messages.PeerSettings](/API_docs/types/messages.PeerSettings.html) + +*** +

+$MadelineProto->[messages->getPinnedDialogs](/API_docs/methods/messages.getPinnedDialogs.html)(\[folder_id: $[int](/API_docs/types/int.html), \]) === [$messages.PeerDialogs](/API_docs/types/messages.PeerDialogs.html) + +*** +

+$MadelineProto->[messages->getPinnedSavedDialogs](/API_docs/methods/messages.getPinnedSavedDialogs.html)(\[\]) === [$messages.SavedDialogs](/API_docs/types/messages.SavedDialogs.html) + +*** +

+$MadelineProto->[messages->getPollResults](/API_docs/methods/messages.getPollResults.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), msg_id: $[int](/API_docs/types/int.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->getPollVotes](/API_docs/methods/messages.getPollVotes.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: $[int](/API_docs/types/int.html), option: $[bytes](/API_docs/types/bytes.html), offset: $[string](/API_docs/types/string.html), limit: $[int](/API_docs/types/int.html), \]) === [$messages.VotesList](/API_docs/types/messages.VotesList.html) + +*** +

+$MadelineProto->[messages->getQuickReplies](/API_docs/methods/messages.getQuickReplies.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$messages.QuickReplies](/API_docs/types/messages.QuickReplies.html) + +*** +

+$MadelineProto->[messages->getQuickReplyMessages](/API_docs/methods/messages.getQuickReplyMessages.html)(\[shortcut_id: $[int](/API_docs/types/int.html), id: \[$[int](/API_docs/types/int.html)\], hash: $[long](/API_docs/types/long.html), \]) === [$messages.Messages](/API_docs/types/messages.Messages.html) + +*** +

+$MadelineProto->[messages->getRecentLocations](/API_docs/methods/messages.getRecentLocations.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), limit: $[int](/API_docs/types/int.html), hash: $[long](/API_docs/types/long.html), \]) === [$messages.Messages](/API_docs/types/messages.Messages.html) + +*** +

+$MadelineProto->[messages->getRecentReactions](/API_docs/methods/messages.getRecentReactions.html)(\[limit: $[int](/API_docs/types/int.html), hash: $[long](/API_docs/types/long.html), \]) === [$messages.Reactions](/API_docs/types/messages.Reactions.html) + +*** +

+$MadelineProto->[messages->getRecentStickers](/API_docs/methods/messages.getRecentStickers.html)(\[attached: $[Bool](/API_docs/types/Bool.html), hash: $[long](/API_docs/types/long.html), \]) === [$messages.RecentStickers](/API_docs/types/messages.RecentStickers.html) + +*** +

+$MadelineProto->[messages->getReplies](/API_docs/methods/messages.getReplies.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), msg_id: $[int](/API_docs/types/int.html), offset_id: $[int](/API_docs/types/int.html), offset_date: $[int](/API_docs/types/int.html), add_offset: $[int](/API_docs/types/int.html), limit: $[int](/API_docs/types/int.html), max_id: $[int](/API_docs/types/int.html), min_id: $[int](/API_docs/types/int.html), hash: $[long](/API_docs/types/long.html), \]) === [$messages.Messages](/API_docs/types/messages.Messages.html) + +*** +

+$MadelineProto->[messages->getSavedDialogs](/API_docs/methods/messages.getSavedDialogs.html)(\[exclude_pinned: $[Bool](/API_docs/types/Bool.html), offset_date: $[int](/API_docs/types/int.html), offset_id: $[int](/API_docs/types/int.html), offset_peer: $[InputPeer](/API_docs/types/InputPeer.html), limit: $[int](/API_docs/types/int.html), hash: $[long](/API_docs/types/long.html), \]) === [$messages.SavedDialogs](/API_docs/types/messages.SavedDialogs.html) + +*** +

+$MadelineProto->[messages->getSavedGifs](/API_docs/methods/messages.getSavedGifs.html)(\[hash: $[long](/API_docs/types/long.html), \]) === [$messages.SavedGifs](/API_docs/types/messages.SavedGifs.html) + +*** +

+$MadelineProto->[messages->getSavedHistory](/API_docs/methods/messages.getSavedHistory.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), offset_id: $[int](/API_docs/types/int.html), offset_date: $[int](/API_docs/types/int.html), add_offset: $[int](/API_docs/types/int.html), limit: $[int](/API_docs/types/int.html), max_id: $[int](/API_docs/types/int.html), min_id: $[int](/API_docs/types/int.html), hash: $[long](/API_docs/types/long.html), \]) === [$messages.Messages](/API_docs/types/messages.Messages.html) + +*** +

+$MadelineProto->[messages->getSavedReactionTags](/API_docs/methods/messages.getSavedReactionTags.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), hash: $[long](/API_docs/types/long.html), \]) === [$messages.SavedReactionTags](/API_docs/types/messages.SavedReactionTags.html) + +*** +

+$MadelineProto->[messages->getScheduledHistory](/API_docs/methods/messages.getScheduledHistory.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), hash: $[long](/API_docs/types/long.html), \]) === [$messages.Messages](/API_docs/types/messages.Messages.html) + +*** +

+$MadelineProto->[messages->getScheduledMessages](/API_docs/methods/messages.getScheduledMessages.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: \[$[int](/API_docs/types/int.html)\], \]) === [$messages.Messages](/API_docs/types/messages.Messages.html) + +*** +

+$MadelineProto->[messages->getSearchCounters](/API_docs/methods/messages.getSearchCounters.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), saved_peer_id: $[InputPeer](/API_docs/types/InputPeer.html), top_msg_id: $[int](/API_docs/types/int.html), filters: \[$[MessagesFilter](/API_docs/types/MessagesFilter.html)\], \]) === [$Vector\_of\_messages.SearchCounter](/API_docs/types/messages.SearchCounter.html) + +*** +

+$MadelineProto->[messages->getSearchResultsCalendar](/API_docs/methods/messages.getSearchResultsCalendar.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), saved_peer_id: $[InputPeer](/API_docs/types/InputPeer.html), filter: $[MessagesFilter](/API_docs/types/MessagesFilter.html), offset_id: $[int](/API_docs/types/int.html), offset_date: $[int](/API_docs/types/int.html), \]) === [$messages.SearchResultsCalendar](/API_docs/types/messages.SearchResultsCalendar.html) + +*** +

+$MadelineProto->[messages->getSearchResultsPositions](/API_docs/methods/messages.getSearchResultsPositions.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), saved_peer_id: $[InputPeer](/API_docs/types/InputPeer.html), filter: $[MessagesFilter](/API_docs/types/MessagesFilter.html), offset_id: $[int](/API_docs/types/int.html), limit: $[int](/API_docs/types/int.html), \]) === [$messages.SearchResultsPositions](/API_docs/types/messages.SearchResultsPositions.html) + +*** +

+$MadelineProto->[messages->getSplitRanges](/API_docs/methods/messages.getSplitRanges.html)(\[\]) === [$Vector\_of\_MessageRange](/API_docs/types/MessageRange.html) + +*** +

+$MadelineProto->[messages->getStickerSet](/API_docs/methods/messages.getStickerSet.html)(\[stickerset: $[InputStickerSet](/API_docs/types/InputStickerSet.html), hash: $[int](/API_docs/types/int.html), \]) === [$messages.StickerSet](/API_docs/types/messages.StickerSet.html) + +*** +

+$MadelineProto->[messages->getStickers](/API_docs/methods/messages.getStickers.html)(\[emoticon: $[string](/API_docs/types/string.html), hash: $[long](/API_docs/types/long.html), \]) === [$messages.Stickers](/API_docs/types/messages.Stickers.html) + +*** +

+$MadelineProto->[messages->getSuggestedDialogFilters](/API_docs/methods/messages.getSuggestedDialogFilters.html)(\[\]) === [$Vector\_of\_DialogFilterSuggested](/API_docs/types/DialogFilterSuggested.html) + +*** +

+$MadelineProto->[messages->getTopReactions](/API_docs/methods/messages.getTopReactions.html)(\[limit: $[int](/API_docs/types/int.html), hash: $[long](/API_docs/types/long.html), \]) === [$messages.Reactions](/API_docs/types/messages.Reactions.html) + +*** +

+$MadelineProto->[messages->getUnreadMentions](/API_docs/methods/messages.getUnreadMentions.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), top_msg_id: $[int](/API_docs/types/int.html), offset_id: $[int](/API_docs/types/int.html), add_offset: $[int](/API_docs/types/int.html), limit: $[int](/API_docs/types/int.html), max_id: $[int](/API_docs/types/int.html), min_id: $[int](/API_docs/types/int.html), \]) === [$messages.Messages](/API_docs/types/messages.Messages.html) + +*** +

+$MadelineProto->[messages->getUnreadReactions](/API_docs/methods/messages.getUnreadReactions.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), top_msg_id: $[int](/API_docs/types/int.html), offset_id: $[int](/API_docs/types/int.html), add_offset: $[int](/API_docs/types/int.html), limit: $[int](/API_docs/types/int.html), max_id: $[int](/API_docs/types/int.html), min_id: $[int](/API_docs/types/int.html), \]) === [$messages.Messages](/API_docs/types/messages.Messages.html) + +*** +

+$MadelineProto->[messages->getWebPage](/API_docs/methods/messages.getWebPage.html)(\[url: $[string](/API_docs/types/string.html), hash: $[int](/API_docs/types/int.html), \]) === [$messages.WebPage](/API_docs/types/messages.WebPage.html) + +*** +

+$MadelineProto->[messages->getWebPagePreview](/API_docs/methods/messages.getWebPagePreview.html)(\[message: $[string](/API_docs/types/string.html), entities: \[$[MessageEntity](/API_docs/types/MessageEntity.html)\], \]) === [$MessageMedia](/API_docs/types/MessageMedia.html) + +*** +

+$MadelineProto->[messages->hideAllChatJoinRequests](/API_docs/methods/messages.hideAllChatJoinRequests.html)(\[approved: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), link: $[string](/API_docs/types/string.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->hideChatJoinRequest](/API_docs/methods/messages.hideChatJoinRequest.html)(\[approved: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), user_id: $[InputUser](/API_docs/types/InputUser.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->hidePeerSettingsBar](/API_docs/methods/messages.hidePeerSettingsBar.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->importChatInvite](/API_docs/methods/messages.importChatInvite.html)(\[hash: $[string](/API_docs/types/string.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->initHistoryImport](/API_docs/methods/messages.initHistoryImport.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), file: $[InputFile](/API_docs/types/InputFile.html), media_count: $[int](/API_docs/types/int.html), \]) === [$messages.HistoryImport](/API_docs/types/messages.HistoryImport.html) + +*** +

+$MadelineProto->[messages->installStickerSet](/API_docs/methods/messages.installStickerSet.html)(\[stickerset: $[InputStickerSet](/API_docs/types/InputStickerSet.html), archived: $[Bool](/API_docs/types/Bool.html), \]) === [$messages.StickerSetInstallResult](/API_docs/types/messages.StickerSetInstallResult.html) + +*** +

+$MadelineProto->[messages->markDialogUnread](/API_docs/methods/messages.markDialogUnread.html)(\[unread: $[Bool](/API_docs/types/Bool.html), peer: $[InputDialogPeer](/API_docs/types/InputDialogPeer.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->migrateChat](/API_docs/methods/messages.migrateChat.html)(\[chat_id: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->prolongWebView](/API_docs/methods/messages.prolongWebView.html)(\[silent: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), bot: $[InputUser](/API_docs/types/InputUser.html), query_id: $[long](/API_docs/types/long.html), reply_to: $[InputReplyTo](/API_docs/types/InputReplyTo.html), send_as: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->rateTranscribedAudio](/API_docs/methods/messages.rateTranscribedAudio.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), msg_id: $[int](/API_docs/types/int.html), transcription_id: $[long](/API_docs/types/long.html), good: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->readDiscussion](/API_docs/methods/messages.readDiscussion.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), msg_id: $[int](/API_docs/types/int.html), read_max_id: $[int](/API_docs/types/int.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->readEncryptedHistory](/API_docs/methods/messages.readEncryptedHistory.html)(\[peer: $[InputEncryptedChat](/API_docs/types/InputEncryptedChat.html), max_date: $[int](/API_docs/types/int.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->readFeaturedStickers](/API_docs/methods/messages.readFeaturedStickers.html)(\[id: \[$[long](/API_docs/types/long.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->readHistory](/API_docs/methods/messages.readHistory.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), max_id: $[int](/API_docs/types/int.html), \]) === [$messages.AffectedMessages](/API_docs/types/messages.AffectedMessages.html) + +*** +

+$MadelineProto->[messages->readMentions](/API_docs/methods/messages.readMentions.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), top_msg_id: $[int](/API_docs/types/int.html), \]) === [$messages.AffectedHistory](/API_docs/types/messages.AffectedHistory.html) + +*** +

+$MadelineProto->[messages->readMessageContents](/API_docs/methods/messages.readMessageContents.html)(\[id: \[$[int](/API_docs/types/int.html)\], \]) === [$messages.AffectedMessages](/API_docs/types/messages.AffectedMessages.html) + +*** +

+$MadelineProto->[messages->readReactions](/API_docs/methods/messages.readReactions.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), top_msg_id: $[int](/API_docs/types/int.html), \]) === [$messages.AffectedHistory](/API_docs/types/messages.AffectedHistory.html) + +*** +

+$MadelineProto->[messages->receivedMessages](/API_docs/methods/messages.receivedMessages.html)(\[max_id: $[int](/API_docs/types/int.html), \]) === [$Vector\_of\_ReceivedNotifyMessage](/API_docs/types/ReceivedNotifyMessage.html) + +*** +

+$MadelineProto->[messages->receivedQueue](/API_docs/methods/messages.receivedQueue.html)(\[max_qts: $[int](/API_docs/types/int.html), \]) === [$Vector\_of\_long](/API_docs/types/long.html) + +*** +

+$MadelineProto->[messages->reorderPinnedDialogs](/API_docs/methods/messages.reorderPinnedDialogs.html)(\[force: $[Bool](/API_docs/types/Bool.html), folder_id: $[int](/API_docs/types/int.html), order: \[$[InputDialogPeer](/API_docs/types/InputDialogPeer.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->reorderPinnedSavedDialogs](/API_docs/methods/messages.reorderPinnedSavedDialogs.html)(\[force: $[Bool](/API_docs/types/Bool.html), order: \[$[InputDialogPeer](/API_docs/types/InputDialogPeer.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->reorderQuickReplies](/API_docs/methods/messages.reorderQuickReplies.html)(\[order: \[$[int](/API_docs/types/int.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->reorderStickerSets](/API_docs/methods/messages.reorderStickerSets.html)(\[masks: $[Bool](/API_docs/types/Bool.html), emojis: $[Bool](/API_docs/types/Bool.html), order: \[$[long](/API_docs/types/long.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->report](/API_docs/methods/messages.report.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: \[$[int](/API_docs/types/int.html)\], reason: $[ReportReason](/API_docs/types/ReportReason.html), message: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->reportEncryptedSpam](/API_docs/methods/messages.reportEncryptedSpam.html)(\[peer: $[InputEncryptedChat](/API_docs/types/InputEncryptedChat.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->reportReaction](/API_docs/methods/messages.reportReaction.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: $[int](/API_docs/types/int.html), reaction_peer: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->reportSpam](/API_docs/methods/messages.reportSpam.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->requestAppWebView](/API_docs/methods/messages.requestAppWebView.html)(\[write_allowed: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), app: $[InputBotApp](/API_docs/types/InputBotApp.html), start_param: $[string](/API_docs/types/string.html), theme_params: $[DataJSON](/API_docs/types/DataJSON.html), platform: $[string](/API_docs/types/string.html), \]) === [$AppWebViewResult](/API_docs/types/AppWebViewResult.html) + +*** +

+$MadelineProto->[messages->requestEncryption](/API_docs/methods/messages.requestEncryption.html)(\[user_id: $[InputUser](/API_docs/types/InputUser.html), g_a: $[bytes](/API_docs/types/bytes.html), \]) === [$EncryptedChat](/API_docs/types/EncryptedChat.html) + +*** +

+$MadelineProto->[messages->requestSimpleWebView](/API_docs/methods/messages.requestSimpleWebView.html)(\[from_switch_webview: $[Bool](/API_docs/types/Bool.html), from_side_menu: $[Bool](/API_docs/types/Bool.html), bot: $[InputUser](/API_docs/types/InputUser.html), url: $[string](/API_docs/types/string.html), start_param: $[string](/API_docs/types/string.html), theme_params: $[DataJSON](/API_docs/types/DataJSON.html), platform: $[string](/API_docs/types/string.html), \]) === [$SimpleWebViewResult](/API_docs/types/SimpleWebViewResult.html) + +*** +

+$MadelineProto->[messages->requestUrlAuth](/API_docs/methods/messages.requestUrlAuth.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), msg_id: $[int](/API_docs/types/int.html), button_id: $[int](/API_docs/types/int.html), url: $[string](/API_docs/types/string.html), \]) === [$UrlAuthResult](/API_docs/types/UrlAuthResult.html) + +*** +

+$MadelineProto->[messages->requestWebView](/API_docs/methods/messages.requestWebView.html)(\[from_bot_menu: $[Bool](/API_docs/types/Bool.html), silent: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), bot: $[InputUser](/API_docs/types/InputUser.html), url: $[string](/API_docs/types/string.html), start_param: $[string](/API_docs/types/string.html), theme_params: $[DataJSON](/API_docs/types/DataJSON.html), platform: $[string](/API_docs/types/string.html), reply_to: $[InputReplyTo](/API_docs/types/InputReplyTo.html), send_as: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$WebViewResult](/API_docs/types/WebViewResult.html) + +*** +

+$MadelineProto->[messages->saveDefaultSendAs](/API_docs/methods/messages.saveDefaultSendAs.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), send_as: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->saveDraft](/API_docs/methods/messages.saveDraft.html)(\[no_webpage: $[Bool](/API_docs/types/Bool.html), invert_media: $[Bool](/API_docs/types/Bool.html), reply_to: $[InputReplyTo](/API_docs/types/InputReplyTo.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), message: $[string](/API_docs/types/string.html), entities: \[$[MessageEntity](/API_docs/types/MessageEntity.html)\], media: $[InputMedia](/API_docs/types/InputMedia.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->saveGif](/API_docs/methods/messages.saveGif.html)(\[id: $[InputDocument](/API_docs/types/InputDocument.html), unsave: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->saveRecentSticker](/API_docs/methods/messages.saveRecentSticker.html)(\[attached: $[Bool](/API_docs/types/Bool.html), id: $[InputDocument](/API_docs/types/InputDocument.html), unsave: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->search](/API_docs/methods/messages.search.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), q: $[string](/API_docs/types/string.html), from_id: $[InputPeer](/API_docs/types/InputPeer.html), saved_peer_id: $[InputPeer](/API_docs/types/InputPeer.html), saved_reaction: \[$[Reaction](/API_docs/types/Reaction.html)\], top_msg_id: $[int](/API_docs/types/int.html), filter: $[MessagesFilter](/API_docs/types/MessagesFilter.html), min_date: $[int](/API_docs/types/int.html), max_date: $[int](/API_docs/types/int.html), offset_id: $[int](/API_docs/types/int.html), add_offset: $[int](/API_docs/types/int.html), limit: $[int](/API_docs/types/int.html), max_id: $[int](/API_docs/types/int.html), min_id: $[int](/API_docs/types/int.html), hash: $[long](/API_docs/types/long.html), \]) === [$messages.Messages](/API_docs/types/messages.Messages.html) + +*** +

+$MadelineProto->[messages->searchCustomEmoji](/API_docs/methods/messages.searchCustomEmoji.html)(\[emoticon: $[string](/API_docs/types/string.html), hash: $[long](/API_docs/types/long.html), \]) === [$EmojiList](/API_docs/types/EmojiList.html) + +*** +

+$MadelineProto->[messages->searchEmojiStickerSets](/API_docs/methods/messages.searchEmojiStickerSets.html)(\[exclude_featured: $[Bool](/API_docs/types/Bool.html), q: $[string](/API_docs/types/string.html), hash: $[long](/API_docs/types/long.html), \]) === [$messages.FoundStickerSets](/API_docs/types/messages.FoundStickerSets.html) + +*** +

+$MadelineProto->[messages->searchGlobal](/API_docs/methods/messages.searchGlobal.html)(\[broadcasts_only: $[Bool](/API_docs/types/Bool.html), folder_id: $[int](/API_docs/types/int.html), q: $[string](/API_docs/types/string.html), filter: $[MessagesFilter](/API_docs/types/MessagesFilter.html), min_date: $[int](/API_docs/types/int.html), max_date: $[int](/API_docs/types/int.html), offset_rate: $[int](/API_docs/types/int.html), offset_peer: $[InputPeer](/API_docs/types/InputPeer.html), offset_id: $[int](/API_docs/types/int.html), limit: $[int](/API_docs/types/int.html), \]) === [$messages.Messages](/API_docs/types/messages.Messages.html) + +*** +

+$MadelineProto->[messages->searchSentMedia](/API_docs/methods/messages.searchSentMedia.html)(\[q: $[string](/API_docs/types/string.html), filter: $[MessagesFilter](/API_docs/types/MessagesFilter.html), limit: $[int](/API_docs/types/int.html), \]) === [$messages.Messages](/API_docs/types/messages.Messages.html) + +*** +

+$MadelineProto->[messages->searchStickerSets](/API_docs/methods/messages.searchStickerSets.html)(\[exclude_featured: $[Bool](/API_docs/types/Bool.html), q: $[string](/API_docs/types/string.html), hash: $[long](/API_docs/types/long.html), \]) === [$messages.FoundStickerSets](/API_docs/types/messages.FoundStickerSets.html) + +*** +

+$MadelineProto->[messages->sendBotRequestedPeer](/API_docs/methods/messages.sendBotRequestedPeer.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), msg_id: $[int](/API_docs/types/int.html), button_id: $[int](/API_docs/types/int.html), requested_peers: \[$[InputPeer](/API_docs/types/InputPeer.html)\], \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->sendEncrypted](/API_docs/methods/messages.sendEncrypted.html)(\[silent: $[Bool](/API_docs/types/Bool.html), peer: $[InputEncryptedChat](/API_docs/types/InputEncryptedChat.html), data: $[bytes](/API_docs/types/bytes.html), \]) === [$messages.SentEncryptedMessage](/API_docs/types/messages.SentEncryptedMessage.html) + +*** +

+$MadelineProto->[messages->sendEncryptedFile](/API_docs/methods/messages.sendEncryptedFile.html)(\[silent: $[Bool](/API_docs/types/Bool.html), peer: $[InputEncryptedChat](/API_docs/types/InputEncryptedChat.html), data: $[bytes](/API_docs/types/bytes.html), file: $[InputEncryptedFile](/API_docs/types/InputEncryptedFile.html), \]) === [$messages.SentEncryptedMessage](/API_docs/types/messages.SentEncryptedMessage.html) + +*** +

+$MadelineProto->[messages->sendEncryptedService](/API_docs/methods/messages.sendEncryptedService.html)(\[peer: $[InputEncryptedChat](/API_docs/types/InputEncryptedChat.html), data: $[bytes](/API_docs/types/bytes.html), \]) === [$messages.SentEncryptedMessage](/API_docs/types/messages.SentEncryptedMessage.html) + +*** +

+$MadelineProto->[messages->sendInlineBotResult](/API_docs/methods/messages.sendInlineBotResult.html)(\[silent: $[Bool](/API_docs/types/Bool.html), background: $[Bool](/API_docs/types/Bool.html), clear_draft: $[Bool](/API_docs/types/Bool.html), hide_via: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), reply_to: $[InputReplyTo](/API_docs/types/InputReplyTo.html), query_id: $[long](/API_docs/types/long.html), id: $[string](/API_docs/types/string.html), schedule_date: $[int](/API_docs/types/int.html), send_as: $[InputPeer](/API_docs/types/InputPeer.html), quick_reply_shortcut: $[InputQuickReplyShortcut](/API_docs/types/InputQuickReplyShortcut.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->sendMedia](/API_docs/methods/messages.sendMedia.html)(\[silent: $[Bool](/API_docs/types/Bool.html), background: $[Bool](/API_docs/types/Bool.html), clear_draft: $[Bool](/API_docs/types/Bool.html), noforwards: $[Bool](/API_docs/types/Bool.html), update_stickersets_order: $[Bool](/API_docs/types/Bool.html), invert_media: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), reply_to: $[InputReplyTo](/API_docs/types/InputReplyTo.html), media: $[InputMedia](/API_docs/types/InputMedia.html), message: $[string](/API_docs/types/string.html), reply_markup: $[ReplyMarkup](/API_docs/types/ReplyMarkup.html), entities: \[$[MessageEntity](/API_docs/types/MessageEntity.html)\], schedule_date: $[int](/API_docs/types/int.html), send_as: $[InputPeer](/API_docs/types/InputPeer.html), quick_reply_shortcut: $[InputQuickReplyShortcut](/API_docs/types/InputQuickReplyShortcut.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->sendMessage](/API_docs/methods/messages.sendMessage.html)(\[no_webpage: $[Bool](/API_docs/types/Bool.html), silent: $[Bool](/API_docs/types/Bool.html), background: $[Bool](/API_docs/types/Bool.html), clear_draft: $[Bool](/API_docs/types/Bool.html), noforwards: $[Bool](/API_docs/types/Bool.html), update_stickersets_order: $[Bool](/API_docs/types/Bool.html), invert_media: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), reply_to: $[InputReplyTo](/API_docs/types/InputReplyTo.html), message: $[string](/API_docs/types/string.html), reply_markup: $[ReplyMarkup](/API_docs/types/ReplyMarkup.html), entities: \[$[MessageEntity](/API_docs/types/MessageEntity.html)\], schedule_date: $[int](/API_docs/types/int.html), send_as: $[InputPeer](/API_docs/types/InputPeer.html), quick_reply_shortcut: $[InputQuickReplyShortcut](/API_docs/types/InputQuickReplyShortcut.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->sendMultiMedia](/API_docs/methods/messages.sendMultiMedia.html)(\[silent: $[Bool](/API_docs/types/Bool.html), background: $[Bool](/API_docs/types/Bool.html), clear_draft: $[Bool](/API_docs/types/Bool.html), noforwards: $[Bool](/API_docs/types/Bool.html), update_stickersets_order: $[Bool](/API_docs/types/Bool.html), invert_media: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), reply_to: $[InputReplyTo](/API_docs/types/InputReplyTo.html), multi_media: \[$[InputSingleMedia](/API_docs/types/InputSingleMedia.html)\], schedule_date: $[int](/API_docs/types/int.html), send_as: $[InputPeer](/API_docs/types/InputPeer.html), quick_reply_shortcut: $[InputQuickReplyShortcut](/API_docs/types/InputQuickReplyShortcut.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->sendQuickReplyMessages](/API_docs/methods/messages.sendQuickReplyMessages.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), shortcut_id: $[int](/API_docs/types/int.html), id: \[$[int](/API_docs/types/int.html)\], \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->sendReaction](/API_docs/methods/messages.sendReaction.html)(\[big: $[Bool](/API_docs/types/Bool.html), add_to_recent: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), msg_id: $[int](/API_docs/types/int.html), reaction: \[$[Reaction](/API_docs/types/Reaction.html)\], \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->sendScheduledMessages](/API_docs/methods/messages.sendScheduledMessages.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: \[$[int](/API_docs/types/int.html)\], \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->sendScreenshotNotification](/API_docs/methods/messages.sendScreenshotNotification.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), reply_to: $[InputReplyTo](/API_docs/types/InputReplyTo.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->sendVote](/API_docs/methods/messages.sendVote.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), msg_id: $[int](/API_docs/types/int.html), options: \[$[bytes](/API_docs/types/bytes.html)\], \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->sendWebViewData](/API_docs/methods/messages.sendWebViewData.html)(\[bot: $[InputUser](/API_docs/types/InputUser.html), button_text: $[string](/API_docs/types/string.html), data: $[string](/API_docs/types/string.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->sendWebViewResultMessage](/API_docs/methods/messages.sendWebViewResultMessage.html)(\[bot_query_id: $[string](/API_docs/types/string.html), result: $[InputBotInlineResult](/API_docs/types/InputBotInlineResult.html), \]) === [$WebViewMessageSent](/API_docs/types/WebViewMessageSent.html) + +*** +

+$MadelineProto->[messages->setBotCallbackAnswer](/API_docs/methods/messages.setBotCallbackAnswer.html)(\[alert: $[Bool](/API_docs/types/Bool.html), query_id: $[long](/API_docs/types/long.html), message: $[string](/API_docs/types/string.html), url: $[string](/API_docs/types/string.html), cache_time: $[int](/API_docs/types/int.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->setBotPrecheckoutResults](/API_docs/methods/messages.setBotPrecheckoutResults.html)(\[success: $[Bool](/API_docs/types/Bool.html), query_id: $[long](/API_docs/types/long.html), error: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->setBotShippingResults](/API_docs/methods/messages.setBotShippingResults.html)(\[query_id: $[long](/API_docs/types/long.html), error: $[string](/API_docs/types/string.html), shipping_options: \[$[ShippingOption](/API_docs/types/ShippingOption.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->setChatAvailableReactions](/API_docs/methods/messages.setChatAvailableReactions.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), available_reactions: $[ChatReactions](/API_docs/types/ChatReactions.html), reactions_limit: $[int](/API_docs/types/int.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->setChatTheme](/API_docs/methods/messages.setChatTheme.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), emoticon: $[string](/API_docs/types/string.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->setChatWallPaper](/API_docs/methods/messages.setChatWallPaper.html)(\[for_both: $[Bool](/API_docs/types/Bool.html), revert: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), wallpaper: $[InputWallPaper](/API_docs/types/InputWallPaper.html), settings: $[WallPaperSettings](/API_docs/types/WallPaperSettings.html), id: $[int](/API_docs/types/int.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->setDefaultHistoryTTL](/API_docs/methods/messages.setDefaultHistoryTTL.html)(\[period: $[int](/API_docs/types/int.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->setDefaultReaction](/API_docs/methods/messages.setDefaultReaction.html)(\[reaction: $[Reaction](/API_docs/types/Reaction.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->setEncryptedTyping](/API_docs/methods/messages.setEncryptedTyping.html)(\[peer: $[InputEncryptedChat](/API_docs/types/InputEncryptedChat.html), typing: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->setGameScore](/API_docs/methods/messages.setGameScore.html)(\[edit_message: $[Bool](/API_docs/types/Bool.html), force: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), id: $[int](/API_docs/types/int.html), user_id: $[InputUser](/API_docs/types/InputUser.html), score: $[int](/API_docs/types/int.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->setHistoryTTL](/API_docs/methods/messages.setHistoryTTL.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), period: $[int](/API_docs/types/int.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->setInlineBotResults](/API_docs/methods/messages.setInlineBotResults.html)(\[gallery: $[Bool](/API_docs/types/Bool.html), private: $[Bool](/API_docs/types/Bool.html), query_id: $[long](/API_docs/types/long.html), results: \[$[InputBotInlineResult](/API_docs/types/InputBotInlineResult.html)\], cache_time: $[int](/API_docs/types/int.html), next_offset: $[string](/API_docs/types/string.html), switch_pm: $[InlineBotSwitchPM](/API_docs/types/InlineBotSwitchPM.html), switch_webview: $[InlineBotWebView](/API_docs/types/InlineBotWebView.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->setInlineGameScore](/API_docs/methods/messages.setInlineGameScore.html)(\[edit_message: $[Bool](/API_docs/types/Bool.html), force: $[Bool](/API_docs/types/Bool.html), id: $[InputBotInlineMessageID](/API_docs/types/InputBotInlineMessageID.html), user_id: $[InputUser](/API_docs/types/InputUser.html), score: $[int](/API_docs/types/int.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->setTyping](/API_docs/methods/messages.setTyping.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), top_msg_id: $[int](/API_docs/types/int.html), action: $[SendMessageAction](/API_docs/types/SendMessageAction.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->startBot](/API_docs/methods/messages.startBot.html)(\[bot: $[InputUser](/API_docs/types/InputUser.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), start_param: $[string](/API_docs/types/string.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->startHistoryImport](/API_docs/methods/messages.startHistoryImport.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), import_id: $[long](/API_docs/types/long.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->toggleBotInAttachMenu](/API_docs/methods/messages.toggleBotInAttachMenu.html)(\[write_allowed: $[Bool](/API_docs/types/Bool.html), bot: $[InputUser](/API_docs/types/InputUser.html), enabled: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->toggleDialogFilterTags](/API_docs/methods/messages.toggleDialogFilterTags.html)(\[enabled: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->toggleDialogPin](/API_docs/methods/messages.toggleDialogPin.html)(\[pinned: $[Bool](/API_docs/types/Bool.html), peer: $[InputDialogPeer](/API_docs/types/InputDialogPeer.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->toggleNoForwards](/API_docs/methods/messages.toggleNoForwards.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), enabled: $[Bool](/API_docs/types/Bool.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->togglePeerTranslations](/API_docs/methods/messages.togglePeerTranslations.html)(\[disabled: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->toggleSavedDialogPin](/API_docs/methods/messages.toggleSavedDialogPin.html)(\[pinned: $[Bool](/API_docs/types/Bool.html), peer: $[InputDialogPeer](/API_docs/types/InputDialogPeer.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->toggleStickerSets](/API_docs/methods/messages.toggleStickerSets.html)(\[uninstall: $[Bool](/API_docs/types/Bool.html), archive: $[Bool](/API_docs/types/Bool.html), unarchive: $[Bool](/API_docs/types/Bool.html), stickersets: \[$[InputStickerSet](/API_docs/types/InputStickerSet.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->transcribeAudio](/API_docs/methods/messages.transcribeAudio.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), msg_id: $[int](/API_docs/types/int.html), \]) === [$messages.TranscribedAudio](/API_docs/types/messages.TranscribedAudio.html) + +*** +

+$MadelineProto->[messages->translateText](/API_docs/methods/messages.translateText.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: \[$[int](/API_docs/types/int.html)\], text: \[$[TextWithEntities](/API_docs/types/TextWithEntities.html)\], to_lang: $[string](/API_docs/types/string.html), \]) === [$messages.TranslatedText](/API_docs/types/messages.TranslatedText.html) + +*** +

+$MadelineProto->[messages->uninstallStickerSet](/API_docs/methods/messages.uninstallStickerSet.html)(\[stickerset: $[InputStickerSet](/API_docs/types/InputStickerSet.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->unpinAllMessages](/API_docs/methods/messages.unpinAllMessages.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), top_msg_id: $[int](/API_docs/types/int.html), \]) === [$messages.AffectedHistory](/API_docs/types/messages.AffectedHistory.html) + +*** +

+$MadelineProto->[messages->updateDialogFilter](/API_docs/methods/messages.updateDialogFilter.html)(\[id: $[int](/API_docs/types/int.html), filter: $[DialogFilter](/API_docs/types/DialogFilter.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->updateDialogFiltersOrder](/API_docs/methods/messages.updateDialogFiltersOrder.html)(\[order: \[$[int](/API_docs/types/int.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->updatePinnedMessage](/API_docs/methods/messages.updatePinnedMessage.html)(\[silent: $[Bool](/API_docs/types/Bool.html), unpin: $[Bool](/API_docs/types/Bool.html), pm_oneside: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), id: $[int](/API_docs/types/int.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[messages->updateSavedReactionTag](/API_docs/methods/messages.updateSavedReactionTag.html)(\[reaction: $[Reaction](/API_docs/types/Reaction.html), title: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[messages->uploadEncryptedFile](/API_docs/methods/messages.uploadEncryptedFile.html)(\[peer: $[InputEncryptedChat](/API_docs/types/InputEncryptedChat.html), file: $[InputEncryptedFile](/API_docs/types/InputEncryptedFile.html), \]) === [$EncryptedFile](/API_docs/types/EncryptedFile.html) + +*** +

+$MadelineProto->[messages->uploadImportedMedia](/API_docs/methods/messages.uploadImportedMedia.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), import_id: $[long](/API_docs/types/long.html), file_name: $[string](/API_docs/types/string.html), media: $[InputMedia](/API_docs/types/InputMedia.html), \]) === [$MessageMedia](/API_docs/types/MessageMedia.html) + +*** +

+$MadelineProto->[messages->uploadMedia](/API_docs/methods/messages.uploadMedia.html)(\[business_connection_id: $[string](/API_docs/types/string.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), media: $[InputMedia](/API_docs/types/InputMedia.html), \]) === [$MessageMedia](/API_docs/types/MessageMedia.html) + +*** +

+$MadelineProto->[payments->applyGiftCode](/API_docs/methods/payments.applyGiftCode.html)(\[slug: $[string](/API_docs/types/string.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[payments->assignAppStoreTransaction](/API_docs/methods/payments.assignAppStoreTransaction.html)(\[receipt: $[bytes](/API_docs/types/bytes.html), purpose: $[InputStorePaymentPurpose](/API_docs/types/InputStorePaymentPurpose.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[payments->assignPlayMarketTransaction](/API_docs/methods/payments.assignPlayMarketTransaction.html)(\[receipt: $[DataJSON](/API_docs/types/DataJSON.html), purpose: $[InputStorePaymentPurpose](/API_docs/types/InputStorePaymentPurpose.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[payments->canPurchasePremium](/API_docs/methods/payments.canPurchasePremium.html)(\[purpose: $[InputStorePaymentPurpose](/API_docs/types/InputStorePaymentPurpose.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[payments->checkGiftCode](/API_docs/methods/payments.checkGiftCode.html)(\[slug: $[string](/API_docs/types/string.html), \]) === [$payments.CheckedGiftCode](/API_docs/types/payments.CheckedGiftCode.html) + +*** +

+$MadelineProto->[payments->clearSavedInfo](/API_docs/methods/payments.clearSavedInfo.html)(\[credentials: $[Bool](/API_docs/types/Bool.html), info: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[payments->exportInvoice](/API_docs/methods/payments.exportInvoice.html)(\[invoice_media: $[InputMedia](/API_docs/types/InputMedia.html), \]) === [$payments.ExportedInvoice](/API_docs/types/payments.ExportedInvoice.html) + +*** +

+$MadelineProto->[payments->getBankCardData](/API_docs/methods/payments.getBankCardData.html)(\[number: $[string](/API_docs/types/string.html), \]) === [$payments.BankCardData](/API_docs/types/payments.BankCardData.html) + +*** +

+$MadelineProto->[payments->getGiveawayInfo](/API_docs/methods/payments.getGiveawayInfo.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), msg_id: $[int](/API_docs/types/int.html), \]) === [$payments.GiveawayInfo](/API_docs/types/payments.GiveawayInfo.html) + +*** +

+$MadelineProto->[payments->getPaymentForm](/API_docs/methods/payments.getPaymentForm.html)(\[invoice: $[InputInvoice](/API_docs/types/InputInvoice.html), theme_params: $[DataJSON](/API_docs/types/DataJSON.html), \]) === [$payments.PaymentForm](/API_docs/types/payments.PaymentForm.html) + +*** +

+$MadelineProto->[payments->getPaymentReceipt](/API_docs/methods/payments.getPaymentReceipt.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), msg_id: $[int](/API_docs/types/int.html), \]) === [$payments.PaymentReceipt](/API_docs/types/payments.PaymentReceipt.html) + +*** +

+$MadelineProto->[payments->getPremiumGiftCodeOptions](/API_docs/methods/payments.getPremiumGiftCodeOptions.html)(\[boost_peer: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$Vector\_of\_PremiumGiftCodeOption](/API_docs/types/PremiumGiftCodeOption.html) + +*** +

+$MadelineProto->[payments->getSavedInfo](/API_docs/methods/payments.getSavedInfo.html)(\[\]) === [$payments.SavedInfo](/API_docs/types/payments.SavedInfo.html) + +*** +

+$MadelineProto->[payments->launchPrepaidGiveaway](/API_docs/methods/payments.launchPrepaidGiveaway.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), giveaway_id: $[long](/API_docs/types/long.html), purpose: $[InputStorePaymentPurpose](/API_docs/types/InputStorePaymentPurpose.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[payments->sendPaymentForm](/API_docs/methods/payments.sendPaymentForm.html)(\[form_id: $[long](/API_docs/types/long.html), invoice: $[InputInvoice](/API_docs/types/InputInvoice.html), requested_info_id: $[string](/API_docs/types/string.html), shipping_option_id: $[string](/API_docs/types/string.html), credentials: $[InputPaymentCredentials](/API_docs/types/InputPaymentCredentials.html), tip_amount: $[long](/API_docs/types/long.html), \]) === [$payments.PaymentResult](/API_docs/types/payments.PaymentResult.html) + +*** +

+$MadelineProto->[payments->validateRequestedInfo](/API_docs/methods/payments.validateRequestedInfo.html)(\[save: $[Bool](/API_docs/types/Bool.html), invoice: $[InputInvoice](/API_docs/types/InputInvoice.html), info: $[PaymentRequestedInfo](/API_docs/types/PaymentRequestedInfo.html), \]) === [$payments.ValidatedRequestedInfo](/API_docs/types/payments.ValidatedRequestedInfo.html) + +*** +

+$MadelineProto->[phone->acceptCall](/API_docs/methods/phone.acceptCall.html)(\[peer: $[InputPhoneCall](/API_docs/types/InputPhoneCall.html), g_b: $[bytes](/API_docs/types/bytes.html), protocol: $[PhoneCallProtocol](/API_docs/types/PhoneCallProtocol.html), \]) === [$phone.PhoneCall](/API_docs/types/phone.PhoneCall.html) + +*** +

+$MadelineProto->[phone->checkGroupCall](/API_docs/methods/phone.checkGroupCall.html)(\[call: $[InputGroupCall](/API_docs/types/InputGroupCall.html), sources: \[$[int](/API_docs/types/int.html)\], \]) === [$Vector\_of\_int](/API_docs/types/int.html) + +*** +

+$MadelineProto->[phone->confirmCall](/API_docs/methods/phone.confirmCall.html)(\[peer: $[InputPhoneCall](/API_docs/types/InputPhoneCall.html), g_a: $[bytes](/API_docs/types/bytes.html), key_fingerprint: $[strlong](/API_docs/constructors/strlong.html), protocol: $[PhoneCallProtocol](/API_docs/types/PhoneCallProtocol.html), \]) === [$phone.PhoneCall](/API_docs/types/phone.PhoneCall.html) + +*** +

+$MadelineProto->[phone->createGroupCall](/API_docs/methods/phone.createGroupCall.html)(\[rtmp_stream: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), title: $[string](/API_docs/types/string.html), schedule_date: $[int](/API_docs/types/int.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[phone->discardCall](/API_docs/methods/phone.discardCall.html)(\[video: $[Bool](/API_docs/types/Bool.html), peer: $[InputPhoneCall](/API_docs/types/InputPhoneCall.html), duration: $[int](/API_docs/types/int.html), reason: $[PhoneCallDiscardReason](/API_docs/types/PhoneCallDiscardReason.html), connection_id: $[long](/API_docs/types/long.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[phone->discardGroupCall](/API_docs/methods/phone.discardGroupCall.html)(\[call: $[InputGroupCall](/API_docs/types/InputGroupCall.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[phone->editGroupCallParticipant](/API_docs/methods/phone.editGroupCallParticipant.html)(\[call: $[InputGroupCall](/API_docs/types/InputGroupCall.html), participant: $[InputPeer](/API_docs/types/InputPeer.html), muted: $[Bool](/API_docs/types/Bool.html), volume: $[int](/API_docs/types/int.html), raise_hand: $[Bool](/API_docs/types/Bool.html), video_stopped: $[Bool](/API_docs/types/Bool.html), video_paused: $[Bool](/API_docs/types/Bool.html), presentation_paused: $[Bool](/API_docs/types/Bool.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[phone->editGroupCallTitle](/API_docs/methods/phone.editGroupCallTitle.html)(\[call: $[InputGroupCall](/API_docs/types/InputGroupCall.html), title: $[string](/API_docs/types/string.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[phone->exportGroupCallInvite](/API_docs/methods/phone.exportGroupCallInvite.html)(\[can_self_unmute: $[Bool](/API_docs/types/Bool.html), call: $[InputGroupCall](/API_docs/types/InputGroupCall.html), \]) === [$phone.ExportedGroupCallInvite](/API_docs/types/phone.ExportedGroupCallInvite.html) + +*** +

+$MadelineProto->[phone->getCallConfig](/API_docs/methods/phone.getCallConfig.html)(\[\]) === [$DataJSON](/API_docs/types/DataJSON.html) + +*** +

+$MadelineProto->[phone->getGroupCall](/API_docs/methods/phone.getGroupCall.html)(\[call: $[InputGroupCall](/API_docs/types/InputGroupCall.html), limit: $[int](/API_docs/types/int.html), \]) === [$phone.GroupCall](/API_docs/types/phone.GroupCall.html) + +*** +

+$MadelineProto->[phone->getGroupCallJoinAs](/API_docs/methods/phone.getGroupCallJoinAs.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$phone.JoinAsPeers](/API_docs/types/phone.JoinAsPeers.html) + +*** +

+$MadelineProto->[phone->getGroupCallStreamChannels](/API_docs/methods/phone.getGroupCallStreamChannels.html)(\[call: $[InputGroupCall](/API_docs/types/InputGroupCall.html), \]) === [$phone.GroupCallStreamChannels](/API_docs/types/phone.GroupCallStreamChannels.html) + +*** +

+$MadelineProto->[phone->getGroupCallStreamRtmpUrl](/API_docs/methods/phone.getGroupCallStreamRtmpUrl.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), revoke: $[Bool](/API_docs/types/Bool.html), \]) === [$phone.GroupCallStreamRtmpUrl](/API_docs/types/phone.GroupCallStreamRtmpUrl.html) + +*** +

+$MadelineProto->[phone->getGroupParticipants](/API_docs/methods/phone.getGroupParticipants.html)(\[call: $[InputGroupCall](/API_docs/types/InputGroupCall.html), ids: \[$[InputPeer](/API_docs/types/InputPeer.html)\], sources: \[$[int](/API_docs/types/int.html)\], offset: $[string](/API_docs/types/string.html), limit: $[int](/API_docs/types/int.html), \]) === [$phone.GroupParticipants](/API_docs/types/phone.GroupParticipants.html) + +*** +

+$MadelineProto->[phone->inviteToGroupCall](/API_docs/methods/phone.inviteToGroupCall.html)(\[call: $[InputGroupCall](/API_docs/types/InputGroupCall.html), users: \[$[InputUser](/API_docs/types/InputUser.html)\], \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[phone->joinGroupCall](/API_docs/methods/phone.joinGroupCall.html)(\[muted: $[Bool](/API_docs/types/Bool.html), video_stopped: $[Bool](/API_docs/types/Bool.html), call: $[InputGroupCall](/API_docs/types/InputGroupCall.html), join_as: $[InputPeer](/API_docs/types/InputPeer.html), invite_hash: $[string](/API_docs/types/string.html), params: $[DataJSON](/API_docs/types/DataJSON.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[phone->joinGroupCallPresentation](/API_docs/methods/phone.joinGroupCallPresentation.html)(\[call: $[InputGroupCall](/API_docs/types/InputGroupCall.html), params: $[DataJSON](/API_docs/types/DataJSON.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[phone->leaveGroupCall](/API_docs/methods/phone.leaveGroupCall.html)(\[call: $[InputGroupCall](/API_docs/types/InputGroupCall.html), source: $[int](/API_docs/types/int.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[phone->leaveGroupCallPresentation](/API_docs/methods/phone.leaveGroupCallPresentation.html)(\[call: $[InputGroupCall](/API_docs/types/InputGroupCall.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[phone->receivedCall](/API_docs/methods/phone.receivedCall.html)(\[peer: $[InputPhoneCall](/API_docs/types/InputPhoneCall.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[phone->requestCall](/API_docs/methods/phone.requestCall.html)(\[video: $[Bool](/API_docs/types/Bool.html), user_id: $[InputUser](/API_docs/types/InputUser.html), g_a_hash: $[bytes](/API_docs/types/bytes.html), protocol: $[PhoneCallProtocol](/API_docs/types/PhoneCallProtocol.html), \]) === [$phone.PhoneCall](/API_docs/types/phone.PhoneCall.html) + +*** +

+$MadelineProto->[phone->saveCallDebug](/API_docs/methods/phone.saveCallDebug.html)(\[peer: $[InputPhoneCall](/API_docs/types/InputPhoneCall.html), debug: $[DataJSON](/API_docs/types/DataJSON.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[phone->saveCallLog](/API_docs/methods/phone.saveCallLog.html)(\[peer: $[InputPhoneCall](/API_docs/types/InputPhoneCall.html), file: $[InputFile](/API_docs/types/InputFile.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[phone->saveDefaultGroupCallJoinAs](/API_docs/methods/phone.saveDefaultGroupCallJoinAs.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), join_as: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[phone->sendSignalingData](/API_docs/methods/phone.sendSignalingData.html)(\[peer: $[InputPhoneCall](/API_docs/types/InputPhoneCall.html), data: $[bytes](/API_docs/types/bytes.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[phone->setCallRating](/API_docs/methods/phone.setCallRating.html)(\[user_initiative: $[Bool](/API_docs/types/Bool.html), peer: $[InputPhoneCall](/API_docs/types/InputPhoneCall.html), rating: $[int](/API_docs/types/int.html), comment: $[string](/API_docs/types/string.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[phone->startScheduledGroupCall](/API_docs/methods/phone.startScheduledGroupCall.html)(\[call: $[InputGroupCall](/API_docs/types/InputGroupCall.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[phone->toggleGroupCallRecord](/API_docs/methods/phone.toggleGroupCallRecord.html)(\[start: $[Bool](/API_docs/types/Bool.html), video: $[Bool](/API_docs/types/Bool.html), call: $[InputGroupCall](/API_docs/types/InputGroupCall.html), title: $[string](/API_docs/types/string.html), video_portrait: $[Bool](/API_docs/types/Bool.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[phone->toggleGroupCallSettings](/API_docs/methods/phone.toggleGroupCallSettings.html)(\[reset_invite_hash: $[Bool](/API_docs/types/Bool.html), call: $[InputGroupCall](/API_docs/types/InputGroupCall.html), join_muted: $[Bool](/API_docs/types/Bool.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[phone->toggleGroupCallStartSubscription](/API_docs/methods/phone.toggleGroupCallStartSubscription.html)(\[call: $[InputGroupCall](/API_docs/types/InputGroupCall.html), subscribed: $[Bool](/API_docs/types/Bool.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[photos->deletePhotos](/API_docs/methods/photos.deletePhotos.html)(\[id: \[$[InputPhoto](/API_docs/types/InputPhoto.html)\], \]) === [$Vector\_of\_long](/API_docs/types/long.html) + +*** +

+$MadelineProto->[photos->getUserPhotos](/API_docs/methods/photos.getUserPhotos.html)(\[user_id: $[InputUser](/API_docs/types/InputUser.html), offset: $[int](/API_docs/types/int.html), max_id: $[long](/API_docs/types/long.html), limit: $[int](/API_docs/types/int.html), \]) === [$photos.Photos](/API_docs/types/photos.Photos.html) + +*** +

+$MadelineProto->[photos->updateProfilePhoto](/API_docs/methods/photos.updateProfilePhoto.html)(\[fallback: $[Bool](/API_docs/types/Bool.html), bot: $[InputUser](/API_docs/types/InputUser.html), id: $[InputPhoto](/API_docs/types/InputPhoto.html), \]) === [$photos.Photo](/API_docs/types/photos.Photo.html) + +*** +

+$MadelineProto->[photos->uploadContactProfilePhoto](/API_docs/methods/photos.uploadContactProfilePhoto.html)(\[suggest: $[Bool](/API_docs/types/Bool.html), save: $[Bool](/API_docs/types/Bool.html), user_id: $[InputUser](/API_docs/types/InputUser.html), file: $[InputFile](/API_docs/types/InputFile.html), video: $[InputFile](/API_docs/types/InputFile.html), video_start_ts: $[double](/API_docs/types/double.html), video_emoji_markup: $[VideoSize](/API_docs/types/VideoSize.html), \]) === [$photos.Photo](/API_docs/types/photos.Photo.html) + +*** +

+$MadelineProto->[photos->uploadProfilePhoto](/API_docs/methods/photos.uploadProfilePhoto.html)(\[fallback: $[Bool](/API_docs/types/Bool.html), bot: $[InputUser](/API_docs/types/InputUser.html), file: $[InputFile](/API_docs/types/InputFile.html), video: $[InputFile](/API_docs/types/InputFile.html), video_start_ts: $[double](/API_docs/types/double.html), video_emoji_markup: $[VideoSize](/API_docs/types/VideoSize.html), \]) === [$photos.Photo](/API_docs/types/photos.Photo.html) + +*** +

+$MadelineProto->[premium->applyBoost](/API_docs/methods/premium.applyBoost.html)(\[slots: \[$[int](/API_docs/types/int.html)\], peer: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$premium.MyBoosts](/API_docs/types/premium.MyBoosts.html) + +*** +

+$MadelineProto->[premium->getBoostsList](/API_docs/methods/premium.getBoostsList.html)(\[gifts: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), offset: $[string](/API_docs/types/string.html), limit: $[int](/API_docs/types/int.html), \]) === [$premium.BoostsList](/API_docs/types/premium.BoostsList.html) + +*** +

+$MadelineProto->[premium->getBoostsStatus](/API_docs/methods/premium.getBoostsStatus.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$premium.BoostsStatus](/API_docs/types/premium.BoostsStatus.html) + +*** +

+$MadelineProto->[premium->getMyBoosts](/API_docs/methods/premium.getMyBoosts.html)(\[\]) === [$premium.MyBoosts](/API_docs/types/premium.MyBoosts.html) + +*** +

+$MadelineProto->[premium->getUserBoosts](/API_docs/methods/premium.getUserBoosts.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), user_id: $[InputUser](/API_docs/types/InputUser.html), \]) === [$premium.BoostsList](/API_docs/types/premium.BoostsList.html) + +*** +

+$MadelineProto->[smsjobs->finishJob](/API_docs/methods/smsjobs.finishJob.html)(\[job_id: $[string](/API_docs/types/string.html), error: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[smsjobs->getSmsJob](/API_docs/methods/smsjobs.getSmsJob.html)(\[job_id: $[string](/API_docs/types/string.html), \]) === [$SmsJob](/API_docs/types/SmsJob.html) + +*** +

+$MadelineProto->[smsjobs->getStatus](/API_docs/methods/smsjobs.getStatus.html)(\[\]) === [$smsjobs.Status](/API_docs/types/smsjobs.Status.html) + +*** +

+$MadelineProto->[smsjobs->isEligibleToJoin](/API_docs/methods/smsjobs.isEligibleToJoin.html)(\[\]) === [$smsjobs.EligibilityToJoin](/API_docs/types/smsjobs.EligibilityToJoin.html) + +*** +

+$MadelineProto->[smsjobs->join](/API_docs/methods/smsjobs.join.html)(\[\]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[smsjobs->leave](/API_docs/methods/smsjobs.leave.html)(\[\]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[smsjobs->updateSettings](/API_docs/methods/smsjobs.updateSettings.html)(\[allow_international: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[stats->getBroadcastRevenueStats](/API_docs/methods/stats.getBroadcastRevenueStats.html)(\[dark: $[Bool](/API_docs/types/Bool.html), channel: $[InputChannel](/API_docs/types/InputChannel.html), \]) === [$stats.BroadcastRevenueStats](/API_docs/types/stats.BroadcastRevenueStats.html) + +*** +

+$MadelineProto->[stats->getBroadcastRevenueTransactions](/API_docs/methods/stats.getBroadcastRevenueTransactions.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), offset: $[int](/API_docs/types/int.html), limit: $[int](/API_docs/types/int.html), \]) === [$stats.BroadcastRevenueTransactions](/API_docs/types/stats.BroadcastRevenueTransactions.html) + +*** +

+$MadelineProto->[stats->getBroadcastRevenueWithdrawalUrl](/API_docs/methods/stats.getBroadcastRevenueWithdrawalUrl.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), password: $[InputCheckPasswordSRP](/API_docs/types/InputCheckPasswordSRP.html), \]) === [$stats.BroadcastRevenueWithdrawalUrl](/API_docs/types/stats.BroadcastRevenueWithdrawalUrl.html) + +*** +

+$MadelineProto->[stats->getBroadcastStats](/API_docs/methods/stats.getBroadcastStats.html)(\[dark: $[Bool](/API_docs/types/Bool.html), channel: $[InputChannel](/API_docs/types/InputChannel.html), \]) === [$stats.BroadcastStats](/API_docs/types/stats.BroadcastStats.html) + +*** +

+$MadelineProto->[stats->getMegagroupStats](/API_docs/methods/stats.getMegagroupStats.html)(\[dark: $[Bool](/API_docs/types/Bool.html), channel: $[InputChannel](/API_docs/types/InputChannel.html), \]) === [$stats.MegagroupStats](/API_docs/types/stats.MegagroupStats.html) + +*** +

+$MadelineProto->[stats->getMessagePublicForwards](/API_docs/methods/stats.getMessagePublicForwards.html)(\[channel: $[InputChannel](/API_docs/types/InputChannel.html), msg_id: $[int](/API_docs/types/int.html), offset: $[string](/API_docs/types/string.html), limit: $[int](/API_docs/types/int.html), \]) === [$stats.PublicForwards](/API_docs/types/stats.PublicForwards.html) + +*** +

+$MadelineProto->[stats->getMessageStats](/API_docs/methods/stats.getMessageStats.html)(\[dark: $[Bool](/API_docs/types/Bool.html), channel: $[InputChannel](/API_docs/types/InputChannel.html), msg_id: $[int](/API_docs/types/int.html), \]) === [$stats.MessageStats](/API_docs/types/stats.MessageStats.html) + +*** +

+$MadelineProto->[stats->getStoryPublicForwards](/API_docs/methods/stats.getStoryPublicForwards.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: $[int](/API_docs/types/int.html), offset: $[string](/API_docs/types/string.html), limit: $[int](/API_docs/types/int.html), \]) === [$stats.PublicForwards](/API_docs/types/stats.PublicForwards.html) + +*** +

+$MadelineProto->[stats->getStoryStats](/API_docs/methods/stats.getStoryStats.html)(\[dark: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), id: $[int](/API_docs/types/int.html), \]) === [$stats.StoryStats](/API_docs/types/stats.StoryStats.html) + +*** +

+$MadelineProto->[stats->loadAsyncGraph](/API_docs/methods/stats.loadAsyncGraph.html)(\[token: $[string](/API_docs/types/string.html), x: $[long](/API_docs/types/long.html), \]) === [$StatsGraph](/API_docs/types/StatsGraph.html) + +*** +

+$MadelineProto->[stickers->addStickerToSet](/API_docs/methods/stickers.addStickerToSet.html)(\[stickerset: $[InputStickerSet](/API_docs/types/InputStickerSet.html), sticker: $[InputStickerSetItem](/API_docs/types/InputStickerSetItem.html), \]) === [$messages.StickerSet](/API_docs/types/messages.StickerSet.html) + +*** +

+$MadelineProto->[stickers->changeSticker](/API_docs/methods/stickers.changeSticker.html)(\[sticker: $[InputDocument](/API_docs/types/InputDocument.html), emoji: $[string](/API_docs/types/string.html), mask_coords: $[MaskCoords](/API_docs/types/MaskCoords.html), keywords: $[string](/API_docs/types/string.html), \]) === [$messages.StickerSet](/API_docs/types/messages.StickerSet.html) + +*** +

+$MadelineProto->[stickers->changeStickerPosition](/API_docs/methods/stickers.changeStickerPosition.html)(\[sticker: $[InputDocument](/API_docs/types/InputDocument.html), position: $[int](/API_docs/types/int.html), \]) === [$messages.StickerSet](/API_docs/types/messages.StickerSet.html) + +*** +

+$MadelineProto->[stickers->checkShortName](/API_docs/methods/stickers.checkShortName.html)(\[short_name: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[stickers->createStickerSet](/API_docs/methods/stickers.createStickerSet.html)(\[masks: $[Bool](/API_docs/types/Bool.html), emojis: $[Bool](/API_docs/types/Bool.html), text_color: $[Bool](/API_docs/types/Bool.html), user_id: $[InputUser](/API_docs/types/InputUser.html), title: $[string](/API_docs/types/string.html), short_name: $[string](/API_docs/types/string.html), thumb: $[InputDocument](/API_docs/types/InputDocument.html), stickers: \[$[InputStickerSetItem](/API_docs/types/InputStickerSetItem.html)\], software: $[string](/API_docs/types/string.html), \]) === [$messages.StickerSet](/API_docs/types/messages.StickerSet.html) + +*** +

+$MadelineProto->[stickers->deleteStickerSet](/API_docs/methods/stickers.deleteStickerSet.html)(\[stickerset: $[InputStickerSet](/API_docs/types/InputStickerSet.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[stickers->removeStickerFromSet](/API_docs/methods/stickers.removeStickerFromSet.html)(\[sticker: $[InputDocument](/API_docs/types/InputDocument.html), \]) === [$messages.StickerSet](/API_docs/types/messages.StickerSet.html) + +*** +

+$MadelineProto->[stickers->renameStickerSet](/API_docs/methods/stickers.renameStickerSet.html)(\[stickerset: $[InputStickerSet](/API_docs/types/InputStickerSet.html), title: $[string](/API_docs/types/string.html), \]) === [$messages.StickerSet](/API_docs/types/messages.StickerSet.html) + +*** +

+$MadelineProto->[stickers->replaceSticker](/API_docs/methods/stickers.replaceSticker.html)(\[sticker: $[InputDocument](/API_docs/types/InputDocument.html), new_sticker: $[InputStickerSetItem](/API_docs/types/InputStickerSetItem.html), \]) === [$messages.StickerSet](/API_docs/types/messages.StickerSet.html) + +*** +

+$MadelineProto->[stickers->setStickerSetThumb](/API_docs/methods/stickers.setStickerSetThumb.html)(\[stickerset: $[InputStickerSet](/API_docs/types/InputStickerSet.html), thumb: $[InputDocument](/API_docs/types/InputDocument.html), thumb_document_id: $[long](/API_docs/types/long.html), \]) === [$messages.StickerSet](/API_docs/types/messages.StickerSet.html) + +*** +

+$MadelineProto->[stickers->suggestShortName](/API_docs/methods/stickers.suggestShortName.html)(\[title: $[string](/API_docs/types/string.html), \]) === [$stickers.SuggestedShortName](/API_docs/types/stickers.SuggestedShortName.html) + +*** +

+$MadelineProto->[stories->activateStealthMode](/API_docs/methods/stories.activateStealthMode.html)(\[past: $[Bool](/API_docs/types/Bool.html), future: $[Bool](/API_docs/types/Bool.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[stories->canSendStory](/API_docs/methods/stories.canSendStory.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[stories->deleteStories](/API_docs/methods/stories.deleteStories.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: \[$[int](/API_docs/types/int.html)\], \]) === [$Vector\_of\_int](/API_docs/types/int.html) + +*** +

+$MadelineProto->[stories->editStory](/API_docs/methods/stories.editStory.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: $[int](/API_docs/types/int.html), media: $[InputMedia](/API_docs/types/InputMedia.html), media_areas: \[$[MediaArea](/API_docs/types/MediaArea.html)\], caption: $[string](/API_docs/types/string.html), entities: \[$[MessageEntity](/API_docs/types/MessageEntity.html)\], privacy_rules: \[$[InputPrivacyRule](/API_docs/types/InputPrivacyRule.html)\], \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[stories->exportStoryLink](/API_docs/methods/stories.exportStoryLink.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: $[int](/API_docs/types/int.html), \]) === [$ExportedStoryLink](/API_docs/types/ExportedStoryLink.html) + +*** +

+$MadelineProto->[stories->getAllReadPeerStories](/API_docs/methods/stories.getAllReadPeerStories.html)(\[\]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[stories->getAllStories](/API_docs/methods/stories.getAllStories.html)(\[next: $[Bool](/API_docs/types/Bool.html), hidden: $[Bool](/API_docs/types/Bool.html), state: $[string](/API_docs/types/string.html), \]) === [$stories.AllStories](/API_docs/types/stories.AllStories.html) + +*** +

+$MadelineProto->[stories->getChatsToSend](/API_docs/methods/stories.getChatsToSend.html)(\[\]) === [$messages.Chats](/API_docs/types/messages.Chats.html) + +*** +

+$MadelineProto->[stories->getPeerMaxIDs](/API_docs/methods/stories.getPeerMaxIDs.html)(\[id: \[$[InputPeer](/API_docs/types/InputPeer.html)\], \]) === [$Vector\_of\_int](/API_docs/types/int.html) + +*** +

+$MadelineProto->[stories->getPeerStories](/API_docs/methods/stories.getPeerStories.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), \]) === [$stories.PeerStories](/API_docs/types/stories.PeerStories.html) + +*** +

+$MadelineProto->[stories->getPinnedStories](/API_docs/methods/stories.getPinnedStories.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), offset_id: $[int](/API_docs/types/int.html), limit: $[int](/API_docs/types/int.html), \]) === [$stories.Stories](/API_docs/types/stories.Stories.html) + +*** +

+$MadelineProto->[stories->getStoriesArchive](/API_docs/methods/stories.getStoriesArchive.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), offset_id: $[int](/API_docs/types/int.html), limit: $[int](/API_docs/types/int.html), \]) === [$stories.Stories](/API_docs/types/stories.Stories.html) + +*** +

+$MadelineProto->[stories->getStoriesByID](/API_docs/methods/stories.getStoriesByID.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: \[$[int](/API_docs/types/int.html)\], \]) === [$stories.Stories](/API_docs/types/stories.Stories.html) + +*** +

+$MadelineProto->[stories->getStoriesViews](/API_docs/methods/stories.getStoriesViews.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: \[$[int](/API_docs/types/int.html)\], \]) === [$stories.StoryViews](/API_docs/types/stories.StoryViews.html) + +*** +

+$MadelineProto->[stories->getStoryReactionsList](/API_docs/methods/stories.getStoryReactionsList.html)(\[forwards_first: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), id: $[int](/API_docs/types/int.html), reaction: $[Reaction](/API_docs/types/Reaction.html), offset: $[string](/API_docs/types/string.html), limit: $[int](/API_docs/types/int.html), \]) === [$stories.StoryReactionsList](/API_docs/types/stories.StoryReactionsList.html) + +*** +

+$MadelineProto->[stories->getStoryViewsList](/API_docs/methods/stories.getStoryViewsList.html)(\[just_contacts: $[Bool](/API_docs/types/Bool.html), reactions_first: $[Bool](/API_docs/types/Bool.html), forwards_first: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), q: $[string](/API_docs/types/string.html), id: $[int](/API_docs/types/int.html), offset: $[string](/API_docs/types/string.html), limit: $[int](/API_docs/types/int.html), \]) === [$stories.StoryViewsList](/API_docs/types/stories.StoryViewsList.html) + +*** +

+$MadelineProto->[stories->incrementStoryViews](/API_docs/methods/stories.incrementStoryViews.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: \[$[int](/API_docs/types/int.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[stories->readStories](/API_docs/methods/stories.readStories.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), max_id: $[int](/API_docs/types/int.html), \]) === [$Vector\_of\_int](/API_docs/types/int.html) + +*** +

+$MadelineProto->[stories->report](/API_docs/methods/stories.report.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: \[$[int](/API_docs/types/int.html)\], reason: $[ReportReason](/API_docs/types/ReportReason.html), message: $[string](/API_docs/types/string.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[stories->sendReaction](/API_docs/methods/stories.sendReaction.html)(\[add_to_recent: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), story_id: $[int](/API_docs/types/int.html), reaction: $[Reaction](/API_docs/types/Reaction.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[stories->sendStory](/API_docs/methods/stories.sendStory.html)(\[pinned: $[Bool](/API_docs/types/Bool.html), noforwards: $[Bool](/API_docs/types/Bool.html), fwd_modified: $[Bool](/API_docs/types/Bool.html), peer: $[InputPeer](/API_docs/types/InputPeer.html), media: $[InputMedia](/API_docs/types/InputMedia.html), media_areas: \[$[MediaArea](/API_docs/types/MediaArea.html)\], caption: $[string](/API_docs/types/string.html), entities: \[$[MessageEntity](/API_docs/types/MessageEntity.html)\], privacy_rules: \[$[InputPrivacyRule](/API_docs/types/InputPrivacyRule.html)\], period: $[int](/API_docs/types/int.html), fwd_from_id: $[InputPeer](/API_docs/types/InputPeer.html), fwd_from_story: $[int](/API_docs/types/int.html), \]) === [$Updates](/API_docs/types/Updates.html) + +*** +

+$MadelineProto->[stories->toggleAllStoriesHidden](/API_docs/methods/stories.toggleAllStoriesHidden.html)(\[hidden: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[stories->togglePeerStoriesHidden](/API_docs/methods/stories.togglePeerStoriesHidden.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), hidden: $[Bool](/API_docs/types/Bool.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[stories->togglePinned](/API_docs/methods/stories.togglePinned.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: \[$[int](/API_docs/types/int.html)\], pinned: $[Bool](/API_docs/types/Bool.html), \]) === [$Vector\_of\_int](/API_docs/types/int.html) + +*** +

+$MadelineProto->[stories->togglePinnedToTop](/API_docs/methods/stories.togglePinnedToTop.html)(\[peer: $[InputPeer](/API_docs/types/InputPeer.html), id: \[$[int](/API_docs/types/int.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[updates->getChannelDifference](/API_docs/methods/updates.getChannelDifference.html)(\[force: $[Bool](/API_docs/types/Bool.html), channel: $[InputChannel](/API_docs/types/InputChannel.html), filter: $[ChannelMessagesFilter](/API_docs/types/ChannelMessagesFilter.html), pts: $[int](/API_docs/types/int.html), limit: $[int](/API_docs/types/int.html), \]) === [$updates.ChannelDifference](/API_docs/types/updates.ChannelDifference.html) + +*** +

+$MadelineProto->[updates->getDifference](/API_docs/methods/updates.getDifference.html)(\[pts: $[int](/API_docs/types/int.html), pts_limit: $[int](/API_docs/types/int.html), pts_total_limit: $[int](/API_docs/types/int.html), date: $[int](/API_docs/types/int.html), qts: $[int](/API_docs/types/int.html), qts_limit: $[int](/API_docs/types/int.html), \]) === [$updates.Difference](/API_docs/types/updates.Difference.html) + +*** +

+$MadelineProto->[updates->getState](/API_docs/methods/updates.getState.html)(\[\]) === [$updates.State](/API_docs/types/updates.State.html) + +*** +

+$MadelineProto->[upload->getCdnFile](/API_docs/methods/upload.getCdnFile.html)(\[file_token: $[string](/API_docs/types/string.html), offset: $[long](/API_docs/types/long.html), limit: $[int](/API_docs/types/int.html), \]) === [$upload.CdnFile](/API_docs/types/upload.CdnFile.html) + +*** +

+$MadelineProto->[upload->getCdnFileHashes](/API_docs/methods/upload.getCdnFileHashes.html)(\[file_token: $[string](/API_docs/types/string.html), offset: $[long](/API_docs/types/long.html), \]) === [$Vector\_of\_FileHash](/API_docs/types/FileHash.html) + +*** +

+$MadelineProto->[upload->getFile](/API_docs/methods/upload.getFile.html)(\[precise: $[Bool](/API_docs/types/Bool.html), cdn_supported: $[Bool](/API_docs/types/Bool.html), location: $[InputFileLocation](/API_docs/types/InputFileLocation.html), offset: $[long](/API_docs/types/long.html), limit: $[int](/API_docs/types/int.html), \]) === [$upload.File](/API_docs/types/upload.File.html) + +*** +

+$MadelineProto->[upload->getFileHashes](/API_docs/methods/upload.getFileHashes.html)(\[location: $[InputFileLocation](/API_docs/types/InputFileLocation.html), offset: $[long](/API_docs/types/long.html), \]) === [$Vector\_of\_FileHash](/API_docs/types/FileHash.html) + +*** +

+$MadelineProto->[upload->getWebFile](/API_docs/methods/upload.getWebFile.html)(\[location: $[InputWebFileLocation](/API_docs/types/InputWebFileLocation.html), offset: $[int](/API_docs/types/int.html), limit: $[int](/API_docs/types/int.html), \]) === [$upload.WebFile](/API_docs/types/upload.WebFile.html) + +*** +

+$MadelineProto->[upload->reuploadCdnFile](/API_docs/methods/upload.reuploadCdnFile.html)(\[file_token: $[string](/API_docs/types/string.html), request_token: $[bytes](/API_docs/types/bytes.html), \]) === [$Vector\_of\_FileHash](/API_docs/types/FileHash.html) + +*** +

+$MadelineProto->[upload->saveBigFilePart](/API_docs/methods/upload.saveBigFilePart.html)(\[file_id: $[long](/API_docs/types/long.html), file_part: $[int](/API_docs/types/int.html), file_total_parts: $[int](/API_docs/types/int.html), bytes: $[bytes](/API_docs/types/bytes.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[upload->saveFilePart](/API_docs/methods/upload.saveFilePart.html)(\[file_id: $[long](/API_docs/types/long.html), file_part: $[int](/API_docs/types/int.html), bytes: $[bytes](/API_docs/types/bytes.html), \]) === [$Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[users->getFullUser](/API_docs/methods/users.getFullUser.html)(\[id: $[InputUser](/API_docs/types/InputUser.html), \]) === [$users.UserFull](/API_docs/types/users.UserFull.html) + +*** +

+$MadelineProto->[users->getIsPremiumRequiredToContact](/API_docs/methods/users.getIsPremiumRequiredToContact.html)(\[id: \[$[InputUser](/API_docs/types/InputUser.html)\], \]) === [$Vector\_of\_Bool](/API_docs/types/Bool.html) + +*** +

+$MadelineProto->[users->getUsers](/API_docs/methods/users.getUsers.html)(\[id: \[$[InputUser](/API_docs/types/InputUser.html)\], \]) === [$Vector\_of\_User](/API_docs/types/User.html) + +*** +

+$MadelineProto->[users->setSecureValueErrors](/API_docs/methods/users.setSecureValueErrors.html)(\[id: $[InputUser](/API_docs/types/InputUser.html), errors: \[$[SecureValueError](/API_docs/types/SecureValueError.html)\], \]) === [$Bool](/API_docs/types/Bool.html) + + diff --git a/docs/API_docs/methods/auth.acceptLoginToken.md b/docs/API_docs/methods/auth.acceptLoginToken.md new file mode 100644 index 0000000000..4796be73b7 --- /dev/null +++ b/docs/API_docs/methods/auth.acceptLoginToken.md @@ -0,0 +1,46 @@ +--- +title: "auth.acceptLoginToken" +description: "Accept QR code login token, logging in the app that generated it." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_acceptLoginToken.html +--- +# Method: auth.acceptLoginToken +[Back to methods index](index.html) + + + +Accept QR code login token, logging in the app that generated it. + +Returns info about the new session. + +For more info, see [login via QR code](https://core.telegram.org/api/qr-login). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|token|[bytes](/API_docs/types/bytes.html) | Login token embedded in QR code, for more info, see [login via QR code](https://core.telegram.org/api/qr-login). | Yes| + + +### Return type: [Authorization](/API_docs/types/Authorization.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Authorization = $MadelineProto->auth->acceptLoginToken(token: 'bytes', ); +``` + diff --git a/docs/API_docs/methods/auth.bindTempAuthKey.md b/docs/API_docs/methods/auth.bindTempAuthKey.md new file mode 100644 index 0000000000..c4bdf942e1 --- /dev/null +++ b/docs/API_docs/methods/auth.bindTempAuthKey.md @@ -0,0 +1,45 @@ +--- +title: "auth.bindTempAuthKey" +description: "You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_bindTempAuthKey.html +--- +# Method: auth.bindTempAuthKey +[Back to methods index](index.html) + + + +You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|perm\_auth\_key\_id|[long](/API_docs/types/long.html) | Permanent auth\_key\_id to bind to | Yes| +|nonce|[long](/API_docs/types/long.html) | Random long from [Binding message contents](#binding-message-contents) | Yes| +|expires\_at|[int](/API_docs/types/int.html) | Unix timestamp to invalidate temporary key, see [Binding message contents](#binding-message-contents) | Optional| +|encrypted\_message|[bytes](/API_docs/types/bytes.html) | See [Generating encrypted\_message](#generating-encrypted-message) | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->auth->bindTempAuthKey(perm_auth_key_id: $long, nonce: $long, expires_at: $int, encrypted_message: 'bytes', ); +``` + diff --git a/docs/API_docs/methods/auth.cancelCode.md b/docs/API_docs/methods/auth.cancelCode.md new file mode 100644 index 0000000000..b7b95daaba --- /dev/null +++ b/docs/API_docs/methods/auth.cancelCode.md @@ -0,0 +1,43 @@ +--- +title: "auth.cancelCode" +description: "Cancel the login verification code" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_cancelCode.html +--- +# Method: auth.cancelCode +[Back to methods index](index.html) + + + +Cancel the login verification code + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|phone\_number|[string](/API_docs/types/string.html) | Phone number | Optional| +|phone\_code\_hash|[string](/API_docs/types/string.html) | Phone code hash from [auth.sendCode](../methods/auth.sendCode.html) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->auth->cancelCode(phone_number: 'string', phone_code_hash: 'string', ); +``` + diff --git a/docs/API_docs/methods/auth.checkPassword.md b/docs/API_docs/methods/auth.checkPassword.md new file mode 100644 index 0000000000..c056e2ebba --- /dev/null +++ b/docs/API_docs/methods/auth.checkPassword.md @@ -0,0 +1,42 @@ +--- +title: "auth.checkPassword" +description: "You cannot use this method directly, use the complete2falogin method instead (see https://docs.madelineproto.xyz for more info)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_checkPassword.html +--- +# Method: auth.checkPassword +[Back to methods index](index.html) + + + +You cannot use this method directly, use the complete2falogin method instead (see https://docs.madelineproto.xyz for more info) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|password|[InputCheckPasswordSRP](/API_docs/types/InputCheckPasswordSRP.html) | The account's password (see [SRP](https://core.telegram.org/api/srp)) | Yes| + + +### Return type: [auth.Authorization](/API_docs/types/auth.Authorization.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$auth_Authorization = $MadelineProto->auth->checkPassword(password: $InputCheckPasswordSRP, ); +``` + diff --git a/docs/API_docs/methods/auth.checkRecoveryPassword.md b/docs/API_docs/methods/auth.checkRecoveryPassword.md new file mode 100644 index 0000000000..d21a5b2466 --- /dev/null +++ b/docs/API_docs/methods/auth.checkRecoveryPassword.md @@ -0,0 +1,42 @@ +--- +title: "auth.checkRecoveryPassword" +description: "Check if the [2FA recovery code](https://core.telegram.org/api/srp) sent using [auth.requestPasswordRecovery](../methods/auth.requestPasswordRecovery.html) is valid, before passing it to [auth.recoverPassword](../methods/auth.recoverPassword.html)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_checkRecoveryPassword.html +--- +# Method: auth.checkRecoveryPassword +[Back to methods index](index.html) + + + +Check if the [2FA recovery code](https://core.telegram.org/api/srp) sent using [auth.requestPasswordRecovery](../methods/auth.requestPasswordRecovery.html) is valid, before passing it to [auth.recoverPassword](../methods/auth.recoverPassword.html). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|code|[string](/API_docs/types/string.html) | Code received via email | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->auth->checkRecoveryPassword(code: 'string', ); +``` + diff --git a/docs/API_docs/methods/auth.dropTempAuthKeys.md b/docs/API_docs/methods/auth.dropTempAuthKeys.md new file mode 100644 index 0000000000..db7a5883de --- /dev/null +++ b/docs/API_docs/methods/auth.dropTempAuthKeys.md @@ -0,0 +1,42 @@ +--- +title: "auth.dropTempAuthKeys" +description: "Delete all temporary authorization keys **except for** the ones specified" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_dropTempAuthKeys.html +--- +# Method: auth.dropTempAuthKeys +[Back to methods index](index.html) + + + +Delete all temporary authorization keys **except for** the ones specified + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|except\_auth\_keys|Array of [long](/API_docs/types/long.html) | The auth keys that **shouldn't** be dropped. | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->auth->dropTempAuthKeys(except_auth_keys: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/auth.exportAuthorization.md b/docs/API_docs/methods/auth.exportAuthorization.md new file mode 100644 index 0000000000..f232b243dc --- /dev/null +++ b/docs/API_docs/methods/auth.exportAuthorization.md @@ -0,0 +1,42 @@ +--- +title: "auth.exportAuthorization" +description: "You cannot use this method directly, use $MadelineProto->exportAuthorization() instead, see https://docs.madelineproto.xyz/docs/LOGIN.html" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_exportAuthorization.html +--- +# Method: auth.exportAuthorization +[Back to methods index](index.html) + + + +You cannot use this method directly, use $MadelineProto->exportAuthorization() instead, see https://docs.madelineproto.xyz/docs/LOGIN.html + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|dc\_id|[int](/API_docs/types/int.html) | Number of a target data-center | Optional| + + +### Return type: [auth.ExportedAuthorization](/API_docs/types/auth.ExportedAuthorization.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$auth_ExportedAuthorization = $MadelineProto->auth->exportAuthorization(dc_id: $int, ); +``` + diff --git a/docs/API_docs/methods/auth.exportLoginToken.md b/docs/API_docs/methods/auth.exportLoginToken.md new file mode 100644 index 0000000000..f2975d7517 --- /dev/null +++ b/docs/API_docs/methods/auth.exportLoginToken.md @@ -0,0 +1,47 @@ +--- +title: "auth.exportLoginToken" +description: "Generate a login token, for [login via QR code](https://core.telegram.org/api/qr-login). " +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_exportLoginToken.html +--- +# Method: auth.exportLoginToken +[Back to methods index](index.html) + + + +Generate a login token, for [login via QR code](https://core.telegram.org/api/qr-login). +The generated login token should be encoded using base64url, then shown as a `tg://login?token=base64encodedtoken` [deep link »](https://core.telegram.org/api/links#qr-code-login-links) in the QR code. + +For more info, see [login via QR code](https://core.telegram.org/api/qr-login). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|api\_id|[int](/API_docs/types/int.html) | Application identifier (see. [App configuration](https://core.telegram.org/myapp)) | Optional| +|api\_hash|[string](/API_docs/types/string.html) | Application identifier hash (see. [App configuration](https://core.telegram.org/myapp)) | Optional| +|except\_ids|Array of [long](/API_docs/types/long.html) | List of already logged-in user IDs, to prevent logging in twice with the same user | Yes| + + +### Return type: [auth.LoginToken](/API_docs/types/auth.LoginToken.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$auth_LoginToken = $MadelineProto->auth->exportLoginToken(api_id: $int, api_hash: 'string', except_ids: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/auth.importAuthorization.md b/docs/API_docs/methods/auth.importAuthorization.md new file mode 100644 index 0000000000..2a2697524a --- /dev/null +++ b/docs/API_docs/methods/auth.importAuthorization.md @@ -0,0 +1,43 @@ +--- +title: "auth.importAuthorization" +description: "You cannot use this method directly, use $MadelineProto->importAuthorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_importAuthorization.html +--- +# Method: auth.importAuthorization +[Back to methods index](index.html) + + + +You cannot use this method directly, use $MadelineProto->importAuthorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|[long](/API_docs/types/long.html) | User ID | Yes| +|bytes|[bytes](/API_docs/types/bytes.html) | Authorization key | Yes| + + +### Return type: [auth.Authorization](/API_docs/types/auth.Authorization.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$auth_Authorization = $MadelineProto->auth->importAuthorization(id: $long, bytes: 'bytes', ); +``` + diff --git a/docs/API_docs/methods/auth.importBotAuthorization.md b/docs/API_docs/methods/auth.importBotAuthorization.md new file mode 100644 index 0000000000..a57e7382f8 --- /dev/null +++ b/docs/API_docs/methods/auth.importBotAuthorization.md @@ -0,0 +1,44 @@ +--- +title: "auth.importBotAuthorization" +description: "You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_importBotAuthorization.html +--- +# Method: auth.importBotAuthorization +[Back to methods index](index.html) + + + +You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|api\_id|[int](/API_docs/types/int.html) | Application identifier (see. [App configuration](https://core.telegram.org/myapp)) | Optional| +|api\_hash|[string](/API_docs/types/string.html) | Application identifier hash (see. [App configuration](https://core.telegram.org/myapp)) | Optional| +|bot\_auth\_token|[string](/API_docs/types/string.html) | Bot token (see [bots](https://core.telegram.org/bots)) | Optional| + + +### Return type: [auth.Authorization](/API_docs/types/auth.Authorization.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$auth_Authorization = $MadelineProto->auth->importBotAuthorization(api_id: $int, api_hash: 'string', bot_auth_token: 'string', ); +``` + diff --git a/docs/API_docs/methods/auth.importLoginToken.md b/docs/API_docs/methods/auth.importLoginToken.md new file mode 100644 index 0000000000..90974d87bb --- /dev/null +++ b/docs/API_docs/methods/auth.importLoginToken.md @@ -0,0 +1,44 @@ +--- +title: "auth.importLoginToken" +description: "Login using a redirected login token, generated in case of DC mismatch during [QR code login](https://core.telegram.org/api/qr-login)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_importLoginToken.html +--- +# Method: auth.importLoginToken +[Back to methods index](index.html) + + + +Login using a redirected login token, generated in case of DC mismatch during [QR code login](https://core.telegram.org/api/qr-login). + +For more info, see [login via QR code](https://core.telegram.org/api/qr-login). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|token|[bytes](/API_docs/types/bytes.html) | Login token | Yes| + + +### Return type: [auth.LoginToken](/API_docs/types/auth.LoginToken.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$auth_LoginToken = $MadelineProto->auth->importLoginToken(token: 'bytes', ); +``` + diff --git a/docs/API_docs/methods/auth.importWebTokenAuthorization.md b/docs/API_docs/methods/auth.importWebTokenAuthorization.md new file mode 100644 index 0000000000..83035d1a25 --- /dev/null +++ b/docs/API_docs/methods/auth.importWebTokenAuthorization.md @@ -0,0 +1,44 @@ +--- +title: "auth.importWebTokenAuthorization" +description: "Login by importing an authorization token" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_importWebTokenAuthorization.html +--- +# Method: auth.importWebTokenAuthorization +[Back to methods index](index.html) + + + +Login by importing an authorization token + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|api\_id|[int](/API_docs/types/int.html) | [API ID](https://core.telegram.org/api/obtaining_api_id) | Optional| +|api\_hash|[string](/API_docs/types/string.html) | [API hash](https://core.telegram.org/api/obtaining_api_id) | Optional| +|web\_auth\_token|[string](/API_docs/types/string.html) | The authorization token | Optional| + + +### Return type: [auth.Authorization](/API_docs/types/auth.Authorization.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$auth_Authorization = $MadelineProto->auth->importWebTokenAuthorization(api_id: $int, api_hash: 'string', web_auth_token: 'string', ); +``` + diff --git a/docs/API_docs/methods/auth.logOut.md b/docs/API_docs/methods/auth.logOut.md new file mode 100644 index 0000000000..58c11101ef --- /dev/null +++ b/docs/API_docs/methods/auth.logOut.md @@ -0,0 +1,37 @@ +--- +title: "auth.logOut" +description: "You cannot use this method directly, use the logout method instead (see https://docs.madelineproto.xyz for more info)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_logOut.html +--- +# Method: auth.logOut +[Back to methods index](index.html) + + + +You cannot use this method directly, use the logout method instead (see https://docs.madelineproto.xyz for more info) + + + +### Return type: [auth.LoggedOut](/API_docs/types/auth.LoggedOut.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$auth_LoggedOut = $MadelineProto->auth->logOut(); +``` + diff --git a/docs/API_docs/methods/auth.recoverPassword.md b/docs/API_docs/methods/auth.recoverPassword.md new file mode 100644 index 0000000000..9c23746366 --- /dev/null +++ b/docs/API_docs/methods/auth.recoverPassword.md @@ -0,0 +1,43 @@ +--- +title: "auth.recoverPassword" +description: "Reset the [2FA password](https://core.telegram.org/api/srp) using the recovery code sent using [auth.requestPasswordRecovery](../methods/auth.requestPasswordRecovery.html)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_recoverPassword.html +--- +# Method: auth.recoverPassword +[Back to methods index](index.html) + + + +Reset the [2FA password](https://core.telegram.org/api/srp) using the recovery code sent using [auth.requestPasswordRecovery](../methods/auth.requestPasswordRecovery.html). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|code|[string](/API_docs/types/string.html) | Code received via email | Optional| +|new\_settings|[account.PasswordInputSettings](/API_docs/types/account.PasswordInputSettings.html) | New password | Optional| + + +### Return type: [auth.Authorization](/API_docs/types/auth.Authorization.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$auth_Authorization = $MadelineProto->auth->recoverPassword(code: 'string', new_settings: $account.PasswordInputSettings, ); +``` + diff --git a/docs/API_docs/methods/auth.reportMissingCode.md b/docs/API_docs/methods/auth.reportMissingCode.md new file mode 100644 index 0000000000..a55ac6301f --- /dev/null +++ b/docs/API_docs/methods/auth.reportMissingCode.md @@ -0,0 +1,42 @@ +--- +title: "auth.reportMissingCode" +description: "auth.reportMissingCode parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_reportMissingCode.html +--- +# Method: auth.reportMissingCode +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|phone\_number|[string](/API_docs/types/string.html) | Optional| +|phone\_code\_hash|[string](/API_docs/types/string.html) | Optional| +|mnc|[string](/API_docs/types/string.html) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->auth->reportMissingCode(phone_number: 'string', phone_code_hash: 'string', mnc: 'string', ); +``` + diff --git a/docs/API_docs/methods/auth.requestFirebaseSms.md b/docs/API_docs/methods/auth.requestFirebaseSms.md new file mode 100644 index 0000000000..b2ca56e21d --- /dev/null +++ b/docs/API_docs/methods/auth.requestFirebaseSms.md @@ -0,0 +1,45 @@ +--- +title: "auth.requestFirebaseSms" +description: "Request an SMS code via Firebase." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_requestFirebaseSms.html +--- +# Method: auth.requestFirebaseSms +[Back to methods index](index.html) + + + +Request an SMS code via Firebase. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|phone\_number|[string](/API_docs/types/string.html) | Phone number | Optional| +|phone\_code\_hash|[string](/API_docs/types/string.html) | Phone code hash returned by [auth.sendCode](../methods/auth.sendCode.html) | Optional| +|safety\_net\_token|[string](/API_docs/types/string.html) | On Android, a JWS object obtained as described in the [auth documentation »](https://core.telegram.org/api/auth) | Optional| +|ios\_push\_secret|[string](/API_docs/types/string.html) | Secret token received via an apple push notification | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->auth->requestFirebaseSms(phone_number: 'string', phone_code_hash: 'string', safety_net_token: 'string', ios_push_secret: 'string', ); +``` + diff --git a/docs/API_docs/methods/auth.requestPasswordRecovery.md b/docs/API_docs/methods/auth.requestPasswordRecovery.md new file mode 100644 index 0000000000..654293e34b --- /dev/null +++ b/docs/API_docs/methods/auth.requestPasswordRecovery.md @@ -0,0 +1,37 @@ +--- +title: "auth.requestPasswordRecovery" +description: "Request recovery code of a [2FA password](https://core.telegram.org/api/srp), only for accounts with a [recovery email configured](https://core.telegram.org/api/srp#email-verification)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_requestPasswordRecovery.html +--- +# Method: auth.requestPasswordRecovery +[Back to methods index](index.html) + + + +Request recovery code of a [2FA password](https://core.telegram.org/api/srp), only for accounts with a [recovery email configured](https://core.telegram.org/api/srp#email-verification). + + + +### Return type: [auth.PasswordRecovery](/API_docs/types/auth.PasswordRecovery.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$auth_PasswordRecovery = $MadelineProto->auth->requestPasswordRecovery(); +``` + diff --git a/docs/API_docs/methods/auth.resendCode.md b/docs/API_docs/methods/auth.resendCode.md new file mode 100644 index 0000000000..e6fe5f11fa --- /dev/null +++ b/docs/API_docs/methods/auth.resendCode.md @@ -0,0 +1,43 @@ +--- +title: "auth.resendCode" +description: "Resend the login code via another medium, the phone code type is determined by the return value of the previous auth.sendCode/auth.resendCode: see [login](https://core.telegram.org/api/auth) for more info." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_resendCode.html +--- +# Method: auth.resendCode +[Back to methods index](index.html) + + + +Resend the login code via another medium, the phone code type is determined by the return value of the previous auth.sendCode/auth.resendCode: see [login](https://core.telegram.org/api/auth) for more info. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|phone\_number|[string](/API_docs/types/string.html) | The phone number | Optional| +|phone\_code\_hash|[string](/API_docs/types/string.html) | The phone code hash obtained from [auth.sendCode](../methods/auth.sendCode.html) | Optional| + + +### Return type: [auth.SentCode](/API_docs/types/auth.SentCode.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$auth_SentCode = $MadelineProto->auth->resendCode(phone_number: 'string', phone_code_hash: 'string', ); +``` + diff --git a/docs/API_docs/methods/auth.resetAuthorizations.md b/docs/API_docs/methods/auth.resetAuthorizations.md new file mode 100644 index 0000000000..579b39e275 --- /dev/null +++ b/docs/API_docs/methods/auth.resetAuthorizations.md @@ -0,0 +1,39 @@ +--- +title: "auth.resetAuthorizations" +description: "Terminates all user's authorized sessions except for the current one." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_resetAuthorizations.html +--- +# Method: auth.resetAuthorizations +[Back to methods index](index.html) + + + +Terminates all user's authorized sessions except for the current one. + +After calling this method it is necessary to reregister the current device using the method [account.registerDevice](../methods/account.registerDevice.html) + + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->auth->resetAuthorizations(); +``` + diff --git a/docs/API_docs/methods/auth.resetLoginEmail.md b/docs/API_docs/methods/auth.resetLoginEmail.md new file mode 100644 index 0000000000..380c656590 --- /dev/null +++ b/docs/API_docs/methods/auth.resetLoginEmail.md @@ -0,0 +1,43 @@ +--- +title: "auth.resetLoginEmail" +description: "Reset the [login email »](https://core.telegram.org/api/auth#email-verification)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_resetLoginEmail.html +--- +# Method: auth.resetLoginEmail +[Back to methods index](index.html) + + + +Reset the [login email »](https://core.telegram.org/api/auth#email-verification). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|phone\_number|[string](/API_docs/types/string.html) | Phone number of the account | Optional| +|phone\_code\_hash|[string](/API_docs/types/string.html) | Phone code hash, obtained as described in the [documentation »](https://core.telegram.org/api/auth) | Optional| + + +### Return type: [auth.SentCode](/API_docs/types/auth.SentCode.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$auth_SentCode = $MadelineProto->auth->resetLoginEmail(phone_number: 'string', phone_code_hash: 'string', ); +``` + diff --git a/docs/API_docs/methods/auth.sendCode.md b/docs/API_docs/methods/auth.sendCode.md new file mode 100644 index 0000000000..c3d31dd4b5 --- /dev/null +++ b/docs/API_docs/methods/auth.sendCode.md @@ -0,0 +1,45 @@ +--- +title: "auth.sendCode" +description: "You cannot use this method directly, use the phoneLogin method instead (see https://docs.madelineproto.xyz for more info)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_sendCode.html +--- +# Method: auth.sendCode +[Back to methods index](index.html) + + + +You cannot use this method directly, use the phoneLogin method instead (see https://docs.madelineproto.xyz for more info) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|phone\_number|[string](/API_docs/types/string.html) | Phone number in international format | Optional| +|api\_id|[int](/API_docs/types/int.html) | Application identifier (see [App configuration](https://core.telegram.org/myapp)) | Optional| +|api\_hash|[string](/API_docs/types/string.html) | Application secret hash (see [App configuration](https://core.telegram.org/myapp)) | Optional| +|settings|[CodeSettings](/API_docs/types/CodeSettings.html) | Settings for the code type to send | Yes| + + +### Return type: [auth.SentCode](/API_docs/types/auth.SentCode.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$auth_SentCode = $MadelineProto->auth->sendCode(phone_number: 'string', api_id: $int, api_hash: 'string', settings: $CodeSettings, ); +``` + diff --git a/docs/API_docs/methods/auth.signIn.md b/docs/API_docs/methods/auth.signIn.md new file mode 100644 index 0000000000..7200736e77 --- /dev/null +++ b/docs/API_docs/methods/auth.signIn.md @@ -0,0 +1,45 @@ +--- +title: "auth.signIn" +description: "You cannot use this method directly, use the completePhoneLogin method instead (see https://docs.madelineproto.xyz for more info)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_signIn.html +--- +# Method: auth.signIn +[Back to methods index](index.html) + + + +You cannot use this method directly, use the completePhoneLogin method instead (see https://docs.madelineproto.xyz for more info) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|phone\_number|[string](/API_docs/types/string.html) | Phone number in the international format | Optional| +|phone\_code\_hash|[string](/API_docs/types/string.html) | SMS-message ID, obtained from [auth.sendCode](../methods/auth.sendCode.html) | Optional| +|phone\_code|[string](/API_docs/types/string.html) | Valid numerical code from the SMS-message | Optional| +|email\_verification|[EmailVerification](/API_docs/types/EmailVerification.html) | Email verification code or token | Optional| + + +### Return type: [auth.Authorization](/API_docs/types/auth.Authorization.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$auth_Authorization = $MadelineProto->auth->signIn(phone_number: 'string', phone_code_hash: 'string', phone_code: 'string', email_verification: $EmailVerification, ); +``` + diff --git a/docs/API_docs/methods/auth.signUp.md b/docs/API_docs/methods/auth.signUp.md new file mode 100644 index 0000000000..1f4236a660 --- /dev/null +++ b/docs/API_docs/methods/auth.signUp.md @@ -0,0 +1,46 @@ +--- +title: "auth.signUp" +description: "You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/auth_signUp.html +--- +# Method: auth.signUp +[Back to methods index](index.html) + + + +You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|no\_joined\_notifications|[Bool](/API_docs/types/Bool.html) | | Optional| +|phone\_number|[string](/API_docs/types/string.html) | Phone number in the international format | Optional| +|phone\_code\_hash|[string](/API_docs/types/string.html) | SMS-message ID | Optional| +|first\_name|[string](/API_docs/types/string.html) | New user first name | Optional| +|last\_name|[string](/API_docs/types/string.html) | New user last name | Optional| + + +### Return type: [auth.Authorization](/API_docs/types/auth.Authorization.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$auth_Authorization = $MadelineProto->auth->signUp(no_joined_notifications: $Bool, phone_number: 'string', phone_code_hash: 'string', first_name: 'string', last_name: 'string', ); +``` + diff --git a/docs/API_docs/methods/bots.allowSendMessage.md b/docs/API_docs/methods/bots.allowSendMessage.md new file mode 100644 index 0000000000..0ba59a00dc --- /dev/null +++ b/docs/API_docs/methods/bots.allowSendMessage.md @@ -0,0 +1,42 @@ +--- +title: "bots.allowSendMessage" +description: "Allow the specified bot to send us messages" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/bots_allowSendMessage.html +--- +# Method: bots.allowSendMessage +[Back to methods index](index.html) + + + +Allow the specified bot to send us messages + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|bot|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | The bot | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->bots->allowSendMessage(bot: $InputUser, ); +``` + diff --git a/docs/API_docs/methods/bots.answerWebhookJSONQuery.md b/docs/API_docs/methods/bots.answerWebhookJSONQuery.md new file mode 100644 index 0000000000..961d4c50e9 --- /dev/null +++ b/docs/API_docs/methods/bots.answerWebhookJSONQuery.md @@ -0,0 +1,43 @@ +--- +title: "bots.answerWebhookJSONQuery" +description: "Answers a custom query; for bots only" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/bots_answerWebhookJSONQuery.html +--- +# Method: bots.answerWebhookJSONQuery +[Back to methods index](index.html) + + + +Answers a custom query; for bots only + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|query\_id|[long](/API_docs/types/long.html) | Identifier of a custom query | Yes| +|data|[DataJSON](/API_docs/types/DataJSON.html) | JSON-serialized answer to the query | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->bots->answerWebhookJSONQuery(query_id: $long, data: $DataJSON, ); +``` + diff --git a/docs/API_docs/methods/bots.canSendMessage.md b/docs/API_docs/methods/bots.canSendMessage.md new file mode 100644 index 0000000000..9e65c1ff77 --- /dev/null +++ b/docs/API_docs/methods/bots.canSendMessage.md @@ -0,0 +1,42 @@ +--- +title: "bots.canSendMessage" +description: "Check whether the specified bot can send us messages" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/bots_canSendMessage.html +--- +# Method: bots.canSendMessage +[Back to methods index](index.html) + + + +Check whether the specified bot can send us messages + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|bot|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | The bot | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->bots->canSendMessage(bot: $InputUser, ); +``` + diff --git a/docs/API_docs/methods/bots.getBotCommands.md b/docs/API_docs/methods/bots.getBotCommands.md new file mode 100644 index 0000000000..10115b2b1f --- /dev/null +++ b/docs/API_docs/methods/bots.getBotCommands.md @@ -0,0 +1,43 @@ +--- +title: "bots.getBotCommands" +description: "Obtain a list of bot commands for the specified bot scope and language code" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/bots_getBotCommands.html +--- +# Method: bots.getBotCommands +[Back to methods index](index.html) + + + +Obtain a list of bot commands for the specified bot scope and language code + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|scope|[BotCommandScope](/API_docs/types/BotCommandScope.html) | Command scope | Yes| +|lang\_code|[string](/API_docs/types/string.html) | Language code | Optional| + + +### Return type: [Vector\_of\_BotCommand](/API_docs/types/BotCommand.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_BotCommand = $MadelineProto->bots->getBotCommands(scope: $BotCommandScope, lang_code: 'string', ); +``` + diff --git a/docs/API_docs/methods/bots.getBotInfo.md b/docs/API_docs/methods/bots.getBotInfo.md new file mode 100644 index 0000000000..1cd305ed26 --- /dev/null +++ b/docs/API_docs/methods/bots.getBotInfo.md @@ -0,0 +1,43 @@ +--- +title: "bots.getBotInfo" +description: "Get localized name, about text and description of a bot (or of the current account, if called by a bot)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/bots_getBotInfo.html +--- +# Method: bots.getBotInfo +[Back to methods index](index.html) + + + +Get localized name, about text and description of a bot (or of the current account, if called by a bot). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|bot|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | If called by a user, **must** contain the peer of a bot we own. | Optional| +|lang\_code|[string](/API_docs/types/string.html) | Language code, if left empty this method will return the fallback about text and description. | Optional| + + +### Return type: [bots.BotInfo](/API_docs/types/bots.BotInfo.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$bots_BotInfo = $MadelineProto->bots->getBotInfo(bot: $InputUser, lang_code: 'string', ); +``` + diff --git a/docs/API_docs/methods/bots.getBotMenuButton.md b/docs/API_docs/methods/bots.getBotMenuButton.md new file mode 100644 index 0000000000..47f8c1266c --- /dev/null +++ b/docs/API_docs/methods/bots.getBotMenuButton.md @@ -0,0 +1,42 @@ +--- +title: "bots.getBotMenuButton" +description: "Gets the menu button action for a given user or for all users, previously set using [bots.setBotMenuButton](../methods/bots.setBotMenuButton.html); users can see this information in the [botInfo](../constructors/botInfo.html) constructor." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/bots_getBotMenuButton.html +--- +# Method: bots.getBotMenuButton +[Back to methods index](index.html) + + + +Gets the menu button action for a given user or for all users, previously set using [bots.setBotMenuButton](../methods/bots.setBotMenuButton.html); users can see this information in the [botInfo](../constructors/botInfo.html) constructor. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | User ID or empty for the default menu button. | Optional| + + +### Return type: [BotMenuButton](/API_docs/types/BotMenuButton.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$BotMenuButton = $MadelineProto->bots->getBotMenuButton(user_id: $InputUser, ); +``` + diff --git a/docs/API_docs/methods/bots.invokeWebViewCustomMethod.md b/docs/API_docs/methods/bots.invokeWebViewCustomMethod.md new file mode 100644 index 0000000000..e77be463b3 --- /dev/null +++ b/docs/API_docs/methods/bots.invokeWebViewCustomMethod.md @@ -0,0 +1,46 @@ +--- +title: "bots.invokeWebViewCustomMethod" +description: "Send a custom request from a [mini bot app](https://core.telegram.org/api/bots/webapps), triggered by a [web\_app\_invoke\_custom\_method event »](https://core.telegram.org/api/web-events#web-app-invoke-custom-method)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/bots_invokeWebViewCustomMethod.html +--- +# Method: bots.invokeWebViewCustomMethod +[Back to methods index](index.html) + + + +Send a custom request from a [mini bot app](https://core.telegram.org/api/bots/webapps), triggered by a [web\_app\_invoke\_custom\_method event »](https://core.telegram.org/api/web-events#web-app-invoke-custom-method). + +The response should be sent using a [custom\_method\_invoked](https://core.telegram.org/api/bots/webapps#custom-method-invoked) event, [see here »](https://core.telegram.org/api/web-events#web-app-invoke-custom-method) for more info on the flow. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|bot|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Identifier of the bot associated to the [mini bot app](https://core.telegram.org/api/bots/webapps) | Optional| +|custom\_method|[string](/API_docs/types/string.html) | Identifier of the custom method to invoke | Optional| +|params|[DataJSON](/API_docs/types/DataJSON.html) | Method parameters | Yes| + + +### Return type: [DataJSON](/API_docs/types/DataJSON.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$DataJSON = $MadelineProto->bots->invokeWebViewCustomMethod(bot: $InputUser, custom_method: 'string', params: $DataJSON, ); +``` + diff --git a/docs/API_docs/methods/bots.reorderUsernames.md b/docs/API_docs/methods/bots.reorderUsernames.md new file mode 100644 index 0000000000..d8e65c791e --- /dev/null +++ b/docs/API_docs/methods/bots.reorderUsernames.md @@ -0,0 +1,43 @@ +--- +title: "bots.reorderUsernames" +description: "Reorder usernames associated to a bot we own." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/bots_reorderUsernames.html +--- +# Method: bots.reorderUsernames +[Back to methods index](index.html) + + + +Reorder usernames associated to a bot we own. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|bot|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | The bot | Optional| +|order|Array of [string](/API_docs/types/string.html) | The new order for active usernames. All active usernames must be specified. | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->bots->reorderUsernames(bot: $InputUser, order: ['string', 'string'], ); +``` + diff --git a/docs/API_docs/methods/bots.resetBotCommands.md b/docs/API_docs/methods/bots.resetBotCommands.md new file mode 100644 index 0000000000..496c3431a9 --- /dev/null +++ b/docs/API_docs/methods/bots.resetBotCommands.md @@ -0,0 +1,43 @@ +--- +title: "bots.resetBotCommands" +description: "Clear bot commands for the specified bot scope and language code" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/bots_resetBotCommands.html +--- +# Method: bots.resetBotCommands +[Back to methods index](index.html) + + + +Clear bot commands for the specified bot scope and language code + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|scope|[BotCommandScope](/API_docs/types/BotCommandScope.html) | Command scope | Yes| +|lang\_code|[string](/API_docs/types/string.html) | Language code | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->bots->resetBotCommands(scope: $BotCommandScope, lang_code: 'string', ); +``` + diff --git a/docs/API_docs/methods/bots.sendCustomRequest.md b/docs/API_docs/methods/bots.sendCustomRequest.md new file mode 100644 index 0000000000..dcc5c94409 --- /dev/null +++ b/docs/API_docs/methods/bots.sendCustomRequest.md @@ -0,0 +1,43 @@ +--- +title: "bots.sendCustomRequest" +description: "Sends a custom request; for bots only" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/bots_sendCustomRequest.html +--- +# Method: bots.sendCustomRequest +[Back to methods index](index.html) + + + +Sends a custom request; for bots only + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|custom\_method|[string](/API_docs/types/string.html) | The method name | Optional| +|params|[DataJSON](/API_docs/types/DataJSON.html) | JSON-serialized method parameters | Yes| + + +### Return type: [DataJSON](/API_docs/types/DataJSON.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$DataJSON = $MadelineProto->bots->sendCustomRequest(custom_method: 'string', params: $DataJSON, ); +``` + diff --git a/docs/API_docs/methods/bots.setBotBroadcastDefaultAdminRights.md b/docs/API_docs/methods/bots.setBotBroadcastDefaultAdminRights.md new file mode 100644 index 0000000000..73f8386587 --- /dev/null +++ b/docs/API_docs/methods/bots.setBotBroadcastDefaultAdminRights.md @@ -0,0 +1,42 @@ +--- +title: "bots.setBotBroadcastDefaultAdminRights" +description: "Set the default [suggested admin rights](https://core.telegram.org/api/rights#suggested-bot-rights) for bots being added as admins to channels, see [here for more info on how to handle them »](https://core.telegram.org/api/rights#suggested-bot-rights)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/bots_setBotBroadcastDefaultAdminRights.html +--- +# Method: bots.setBotBroadcastDefaultAdminRights +[Back to methods index](index.html) + + + +Set the default [suggested admin rights](https://core.telegram.org/api/rights#suggested-bot-rights) for bots being added as admins to channels, see [here for more info on how to handle them »](https://core.telegram.org/api/rights#suggested-bot-rights). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|admin\_rights|[ChatAdminRights](/API_docs/types/ChatAdminRights.html) | Admin rights | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->bots->setBotBroadcastDefaultAdminRights(admin_rights: $ChatAdminRights, ); +``` + diff --git a/docs/API_docs/methods/bots.setBotCommands.md b/docs/API_docs/methods/bots.setBotCommands.md new file mode 100644 index 0000000000..00b29f39de --- /dev/null +++ b/docs/API_docs/methods/bots.setBotCommands.md @@ -0,0 +1,44 @@ +--- +title: "bots.setBotCommands" +description: "Set bot command list" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/bots_setBotCommands.html +--- +# Method: bots.setBotCommands +[Back to methods index](index.html) + + + +Set bot command list + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|scope|[BotCommandScope](/API_docs/types/BotCommandScope.html) | Command scope | Yes| +|lang\_code|[string](/API_docs/types/string.html) | Language code | Optional| +|commands|Array of [BotCommand](/API_docs/types/BotCommand.html) | Bot commands | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->bots->setBotCommands(scope: $BotCommandScope, lang_code: 'string', commands: [$BotCommand, $BotCommand], ); +``` + diff --git a/docs/API_docs/methods/bots.setBotGroupDefaultAdminRights.md b/docs/API_docs/methods/bots.setBotGroupDefaultAdminRights.md new file mode 100644 index 0000000000..9e2b73ccde --- /dev/null +++ b/docs/API_docs/methods/bots.setBotGroupDefaultAdminRights.md @@ -0,0 +1,42 @@ +--- +title: "bots.setBotGroupDefaultAdminRights" +description: "Set the default [suggested admin rights](https://core.telegram.org/api/rights#suggested-bot-rights) for bots being added as admins to groups, see [here for more info on how to handle them »](https://core.telegram.org/api/rights#suggested-bot-rights)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/bots_setBotGroupDefaultAdminRights.html +--- +# Method: bots.setBotGroupDefaultAdminRights +[Back to methods index](index.html) + + + +Set the default [suggested admin rights](https://core.telegram.org/api/rights#suggested-bot-rights) for bots being added as admins to groups, see [here for more info on how to handle them »](https://core.telegram.org/api/rights#suggested-bot-rights). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|admin\_rights|[ChatAdminRights](/API_docs/types/ChatAdminRights.html) | Admin rights | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->bots->setBotGroupDefaultAdminRights(admin_rights: $ChatAdminRights, ); +``` + diff --git a/docs/API_docs/methods/bots.setBotInfo.md b/docs/API_docs/methods/bots.setBotInfo.md new file mode 100644 index 0000000000..74df18977e --- /dev/null +++ b/docs/API_docs/methods/bots.setBotInfo.md @@ -0,0 +1,46 @@ +--- +title: "bots.setBotInfo" +description: "Set localized name, about text and description of a bot (or of the current account, if called by a bot)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/bots_setBotInfo.html +--- +# Method: bots.setBotInfo +[Back to methods index](index.html) + + + +Set localized name, about text and description of a bot (or of the current account, if called by a bot). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|bot|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | If called by a user, **must** contain the peer of a bot we own. | Optional| +|lang\_code|[string](/API_docs/types/string.html) | Language code, if left empty update the fallback about text and description | Optional| +|name|[string](/API_docs/types/string.html) | New bot name | Optional| +|about|[string](/API_docs/types/string.html) | New about text | Optional| +|description|[string](/API_docs/types/string.html) | New description | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->bots->setBotInfo(bot: $InputUser, lang_code: 'string', name: 'string', about: 'string', description: 'string', ); +``` + diff --git a/docs/API_docs/methods/bots.setBotMenuButton.md b/docs/API_docs/methods/bots.setBotMenuButton.md new file mode 100644 index 0000000000..365c617cf8 --- /dev/null +++ b/docs/API_docs/methods/bots.setBotMenuButton.md @@ -0,0 +1,43 @@ +--- +title: "bots.setBotMenuButton" +description: "Sets the [menu button action »](https://core.telegram.org/api/bots/menu) for a given user or for all users" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/bots_setBotMenuButton.html +--- +# Method: bots.setBotMenuButton +[Back to methods index](index.html) + + + +Sets the [menu button action »](https://core.telegram.org/api/bots/menu) for a given user or for all users + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | User ID | Optional| +|button|[BotMenuButton](/API_docs/types/BotMenuButton.html) | Bot menu button action | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->bots->setBotMenuButton(user_id: $InputUser, button: $BotMenuButton, ); +``` + diff --git a/docs/API_docs/methods/bots.toggleUsername.md b/docs/API_docs/methods/bots.toggleUsername.md new file mode 100644 index 0000000000..a8d841b2d9 --- /dev/null +++ b/docs/API_docs/methods/bots.toggleUsername.md @@ -0,0 +1,44 @@ +--- +title: "bots.toggleUsername" +description: "Activate or deactivate a purchased [fragment.com](https://fragment.com) username associated to a bot we own." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/bots_toggleUsername.html +--- +# Method: bots.toggleUsername +[Back to methods index](index.html) + + + +Activate or deactivate a purchased [fragment.com](https://fragment.com) username associated to a bot we own. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|bot|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | The bot | Optional| +|username|[string](/API_docs/types/string.html) | Username | Optional| +|active|[Bool](/API_docs/types/Bool.html) | Whether to activate or deactivate it | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->bots->toggleUsername(bot: $InputUser, username: 'string', active: $Bool, ); +``` + diff --git a/docs/API_docs/methods/channels.checkUsername.md b/docs/API_docs/methods/channels.checkUsername.md new file mode 100644 index 0000000000..44f3041ce4 --- /dev/null +++ b/docs/API_docs/methods/channels.checkUsername.md @@ -0,0 +1,43 @@ +--- +title: "channels.checkUsername" +description: "Check if a username is free and can be assigned to a channel/supergroup" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_checkUsername.html +--- +# Method: channels.checkUsername +[Back to methods index](index.html) + + + +Check if a username is free and can be assigned to a channel/supergroup + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | The [channel/supergroup](https://core.telegram.org/api/channel) that will assigned the specified username | Optional| +|username|[string](/API_docs/types/string.html) | The username to check | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->channels->checkUsername(channel: $InputChannel, username: 'string', ); +``` + diff --git a/docs/API_docs/methods/channels.clickSponsoredMessage.md b/docs/API_docs/methods/channels.clickSponsoredMessage.md new file mode 100644 index 0000000000..96943491d5 --- /dev/null +++ b/docs/API_docs/methods/channels.clickSponsoredMessage.md @@ -0,0 +1,46 @@ +--- +title: "channels.clickSponsoredMessage" +description: "Informs the server that the user has either" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_clickSponsoredMessage.html +--- +# Method: channels.clickSponsoredMessage +[Back to methods index](index.html) + + + +Informs the server that the user has either: + +- Clicked on a link in the sponsored message +- Has opened a sponsored chat or a sponsored website via the associated button +- Has opened the sponsored chat via the sponsored message name, the sponsored message photo, or a mention in the sponsored message + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Channel where the sponsored message was posted | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->channels->clickSponsoredMessage(channel: $InputChannel, ); +``` + diff --git a/docs/API_docs/methods/channels.convertToGigagroup.md b/docs/API_docs/methods/channels.convertToGigagroup.md new file mode 100644 index 0000000000..a851a2c30e --- /dev/null +++ b/docs/API_docs/methods/channels.convertToGigagroup.md @@ -0,0 +1,42 @@ +--- +title: "channels.convertToGigagroup" +description: "Convert a [supergroup](https://core.telegram.org/api/channel) to a [gigagroup](https://core.telegram.org/api/channel), when requested by [channel suggestions](https://core.telegram.org/api/config#channel-suggestions)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_convertToGigagroup.html +--- +# Method: channels.convertToGigagroup +[Back to methods index](index.html) + + + +Convert a [supergroup](https://core.telegram.org/api/channel) to a [gigagroup](https://core.telegram.org/api/channel), when requested by [channel suggestions](https://core.telegram.org/api/config#channel-suggestions). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | The [supergroup](https://core.telegram.org/api/channel) to convert | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->convertToGigagroup(channel: $InputChannel, ); +``` + diff --git a/docs/API_docs/methods/channels.createChannel.md b/docs/API_docs/methods/channels.createChannel.md new file mode 100644 index 0000000000..e34b62984a --- /dev/null +++ b/docs/API_docs/methods/channels.createChannel.md @@ -0,0 +1,50 @@ +--- +title: "channels.createChannel" +description: "Create a [supergroup/channel](https://core.telegram.org/api/channel)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_createChannel.html +--- +# Method: channels.createChannel +[Back to methods index](index.html) + + + +Create a [supergroup/channel](https://core.telegram.org/api/channel). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|broadcast|[Bool](/API_docs/types/Bool.html) | Whether to create a [channel](https://core.telegram.org/api/channel) | Optional| +|megagroup|[Bool](/API_docs/types/Bool.html) | Whether to create a [supergroup](https://core.telegram.org/api/channel) | Optional| +|for\_import|[Bool](/API_docs/types/Bool.html) | Whether the supergroup is being created to import messages from a foreign chat service using [messages.initHistoryImport](../methods/messages.initHistoryImport.html) | Optional| +|forum|[Bool](/API_docs/types/Bool.html) | Whether to create a [forum](https://core.telegram.org/api/forum) | Optional| +|title|[string](/API_docs/types/string.html) | Channel title | Optional| +|about|[string](/API_docs/types/string.html) | Channel description | Optional| +|geo\_point|[InputGeoPoint](/API_docs/types/InputGeoPoint.html) | Geogroup location, see [here »](https://core.telegram.org/api/nearby) for more info on geogroups. | Optional| +|address|[string](/API_docs/types/string.html) | Geogroup address, see [here »](https://core.telegram.org/api/nearby) for more info on geogroups. | Optional| +|ttl\_period|[int](/API_docs/types/int.html) | Time-to-live of all messages that will be sent in the supergroup: once message.date+message.ttl\_period === time(), the message will be deleted on the server, and must be deleted locally as well. You can use [messages.setDefaultHistoryTTL](../methods/messages.setDefaultHistoryTTL.html) to edit this value later. | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->createChannel(broadcast: $Bool, megagroup: $Bool, for_import: $Bool, forum: $Bool, title: 'string', about: 'string', geo_point: $InputGeoPoint, address: 'string', ttl_period: $int, ); +``` + diff --git a/docs/API_docs/methods/channels.createForumTopic.md b/docs/API_docs/methods/channels.createForumTopic.md new file mode 100644 index 0000000000..e3bce1c936 --- /dev/null +++ b/docs/API_docs/methods/channels.createForumTopic.md @@ -0,0 +1,46 @@ +--- +title: "channels.createForumTopic" +description: "Create a [forum topic](https://core.telegram.org/api/forum); requires [`manage_topics` rights](https://core.telegram.org/api/rights)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_createForumTopic.html +--- +# Method: channels.createForumTopic +[Back to methods index](index.html) + + + +Create a [forum topic](https://core.telegram.org/api/forum); requires [`manage_topics` rights](https://core.telegram.org/api/rights). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | [The forum](https://core.telegram.org/api/forum) | Optional| +|title|[string](/API_docs/types/string.html) | Topic title (maximum UTF-8 length: 128) | Optional| +|icon\_color|[int](/API_docs/types/int.html) | If no custom emoji icon is specified, specifies the color of the fallback topic icon (RGB), one of `0x6FB9F0`, `0xFFD67E`, `0xCB86DB`, `0x8EEE98`, `0xFF93B2`, or `0xFB6F5F`. | Optional| +|icon\_emoji\_id|[long](/API_docs/types/long.html) | ID of the [custom emoji](https://core.telegram.org/api/custom-emoji) used as topic icon. [Telegram Premium](https://core.telegram.org/api/premium) users can use any custom emoji, other users can only use the custom emojis contained in the [inputStickerSetEmojiDefaultTopicIcons](../constructors/inputStickerSetEmojiDefaultTopicIcons.html) emoji pack. | Optional| +|send\_as|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Create the topic as the specified peer | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->createForumTopic(channel: $InputChannel, title: 'string', icon_color: $int, icon_emoji_id: $long, send_as: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/channels.deactivateAllUsernames.md b/docs/API_docs/methods/channels.deactivateAllUsernames.md new file mode 100644 index 0000000000..962e6ad099 --- /dev/null +++ b/docs/API_docs/methods/channels.deactivateAllUsernames.md @@ -0,0 +1,42 @@ +--- +title: "channels.deactivateAllUsernames" +description: "Disable all purchased usernames of a supergroup or channel" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_deactivateAllUsernames.html +--- +# Method: channels.deactivateAllUsernames +[Back to methods index](index.html) + + + +Disable all purchased usernames of a supergroup or channel + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Supergroup or channel | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->channels->deactivateAllUsernames(channel: $InputChannel, ); +``` + diff --git a/docs/API_docs/methods/channels.deleteChannel.md b/docs/API_docs/methods/channels.deleteChannel.md new file mode 100644 index 0000000000..4e65c29619 --- /dev/null +++ b/docs/API_docs/methods/channels.deleteChannel.md @@ -0,0 +1,42 @@ +--- +title: "channels.deleteChannel" +description: "Delete a [channel/supergroup](https://core.telegram.org/api/channel)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_deleteChannel.html +--- +# Method: channels.deleteChannel +[Back to methods index](index.html) + + + +Delete a [channel/supergroup](https://core.telegram.org/api/channel) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | [Channel/supergroup](https://core.telegram.org/api/channel) to delete | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->deleteChannel(channel: $InputChannel, ); +``` + diff --git a/docs/API_docs/methods/channels.deleteHistory.md b/docs/API_docs/methods/channels.deleteHistory.md new file mode 100644 index 0000000000..c60a389473 --- /dev/null +++ b/docs/API_docs/methods/channels.deleteHistory.md @@ -0,0 +1,44 @@ +--- +title: "channels.deleteHistory" +description: "Delete the history of a [supergroup](https://core.telegram.org/api/channel)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_deleteHistory.html +--- +# Method: channels.deleteHistory +[Back to methods index](index.html) + + + +Delete the history of a [supergroup](https://core.telegram.org/api/channel) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|for\_everyone|[Bool](/API_docs/types/Bool.html) | Whether the history should be deleted for everyone | Optional| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | [Supergroup](https://core.telegram.org/api/channel) whose history must be deleted | Optional| +|max\_id|[int](/API_docs/types/int.html) | ID of message **up to which** the history must be deleted | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->deleteHistory(for_everyone: $Bool, channel: $InputChannel, max_id: $int, ); +``` + diff --git a/docs/API_docs/methods/channels.deleteMessages.md b/docs/API_docs/methods/channels.deleteMessages.md new file mode 100644 index 0000000000..747a9e19d5 --- /dev/null +++ b/docs/API_docs/methods/channels.deleteMessages.md @@ -0,0 +1,43 @@ +--- +title: "channels.deleteMessages" +description: "Delete messages in a [channel/supergroup](https://core.telegram.org/api/channel)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_deleteMessages.html +--- +# Method: channels.deleteMessages +[Back to methods index](index.html) + + + +Delete messages in a [channel/supergroup](https://core.telegram.org/api/channel) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | [Channel/supergroup](https://core.telegram.org/api/channel) | Optional| +|id|Array of [int](/API_docs/types/int.html) | IDs of messages to delete | Yes| + + +### Return type: [messages.AffectedMessages](/API_docs/types/messages.AffectedMessages.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_AffectedMessages = $MadelineProto->channels->deleteMessages(channel: $InputChannel, id: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/channels.deleteParticipantHistory.md b/docs/API_docs/methods/channels.deleteParticipantHistory.md new file mode 100644 index 0000000000..f9790ffbc8 --- /dev/null +++ b/docs/API_docs/methods/channels.deleteParticipantHistory.md @@ -0,0 +1,43 @@ +--- +title: "channels.deleteParticipantHistory" +description: "Delete all messages sent by a specific participant of a given supergroup" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_deleteParticipantHistory.html +--- +# Method: channels.deleteParticipantHistory +[Back to methods index](index.html) + + + +Delete all messages sent by a specific participant of a given supergroup + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Supergroup | Optional| +|participant|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The participant whose messages should be deleted | Optional| + + +### Return type: [messages.AffectedHistory](/API_docs/types/messages.AffectedHistory.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_AffectedHistory = $MadelineProto->channels->deleteParticipantHistory(channel: $InputChannel, participant: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/channels.deleteTopicHistory.md b/docs/API_docs/methods/channels.deleteTopicHistory.md new file mode 100644 index 0000000000..525af6c037 --- /dev/null +++ b/docs/API_docs/methods/channels.deleteTopicHistory.md @@ -0,0 +1,43 @@ +--- +title: "channels.deleteTopicHistory" +description: "Delete message history of a [forum topic](https://core.telegram.org/api/forum)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_deleteTopicHistory.html +--- +# Method: channels.deleteTopicHistory +[Back to methods index](index.html) + + + +Delete message history of a [forum topic](https://core.telegram.org/api/forum) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Forum | Optional| +|top\_msg\_id|[int](/API_docs/types/int.html) | Topic ID | Optional| + + +### Return type: [messages.AffectedHistory](/API_docs/types/messages.AffectedHistory.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_AffectedHistory = $MadelineProto->channels->deleteTopicHistory(channel: $InputChannel, top_msg_id: $int, ); +``` + diff --git a/docs/API_docs/methods/channels.editAdmin.md b/docs/API_docs/methods/channels.editAdmin.md new file mode 100644 index 0000000000..faeb421b74 --- /dev/null +++ b/docs/API_docs/methods/channels.editAdmin.md @@ -0,0 +1,45 @@ +--- +title: "channels.editAdmin" +description: "Modify the admin rights of a user in a [supergroup/channel](https://core.telegram.org/api/channel)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_editAdmin.html +--- +# Method: channels.editAdmin +[Back to methods index](index.html) + + + +Modify the admin rights of a user in a [supergroup/channel](https://core.telegram.org/api/channel). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | The [supergroup/channel](https://core.telegram.org/api/channel). | Optional| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | The ID of the user whose admin rights should be modified | Optional| +|admin\_rights|[ChatAdminRights](/API_docs/types/ChatAdminRights.html) | The admin rights | Yes| +|rank|[string](/API_docs/types/string.html) | Indicates the role (rank) of the admin in the group: just an arbitrary string | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->editAdmin(channel: $InputChannel, user_id: $InputUser, admin_rights: $ChatAdminRights, rank: 'string', ); +``` + diff --git a/docs/API_docs/methods/channels.editBanned.md b/docs/API_docs/methods/channels.editBanned.md new file mode 100644 index 0000000000..e4d58c9224 --- /dev/null +++ b/docs/API_docs/methods/channels.editBanned.md @@ -0,0 +1,44 @@ +--- +title: "channels.editBanned" +description: "Ban/unban/kick a user in a [supergroup/channel](https://core.telegram.org/api/channel)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_editBanned.html +--- +# Method: channels.editBanned +[Back to methods index](index.html) + + + +Ban/unban/kick a user in a [supergroup/channel](https://core.telegram.org/api/channel). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | The [supergroup/channel](https://core.telegram.org/api/channel). | Optional| +|participant|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Participant to ban | Optional| +|banned\_rights|[ChatBannedRights](/API_docs/types/ChatBannedRights.html) | The banned rights | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->editBanned(channel: $InputChannel, participant: $InputPeer, banned_rights: $ChatBannedRights, ); +``` + diff --git a/docs/API_docs/methods/channels.editCreator.md b/docs/API_docs/methods/channels.editCreator.md new file mode 100644 index 0000000000..faa1c36923 --- /dev/null +++ b/docs/API_docs/methods/channels.editCreator.md @@ -0,0 +1,44 @@ +--- +title: "channels.editCreator" +description: "Transfer channel ownership" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_editCreator.html +--- +# Method: channels.editCreator +[Back to methods index](index.html) + + + +Transfer channel ownership + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Channel | Optional| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | New channel owner | Optional| +|password|[InputCheckPasswordSRP](/API_docs/types/InputCheckPasswordSRP.html) | [2FA password](https://core.telegram.org/api/srp) of account | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->editCreator(channel: $InputChannel, user_id: $InputUser, password: $InputCheckPasswordSRP, ); +``` + diff --git a/docs/API_docs/methods/channels.editForumTopic.md b/docs/API_docs/methods/channels.editForumTopic.md new file mode 100644 index 0000000000..1e9ea5c4e4 --- /dev/null +++ b/docs/API_docs/methods/channels.editForumTopic.md @@ -0,0 +1,47 @@ +--- +title: "channels.editForumTopic" +description: "Edit [forum topic](https://core.telegram.org/api/forum); requires [`manage_topics` rights](https://core.telegram.org/api/rights)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_editForumTopic.html +--- +# Method: channels.editForumTopic +[Back to methods index](index.html) + + + +Edit [forum topic](https://core.telegram.org/api/forum); requires [`manage_topics` rights](https://core.telegram.org/api/rights). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Supergroup | Optional| +|topic\_id|[int](/API_docs/types/int.html) | Topic ID | Optional| +|title|[string](/API_docs/types/string.html) | If present, will update the topic title (maximum UTF-8 length: 128). | Optional| +|icon\_emoji\_id|[long](/API_docs/types/long.html) | If present, updates the [custom emoji](https://core.telegram.org/api/custom-emoji) used as topic icon. [Telegram Premium](https://core.telegram.org/api/premium) users can use any custom emoji, other users can only use the custom emojis contained in the [inputStickerSetEmojiDefaultTopicIcons](../constructors/inputStickerSetEmojiDefaultTopicIcons.html) emoji pack. Pass 0 to switch to the fallback topic icon. | Optional| +|closed|[Bool](/API_docs/types/Bool.html) | If present, will update the open/closed status of the topic. | Optional| +|hidden|[Bool](/API_docs/types/Bool.html) | If present, will hide/unhide the topic (only valid for the "General" topic, `id=1`). | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->editForumTopic(channel: $InputChannel, topic_id: $int, title: 'string', icon_emoji_id: $long, closed: $Bool, hidden: $Bool, ); +``` + diff --git a/docs/API_docs/methods/channels.editLocation.md b/docs/API_docs/methods/channels.editLocation.md new file mode 100644 index 0000000000..c5614b769f --- /dev/null +++ b/docs/API_docs/methods/channels.editLocation.md @@ -0,0 +1,44 @@ +--- +title: "channels.editLocation" +description: "Edit location of geogroup, see [here »](https://core.telegram.org/api/nearby) for more info on geogroups." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_editLocation.html +--- +# Method: channels.editLocation +[Back to methods index](index.html) + + + +Edit location of geogroup, see [here »](https://core.telegram.org/api/nearby) for more info on geogroups. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | [Geogroup](https://core.telegram.org/api/channel) | Optional| +|geo\_point|[InputGeoPoint](/API_docs/types/InputGeoPoint.html) | New geolocation | Optional| +|address|[string](/API_docs/types/string.html) | Address string | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->channels->editLocation(channel: $InputChannel, geo_point: $InputGeoPoint, address: 'string', ); +``` + diff --git a/docs/API_docs/methods/channels.editPhoto.md b/docs/API_docs/methods/channels.editPhoto.md new file mode 100644 index 0000000000..157615f935 --- /dev/null +++ b/docs/API_docs/methods/channels.editPhoto.md @@ -0,0 +1,43 @@ +--- +title: "channels.editPhoto" +description: "Change the photo of a [channel/supergroup](https://core.telegram.org/api/channel)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_editPhoto.html +--- +# Method: channels.editPhoto +[Back to methods index](index.html) + + + +Change the photo of a [channel/supergroup](https://core.telegram.org/api/channel) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Channel/supergroup whose photo should be edited | Optional| +|photo|[InputChatPhoto](/API_docs/types/InputChatPhoto.html) | New photo | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->editPhoto(channel: $InputChannel, photo: $InputChatPhoto, ); +``` + diff --git a/docs/API_docs/methods/channels.editTitle.md b/docs/API_docs/methods/channels.editTitle.md new file mode 100644 index 0000000000..7f98dace3a --- /dev/null +++ b/docs/API_docs/methods/channels.editTitle.md @@ -0,0 +1,43 @@ +--- +title: "channels.editTitle" +description: "Edit the name of a [channel/supergroup](https://core.telegram.org/api/channel)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_editTitle.html +--- +# Method: channels.editTitle +[Back to methods index](index.html) + + + +Edit the name of a [channel/supergroup](https://core.telegram.org/api/channel) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Channel/supergroup | Optional| +|title|[string](/API_docs/types/string.html) | New name | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->editTitle(channel: $InputChannel, title: 'string', ); +``` + diff --git a/docs/API_docs/methods/channels.exportMessageLink.md b/docs/API_docs/methods/channels.exportMessageLink.md new file mode 100644 index 0000000000..fb0a3480a0 --- /dev/null +++ b/docs/API_docs/methods/channels.exportMessageLink.md @@ -0,0 +1,45 @@ +--- +title: "channels.exportMessageLink" +description: "Get link and embed info of a message in a [channel/supergroup](https://core.telegram.org/api/channel)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_exportMessageLink.html +--- +# Method: channels.exportMessageLink +[Back to methods index](index.html) + + + +Get link and embed info of a message in a [channel/supergroup](https://core.telegram.org/api/channel) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|grouped|[Bool](/API_docs/types/Bool.html) | Whether to include other grouped media (for albums) | Optional| +|thread|[Bool](/API_docs/types/Bool.html) | Whether to also include a thread ID, if available, inside of the link | Optional| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Channel | Optional| +|id|[int](/API_docs/types/int.html) | Message ID | Optional| + + +### Return type: [ExportedMessageLink](/API_docs/types/ExportedMessageLink.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$ExportedMessageLink = $MadelineProto->channels->exportMessageLink(grouped: $Bool, thread: $Bool, channel: $InputChannel, id: $int, ); +``` + diff --git a/docs/API_docs/methods/channels.getAdminLog.md b/docs/API_docs/methods/channels.getAdminLog.md new file mode 100644 index 0000000000..5f99eab35f --- /dev/null +++ b/docs/API_docs/methods/channels.getAdminLog.md @@ -0,0 +1,48 @@ +--- +title: "channels.getAdminLog" +description: "Get the admin log of a [channel/supergroup](https://core.telegram.org/api/channel)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_getAdminLog.html +--- +# Method: channels.getAdminLog +[Back to methods index](index.html) + + + +Get the admin log of a [channel/supergroup](https://core.telegram.org/api/channel) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Channel | Optional| +|q|[string](/API_docs/types/string.html) | Search query, can be empty | Optional| +|events\_filter|[ChannelAdminLogEventsFilter](/API_docs/types/ChannelAdminLogEventsFilter.html) | Event filter | Optional| +|admins|Array of [Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Only show events from these admins | Optional| +|max\_id|[long](/API_docs/types/long.html) | Maximum ID of message to return (see [pagination](https://core.telegram.org/api/offsets)) | Yes| +|min\_id|[long](/API_docs/types/long.html) | Minimum ID of message to return (see [pagination](https://core.telegram.org/api/offsets)) | Yes| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [channels.AdminLogResults](/API_docs/types/channels.AdminLogResults.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$channels_AdminLogResults = $MadelineProto->channels->getAdminLog(channel: $InputChannel, q: 'string', events_filter: $ChannelAdminLogEventsFilter, admins: [$InputUser, $InputUser], max_id: $long, min_id: $long, limit: $int, ); +``` + diff --git a/docs/API_docs/methods/channels.getAdminedPublicChannels.md b/docs/API_docs/methods/channels.getAdminedPublicChannels.md new file mode 100644 index 0000000000..e240a9bd01 --- /dev/null +++ b/docs/API_docs/methods/channels.getAdminedPublicChannels.md @@ -0,0 +1,44 @@ +--- +title: "channels.getAdminedPublicChannels" +description: "Get [channels/supergroups/geogroups](https://core.telegram.org/api/channel) we're admin in. Usually called when the user exceeds the [limit](../constructors/config.html) for owned public [channels/supergroups/geogroups](https://core.telegram.org/api/channel), and the user is given the choice to remove one of his channels/supergroups/geogroups." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_getAdminedPublicChannels.html +--- +# Method: channels.getAdminedPublicChannels +[Back to methods index](index.html) + + + +Get [channels/supergroups/geogroups](https://core.telegram.org/api/channel) we're admin in. Usually called when the user exceeds the [limit](../constructors/config.html) for owned public [channels/supergroups/geogroups](https://core.telegram.org/api/channel), and the user is given the choice to remove one of his channels/supergroups/geogroups. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|by\_location|[Bool](/API_docs/types/Bool.html) | Get geogroups | Optional| +|check\_limit|[Bool](/API_docs/types/Bool.html) | If set and the user has reached the limit of owned public [channels/supergroups/geogroups](https://core.telegram.org/api/channel), instead of returning the channel list one of the specified [errors](#possible-errors) will be returned.
Useful to check if a new public channel can indeed be created, even before asking the user to enter a channel username to use in [channels.checkUsername](../methods/channels.checkUsername.html)/[channels.updateUsername](../methods/channels.updateUsername.html). | Optional| +|for\_personal|[Bool](/API_docs/types/Bool.html) | | Optional| + + +### Return type: [messages.Chats](/API_docs/types/messages.Chats.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Chats = $MadelineProto->channels->getAdminedPublicChannels(by_location: $Bool, check_limit: $Bool, for_personal: $Bool, ); +``` + diff --git a/docs/API_docs/methods/channels.getChannelRecommendations.md b/docs/API_docs/methods/channels.getChannelRecommendations.md new file mode 100644 index 0000000000..fb2750c0c8 --- /dev/null +++ b/docs/API_docs/methods/channels.getChannelRecommendations.md @@ -0,0 +1,42 @@ +--- +title: "channels.getChannelRecommendations" +description: "Obtain a list of similarly themed public channels, selected based on similarities in their **subscriber bases**." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_getChannelRecommendations.html +--- +# Method: channels.getChannelRecommendations +[Back to methods index](index.html) + + + +Obtain a list of similarly themed public channels, selected based on similarities in their **subscriber bases**. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | The method will return channels related to the passed `channel`. | Optional| + + +### Return type: [messages.Chats](/API_docs/types/messages.Chats.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Chats = $MadelineProto->channels->getChannelRecommendations(channel: $InputChannel, ); +``` + diff --git a/docs/API_docs/methods/channels.getChannels.md b/docs/API_docs/methods/channels.getChannels.md new file mode 100644 index 0000000000..2853ecd54f --- /dev/null +++ b/docs/API_docs/methods/channels.getChannels.md @@ -0,0 +1,42 @@ +--- +title: "channels.getChannels" +description: "You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_getChannels.html +--- +# Method: channels.getChannels +[Back to methods index](index.html) + + + +You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|Array of [Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | IDs of channels/supergroups to get info about | Yes| + + +### Return type: [messages.Chats](/API_docs/types/messages.Chats.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Chats = $MadelineProto->channels->getChannels(id: [$InputChannel, $InputChannel], ); +``` + diff --git a/docs/API_docs/methods/channels.getForumTopics.md b/docs/API_docs/methods/channels.getForumTopics.md new file mode 100644 index 0000000000..5b8d03ce9c --- /dev/null +++ b/docs/API_docs/methods/channels.getForumTopics.md @@ -0,0 +1,47 @@ +--- +title: "channels.getForumTopics" +description: "Get [topics of a forum](https://core.telegram.org/api/forum)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_getForumTopics.html +--- +# Method: channels.getForumTopics +[Back to methods index](index.html) + + + +Get [topics of a forum](https://core.telegram.org/api/forum) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Supergroup | Optional| +|q|[string](/API_docs/types/string.html) | Search query | Optional| +|offset\_date|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets), date of the last message of the last found topic. Use 0 or any date in the future to get results from the last topic. | Optional| +|offset\_id|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets), ID of the last message of the last found topic (or initially `0`). | Optional| +|offset\_topic|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets), ID of the last found topic (or initially `0`). | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets). For optimal performance, the number of returned topics is chosen by the server and can be smaller than the specified limit. | Optional| + + +### Return type: [messages.ForumTopics](/API_docs/types/messages.ForumTopics.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_ForumTopics = $MadelineProto->channels->getForumTopics(channel: $InputChannel, q: 'string', offset_date: $int, offset_id: $int, offset_topic: $int, limit: $int, ); +``` + diff --git a/docs/API_docs/methods/channels.getForumTopicsByID.md b/docs/API_docs/methods/channels.getForumTopicsByID.md new file mode 100644 index 0000000000..d64bf11142 --- /dev/null +++ b/docs/API_docs/methods/channels.getForumTopicsByID.md @@ -0,0 +1,43 @@ +--- +title: "channels.getForumTopicsByID" +description: "Get forum topics by their ID" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_getForumTopicsByID.html +--- +# Method: channels.getForumTopicsByID +[Back to methods index](index.html) + + + +Get forum topics by their ID + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Forum | Optional| +|topics|Array of [int](/API_docs/types/int.html) | Topic IDs | Yes| + + +### Return type: [messages.ForumTopics](/API_docs/types/messages.ForumTopics.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_ForumTopics = $MadelineProto->channels->getForumTopicsByID(channel: $InputChannel, topics: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/channels.getFullChannel.md b/docs/API_docs/methods/channels.getFullChannel.md new file mode 100644 index 0000000000..3188653df8 --- /dev/null +++ b/docs/API_docs/methods/channels.getFullChannel.md @@ -0,0 +1,42 @@ +--- +title: "channels.getFullChannel" +description: "You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_getFullChannel.html +--- +# Method: channels.getFullChannel +[Back to methods index](index.html) + + + +You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | The [channel](https://core.telegram.org/api/channel#channels), [supergroup](https://core.telegram.org/api/channel#supergroups) or [gigagroup](https://core.telegram.org/api/channel#gigagroups) to get info about | Optional| + + +### Return type: [messages.ChatFull](/API_docs/types/messages.ChatFull.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_ChatFull = $MadelineProto->channels->getFullChannel(channel: $InputChannel, ); +``` + diff --git a/docs/API_docs/methods/channels.getGroupsForDiscussion.md b/docs/API_docs/methods/channels.getGroupsForDiscussion.md new file mode 100644 index 0000000000..d969531535 --- /dev/null +++ b/docs/API_docs/methods/channels.getGroupsForDiscussion.md @@ -0,0 +1,40 @@ +--- +title: "channels.getGroupsForDiscussion" +description: "Get all groups that can be used as [discussion groups](https://core.telegram.org/api/discussion)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_getGroupsForDiscussion.html +--- +# Method: channels.getGroupsForDiscussion +[Back to methods index](index.html) + + + +Get all groups that can be used as [discussion groups](https://core.telegram.org/api/discussion). + +Returned [basic group chats](https://core.telegram.org/api/channel#basic-groups) must be first upgraded to [supergroups](https://core.telegram.org/api/channel#supergroups) before they can be set as a discussion group. +To set a returned supergroup as a discussion group, access to its old messages must be enabled using [channels.togglePreHistoryHidden](../methods/channels.togglePreHistoryHidden.html), first. + + + +### Return type: [messages.Chats](/API_docs/types/messages.Chats.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Chats = $MadelineProto->channels->getGroupsForDiscussion(); +``` + diff --git a/docs/API_docs/methods/channels.getInactiveChannels.md b/docs/API_docs/methods/channels.getInactiveChannels.md new file mode 100644 index 0000000000..299ff3d82e --- /dev/null +++ b/docs/API_docs/methods/channels.getInactiveChannels.md @@ -0,0 +1,37 @@ +--- +title: "channels.getInactiveChannels" +description: "Get inactive channels and supergroups" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_getInactiveChannels.html +--- +# Method: channels.getInactiveChannels +[Back to methods index](index.html) + + + +Get inactive channels and supergroups + + + +### Return type: [messages.InactiveChats](/API_docs/types/messages.InactiveChats.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_InactiveChats = $MadelineProto->channels->getInactiveChannels(); +``` + diff --git a/docs/API_docs/methods/channels.getLeftChannels.md b/docs/API_docs/methods/channels.getLeftChannels.md new file mode 100644 index 0000000000..6ff5a59878 --- /dev/null +++ b/docs/API_docs/methods/channels.getLeftChannels.md @@ -0,0 +1,42 @@ +--- +title: "channels.getLeftChannels" +description: "Get a list of [channels/supergroups](https://core.telegram.org/api/channel) we left, requires a [takeout session, see here » for more info](https://core.telegram.org/api/takeout)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_getLeftChannels.html +--- +# Method: channels.getLeftChannels +[Back to methods index](index.html) + + + +Get a list of [channels/supergroups](https://core.telegram.org/api/channel) we left, requires a [takeout session, see here » for more info](https://core.telegram.org/api/takeout). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|offset|[int](/API_docs/types/int.html) | Offset for [pagination](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [messages.Chats](/API_docs/types/messages.Chats.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Chats = $MadelineProto->channels->getLeftChannels(offset: $int, ); +``` + diff --git a/docs/API_docs/methods/channels.getMessages.md b/docs/API_docs/methods/channels.getMessages.md new file mode 100644 index 0000000000..83a34fd3d5 --- /dev/null +++ b/docs/API_docs/methods/channels.getMessages.md @@ -0,0 +1,52 @@ +--- +title: "channels.getMessages" +description: "Get [channel/supergroup](https://core.telegram.org/api/channel) messages" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_getMessages.html +--- +# Method: channels.getMessages +[Back to methods index](index.html) + + + +# Warning: flood wait +**Warning: this method is prone to rate limiting with flood waits, **which can lead to !!! ACCOUNT BANS !!!**, please use the [updates event handler, instead (which is 100% safe) »](/docs/UPDATES.html#async-event-driven)** + +# Warning: non-realtime results +**Warning: this method is not suitable for receiving messages in real-time from chats and users, please use the [updates event handler, instead »](/docs/UPDATES.html#async-event-driven)** + +# Warning: this is probably NOT what you need +You probably need to use the [updates event handler, instead »](/docs/UPDATES.html#async-event-driven) :) + +Get [channel/supergroup](https://core.telegram.org/api/channel) messages + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Channel/supergroup | Optional| +|id|Array of [Message ID or InputMessage](/API_docs/types/InputMessage.html) | IDs of messages to get | Yes| + + +### Return type: [messages.Messages](/API_docs/types/messages.Messages.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Messages = $MadelineProto->channels->getMessages(channel: $InputChannel, id: [$InputMessage, $InputMessage], ); +``` + diff --git a/docs/API_docs/methods/channels.getParticipant.md b/docs/API_docs/methods/channels.getParticipant.md new file mode 100644 index 0000000000..ab26ee63fd --- /dev/null +++ b/docs/API_docs/methods/channels.getParticipant.md @@ -0,0 +1,43 @@ +--- +title: "channels.getParticipant" +description: "Get info about a [channel/supergroup](https://core.telegram.org/api/channel) participant" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_getParticipant.html +--- +# Method: channels.getParticipant +[Back to methods index](index.html) + + + +Get info about a [channel/supergroup](https://core.telegram.org/api/channel) participant + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Channel/supergroup | Optional| +|participant|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Participant to get info about | Optional| + + +### Return type: [channels.ChannelParticipant](/API_docs/types/channels.ChannelParticipant.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$channels_ChannelParticipant = $MadelineProto->channels->getParticipant(channel: $InputChannel, participant: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/channels.getParticipants.md b/docs/API_docs/methods/channels.getParticipants.md new file mode 100644 index 0000000000..10cdf053ed --- /dev/null +++ b/docs/API_docs/methods/channels.getParticipants.md @@ -0,0 +1,46 @@ +--- +title: "channels.getParticipants" +description: "Get the participants of a [supergroup/channel](https://core.telegram.org/api/channel)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_getParticipants.html +--- +# Method: channels.getParticipants +[Back to methods index](index.html) + + + +Get the participants of a [supergroup/channel](https://core.telegram.org/api/channel) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Channel | Optional| +|filter|[ChannelParticipantsFilter](/API_docs/types/ChannelParticipantsFilter.html) | Which participant types to fetch | Yes| +|offset|[int](/API_docs/types/int.html) | [Offset](https://core.telegram.org/api/offsets) | Optional| +|limit|[int](/API_docs/types/int.html) | [Limit](https://core.telegram.org/api/offsets) | Optional| +|hash|Array of [long](/API_docs/types/long.html) | [Hash](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [channels.ChannelParticipants](/API_docs/types/channels.ChannelParticipants.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$channels_ChannelParticipants = $MadelineProto->channels->getParticipants(channel: $InputChannel, filter: $ChannelParticipantsFilter, offset: $int, limit: $int, hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/channels.getSendAs.md b/docs/API_docs/methods/channels.getSendAs.md new file mode 100644 index 0000000000..6bd65088b7 --- /dev/null +++ b/docs/API_docs/methods/channels.getSendAs.md @@ -0,0 +1,42 @@ +--- +title: "channels.getSendAs" +description: "Obtains a list of peers that can be used to send messages in a specific group" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_getSendAs.html +--- +# Method: channels.getSendAs +[Back to methods index](index.html) + + + +Obtains a list of peers that can be used to send messages in a specific group + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The group where we intend to send messages | Optional| + + +### Return type: [channels.SendAsPeers](/API_docs/types/channels.SendAsPeers.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$channels_SendAsPeers = $MadelineProto->channels->getSendAs(peer: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/channels.getSponsoredMessages.md b/docs/API_docs/methods/channels.getSponsoredMessages.md new file mode 100644 index 0000000000..2343039f98 --- /dev/null +++ b/docs/API_docs/methods/channels.getSponsoredMessages.md @@ -0,0 +1,42 @@ +--- +title: "channels.getSponsoredMessages" +description: "Get a list of sponsored messages" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_getSponsoredMessages.html +--- +# Method: channels.getSponsoredMessages +[Back to methods index](index.html) + + + +Get a list of sponsored messages + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Peer | Optional| + + +### Return type: [messages.SponsoredMessages](/API_docs/types/messages.SponsoredMessages.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_SponsoredMessages = $MadelineProto->channels->getSponsoredMessages(channel: $InputChannel, ); +``` + diff --git a/docs/API_docs/methods/channels.inviteToChannel.md b/docs/API_docs/methods/channels.inviteToChannel.md new file mode 100644 index 0000000000..59b67d66b8 --- /dev/null +++ b/docs/API_docs/methods/channels.inviteToChannel.md @@ -0,0 +1,45 @@ +--- +title: "channels.inviteToChannel" +description: "Invite users to a channel/supergroup" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_inviteToChannel.html +--- +# Method: channels.inviteToChannel +[Back to methods index](index.html) + + + +Invite users to a channel/supergroup + +May also return 0-N updates of type [updateGroupInvitePrivacyForbidden](../constructors/updateGroupInvitePrivacyForbidden.html): it indicates we couldn't add a user to a chat because of their privacy settings; if required, an [invite link](https://core.telegram.org/api/invites) can be shared with the user, instead. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Channel/supergroup | Optional| +|users|Array of [Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Users to invite | Yes| + + +### Return type: [messages.InvitedUsers](/API_docs/types/messages.InvitedUsers.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_InvitedUsers = $MadelineProto->channels->inviteToChannel(channel: $InputChannel, users: [$InputUser, $InputUser], ); +``` + diff --git a/docs/API_docs/methods/channels.joinChannel.md b/docs/API_docs/methods/channels.joinChannel.md new file mode 100644 index 0000000000..bd7065157f --- /dev/null +++ b/docs/API_docs/methods/channels.joinChannel.md @@ -0,0 +1,42 @@ +--- +title: "channels.joinChannel" +description: "Join a channel/supergroup" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_joinChannel.html +--- +# Method: channels.joinChannel +[Back to methods index](index.html) + + + +Join a channel/supergroup + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Channel/supergroup to join | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->joinChannel(channel: $InputChannel, ); +``` + diff --git a/docs/API_docs/methods/channels.leaveChannel.md b/docs/API_docs/methods/channels.leaveChannel.md new file mode 100644 index 0000000000..92a1a4f555 --- /dev/null +++ b/docs/API_docs/methods/channels.leaveChannel.md @@ -0,0 +1,42 @@ +--- +title: "channels.leaveChannel" +description: "Leave a [channel/supergroup](https://core.telegram.org/api/channel)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_leaveChannel.html +--- +# Method: channels.leaveChannel +[Back to methods index](index.html) + + + +Leave a [channel/supergroup](https://core.telegram.org/api/channel) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | [Channel/supergroup](https://core.telegram.org/api/channel) to leave | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->leaveChannel(channel: $InputChannel, ); +``` + diff --git a/docs/API_docs/methods/channels.readHistory.md b/docs/API_docs/methods/channels.readHistory.md new file mode 100644 index 0000000000..c09fabca3b --- /dev/null +++ b/docs/API_docs/methods/channels.readHistory.md @@ -0,0 +1,43 @@ +--- +title: "channels.readHistory" +description: "Mark [channel/supergroup](https://core.telegram.org/api/channel) history as read" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_readHistory.html +--- +# Method: channels.readHistory +[Back to methods index](index.html) + + + +Mark [channel/supergroup](https://core.telegram.org/api/channel) history as read + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | [Channel/supergroup](https://core.telegram.org/api/channel) | Optional| +|max\_id|[int](/API_docs/types/int.html) | ID of message up to which messages should be marked as read | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->channels->readHistory(channel: $InputChannel, max_id: $int, ); +``` + diff --git a/docs/API_docs/methods/channels.readMessageContents.md b/docs/API_docs/methods/channels.readMessageContents.md new file mode 100644 index 0000000000..85eb4b308e --- /dev/null +++ b/docs/API_docs/methods/channels.readMessageContents.md @@ -0,0 +1,43 @@ +--- +title: "channels.readMessageContents" +description: "Mark [channel/supergroup](https://core.telegram.org/api/channel) message contents as read" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_readMessageContents.html +--- +# Method: channels.readMessageContents +[Back to methods index](index.html) + + + +Mark [channel/supergroup](https://core.telegram.org/api/channel) message contents as read + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | [Channel/supergroup](https://core.telegram.org/api/channel) | Optional| +|id|Array of [int](/API_docs/types/int.html) | IDs of messages whose contents should be marked as read | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->channels->readMessageContents(channel: $InputChannel, id: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/channels.reorderPinnedForumTopics.md b/docs/API_docs/methods/channels.reorderPinnedForumTopics.md new file mode 100644 index 0000000000..89055ce274 --- /dev/null +++ b/docs/API_docs/methods/channels.reorderPinnedForumTopics.md @@ -0,0 +1,44 @@ +--- +title: "channels.reorderPinnedForumTopics" +description: "Reorder pinned forum topics" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_reorderPinnedForumTopics.html +--- +# Method: channels.reorderPinnedForumTopics +[Back to methods index](index.html) + + + +Reorder pinned forum topics + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|force|[Bool](/API_docs/types/Bool.html) | If not set, the order of only the topics present both server-side and in `order` will be changed (i.e. mentioning topics not pinned server-side in `order` will not pin them, and not mentioning topics pinned server-side will not unpin them).
If set, the entire server-side pinned topic list will be replaced with `order` (i.e. mentioning topics not pinned server-side in `order` will pin them, and not mentioning topics pinned server-side will unpin them) | Optional| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Supergroup ID | Optional| +|order|Array of [int](/API_docs/types/int.html) | [Topic IDs »](https://core.telegram.org/api/forum) | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->reorderPinnedForumTopics(force: $Bool, channel: $InputChannel, order: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/channels.reorderUsernames.md b/docs/API_docs/methods/channels.reorderUsernames.md new file mode 100644 index 0000000000..4b4035c478 --- /dev/null +++ b/docs/API_docs/methods/channels.reorderUsernames.md @@ -0,0 +1,43 @@ +--- +title: "channels.reorderUsernames" +description: "Reorder active usernames" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_reorderUsernames.html +--- +# Method: channels.reorderUsernames +[Back to methods index](index.html) + + + +Reorder active usernames + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | The supergroup or channel | Optional| +|order|Array of [string](/API_docs/types/string.html) | The new order for active usernames. All active usernames must be specified. | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->channels->reorderUsernames(channel: $InputChannel, order: ['string', 'string'], ); +``` + diff --git a/docs/API_docs/methods/channels.reportAntiSpamFalsePositive.md b/docs/API_docs/methods/channels.reportAntiSpamFalsePositive.md new file mode 100644 index 0000000000..4d93d72493 --- /dev/null +++ b/docs/API_docs/methods/channels.reportAntiSpamFalsePositive.md @@ -0,0 +1,43 @@ +--- +title: "channels.reportAntiSpamFalsePositive" +description: "Report a [native antispam](https://core.telegram.org/api/antispam) false positive" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_reportAntiSpamFalsePositive.html +--- +# Method: channels.reportAntiSpamFalsePositive +[Back to methods index](index.html) + + + +Report a [native antispam](https://core.telegram.org/api/antispam) false positive + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Supergroup ID | Optional| +|msg\_id|[int](/API_docs/types/int.html) | Message ID that was mistakenly deleted by the [native antispam](https://core.telegram.org/api/antispam) system, taken from the [admin log](https://core.telegram.org/api/recent-actions) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->channels->reportAntiSpamFalsePositive(channel: $InputChannel, msg_id: $int, ); +``` + diff --git a/docs/API_docs/methods/channels.reportSpam.md b/docs/API_docs/methods/channels.reportSpam.md new file mode 100644 index 0000000000..71fde67b26 --- /dev/null +++ b/docs/API_docs/methods/channels.reportSpam.md @@ -0,0 +1,44 @@ +--- +title: "channels.reportSpam" +description: "Reports some messages from a user in a supergroup as spam; requires administrator rights in the supergroup" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_reportSpam.html +--- +# Method: channels.reportSpam +[Back to methods index](index.html) + + + +Reports some messages from a user in a supergroup as spam; requires administrator rights in the supergroup + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Supergroup | Optional| +|participant|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Participant whose messages should be reported | Optional| +|id|Array of [int](/API_docs/types/int.html) | IDs of spam messages | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->channels->reportSpam(channel: $InputChannel, participant: $InputPeer, id: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/channels.reportSponsoredMessage.md b/docs/API_docs/methods/channels.reportSponsoredMessage.md new file mode 100644 index 0000000000..14fe30f211 --- /dev/null +++ b/docs/API_docs/methods/channels.reportSponsoredMessage.md @@ -0,0 +1,41 @@ +--- +title: "channels.reportSponsoredMessage" +description: "channels.reportSponsoredMessage parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_reportSponsoredMessage.html +--- +# Method: channels.reportSponsoredMessage +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Optional| +|option|[bytes](/API_docs/types/bytes.html) | Yes| + + +### Return type: [channels.SponsoredMessageReportResult](/API_docs/types/channels.SponsoredMessageReportResult.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$channels_SponsoredMessageReportResult = $MadelineProto->channels->reportSponsoredMessage(channel: $InputChannel, option: 'bytes', ); +``` + diff --git a/docs/API_docs/methods/channels.restrictSponsoredMessages.md b/docs/API_docs/methods/channels.restrictSponsoredMessages.md new file mode 100644 index 0000000000..47929b1f63 --- /dev/null +++ b/docs/API_docs/methods/channels.restrictSponsoredMessages.md @@ -0,0 +1,41 @@ +--- +title: "channels.restrictSponsoredMessages" +description: "channels.restrictSponsoredMessages parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_restrictSponsoredMessages.html +--- +# Method: channels.restrictSponsoredMessages +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Optional| +|restricted|[Bool](/API_docs/types/Bool.html) | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->restrictSponsoredMessages(channel: $InputChannel, restricted: $Bool, ); +``` + diff --git a/docs/API_docs/methods/channels.setBoostsToUnblockRestrictions.md b/docs/API_docs/methods/channels.setBoostsToUnblockRestrictions.md new file mode 100644 index 0000000000..1eaa5c9aed --- /dev/null +++ b/docs/API_docs/methods/channels.setBoostsToUnblockRestrictions.md @@ -0,0 +1,41 @@ +--- +title: "channels.setBoostsToUnblockRestrictions" +description: "channels.setBoostsToUnblockRestrictions parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_setBoostsToUnblockRestrictions.html +--- +# Method: channels.setBoostsToUnblockRestrictions +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Optional| +|boosts|[int](/API_docs/types/int.html) | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->setBoostsToUnblockRestrictions(channel: $InputChannel, boosts: $int, ); +``` + diff --git a/docs/API_docs/methods/channels.setDiscussionGroup.md b/docs/API_docs/methods/channels.setDiscussionGroup.md new file mode 100644 index 0000000000..5ba403d1be --- /dev/null +++ b/docs/API_docs/methods/channels.setDiscussionGroup.md @@ -0,0 +1,43 @@ +--- +title: "channels.setDiscussionGroup" +description: "Associate a group to a channel as [discussion group](https://core.telegram.org/api/discussion) for that channel" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_setDiscussionGroup.html +--- +# Method: channels.setDiscussionGroup +[Back to methods index](index.html) + + + +Associate a group to a channel as [discussion group](https://core.telegram.org/api/discussion) for that channel + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|broadcast|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Channel | Optional| +|group|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | [Discussion group](https://core.telegram.org/api/discussion) to associate to the channel | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->channels->setDiscussionGroup(broadcast: $InputChannel, group: $InputChannel, ); +``` + diff --git a/docs/API_docs/methods/channels.setEmojiStickers.md b/docs/API_docs/methods/channels.setEmojiStickers.md new file mode 100644 index 0000000000..886fd48db1 --- /dev/null +++ b/docs/API_docs/methods/channels.setEmojiStickers.md @@ -0,0 +1,41 @@ +--- +title: "channels.setEmojiStickers" +description: "channels.setEmojiStickers parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_setEmojiStickers.html +--- +# Method: channels.setEmojiStickers +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Optional| +|stickerset|[InputStickerSet](/API_docs/types/InputStickerSet.html) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->channels->setEmojiStickers(channel: $InputChannel, stickerset: $InputStickerSet, ); +``` + diff --git a/docs/API_docs/methods/channels.setStickers.md b/docs/API_docs/methods/channels.setStickers.md new file mode 100644 index 0000000000..7506786090 --- /dev/null +++ b/docs/API_docs/methods/channels.setStickers.md @@ -0,0 +1,43 @@ +--- +title: "channels.setStickers" +description: "Associate a stickerset to the supergroup" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_setStickers.html +--- +# Method: channels.setStickers +[Back to methods index](index.html) + + + +Associate a stickerset to the supergroup + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Supergroup | Optional| +|stickerset|[InputStickerSet](/API_docs/types/InputStickerSet.html) | The stickerset to associate | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->channels->setStickers(channel: $InputChannel, stickerset: $InputStickerSet, ); +``` + diff --git a/docs/API_docs/methods/channels.toggleAntiSpam.md b/docs/API_docs/methods/channels.toggleAntiSpam.md new file mode 100644 index 0000000000..da913a0da1 --- /dev/null +++ b/docs/API_docs/methods/channels.toggleAntiSpam.md @@ -0,0 +1,43 @@ +--- +title: "channels.toggleAntiSpam" +description: "Enable or disable the [native antispam system](https://core.telegram.org/api/antispam)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_toggleAntiSpam.html +--- +# Method: channels.toggleAntiSpam +[Back to methods index](index.html) + + + +Enable or disable the [native antispam system](https://core.telegram.org/api/antispam). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Supergroup ID. The specified supergroup must have at least `telegram_antispam_group_size_min` members to enable antispam functionality, as specified by the [client configuration parameters](https://core.telegram.org/api/config#client-configuration). | Optional| +|enabled|[Bool](/API_docs/types/Bool.html) | Enable or disable the native antispam system. | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->toggleAntiSpam(channel: $InputChannel, enabled: $Bool, ); +``` + diff --git a/docs/API_docs/methods/channels.toggleForum.md b/docs/API_docs/methods/channels.toggleForum.md new file mode 100644 index 0000000000..7ab423298c --- /dev/null +++ b/docs/API_docs/methods/channels.toggleForum.md @@ -0,0 +1,43 @@ +--- +title: "channels.toggleForum" +description: "Enable or disable [forum functionality](https://core.telegram.org/api/forum) in a supergroup." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_toggleForum.html +--- +# Method: channels.toggleForum +[Back to methods index](index.html) + + + +Enable or disable [forum functionality](https://core.telegram.org/api/forum) in a supergroup. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Supergroup ID | Optional| +|enabled|[Bool](/API_docs/types/Bool.html) | Enable or disable forum functionality | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->toggleForum(channel: $InputChannel, enabled: $Bool, ); +``` + diff --git a/docs/API_docs/methods/channels.toggleJoinRequest.md b/docs/API_docs/methods/channels.toggleJoinRequest.md new file mode 100644 index 0000000000..d40bf8104a --- /dev/null +++ b/docs/API_docs/methods/channels.toggleJoinRequest.md @@ -0,0 +1,43 @@ +--- +title: "channels.toggleJoinRequest" +description: "Set whether all users should [request admin approval to join the group »](https://core.telegram.org/api/invites#join-requests)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_toggleJoinRequest.html +--- +# Method: channels.toggleJoinRequest +[Back to methods index](index.html) + + + +Set whether all users should [request admin approval to join the group »](https://core.telegram.org/api/invites#join-requests). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Group | Optional| +|enabled|[Bool](/API_docs/types/Bool.html) | Toggle | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->toggleJoinRequest(channel: $InputChannel, enabled: $Bool, ); +``` + diff --git a/docs/API_docs/methods/channels.toggleJoinToSend.md b/docs/API_docs/methods/channels.toggleJoinToSend.md new file mode 100644 index 0000000000..32f9b02faf --- /dev/null +++ b/docs/API_docs/methods/channels.toggleJoinToSend.md @@ -0,0 +1,43 @@ +--- +title: "channels.toggleJoinToSend" +description: "Set whether all users [should join a discussion group in order to comment on a post »](https://core.telegram.org/api/discussion#requiring-users-to-join-the-group)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_toggleJoinToSend.html +--- +# Method: channels.toggleJoinToSend +[Back to methods index](index.html) + + + +Set whether all users [should join a discussion group in order to comment on a post »](https://core.telegram.org/api/discussion#requiring-users-to-join-the-group) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Discussion group | Optional| +|enabled|[Bool](/API_docs/types/Bool.html) | Toggle | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->toggleJoinToSend(channel: $InputChannel, enabled: $Bool, ); +``` + diff --git a/docs/API_docs/methods/channels.toggleParticipantsHidden.md b/docs/API_docs/methods/channels.toggleParticipantsHidden.md new file mode 100644 index 0000000000..f2792a8764 --- /dev/null +++ b/docs/API_docs/methods/channels.toggleParticipantsHidden.md @@ -0,0 +1,45 @@ +--- +title: "channels.toggleParticipantsHidden" +description: "Hide or display the participants list in a [supergroup](https://core.telegram.org/api/channel)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_toggleParticipantsHidden.html +--- +# Method: channels.toggleParticipantsHidden +[Back to methods index](index.html) + + + +Hide or display the participants list in a [supergroup](https://core.telegram.org/api/channel). + +The supergroup must have at least `hidden_members_group_size_min` participants in order to use this method, as specified by the [client configuration parameters »](https://core.telegram.org/api/config#client-configuration). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Supergroup ID | Optional| +|enabled|[Bool](/API_docs/types/Bool.html) | If true, will hide the participants list; otherwise will unhide it. | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->toggleParticipantsHidden(channel: $InputChannel, enabled: $Bool, ); +``` + diff --git a/docs/API_docs/methods/channels.togglePreHistoryHidden.md b/docs/API_docs/methods/channels.togglePreHistoryHidden.md new file mode 100644 index 0000000000..649b5c1540 --- /dev/null +++ b/docs/API_docs/methods/channels.togglePreHistoryHidden.md @@ -0,0 +1,43 @@ +--- +title: "channels.togglePreHistoryHidden" +description: "Hide/unhide message history for new channel/supergroup users" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_togglePreHistoryHidden.html +--- +# Method: channels.togglePreHistoryHidden +[Back to methods index](index.html) + + + +Hide/unhide message history for new channel/supergroup users + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Channel/supergroup | Optional| +|enabled|[Bool](/API_docs/types/Bool.html) | Hide/unhide | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->togglePreHistoryHidden(channel: $InputChannel, enabled: $Bool, ); +``` + diff --git a/docs/API_docs/methods/channels.toggleSignatures.md b/docs/API_docs/methods/channels.toggleSignatures.md new file mode 100644 index 0000000000..532e76150a --- /dev/null +++ b/docs/API_docs/methods/channels.toggleSignatures.md @@ -0,0 +1,43 @@ +--- +title: "channels.toggleSignatures" +description: "Enable/disable message signatures in channels" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_toggleSignatures.html +--- +# Method: channels.toggleSignatures +[Back to methods index](index.html) + + + +Enable/disable message signatures in channels + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Channel | Optional| +|enabled|[Bool](/API_docs/types/Bool.html) | Value | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->toggleSignatures(channel: $InputChannel, enabled: $Bool, ); +``` + diff --git a/docs/API_docs/methods/channels.toggleSlowMode.md b/docs/API_docs/methods/channels.toggleSlowMode.md new file mode 100644 index 0000000000..96908a04f3 --- /dev/null +++ b/docs/API_docs/methods/channels.toggleSlowMode.md @@ -0,0 +1,43 @@ +--- +title: "channels.toggleSlowMode" +description: "Toggle supergroup slow mode: if enabled, users will only be able to send one message every `seconds` seconds" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_toggleSlowMode.html +--- +# Method: channels.toggleSlowMode +[Back to methods index](index.html) + + + +Toggle supergroup slow mode: if enabled, users will only be able to send one message every `seconds` seconds + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | The [supergroup](https://core.telegram.org/api/channel) | Optional| +|seconds|[int](/API_docs/types/int.html) | Users will only be able to send one message every `seconds` seconds, `0` to disable the limitation | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->toggleSlowMode(channel: $InputChannel, seconds: $int, ); +``` + diff --git a/docs/API_docs/methods/channels.toggleUsername.md b/docs/API_docs/methods/channels.toggleUsername.md new file mode 100644 index 0000000000..55acebf3b5 --- /dev/null +++ b/docs/API_docs/methods/channels.toggleUsername.md @@ -0,0 +1,44 @@ +--- +title: "channels.toggleUsername" +description: "Activate or deactivate a purchased [fragment.com](https://fragment.com) username associated to a [supergroup or channel](https://core.telegram.org/api/channel) we own." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_toggleUsername.html +--- +# Method: channels.toggleUsername +[Back to methods index](index.html) + + + +Activate or deactivate a purchased [fragment.com](https://fragment.com) username associated to a [supergroup or channel](https://core.telegram.org/api/channel) we own. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | [Supergroup or channel](https://core.telegram.org/api/channel) | Optional| +|username|[string](/API_docs/types/string.html) | Username | Optional| +|active|[Bool](/API_docs/types/Bool.html) | Whether to activate or deactivate the username | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->channels->toggleUsername(channel: $InputChannel, username: 'string', active: $Bool, ); +``` + diff --git a/docs/API_docs/methods/channels.toggleViewForumAsMessages.md b/docs/API_docs/methods/channels.toggleViewForumAsMessages.md new file mode 100644 index 0000000000..58caee9eb0 --- /dev/null +++ b/docs/API_docs/methods/channels.toggleViewForumAsMessages.md @@ -0,0 +1,45 @@ +--- +title: "channels.toggleViewForumAsMessages" +description: "Users may also choose to display messages from all topics of a [forum](https://core.telegram.org/api/forum) as if they were sent to a normal group, using a 'View as messages' setting in the local client: this setting only affects the current account, and is synced to other logged in sessions using this method." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_toggleViewForumAsMessages.html +--- +# Method: channels.toggleViewForumAsMessages +[Back to methods index](index.html) + + + +Users may also choose to display messages from all topics of a [forum](https://core.telegram.org/api/forum) as if they were sent to a normal group, using a "View as messages" setting in the local client: this setting only affects the current account, and is synced to other logged in sessions using this method. + +Invoking this method will update the value of the `view_forum_as_messages` flag of [channelFull](../constructors/channelFull.html) or [dialog](../constructors/dialog.html) and emit an [updateChannelViewForumAsMessages](../constructors/updateChannelViewForumAsMessages.html). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | The forum | Optional| +|enabled|[Bool](/API_docs/types/Bool.html) | The new value of the `view_forum_as_messages` flag. | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->toggleViewForumAsMessages(channel: $InputChannel, enabled: $Bool, ); +``` + diff --git a/docs/API_docs/methods/channels.updateColor.md b/docs/API_docs/methods/channels.updateColor.md new file mode 100644 index 0000000000..a8746ba71f --- /dev/null +++ b/docs/API_docs/methods/channels.updateColor.md @@ -0,0 +1,45 @@ +--- +title: "channels.updateColor" +description: "Update the [accent color and background custom emoji »](https://core.telegram.org/api/colors) of a channel." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_updateColor.html +--- +# Method: channels.updateColor +[Back to methods index](index.html) + + + +Update the [accent color and background custom emoji »](https://core.telegram.org/api/colors) of a channel. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|for\_profile|[Bool](/API_docs/types/Bool.html) | Whether to change the accent color emoji pattern of the profile page; otherwise, the accent color and emoji pattern of messages will be changed. | Optional| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Channel whose accent color should be changed. | Optional| +|color|[int](/API_docs/types/int.html) | [ID of the accent color palette »](https://core.telegram.org/api/colors) to use (not RGB24, see [here »](https://core.telegram.org/api/colors) for more info); if not set, the default palette is used. | Optional| +|background\_emoji\_id|[long](/API_docs/types/long.html) | Custom emoji ID used in the accent color pattern. | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->updateColor(for_profile: $Bool, channel: $InputChannel, color: $int, background_emoji_id: $long, ); +``` + diff --git a/docs/API_docs/methods/channels.updateEmojiStatus.md b/docs/API_docs/methods/channels.updateEmojiStatus.md new file mode 100644 index 0000000000..b3be5ca9e4 --- /dev/null +++ b/docs/API_docs/methods/channels.updateEmojiStatus.md @@ -0,0 +1,43 @@ +--- +title: "channels.updateEmojiStatus" +description: "Set an [emoji status](https://core.telegram.org/api/emoji-status) for a channel." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_updateEmojiStatus.html +--- +# Method: channels.updateEmojiStatus +[Back to methods index](index.html) + + + +Set an [emoji status](https://core.telegram.org/api/emoji-status) for a channel. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | The channel, must have at least [`channel_emoji_status_level_min` boosts](https://core.telegram.org/api/config#channel-emoji-status-level-min). | Optional| +|emoji\_status|[EmojiStatus](/API_docs/types/EmojiStatus.html) | [Emoji status](https://core.telegram.org/api/emoji-status) to set | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->updateEmojiStatus(channel: $InputChannel, emoji_status: $EmojiStatus, ); +``` + diff --git a/docs/API_docs/methods/channels.updatePinnedForumTopic.md b/docs/API_docs/methods/channels.updatePinnedForumTopic.md new file mode 100644 index 0000000000..bd3d1c54ec --- /dev/null +++ b/docs/API_docs/methods/channels.updatePinnedForumTopic.md @@ -0,0 +1,44 @@ +--- +title: "channels.updatePinnedForumTopic" +description: "Pin or unpin [forum topics](https://core.telegram.org/api/forum)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_updatePinnedForumTopic.html +--- +# Method: channels.updatePinnedForumTopic +[Back to methods index](index.html) + + + +Pin or unpin [forum topics](https://core.telegram.org/api/forum) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Supergroup ID | Optional| +|topic\_id|[int](/API_docs/types/int.html) | [Forum topic ID](https://core.telegram.org/api/forum) | Optional| +|pinned|[Bool](/API_docs/types/Bool.html) | Whether to pin or unpin the topic | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->channels->updatePinnedForumTopic(channel: $InputChannel, topic_id: $int, pinned: $Bool, ); +``` + diff --git a/docs/API_docs/methods/channels.updateUsername.md b/docs/API_docs/methods/channels.updateUsername.md new file mode 100644 index 0000000000..0b42935d83 --- /dev/null +++ b/docs/API_docs/methods/channels.updateUsername.md @@ -0,0 +1,43 @@ +--- +title: "channels.updateUsername" +description: "Change or remove the username of a supergroup/channel" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_updateUsername.html +--- +# Method: channels.updateUsername +[Back to methods index](index.html) + + + +Change or remove the username of a supergroup/channel + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Channel | Optional| +|username|[string](/API_docs/types/string.html) | New username, pass an empty string to remove the username | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->channels->updateUsername(channel: $InputChannel, username: 'string', ); +``` + diff --git a/docs/API_docs/methods/channels.viewSponsoredMessage.md b/docs/API_docs/methods/channels.viewSponsoredMessage.md new file mode 100644 index 0000000000..10f8f1b726 --- /dev/null +++ b/docs/API_docs/methods/channels.viewSponsoredMessage.md @@ -0,0 +1,42 @@ +--- +title: "channels.viewSponsoredMessage" +description: "Mark a specific sponsored message as read" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/channels_viewSponsoredMessage.html +--- +# Method: channels.viewSponsoredMessage +[Back to methods index](index.html) + + + +Mark a specific sponsored message as read + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Peer | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->channels->viewSponsoredMessage(channel: $InputChannel, ); +``` + diff --git a/docs/API_docs/methods/chatlists.checkChatlistInvite.md b/docs/API_docs/methods/chatlists.checkChatlistInvite.md new file mode 100644 index 0000000000..5aa7aca2a0 --- /dev/null +++ b/docs/API_docs/methods/chatlists.checkChatlistInvite.md @@ -0,0 +1,42 @@ +--- +title: "chatlists.checkChatlistInvite" +description: "Obtain information about a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/chatlists_checkChatlistInvite.html +--- +# Method: chatlists.checkChatlistInvite +[Back to methods index](index.html) + + + +Obtain information about a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|slug|[string](/API_docs/types/string.html) | `slug` obtained from the [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links) | Optional| + + +### Return type: [chatlists.ChatlistInvite](/API_docs/types/chatlists.ChatlistInvite.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$chatlists_ChatlistInvite = $MadelineProto->chatlists->checkChatlistInvite(slug: 'string', ); +``` + diff --git a/docs/API_docs/methods/chatlists.deleteExportedInvite.md b/docs/API_docs/methods/chatlists.deleteExportedInvite.md new file mode 100644 index 0000000000..4a9a514b4c --- /dev/null +++ b/docs/API_docs/methods/chatlists.deleteExportedInvite.md @@ -0,0 +1,43 @@ +--- +title: "chatlists.deleteExportedInvite" +description: "Delete a previously created [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/chatlists_deleteExportedInvite.html +--- +# Method: chatlists.deleteExportedInvite +[Back to methods index](index.html) + + + +Delete a previously created [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|chatlist|[InputChatlist](/API_docs/types/InputChatlist.html) | The related folder | Yes| +|slug|[string](/API_docs/types/string.html) | `slug` obtained from the [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links). | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->chatlists->deleteExportedInvite(chatlist: $InputChatlist, slug: 'string', ); +``` + diff --git a/docs/API_docs/methods/chatlists.editExportedInvite.md b/docs/API_docs/methods/chatlists.editExportedInvite.md new file mode 100644 index 0000000000..a6fab47440 --- /dev/null +++ b/docs/API_docs/methods/chatlists.editExportedInvite.md @@ -0,0 +1,45 @@ +--- +title: "chatlists.editExportedInvite" +description: "Edit a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/chatlists_editExportedInvite.html +--- +# Method: chatlists.editExportedInvite +[Back to methods index](index.html) + + + +Edit a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|chatlist|[InputChatlist](/API_docs/types/InputChatlist.html) | Folder ID | Yes| +|slug|[string](/API_docs/types/string.html) | `slug` obtained from the [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links). | Optional| +|title|[string](/API_docs/types/string.html) | If set, sets a new name for the link | Optional| +|peers|Array of [Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | If set, changes the list of peers shared with the link | Optional| + + +### Return type: [ExportedChatlistInvite](/API_docs/types/ExportedChatlistInvite.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$ExportedChatlistInvite = $MadelineProto->chatlists->editExportedInvite(chatlist: $InputChatlist, slug: 'string', title: 'string', peers: [$InputPeer, $InputPeer], ); +``` + diff --git a/docs/API_docs/methods/chatlists.exportChatlistInvite.md b/docs/API_docs/methods/chatlists.exportChatlistInvite.md new file mode 100644 index 0000000000..fccdd012cd --- /dev/null +++ b/docs/API_docs/methods/chatlists.exportChatlistInvite.md @@ -0,0 +1,44 @@ +--- +title: "chatlists.exportChatlistInvite" +description: "Export a [folder »](https://core.telegram.org/api/folders), creating a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/chatlists_exportChatlistInvite.html +--- +# Method: chatlists.exportChatlistInvite +[Back to methods index](index.html) + + + +Export a [folder »](https://core.telegram.org/api/folders), creating a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|chatlist|[InputChatlist](/API_docs/types/InputChatlist.html) | The folder to export | Yes| +|title|[string](/API_docs/types/string.html) | An optional name for the link | Optional| +|peers|Array of [Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The list of channels, group and supergroups to share with the link. Basic groups will automatically be [converted to supergroups](https://core.telegram.org/api/channel#migration) when invoking the method. | Yes| + + +### Return type: [chatlists.ExportedChatlistInvite](/API_docs/types/chatlists.ExportedChatlistInvite.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$chatlists_ExportedChatlistInvite = $MadelineProto->chatlists->exportChatlistInvite(chatlist: $InputChatlist, title: 'string', peers: [$InputPeer, $InputPeer], ); +``` + diff --git a/docs/API_docs/methods/chatlists.getChatlistUpdates.md b/docs/API_docs/methods/chatlists.getChatlistUpdates.md new file mode 100644 index 0000000000..8e18c8729f --- /dev/null +++ b/docs/API_docs/methods/chatlists.getChatlistUpdates.md @@ -0,0 +1,42 @@ +--- +title: "chatlists.getChatlistUpdates" +description: "Fetch new chats associated with an imported [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links). Must be invoked at most every `chatlist_update_period` seconds (as per the related [client configuration parameter »](https://core.telegram.org/api/config#chatlist-update-period))." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/chatlists_getChatlistUpdates.html +--- +# Method: chatlists.getChatlistUpdates +[Back to methods index](index.html) + + + +Fetch new chats associated with an imported [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links). Must be invoked at most every `chatlist_update_period` seconds (as per the related [client configuration parameter »](https://core.telegram.org/api/config#chatlist-update-period)). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|chatlist|[InputChatlist](/API_docs/types/InputChatlist.html) | The folder | Yes| + + +### Return type: [chatlists.ChatlistUpdates](/API_docs/types/chatlists.ChatlistUpdates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$chatlists_ChatlistUpdates = $MadelineProto->chatlists->getChatlistUpdates(chatlist: $InputChatlist, ); +``` + diff --git a/docs/API_docs/methods/chatlists.getExportedInvites.md b/docs/API_docs/methods/chatlists.getExportedInvites.md new file mode 100644 index 0000000000..1f07b4e124 --- /dev/null +++ b/docs/API_docs/methods/chatlists.getExportedInvites.md @@ -0,0 +1,42 @@ +--- +title: "chatlists.getExportedInvites" +description: "List all [chat folder deep links »](https://core.telegram.org/api/links#chat-folder-links) associated to a folder" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/chatlists_getExportedInvites.html +--- +# Method: chatlists.getExportedInvites +[Back to methods index](index.html) + + + +List all [chat folder deep links »](https://core.telegram.org/api/links#chat-folder-links) associated to a folder + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|chatlist|[InputChatlist](/API_docs/types/InputChatlist.html) | The folder | Yes| + + +### Return type: [chatlists.ExportedInvites](/API_docs/types/chatlists.ExportedInvites.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$chatlists_ExportedInvites = $MadelineProto->chatlists->getExportedInvites(chatlist: $InputChatlist, ); +``` + diff --git a/docs/API_docs/methods/chatlists.getLeaveChatlistSuggestions.md b/docs/API_docs/methods/chatlists.getLeaveChatlistSuggestions.md new file mode 100644 index 0000000000..b2c3cb10b1 --- /dev/null +++ b/docs/API_docs/methods/chatlists.getLeaveChatlistSuggestions.md @@ -0,0 +1,42 @@ +--- +title: "chatlists.getLeaveChatlistSuggestions" +description: "Returns identifiers of pinned or always included chats from a chat folder imported using a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links), which are suggested to be left when the chat folder is deleted." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/chatlists_getLeaveChatlistSuggestions.html +--- +# Method: chatlists.getLeaveChatlistSuggestions +[Back to methods index](index.html) + + + +Returns identifiers of pinned or always included chats from a chat folder imported using a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links), which are suggested to be left when the chat folder is deleted. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|chatlist|[InputChatlist](/API_docs/types/InputChatlist.html) | Folder ID | Yes| + + +### Return type: [Vector\_of\_Peer](/API_docs/types/Peer.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_Peer = $MadelineProto->chatlists->getLeaveChatlistSuggestions(chatlist: $InputChatlist, ); +``` + diff --git a/docs/API_docs/methods/chatlists.hideChatlistUpdates.md b/docs/API_docs/methods/chatlists.hideChatlistUpdates.md new file mode 100644 index 0000000000..09079ea219 --- /dev/null +++ b/docs/API_docs/methods/chatlists.hideChatlistUpdates.md @@ -0,0 +1,42 @@ +--- +title: "chatlists.hideChatlistUpdates" +description: "Dismiss new pending peers recently added to a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/chatlists_hideChatlistUpdates.html +--- +# Method: chatlists.hideChatlistUpdates +[Back to methods index](index.html) + + + +Dismiss new pending peers recently added to a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|chatlist|[InputChatlist](/API_docs/types/InputChatlist.html) | The folder | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->chatlists->hideChatlistUpdates(chatlist: $InputChatlist, ); +``` + diff --git a/docs/API_docs/methods/chatlists.joinChatlistInvite.md b/docs/API_docs/methods/chatlists.joinChatlistInvite.md new file mode 100644 index 0000000000..a9c86e93f8 --- /dev/null +++ b/docs/API_docs/methods/chatlists.joinChatlistInvite.md @@ -0,0 +1,43 @@ +--- +title: "chatlists.joinChatlistInvite" +description: "Import a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links), joining some or all the chats in the folder." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/chatlists_joinChatlistInvite.html +--- +# Method: chatlists.joinChatlistInvite +[Back to methods index](index.html) + + + +Import a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links), joining some or all the chats in the folder. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|slug|[string](/API_docs/types/string.html) | `slug` obtained from a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links). | Optional| +|peers|Array of [Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | List of new chats to join, fetched using [chatlists.checkChatlistInvite](../methods/chatlists.checkChatlistInvite.html) and filtered as specified in the [documentation »](https://core.telegram.org/api/folders#shared-folders). | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->chatlists->joinChatlistInvite(slug: 'string', peers: [$InputPeer, $InputPeer], ); +``` + diff --git a/docs/API_docs/methods/chatlists.joinChatlistUpdates.md b/docs/API_docs/methods/chatlists.joinChatlistUpdates.md new file mode 100644 index 0000000000..90d21fdc54 --- /dev/null +++ b/docs/API_docs/methods/chatlists.joinChatlistUpdates.md @@ -0,0 +1,43 @@ +--- +title: "chatlists.joinChatlistUpdates" +description: "Join channels and supergroups recently added to a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/chatlists_joinChatlistUpdates.html +--- +# Method: chatlists.joinChatlistUpdates +[Back to methods index](index.html) + + + +Join channels and supergroups recently added to a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|chatlist|[InputChatlist](/API_docs/types/InputChatlist.html) | The folder | Yes| +|peers|Array of [Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | List of new chats to join, fetched using [chatlists.getChatlistUpdates](../methods/chatlists.getChatlistUpdates.html) and filtered as specified in the [documentation »](https://core.telegram.org/api/folders#shared-folders). | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->chatlists->joinChatlistUpdates(chatlist: $InputChatlist, peers: [$InputPeer, $InputPeer], ); +``` + diff --git a/docs/API_docs/methods/chatlists.leaveChatlist.md b/docs/API_docs/methods/chatlists.leaveChatlist.md new file mode 100644 index 0000000000..fe9170e4ce --- /dev/null +++ b/docs/API_docs/methods/chatlists.leaveChatlist.md @@ -0,0 +1,43 @@ +--- +title: "chatlists.leaveChatlist" +description: "Delete a folder imported using a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/chatlists_leaveChatlist.html +--- +# Method: chatlists.leaveChatlist +[Back to methods index](index.html) + + + +Delete a folder imported using a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|chatlist|[InputChatlist](/API_docs/types/InputChatlist.html) | Folder ID | Yes| +|peers|Array of [Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Also leave the specified channels and groups | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->chatlists->leaveChatlist(chatlist: $InputChatlist, peers: [$InputPeer, $InputPeer], ); +``` + diff --git a/docs/API_docs/methods/contacts.acceptContact.md b/docs/API_docs/methods/contacts.acceptContact.md new file mode 100644 index 0000000000..8c20fbda62 --- /dev/null +++ b/docs/API_docs/methods/contacts.acceptContact.md @@ -0,0 +1,42 @@ +--- +title: "contacts.acceptContact" +description: "If the [add contact action bar is active](https://core.telegram.org/api/action-bar#add-contact), add that user as contact" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_acceptContact.html +--- +# Method: contacts.acceptContact +[Back to methods index](index.html) + + + +If the [add contact action bar is active](https://core.telegram.org/api/action-bar#add-contact), add that user as contact + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | The user to add as contact | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->contacts->acceptContact(id: $InputUser, ); +``` + diff --git a/docs/API_docs/methods/contacts.addContact.md b/docs/API_docs/methods/contacts.addContact.md new file mode 100644 index 0000000000..c1820d24da --- /dev/null +++ b/docs/API_docs/methods/contacts.addContact.md @@ -0,0 +1,48 @@ +--- +title: "contacts.addContact" +description: "Add an existing telegram user as contact." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_addContact.html +--- +# Method: contacts.addContact +[Back to methods index](index.html) + + + +Add an existing telegram user as contact. + +Use [contacts.importContacts](../methods/contacts.importContacts.html) to add contacts by phone number, without knowing their Telegram ID. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|add\_phone\_privacy\_exception|[Bool](/API_docs/types/Bool.html) | Allow the other user to see our phone number? | Optional| +|id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Telegram ID of the other user | Optional| +|first\_name|[string](/API_docs/types/string.html) | First name | Optional| +|last\_name|[string](/API_docs/types/string.html) | Last name | Optional| +|phone|[string](/API_docs/types/string.html) | User's phone number, may be omitted to simply add the user to the contact list, without a phone number. | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->contacts->addContact(add_phone_privacy_exception: $Bool, id: $InputUser, first_name: 'string', last_name: 'string', phone: 'string', ); +``` + diff --git a/docs/API_docs/methods/contacts.block.md b/docs/API_docs/methods/contacts.block.md new file mode 100644 index 0000000000..6db3629eac --- /dev/null +++ b/docs/API_docs/methods/contacts.block.md @@ -0,0 +1,43 @@ +--- +title: "contacts.block" +description: "Adds a peer to a blocklist, see [here »](https://core.telegram.org/api/block) for more info." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_block.html +--- +# Method: contacts.block +[Back to methods index](index.html) + + + +Adds a peer to a blocklist, see [here »](https://core.telegram.org/api/block) for more info. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|my\_stories\_from|[Bool](/API_docs/types/Bool.html) | Whether the peer should be added to the story blocklist; if not set, the peer will be added to the main blocklist, see [here »](https://core.telegram.org/api/block) for more info. | Optional| +|id|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->contacts->block(my_stories_from: $Bool, id: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/contacts.blockFromReplies.md b/docs/API_docs/methods/contacts.blockFromReplies.md new file mode 100644 index 0000000000..4e79e9acf3 --- /dev/null +++ b/docs/API_docs/methods/contacts.blockFromReplies.md @@ -0,0 +1,45 @@ +--- +title: "contacts.blockFromReplies" +description: "Stop getting notifications about [discussion replies](https://core.telegram.org/api/discussion) of a certain user in `@replies`" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_blockFromReplies.html +--- +# Method: contacts.blockFromReplies +[Back to methods index](index.html) + + + +Stop getting notifications about [discussion replies](https://core.telegram.org/api/discussion) of a certain user in `@replies` + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|delete\_message|[Bool](/API_docs/types/Bool.html) | Whether to delete the specified message as well | Optional| +|delete\_history|[Bool](/API_docs/types/Bool.html) | Whether to delete all `@replies` messages from this user as well | Optional| +|report\_spam|[Bool](/API_docs/types/Bool.html) | Whether to also report this user for spam | Optional| +|msg\_id|[int](/API_docs/types/int.html) | ID of the message in the [@replies](https://core.telegram.org/api/discussion#replies) chat | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->contacts->blockFromReplies(delete_message: $Bool, delete_history: $Bool, report_spam: $Bool, msg_id: $int, ); +``` + diff --git a/docs/API_docs/methods/contacts.deleteByPhones.md b/docs/API_docs/methods/contacts.deleteByPhones.md new file mode 100644 index 0000000000..4dfc330600 --- /dev/null +++ b/docs/API_docs/methods/contacts.deleteByPhones.md @@ -0,0 +1,42 @@ +--- +title: "contacts.deleteByPhones" +description: "Delete contacts by phone number" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_deleteByPhones.html +--- +# Method: contacts.deleteByPhones +[Back to methods index](index.html) + + + +Delete contacts by phone number + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|phones|Array of [string](/API_docs/types/string.html) | Phone numbers | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->contacts->deleteByPhones(phones: ['string', 'string'], ); +``` + diff --git a/docs/API_docs/methods/contacts.deleteContacts.md b/docs/API_docs/methods/contacts.deleteContacts.md new file mode 100644 index 0000000000..5b58b1c8dc --- /dev/null +++ b/docs/API_docs/methods/contacts.deleteContacts.md @@ -0,0 +1,42 @@ +--- +title: "contacts.deleteContacts" +description: "Deletes several contacts from the list." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_deleteContacts.html +--- +# Method: contacts.deleteContacts +[Back to methods index](index.html) + + + +Deletes several contacts from the list. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|Array of [Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | User ID list | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->contacts->deleteContacts(id: [$InputUser, $InputUser], ); +``` + diff --git a/docs/API_docs/methods/contacts.editCloseFriends.md b/docs/API_docs/methods/contacts.editCloseFriends.md new file mode 100644 index 0000000000..dd0a232a5f --- /dev/null +++ b/docs/API_docs/methods/contacts.editCloseFriends.md @@ -0,0 +1,42 @@ +--- +title: "contacts.editCloseFriends" +description: "Edit the [close friends list, see here »](https://core.telegram.org/api/privacy) for more info." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_editCloseFriends.html +--- +# Method: contacts.editCloseFriends +[Back to methods index](index.html) + + + +Edit the [close friends list, see here »](https://core.telegram.org/api/privacy) for more info. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|Array of [long](/API_docs/types/long.html) | Full list of user IDs of close friends, see [here](https://core.telegram.org/api/privacy) for more info. | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->contacts->editCloseFriends(id: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/contacts.exportContactToken.md b/docs/API_docs/methods/contacts.exportContactToken.md new file mode 100644 index 0000000000..91d0683e70 --- /dev/null +++ b/docs/API_docs/methods/contacts.exportContactToken.md @@ -0,0 +1,37 @@ +--- +title: "contacts.exportContactToken" +description: "Generates a [temporary profile link](https://core.telegram.org/api/links#temporary-profile-links) for the currently logged-in user." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_exportContactToken.html +--- +# Method: contacts.exportContactToken +[Back to methods index](index.html) + + + +Generates a [temporary profile link](https://core.telegram.org/api/links#temporary-profile-links) for the currently logged-in user. + + + +### Return type: [ExportedContactToken](/API_docs/types/ExportedContactToken.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$ExportedContactToken = $MadelineProto->contacts->exportContactToken(); +``` + diff --git a/docs/API_docs/methods/contacts.getBirthdays.md b/docs/API_docs/methods/contacts.getBirthdays.md new file mode 100644 index 0000000000..7dbbd369bf --- /dev/null +++ b/docs/API_docs/methods/contacts.getBirthdays.md @@ -0,0 +1,35 @@ +--- +title: "contacts.getBirthdays" +description: "contacts.getBirthdays parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_getBirthdays.html +--- +# Method: contacts.getBirthdays +[Back to methods index](index.html) + + + + + +### Return type: [contacts.ContactBirthdays](/API_docs/types/contacts.ContactBirthdays.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$contacts_ContactBirthdays = $MadelineProto->contacts->getBirthdays(); +``` + diff --git a/docs/API_docs/methods/contacts.getBlocked.md b/docs/API_docs/methods/contacts.getBlocked.md new file mode 100644 index 0000000000..d9fc1f6178 --- /dev/null +++ b/docs/API_docs/methods/contacts.getBlocked.md @@ -0,0 +1,44 @@ +--- +title: "contacts.getBlocked" +description: "Returns the list of blocked users." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_getBlocked.html +--- +# Method: contacts.getBlocked +[Back to methods index](index.html) + + + +Returns the list of blocked users. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|my\_stories\_from|[Bool](/API_docs/types/Bool.html) | Whether to fetch the story blocklist; if not set, will fetch the main blocklist. See [here »](https://core.telegram.org/api/block) for differences between the two. | Optional| +|offset|[int](/API_docs/types/int.html) | The number of list elements to be skipped | Optional| +|limit|[int](/API_docs/types/int.html) | The number of list elements to be returned | Optional| + + +### Return type: [contacts.Blocked](/API_docs/types/contacts.Blocked.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$contacts_Blocked = $MadelineProto->contacts->getBlocked(my_stories_from: $Bool, offset: $int, limit: $int, ); +``` + diff --git a/docs/API_docs/methods/contacts.getContactIDs.md b/docs/API_docs/methods/contacts.getContactIDs.md new file mode 100644 index 0000000000..62235623b0 --- /dev/null +++ b/docs/API_docs/methods/contacts.getContactIDs.md @@ -0,0 +1,43 @@ +--- +title: "contacts.getContactIDs" +description: "Get the telegram IDs of all contacts. " +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_getContactIDs.html +--- +# Method: contacts.getContactIDs +[Back to methods index](index.html) + + + +Get the telegram IDs of all contacts. +Returns an array of Telegram user IDs for all contacts (0 if a contact does not have an associated Telegram account or have hidden their account using privacy settings). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [Vector\_of\_int](/API_docs/types/int.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_int = $MadelineProto->contacts->getContactIDs(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/contacts.getContacts.md b/docs/API_docs/methods/contacts.getContacts.md new file mode 100644 index 0000000000..336f027a1e --- /dev/null +++ b/docs/API_docs/methods/contacts.getContacts.md @@ -0,0 +1,42 @@ +--- +title: "contacts.getContacts" +description: "Returns the current user's contact list." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_getContacts.html +--- +# Method: contacts.getContacts +[Back to methods index](index.html) + + + +Returns the current user's contact list. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | If there already is a full contact list on the client, a [hash](https://core.telegram.org/api/offsets#hash-generation) of a the list of contact IDs in ascending order may be passed in this parameter. If the contact set was not changed, [(contacts.contactsNotModified)](../constructors/contacts.contactsNotModified.html) will be returned. | Optional| + + +### Return type: [contacts.Contacts](/API_docs/types/contacts.Contacts.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$contacts_Contacts = $MadelineProto->contacts->getContacts(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/contacts.getLocated.md b/docs/API_docs/methods/contacts.getLocated.md new file mode 100644 index 0000000000..38415c26bd --- /dev/null +++ b/docs/API_docs/methods/contacts.getLocated.md @@ -0,0 +1,44 @@ +--- +title: "contacts.getLocated" +description: "Get users and geochats near you, see [here »](https://core.telegram.org/api/nearby) for more info." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_getLocated.html +--- +# Method: contacts.getLocated +[Back to methods index](index.html) + + + +Get users and geochats near you, see [here »](https://core.telegram.org/api/nearby) for more info. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|background|[Bool](/API_docs/types/Bool.html) | While the geolocation of the current user is public, clients should update it in the background every half-an-hour or so, while setting this flag.
Do this only if the new location is more than 1 KM away from the previous one, or if the previous location is unknown. | Optional| +|geo\_point|[InputGeoPoint](/API_docs/types/InputGeoPoint.html) | Geolocation | Optional| +|self\_expires|[int](/API_docs/types/int.html) | If set, the geolocation of the current user will be public for the specified number of seconds; pass 0x7fffffff to disable expiry, 0 to make the current geolocation private; if the flag isn't set, no changes will be applied. | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->contacts->getLocated(background: $Bool, geo_point: $InputGeoPoint, self_expires: $int, ); +``` + diff --git a/docs/API_docs/methods/contacts.getSaved.md b/docs/API_docs/methods/contacts.getSaved.md new file mode 100644 index 0000000000..20cfc03067 --- /dev/null +++ b/docs/API_docs/methods/contacts.getSaved.md @@ -0,0 +1,37 @@ +--- +title: "contacts.getSaved" +description: "Get all contacts, requires a [takeout session, see here » for more info](https://core.telegram.org/api/takeout)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_getSaved.html +--- +# Method: contacts.getSaved +[Back to methods index](index.html) + + + +Get all contacts, requires a [takeout session, see here » for more info](https://core.telegram.org/api/takeout). + + + +### Return type: [Vector\_of\_SavedContact](/API_docs/types/SavedContact.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_SavedContact = $MadelineProto->contacts->getSaved(); +``` + diff --git a/docs/API_docs/methods/contacts.getStatuses.md b/docs/API_docs/methods/contacts.getStatuses.md new file mode 100644 index 0000000000..8cab07b65d --- /dev/null +++ b/docs/API_docs/methods/contacts.getStatuses.md @@ -0,0 +1,37 @@ +--- +title: "contacts.getStatuses" +description: "Use this method to obtain the online statuses of all contacts with an accessible Telegram account." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_getStatuses.html +--- +# Method: contacts.getStatuses +[Back to methods index](index.html) + + + +Use this method to obtain the online statuses of all contacts with an accessible Telegram account. + + + +### Return type: [Vector\_of\_ContactStatus](/API_docs/types/ContactStatus.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_ContactStatus = $MadelineProto->contacts->getStatuses(); +``` + diff --git a/docs/API_docs/methods/contacts.getTopPeers.md b/docs/API_docs/methods/contacts.getTopPeers.md new file mode 100644 index 0000000000..9ce75a5707 --- /dev/null +++ b/docs/API_docs/methods/contacts.getTopPeers.md @@ -0,0 +1,52 @@ +--- +title: "contacts.getTopPeers" +description: "Get most used peers" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_getTopPeers.html +--- +# Method: contacts.getTopPeers +[Back to methods index](index.html) + + + +Get most used peers + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|correspondents|[Bool](/API_docs/types/Bool.html) | Users we've chatted most frequently with | Optional| +|bots\_pm|[Bool](/API_docs/types/Bool.html) | Most used bots | Optional| +|bots\_inline|[Bool](/API_docs/types/Bool.html) | Most used inline bots | Optional| +|phone\_calls|[Bool](/API_docs/types/Bool.html) | Most frequently called users | Optional| +|forward\_users|[Bool](/API_docs/types/Bool.html) | Users to which the users often forwards messages to | Optional| +|forward\_chats|[Bool](/API_docs/types/Bool.html) | Chats to which the users often forwards messages to | Optional| +|groups|[Bool](/API_docs/types/Bool.html) | Often-opened groups and supergroups | Optional| +|channels|[Bool](/API_docs/types/Bool.html) | Most frequently visited channels | Optional| +|offset|[int](/API_docs/types/int.html) | Offset for [pagination](https://core.telegram.org/api/offsets) | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [contacts.TopPeers](/API_docs/types/contacts.TopPeers.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$contacts_TopPeers = $MadelineProto->contacts->getTopPeers(correspondents: $Bool, bots_pm: $Bool, bots_inline: $Bool, phone_calls: $Bool, forward_users: $Bool, forward_chats: $Bool, groups: $Bool, channels: $Bool, offset: $int, limit: $int, hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/contacts.importContactToken.md b/docs/API_docs/methods/contacts.importContactToken.md new file mode 100644 index 0000000000..eab671e2be --- /dev/null +++ b/docs/API_docs/methods/contacts.importContactToken.md @@ -0,0 +1,42 @@ +--- +title: "contacts.importContactToken" +description: "Obtain user info from a [temporary profile link](https://core.telegram.org/api/links#temporary-profile-links)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_importContactToken.html +--- +# Method: contacts.importContactToken +[Back to methods index](index.html) + + + +Obtain user info from a [temporary profile link](https://core.telegram.org/api/links#temporary-profile-links). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|token|[string](/API_docs/types/string.html) | The token extracted from the [temporary profile link](https://core.telegram.org/api/links#temporary-profile-links). | Optional| + + +### Return type: [User](/API_docs/types/User.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$User = $MadelineProto->contacts->importContactToken(token: 'string', ); +``` + diff --git a/docs/API_docs/methods/contacts.importContacts.md b/docs/API_docs/methods/contacts.importContacts.md new file mode 100644 index 0000000000..44dcdd54e5 --- /dev/null +++ b/docs/API_docs/methods/contacts.importContacts.md @@ -0,0 +1,44 @@ +--- +title: "contacts.importContacts" +description: "Imports contacts: saves a full list on the server, adds already registered contacts to the contact list, returns added contacts and their info." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_importContacts.html +--- +# Method: contacts.importContacts +[Back to methods index](index.html) + + + +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](../methods/contacts.addContact.html) to add Telegram contacts without actually using their phone number. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|contacts|Array of [InputContact](/API_docs/types/InputContact.html) | List of contacts to import | Yes| + + +### Return type: [contacts.ImportedContacts](/API_docs/types/contacts.ImportedContacts.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$contacts_ImportedContacts = $MadelineProto->contacts->importContacts(contacts: [$InputContact, $InputContact], ); +``` + diff --git a/docs/API_docs/methods/contacts.resetSaved.md b/docs/API_docs/methods/contacts.resetSaved.md new file mode 100644 index 0000000000..c30d11565d --- /dev/null +++ b/docs/API_docs/methods/contacts.resetSaved.md @@ -0,0 +1,37 @@ +--- +title: "contacts.resetSaved" +description: "Removes all contacts without an associated Telegram account." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_resetSaved.html +--- +# Method: contacts.resetSaved +[Back to methods index](index.html) + + + +Removes all contacts without an associated Telegram account. + + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->contacts->resetSaved(); +``` + diff --git a/docs/API_docs/methods/contacts.resetTopPeerRating.md b/docs/API_docs/methods/contacts.resetTopPeerRating.md new file mode 100644 index 0000000000..2c21cb6b84 --- /dev/null +++ b/docs/API_docs/methods/contacts.resetTopPeerRating.md @@ -0,0 +1,43 @@ +--- +title: "contacts.resetTopPeerRating" +description: "Reset [rating](https://core.telegram.org/api/top-rating) of top peer" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_resetTopPeerRating.html +--- +# Method: contacts.resetTopPeerRating +[Back to methods index](index.html) + + + +Reset [rating](https://core.telegram.org/api/top-rating) of top peer + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|category|[TopPeerCategory](/API_docs/types/TopPeerCategory.html) | Top peer category | Yes| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer whose rating should be reset | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->contacts->resetTopPeerRating(category: $TopPeerCategory, peer: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/contacts.resolvePhone.md b/docs/API_docs/methods/contacts.resolvePhone.md new file mode 100644 index 0000000000..95409b7fe1 --- /dev/null +++ b/docs/API_docs/methods/contacts.resolvePhone.md @@ -0,0 +1,42 @@ +--- +title: "contacts.resolvePhone" +description: "Resolve a phone number to get user info, if their privacy settings allow it." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_resolvePhone.html +--- +# Method: contacts.resolvePhone +[Back to methods index](index.html) + + + +Resolve a phone number to get user info, if their privacy settings allow it. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|phone|[string](/API_docs/types/string.html) | Phone number in international format, possibly obtained from a [phone number deep link](https://core.telegram.org/api/links#phone-number-links). | Optional| + + +### Return type: [contacts.ResolvedPeer](/API_docs/types/contacts.ResolvedPeer.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$contacts_ResolvedPeer = $MadelineProto->contacts->resolvePhone(phone: 'string', ); +``` + diff --git a/docs/API_docs/methods/contacts.resolveUsername.md b/docs/API_docs/methods/contacts.resolveUsername.md new file mode 100644 index 0000000000..82ded862c2 --- /dev/null +++ b/docs/API_docs/methods/contacts.resolveUsername.md @@ -0,0 +1,42 @@ +--- +title: "contacts.resolveUsername" +description: "You cannot use this method directly, use the resolveUsername, getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_resolveUsername.html +--- +# Method: contacts.resolveUsername +[Back to methods index](index.html) + + + +You cannot use this method directly, use the resolveUsername, getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|username|[string](/API_docs/types/string.html) | @username to resolve | Optional| + + +### Return type: [contacts.ResolvedPeer](/API_docs/types/contacts.ResolvedPeer.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$contacts_ResolvedPeer = $MadelineProto->contacts->resolveUsername(username: 'string', ); +``` + diff --git a/docs/API_docs/methods/contacts.search.md b/docs/API_docs/methods/contacts.search.md new file mode 100644 index 0000000000..8473d74ef1 --- /dev/null +++ b/docs/API_docs/methods/contacts.search.md @@ -0,0 +1,43 @@ +--- +title: "contacts.search" +description: "Returns users found by username substring." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_search.html +--- +# Method: contacts.search +[Back to methods index](index.html) + + + +Returns users found by username substring. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|q|[string](/API_docs/types/string.html) | Target substring | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of users to be returned | Optional| + + +### Return type: [contacts.Found](/API_docs/types/contacts.Found.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$contacts_Found = $MadelineProto->contacts->search(q: 'string', limit: $int, ); +``` + diff --git a/docs/API_docs/methods/contacts.setBlocked.md b/docs/API_docs/methods/contacts.setBlocked.md new file mode 100644 index 0000000000..c8bf9594c8 --- /dev/null +++ b/docs/API_docs/methods/contacts.setBlocked.md @@ -0,0 +1,44 @@ +--- +title: "contacts.setBlocked" +description: "Replace the contents of an entire [blocklist, see here for more info »](https://core.telegram.org/api/block)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_setBlocked.html +--- +# Method: contacts.setBlocked +[Back to methods index](index.html) + + + +Replace the contents of an entire [blocklist, see here for more info »](https://core.telegram.org/api/block). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|my\_stories\_from|[Bool](/API_docs/types/Bool.html) | Whether to edit the story blocklist; if not set, will edit the main blocklist. See [here »](https://core.telegram.org/api/block) for differences between the two. | Optional| +|id|Array of [Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Full content of the blocklist. | Yes| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->contacts->setBlocked(my_stories_from: $Bool, id: [$InputPeer, $InputPeer], limit: $int, ); +``` + diff --git a/docs/API_docs/methods/contacts.toggleTopPeers.md b/docs/API_docs/methods/contacts.toggleTopPeers.md new file mode 100644 index 0000000000..bdf7dd5d4f --- /dev/null +++ b/docs/API_docs/methods/contacts.toggleTopPeers.md @@ -0,0 +1,42 @@ +--- +title: "contacts.toggleTopPeers" +description: "Enable/disable [top peers](https://core.telegram.org/api/top-rating)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_toggleTopPeers.html +--- +# Method: contacts.toggleTopPeers +[Back to methods index](index.html) + + + +Enable/disable [top peers](https://core.telegram.org/api/top-rating) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|enabled|[Bool](/API_docs/types/Bool.html) | Enable/disable | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->contacts->toggleTopPeers(enabled: $Bool, ); +``` + diff --git a/docs/API_docs/methods/contacts.unblock.md b/docs/API_docs/methods/contacts.unblock.md new file mode 100644 index 0000000000..4cabf06b0b --- /dev/null +++ b/docs/API_docs/methods/contacts.unblock.md @@ -0,0 +1,43 @@ +--- +title: "contacts.unblock" +description: "Deletes a peer from a blocklist, see [here »](https://core.telegram.org/api/block) for more info." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/contacts_unblock.html +--- +# Method: contacts.unblock +[Back to methods index](index.html) + + + +Deletes a peer from a blocklist, see [here »](https://core.telegram.org/api/block) for more info. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|my\_stories\_from|[Bool](/API_docs/types/Bool.html) | Whether the peer should be removed from the story blocklist; if not set, the peer will be removed from the main blocklist, see [here »](https://core.telegram.org/api/block) for more info. | Optional| +|id|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->contacts->unblock(my_stories_from: $Bool, id: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/folders.editPeerFolders.md b/docs/API_docs/methods/folders.editPeerFolders.md new file mode 100644 index 0000000000..9fea0fd977 --- /dev/null +++ b/docs/API_docs/methods/folders.editPeerFolders.md @@ -0,0 +1,42 @@ +--- +title: "folders.editPeerFolders" +description: "Edit peers in [peer folder](https://core.telegram.org/api/folders#peer-folders)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/folders_editPeerFolders.html +--- +# Method: folders.editPeerFolders +[Back to methods index](index.html) + + + +Edit peers in [peer folder](https://core.telegram.org/api/folders#peer-folders) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|folder\_peers|Array of [InputFolderPeer](/API_docs/types/InputFolderPeer.html) | New peer list | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->folders->editPeerFolders(folder_peers: [$InputFolderPeer, $InputFolderPeer], ); +``` + diff --git a/docs/API_docs/methods/fragment.getCollectibleInfo.md b/docs/API_docs/methods/fragment.getCollectibleInfo.md new file mode 100644 index 0000000000..04e33d0926 --- /dev/null +++ b/docs/API_docs/methods/fragment.getCollectibleInfo.md @@ -0,0 +1,40 @@ +--- +title: "fragment.getCollectibleInfo" +description: "fragment.getCollectibleInfo parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/fragment_getCollectibleInfo.html +--- +# Method: fragment.getCollectibleInfo +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|collectible|[InputCollectible](/API_docs/types/InputCollectible.html) | Yes| + + +### Return type: [fragment.CollectibleInfo](/API_docs/types/fragment.CollectibleInfo.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$fragment_CollectibleInfo = $MadelineProto->fragment->getCollectibleInfo(collectible: $InputCollectible, ); +``` + diff --git a/docs/API_docs/methods/help.acceptTermsOfService.md b/docs/API_docs/methods/help.acceptTermsOfService.md new file mode 100644 index 0000000000..553840505a --- /dev/null +++ b/docs/API_docs/methods/help.acceptTermsOfService.md @@ -0,0 +1,42 @@ +--- +title: "help.acceptTermsOfService" +description: "Accept the new terms of service" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_acceptTermsOfService.html +--- +# Method: help.acceptTermsOfService +[Back to methods index](index.html) + + + +Accept the new terms of service + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|[DataJSON](/API_docs/types/DataJSON.html) | ID of terms of service | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->help->acceptTermsOfService(id: $DataJSON, ); +``` + diff --git a/docs/API_docs/methods/help.dismissSuggestion.md b/docs/API_docs/methods/help.dismissSuggestion.md new file mode 100644 index 0000000000..256dd72578 --- /dev/null +++ b/docs/API_docs/methods/help.dismissSuggestion.md @@ -0,0 +1,43 @@ +--- +title: "help.dismissSuggestion" +description: "Dismiss a [suggestion, see here for more info »](https://core.telegram.org/api/config#suggestions)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_dismissSuggestion.html +--- +# Method: help.dismissSuggestion +[Back to methods index](index.html) + + + +Dismiss a [suggestion, see here for more info »](https://core.telegram.org/api/config#suggestions). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | In the case of pending suggestions in [channels](../constructors/channelFull.html), the channel ID. | Optional| +|suggestion|[string](/API_docs/types/string.html) | [Suggestion, see here for more info »](https://core.telegram.org/api/config#suggestions). | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->help->dismissSuggestion(peer: $InputPeer, suggestion: 'string', ); +``` + diff --git a/docs/API_docs/methods/help.editUserInfo.md b/docs/API_docs/methods/help.editUserInfo.md new file mode 100644 index 0000000000..891dbcf533 --- /dev/null +++ b/docs/API_docs/methods/help.editUserInfo.md @@ -0,0 +1,111 @@ +--- +title: "help.editUserInfo" +description: "Internal use" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_editUserInfo.html +--- +# Method: help.editUserInfo +[Back to methods index](index.html) + + + +Internal use + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | User | Optional| +|message|[string](/API_docs/types/string.html) | Message | Optional| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | [Message entities for styled text](https://core.telegram.org/api/entities) | Yes| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | + + +### Return type: [help.UserInfo](/API_docs/types/help.UserInfo.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$help_UserInfo = $MadelineProto->help->editUserInfo(user_id: $InputUser, message: 'string', entities: [$MessageEntity, $MessageEntity], parse_mode: 'string', ); +``` + + +## Return value + +If the length of the provided message is bigger than 4096, the message will be split in chunks and the method will be called multiple times, with the same parameters (except for the message), and an array of [help.UserInfo](../types/help.UserInfo.html) will be returned instead. + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + diff --git a/docs/API_docs/methods/help.getAppConfig.md b/docs/API_docs/methods/help.getAppConfig.md new file mode 100644 index 0000000000..7a20b06c6b --- /dev/null +++ b/docs/API_docs/methods/help.getAppConfig.md @@ -0,0 +1,42 @@ +--- +title: "help.getAppConfig" +description: "Get app-specific configuration, see [client configuration](https://core.telegram.org/api/config#client-configuration) for more info on the result." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_getAppConfig.html +--- +# Method: help.getAppConfig +[Back to methods index](index.html) + + + +Get app-specific configuration, see [client configuration](https://core.telegram.org/api/config#client-configuration) for more info on the result. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | | Optional| + + +### Return type: [help.AppConfig](/API_docs/types/help.AppConfig.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$help_AppConfig = $MadelineProto->help->getAppConfig(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/help.getAppUpdate.md b/docs/API_docs/methods/help.getAppUpdate.md new file mode 100644 index 0000000000..e7554bdccd --- /dev/null +++ b/docs/API_docs/methods/help.getAppUpdate.md @@ -0,0 +1,42 @@ +--- +title: "help.getAppUpdate" +description: "Returns information on update availability for the current application." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_getAppUpdate.html +--- +# Method: help.getAppUpdate +[Back to methods index](index.html) + + + +Returns information on update availability for the current application. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|source|[string](/API_docs/types/string.html) | Source | Optional| + + +### Return type: [help.AppUpdate](/API_docs/types/help.AppUpdate.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$help_AppUpdate = $MadelineProto->help->getAppUpdate(source: 'string', ); +``` + diff --git a/docs/API_docs/methods/help.getCdnConfig.md b/docs/API_docs/methods/help.getCdnConfig.md new file mode 100644 index 0000000000..d112666f29 --- /dev/null +++ b/docs/API_docs/methods/help.getCdnConfig.md @@ -0,0 +1,37 @@ +--- +title: "help.getCdnConfig" +description: "Get configuration for [CDN](https://core.telegram.org/cdn) file downloads." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_getCdnConfig.html +--- +# Method: help.getCdnConfig +[Back to methods index](index.html) + + + +Get configuration for [CDN](https://core.telegram.org/cdn) file downloads. + + + +### Return type: [CdnConfig](/API_docs/types/CdnConfig.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$CdnConfig = $MadelineProto->help->getCdnConfig(); +``` + diff --git a/docs/API_docs/methods/help.getConfig.md b/docs/API_docs/methods/help.getConfig.md new file mode 100644 index 0000000000..2eb4e62841 --- /dev/null +++ b/docs/API_docs/methods/help.getConfig.md @@ -0,0 +1,37 @@ +--- +title: "help.getConfig" +description: "Returns current configuration, including data center configuration." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_getConfig.html +--- +# Method: help.getConfig +[Back to methods index](index.html) + + + +Returns current configuration, including data center configuration. + + + +### Return type: [Config](/API_docs/types/Config.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Config = $MadelineProto->help->getConfig(); +``` + diff --git a/docs/API_docs/methods/help.getCountriesList.md b/docs/API_docs/methods/help.getCountriesList.md new file mode 100644 index 0000000000..679041c00c --- /dev/null +++ b/docs/API_docs/methods/help.getCountriesList.md @@ -0,0 +1,43 @@ +--- +title: "help.getCountriesList" +description: "Get name, ISO code, localized name and phone codes/patterns of all available countries" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_getCountriesList.html +--- +# Method: help.getCountriesList +[Back to methods index](index.html) + + + +Get name, ISO code, localized name and phone codes/patterns of all available countries + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|lang\_code|[string](/API_docs/types/string.html) | Language code of the current user | Optional| +|hash|Array of [long](/API_docs/types/long.html) | | Optional| + + +### Return type: [help.CountriesList](/API_docs/types/help.CountriesList.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$help_CountriesList = $MadelineProto->help->getCountriesList(lang_code: 'string', hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/help.getDeepLinkInfo.md b/docs/API_docs/methods/help.getDeepLinkInfo.md new file mode 100644 index 0000000000..75f4fa58c0 --- /dev/null +++ b/docs/API_docs/methods/help.getDeepLinkInfo.md @@ -0,0 +1,42 @@ +--- +title: "help.getDeepLinkInfo" +description: "Get info about an unsupported deep link, see [here for more info »](https://core.telegram.org/api/links#unsupported-links)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_getDeepLinkInfo.html +--- +# Method: help.getDeepLinkInfo +[Back to methods index](index.html) + + + +Get info about an unsupported deep link, see [here for more info »](https://core.telegram.org/api/links#unsupported-links). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|path|[string](/API_docs/types/string.html) | Path component of a `tg:` link | Optional| + + +### Return type: [help.DeepLinkInfo](/API_docs/types/help.DeepLinkInfo.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$help_DeepLinkInfo = $MadelineProto->help->getDeepLinkInfo(path: 'string', ); +``` + diff --git a/docs/API_docs/methods/help.getInviteText.md b/docs/API_docs/methods/help.getInviteText.md new file mode 100644 index 0000000000..8c4a44fee4 --- /dev/null +++ b/docs/API_docs/methods/help.getInviteText.md @@ -0,0 +1,37 @@ +--- +title: "help.getInviteText" +description: "Returns localized text of a text message with an invitation." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_getInviteText.html +--- +# Method: help.getInviteText +[Back to methods index](index.html) + + + +Returns localized text of a text message with an invitation. + + + +### Return type: [help.InviteText](/API_docs/types/help.InviteText.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$help_InviteText = $MadelineProto->help->getInviteText(); +``` + diff --git a/docs/API_docs/methods/help.getNearestDc.md b/docs/API_docs/methods/help.getNearestDc.md new file mode 100644 index 0000000000..d55ddec38b --- /dev/null +++ b/docs/API_docs/methods/help.getNearestDc.md @@ -0,0 +1,37 @@ +--- +title: "help.getNearestDc" +description: "Returns info on data center nearest to the user." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_getNearestDc.html +--- +# Method: help.getNearestDc +[Back to methods index](index.html) + + + +Returns info on data center nearest to the user. + + + +### Return type: [NearestDc](/API_docs/types/NearestDc.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$NearestDc = $MadelineProto->help->getNearestDc(); +``` + diff --git a/docs/API_docs/methods/help.getPassportConfig.md b/docs/API_docs/methods/help.getPassportConfig.md new file mode 100644 index 0000000000..ae5ce28247 --- /dev/null +++ b/docs/API_docs/methods/help.getPassportConfig.md @@ -0,0 +1,42 @@ +--- +title: "help.getPassportConfig" +description: "Get [passport](https://core.telegram.org/passport) configuration" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_getPassportConfig.html +--- +# Method: help.getPassportConfig +[Back to methods index](index.html) + + + +Get [passport](https://core.telegram.org/passport) configuration + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | | Optional| + + +### Return type: [help.PassportConfig](/API_docs/types/help.PassportConfig.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$help_PassportConfig = $MadelineProto->help->getPassportConfig(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/help.getPeerColors.md b/docs/API_docs/methods/help.getPeerColors.md new file mode 100644 index 0000000000..1b9df22c0c --- /dev/null +++ b/docs/API_docs/methods/help.getPeerColors.md @@ -0,0 +1,42 @@ +--- +title: "help.getPeerColors" +description: "Get the set of [accent color palettes »](https://core.telegram.org/api/colors) that can be used for message accents." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_getPeerColors.html +--- +# Method: help.getPeerColors +[Back to methods index](index.html) + + + +Get the set of [accent color palettes »](https://core.telegram.org/api/colors) that can be used for message accents. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | | Optional| + + +### Return type: [help.PeerColors](/API_docs/types/help.PeerColors.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$help_PeerColors = $MadelineProto->help->getPeerColors(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/help.getPeerProfileColors.md b/docs/API_docs/methods/help.getPeerProfileColors.md new file mode 100644 index 0000000000..06fc38b3ac --- /dev/null +++ b/docs/API_docs/methods/help.getPeerProfileColors.md @@ -0,0 +1,42 @@ +--- +title: "help.getPeerProfileColors" +description: "Get the set of [accent color palettes »](https://core.telegram.org/api/colors) that can be used in profile page backgrounds." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_getPeerProfileColors.html +--- +# Method: help.getPeerProfileColors +[Back to methods index](index.html) + + + +Get the set of [accent color palettes »](https://core.telegram.org/api/colors) that can be used in profile page backgrounds. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | | Optional| + + +### Return type: [help.PeerColors](/API_docs/types/help.PeerColors.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$help_PeerColors = $MadelineProto->help->getPeerProfileColors(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/help.getPremiumPromo.md b/docs/API_docs/methods/help.getPremiumPromo.md new file mode 100644 index 0000000000..49c09aa553 --- /dev/null +++ b/docs/API_docs/methods/help.getPremiumPromo.md @@ -0,0 +1,37 @@ +--- +title: "help.getPremiumPromo" +description: "Get Telegram Premium promotion information" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_getPremiumPromo.html +--- +# Method: help.getPremiumPromo +[Back to methods index](index.html) + + + +Get Telegram Premium promotion information + + + +### Return type: [help.PremiumPromo](/API_docs/types/help.PremiumPromo.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$help_PremiumPromo = $MadelineProto->help->getPremiumPromo(); +``` + diff --git a/docs/API_docs/methods/help.getPromoData.md b/docs/API_docs/methods/help.getPromoData.md new file mode 100644 index 0000000000..70fb34d74b --- /dev/null +++ b/docs/API_docs/methods/help.getPromoData.md @@ -0,0 +1,37 @@ +--- +title: "help.getPromoData" +description: "Get MTProxy/Public Service Announcement information" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_getPromoData.html +--- +# Method: help.getPromoData +[Back to methods index](index.html) + + + +Get MTProxy/Public Service Announcement information + + + +### Return type: [help.PromoData](/API_docs/types/help.PromoData.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$help_PromoData = $MadelineProto->help->getPromoData(); +``` + diff --git a/docs/API_docs/methods/help.getRecentMeUrls.md b/docs/API_docs/methods/help.getRecentMeUrls.md new file mode 100644 index 0000000000..1b0b8db85e --- /dev/null +++ b/docs/API_docs/methods/help.getRecentMeUrls.md @@ -0,0 +1,45 @@ +--- +title: "help.getRecentMeUrls" +description: "Get recently used `t.me` links." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_getRecentMeUrls.html +--- +# Method: help.getRecentMeUrls +[Back to methods index](index.html) + + + +Get recently used `t.me` links. + +When installing official applications from "Download Telegram" buttons present in [t.me](https://t.me) pages, a referral parameter is passed to applications after installation. +If, after downloading the application, the user creates a new account (instead of logging into an existing one), the referral parameter should be imported using this method, which returns the [t.me](https://t.me) pages the user recently opened, before installing Telegram. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|referer|[string](/API_docs/types/string.html) | Referrer | Optional| + + +### Return type: [help.RecentMeUrls](/API_docs/types/help.RecentMeUrls.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$help_RecentMeUrls = $MadelineProto->help->getRecentMeUrls(referer: 'string', ); +``` + diff --git a/docs/API_docs/methods/help.getSupport.md b/docs/API_docs/methods/help.getSupport.md new file mode 100644 index 0000000000..066fdd1c51 --- /dev/null +++ b/docs/API_docs/methods/help.getSupport.md @@ -0,0 +1,37 @@ +--- +title: "help.getSupport" +description: "Returns the support user for the 'ask a question' feature." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_getSupport.html +--- +# Method: help.getSupport +[Back to methods index](index.html) + + + +Returns the support user for the "ask a question" feature. + + + +### Return type: [help.Support](/API_docs/types/help.Support.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$help_Support = $MadelineProto->help->getSupport(); +``` + diff --git a/docs/API_docs/methods/help.getSupportName.md b/docs/API_docs/methods/help.getSupportName.md new file mode 100644 index 0000000000..31bb7f9845 --- /dev/null +++ b/docs/API_docs/methods/help.getSupportName.md @@ -0,0 +1,37 @@ +--- +title: "help.getSupportName" +description: "Get localized name of the telegram support user" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_getSupportName.html +--- +# Method: help.getSupportName +[Back to methods index](index.html) + + + +Get localized name of the telegram support user + + + +### Return type: [help.SupportName](/API_docs/types/help.SupportName.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$help_SupportName = $MadelineProto->help->getSupportName(); +``` + diff --git a/docs/API_docs/methods/help.getTermsOfServiceUpdate.md b/docs/API_docs/methods/help.getTermsOfServiceUpdate.md new file mode 100644 index 0000000000..32ca482db6 --- /dev/null +++ b/docs/API_docs/methods/help.getTermsOfServiceUpdate.md @@ -0,0 +1,37 @@ +--- +title: "help.getTermsOfServiceUpdate" +description: "Look for updates of telegram's terms of service" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_getTermsOfServiceUpdate.html +--- +# Method: help.getTermsOfServiceUpdate +[Back to methods index](index.html) + + + +Look for updates of telegram's terms of service + + + +### Return type: [help.TermsOfServiceUpdate](/API_docs/types/help.TermsOfServiceUpdate.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$help_TermsOfServiceUpdate = $MadelineProto->help->getTermsOfServiceUpdate(); +``` + diff --git a/docs/API_docs/methods/help.getTimezonesList.md b/docs/API_docs/methods/help.getTimezonesList.md new file mode 100644 index 0000000000..cd6e4a5006 --- /dev/null +++ b/docs/API_docs/methods/help.getTimezonesList.md @@ -0,0 +1,40 @@ +--- +title: "help.getTimezonesList" +description: "help.getTimezonesList parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_getTimezonesList.html +--- +# Method: help.getTimezonesList +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | Optional| + + +### Return type: [help.TimezonesList](/API_docs/types/help.TimezonesList.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$help_TimezonesList = $MadelineProto->help->getTimezonesList(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/help.getUserInfo.md b/docs/API_docs/methods/help.getUserInfo.md new file mode 100644 index 0000000000..ce242cb69c --- /dev/null +++ b/docs/API_docs/methods/help.getUserInfo.md @@ -0,0 +1,42 @@ +--- +title: "help.getUserInfo" +description: "Can only be used by TSF members to obtain internal information." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_getUserInfo.html +--- +# Method: help.getUserInfo +[Back to methods index](index.html) + + + +Can only be used by TSF members to obtain internal information. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | User ID | Optional| + + +### Return type: [help.UserInfo](/API_docs/types/help.UserInfo.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$help_UserInfo = $MadelineProto->help->getUserInfo(user_id: $InputUser, ); +``` + diff --git a/docs/API_docs/methods/help.hidePromoData.md b/docs/API_docs/methods/help.hidePromoData.md new file mode 100644 index 0000000000..294e98dd3e --- /dev/null +++ b/docs/API_docs/methods/help.hidePromoData.md @@ -0,0 +1,42 @@ +--- +title: "help.hidePromoData" +description: "Hide MTProxy/Public Service Announcement information" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_hidePromoData.html +--- +# Method: help.hidePromoData +[Back to methods index](index.html) + + + +Hide MTProxy/Public Service Announcement information + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer to hide | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->help->hidePromoData(peer: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/help.saveAppLog.md b/docs/API_docs/methods/help.saveAppLog.md new file mode 100644 index 0000000000..64dc1dbc9e --- /dev/null +++ b/docs/API_docs/methods/help.saveAppLog.md @@ -0,0 +1,42 @@ +--- +title: "help.saveAppLog" +description: "Saves logs of application on the server." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_saveAppLog.html +--- +# Method: help.saveAppLog +[Back to methods index](index.html) + + + +Saves logs of application on the server. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|events|Array of [InputAppEvent](/API_docs/types/InputAppEvent.html) | List of input events | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->help->saveAppLog(events: [$InputAppEvent, $InputAppEvent], ); +``` + diff --git a/docs/API_docs/methods/help.setBotUpdatesStatus.md b/docs/API_docs/methods/help.setBotUpdatesStatus.md new file mode 100644 index 0000000000..1e4a2f2d88 --- /dev/null +++ b/docs/API_docs/methods/help.setBotUpdatesStatus.md @@ -0,0 +1,49 @@ +--- +title: "help.setBotUpdatesStatus" +description: "Informs the server about the number of pending bot updates if they haven't been processed for a long time; for bots only" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/help_setBotUpdatesStatus.html +--- +# Method: help.setBotUpdatesStatus +[Back to methods index](index.html) + + + +Informs the server about the number of pending bot updates if they haven't been processed for a long time; for bots only + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|pending\_updates\_count|[int](/API_docs/types/int.html) | Number of pending updates | Optional| +|message|[string](/API_docs/types/string.html) | Error message, if present | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->help->setBotUpdatesStatus(pending_updates_count: $int, message: 'string', ); +``` + + +## Return value + +If the length of the provided message is bigger than 4096, the message will be split in chunks and the method will be called multiple times, with the same parameters (except for the message), and an array of [Bool](../types/Bool.html) will be returned instead. + + diff --git a/docs/API_docs/methods/index.md b/docs/API_docs/methods/index.md new file mode 100644 index 0000000000..7cabb08994 --- /dev/null +++ b/docs/API_docs/methods/index.md @@ -0,0 +1,1689 @@ +--- +title: Methods +description: What do you want to do? +parent: "Telegram RPC API" +has_children: true +nav_order: 3 +has_toc: false +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# What do you want to do? +[Go back to API documentation index](..) + +[Go to the old code-version method index](api_index.html) + +* [Login](https://docs.madelineproto.xyz/docs/LOGIN.html) + +* [Change 2FA password: update2FA](https://docs.madelineproto.xyz/update2fa.html) + +* [Get all chats, broadcast a message to all chats: getDialogIds, getDialogs, getFullDialogs](https://docs.madelineproto.xyz/docs/DIALOGS.html) + +* [Get the full participant list of a channel/group/supergroup: getPwrChat](https://docs.madelineproto.xyz/getPwrChat.html) + +* [Get full info about a user/chat/supergroup/channel: getFullInfo](https://docs.madelineproto.xyz/getFullInfo.html) + +* [Get info about a user/chat/supergroup/channel: getInfo](https://docs.madelineproto.xyz/getInfo.html) + +* [Get the ID of a user/chat/supergroup/channel/update: getID](https://docs.madelineproto.xyz/getId.html) + +* [Get info about the currently logged-in user: getSelf](https://docs.madelineproto.xyz/getSelf.html) + +* [Upload or download files up to 4 GB: uploadFrom*, downloadTo*](https://docs.madelineproto.xyz/docs/FILES.html) + +* [Make a phone call and play a song](https://docs.madelineproto.xyz/docs/CALLS.html) + +* [Create a secret chat bot](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html) + +* Abort a pending 2FA password reset, see here for more info »: account.declinePasswordReset + +* Accept QR code login token, logging in the app that generated it: auth.acceptLoginToken + +* Accept call: acceptCall + +* Accept secret chat: acceptSecretChat + +* Accept the new terms of service: help.acceptTermsOfService + +* Activate or deactivate a purchased fragment.com username associated to a bot we own: bots.toggleUsername + +* Activate or deactivate a purchased fragment.com username associated to a supergroup or channel we own: channels.toggleUsername + +* Activate or deactivate a purchased fragment.com username associated to the currently logged-in user: account.toggleUsername + +* Activates stories stealth mode, see here » for more info: stories.activateStealthMode + +* Add GIF to saved gifs list: messages.saveGif + +* Add a sticker to a stickerset, bots only. The sticker set must have been created by the bot: stickers.addStickerToSet + +* Add an existing telegram user as contact: contacts.addContact + +* Add/remove sticker from recent stickers list: messages.saveRecentSticker + +* Adds a peer to a blocklist, see here » for more info: contacts.block + +* Adds a user to a chat and sends a service message on it: messages.addChatUser + +* Allow the specified bot to send us messages: bots.allowSendMessage + +* Answer an inline query, for bots only: messages.setInlineBotResults + +* Answers a custom query; for bots only: bots.answerWebhookJSONQuery + +* Apply a Telegram Premium giftcode »: payments.applyGiftCode + +* Apply changes to multiple stickersets: messages.toggleStickerSets + +* Apply one or more boosts » to a peer: premium.applyBoost + +* Associate a group to a channel as discussion group for that channel: channels.setDiscussionGroup + +* Associate a stickerset to the supergroup: channels.setStickers + +* Asynchronously lock a file: flock + +* Asynchronously read line: readLine + +* Asynchronously sleep: sleep + +* Asynchronously write to stdout/browser: echo + +* Ban/unban/kick a user in a supergroup/channel: channels.editBanned + +* Base64URL encode: base64urlEncode + +* Can only be used by TSF members to obtain internal information: help.getUserInfo + +* Cancel a running broadcast: cancelBroadcast + +* Cancel the code that was sent to verify an email to use as 2FA recovery method: account.cancelPasswordEmail + +* Cancel the login verification code: auth.cancelCode + +* Change default emoji reaction to use in the quick reaction menu: the value is synced across devices and can be fetched using help.getConfig, reactions_default field: messages.setDefaultReaction + +* Change group call settings: phone.toggleGroupCallSettings + +* Change media autodownload settings: account.saveAutoDownloadSettings + +* Change or remove the username of a supergroup/channel: channels.updateUsername + +* Change privacy settings of current account: account.setPrivacy + +* Change settings related to a session: account.changeAuthorizationSettings + +* Change the chat theme of a certain chat: messages.setChatTheme + +* Change the default peer that should be used when sending messages, reactions, poll votes to a specific group: messages.saveDefaultSendAs + +* Change the phone number of the current account: account.changePhone + +* Change the photo of a channel/supergroup: channels.editPhoto + +* Change the set of message reactions » that can be used in a certain group, supergroup or channel: messages.setChatAvailableReactions + +* Changes chat name and sends a service message on it: messages.editChatTitle + +* Changes chat photo and sends a service message on it: messages.editChatPhoto + +* Changes the absolute position of a sticker in the set to which it belongs; for bots only. The sticker set must have been created by the bot: stickers.changeStickerPosition + +* Changes the default value of the Time-To-Live setting, applied to all new chats: messages.setDefaultHistoryTTL + +* Changes username for the current user: account.updateUsername + +* Check if a certain event handler plugin is installed: hasPlugin + +* Check if a username is free and can be assigned to a channel/supergroup: channels.checkUsername + +* Check if an event handler instance is present: hasEventHandler + +* Check if has admins: hasAdmins + +* Check if has report peers: hasReportPeers + +* Check if is array or similar (traversable && countable && arrayAccess): isArrayOrAlike + +* Check if peer is present in internal peer database: peerIsset + +* Check if the 2FA recovery code sent using auth.requestPasswordRecovery is valid, before passing it to auth.recoverPassword: auth.checkRecoveryPassword + +* Check if the specified peer is a bot: isBot + +* Check if the specified peer is a forum: isForum + +* Check the validity of a chat invite link and get basic info about it: messages.checkChatInvite + +* Check whether chat history exported from another chat app can be imported into a specific Telegram chat, click here for more info »: messages.checkHistoryImportPeer + +* Check whether secret chat exists: hasSecretChat + +* Check whether the given short name is available: stickers.checkShortName + +* Check whether the group call Server Forwarding Unit is currently receiving the streams with the specified WebRTC source IDs.: phone.checkGroupCall + +* Check whether the specified bot can send us messages: bots.canSendMessage + +* Check whether we can post stories as the specified peer: stories.canSendStory + +* Checks whether Telegram Premium purchase is possible. Must be called before in-store Premium purchase, official apps only: payments.canPurchasePremium + +* Clear all drafts: messages.clearAllDrafts + +* Clear all peer-specific autosave settings: account.deleteAutoSaveExceptions + +* Clear bot commands for the specified bot scope and language code: bots.resetBotCommands + +* Clear recent stickers: messages.clearRecentStickers + +* Clear recently used message reactions: messages.clearRecentReactions + +* Clear saved payment information: payments.clearSavedInfo + +* Clears list of recently used emoji statuses: account.clearRecentEmojiStatuses + +* Close connection with client, connected via web: closeConnection + +* Complet user login using login code: completePhoneLogin + +* Complete 2FA login: complete2faLogin + +* Complete signup to Telegram: completeSignup + +* Complete the history import process, importing all messages into the chat.: messages.startHistoryImport + +* Confirm a phone number to cancel account deletion, for more info click here »: account.confirmPhone + +* Confirms receipt of messages by a client, cancels PUSH-notification sending: messages.receivedMessages + +* Convert MTProto parameters to bot API parameters: MTProtoToBotAPI + +* Convert TD parameters to tdcli: tdToTdcli + +* Convert TD to MTProto parameters: tdToMTProto + +* Convert a message and a set of entities to HTML: entitiesToHtml + +* Convert a supergroup to a gigagroup, when requested by channel suggestions: channels.convertToGigagroup + +* Convert bot API parameters to MTProto parameters: botAPIToMTProto + +* Convert double to binary version: packDouble + +* Convert integer to base256 long: packSignedLong + +* Convert integer to base256 signed int: packSignedInt + +* Convert tdcli parameters to tdcli: tdcliToTd + +* Convert to camelCase: toCamelCase + +* Convert to snake_case: toSnakeCase + +* Convert value to unsigned base256 int: packUnsignedInt + +* Converts a string into an async amphp stream: stringToStream + +* Create a forum topic; requires manage_topics rights: channels.createForumTopic + +* Create a group call or livestream: phone.createGroupCall + +* Create a stickerset, bots only: stickers.createStickerSet + +* Create a supergroup/channel: channels.createChannel + +* Create a theme: account.createTheme + +* Create and upload a new wallpaper: account.uploadWallPaper + +* Create array: arr + +* Creates a new chat: messages.createChat + +* Delete a channel/supergroup: channels.deleteChannel + +* Delete a chat invite: messages.deleteExportedChatInvite + +* Delete a chat: messages.deleteChat + +* Delete a folder imported using a chat folder deep link »: chatlists.leaveChatlist + +* Delete a previously created chat folder deep link »: chatlists.deleteExportedInvite + +* Delete all installed wallpapers, reverting to the default wallpaper set: account.resetWallPapers + +* Delete all messages sent by a specific participant of a given supergroup: channels.deleteParticipantHistory + +* Delete all revoked chat invites: messages.deleteRevokedExportedChatInvites + +* Delete all temporary authorization keys except for the ones specified: auth.dropTempAuthKeys + +* Delete contacts by phone number: contacts.deleteByPhones + +* Delete message history of a forum topic: channels.deleteTopicHistory + +* Delete messages in a channel/supergroup: channels.deleteMessages + +* Delete scheduled messages: messages.deleteScheduledMessages + +* Delete stored Telegram Passport documents, for more info see the passport docs »: account.deleteSecureValue + +* Delete the entire phone call history: messages.deletePhoneCallHistory + +* Delete the history of a supergroup: channels.deleteHistory + +* Delete the user's account from the telegram servers: account.deleteAccount + +* Deletes a device by its token, stops sending PUSH-notifications to it: account.unregisterDevice + +* Deletes a peer from a blocklist, see here » for more info: contacts.unblock + +* Deletes a stickerset we created, bots only: stickers.deleteStickerSet + +* Deletes a user from a chat and sends a service message on it: messages.deleteChatUser + +* Deletes communication history: messages.deleteHistory + +* Deletes messages by their identifiers: messages.deleteMessages + +* Deletes messages forwarded from a specific peer to saved messages »: messages.deleteSavedHistory + +* Deletes profile photos. The method returns a list of successfully deleted photo IDs: photos.deletePhotos + +* Deletes several contacts from the list: contacts.deleteContacts + +* Deletes some posted stories: stories.deleteStories + +* Disable all purchased usernames of a supergroup or channel: channels.deactivateAllUsernames + +* Discard call: discardCall + +* Discard secret chat: discardSecretChat + +* Dismiss a suggestion, see here for more info »: help.dismissSuggestion + +* Dismiss new pending peers recently added to a chat folder deep link »: chatlists.hideChatlistUpdates + +* Dismiss or approve a chat join request related to a specific chat or channel: messages.hideChatJoinRequest + +* Dismiss or approve all join requests related to a specific chat or channel: messages.hideAllChatJoinRequests + +* Download file to amphp/http-server response: downloadToResponse + +* Download file to an amphp stream, returning it: downloadToReturnedStream + +* Download file to browser: downloadToBrowser + +* Download file to callable: downloadToCallable + +* Download file to directory: downloadToDir + +* Download file to stream: downloadToStream + +* Download file: downloadToFile + +* Downloads a file to the browser using the specified session file: downloadServer + +* Edit a chat folder deep link »: chatlists.editExportedInvite + +* Edit an exported chat invite: messages.editExportedChatInvite + +* Edit an inline bot message: messages.editInlineBotMessage + +* Edit an uploaded story: stories.editStory + +* Edit forum topic; requires manage_topics rights: channels.editForumTopic + +* Edit information about a given group call participant: phone.editGroupCallParticipant + +* Edit location of geogroup, see here » for more info on geogroups: channels.editLocation + +* Edit message: messages.editMessage + +* Edit peers in peer folder: folders.editPeerFolders + +* Edit the close friends list, see here » for more info: contacts.editCloseFriends + +* Edit the default banned rights of a channel/supergroup/group: messages.editChatDefaultBannedRights + +* Edit the description of a group/supergroup/channel: messages.editChatAbout + +* Edit the name of a channel/supergroup: channels.editTitle + +* Edit the title of a group call or livestream: phone.editGroupCallTitle + +* Edits notification settings from a given user/group, from all users/all groups: account.updateNotifySettings + +* Enable or disable content protection on a channel or chat: messages.toggleNoForwards + +* Enable or disable forum functionality in a supergroup: channels.toggleForum + +* Enable or disable the native antispam system: channels.toggleAntiSpam + +* Enable or disable web bot attachment menu »: messages.toggleBotInAttachMenu + +* Enable/disable message signatures in channels: channels.toggleSignatures + +* Enable/disable top peers: contacts.toggleTopPeers + +* Escape string for MadelineProto's HTML entity converter: htmlEscape + +* Escape string for URL: markdownUrlEscape + +* Escape string for markdown code section: markdownCodeEscape + +* Escape string for markdown codeblock: markdownCodeblockEscape + +* Escape string for markdown: markdownEscape + +* Executes a custom broadcast action with all peers (users, chats, channels) of the bot: broadcastCustom + +* Export a folder », creating a chat folder deep link »: chatlists.exportChatlistInvite + +* Export an invite link for a chat: messages.exportChatInvite + +* Export authorization: exportAuthorization + +* Extract Update constructors from an Updates constructor: extractUpdates + +* Extract a message ID from an Updates constructor: extractMessageId + +* Extract a message constructor from an Updates constructor: extractMessage + +* Extract an update message constructor from an Updates constructor: extractMessageUpdate + +* Extract file info from bot API message: extractBotAPIFile + +* Fetch custom emoji stickers »: messages.getCustomEmojiDocuments + +* Fetch new chats associated with an imported chat folder deep link ». Must be invoked at most every chatlist_update_period seconds (as per the related client configuration parameter »): chatlists.getChatlistUpdates + +* Fetch saved notification sounds: account.getSavedRingtones + +* Fetch the List of active (or active and hidden) stories, see here » for more info on watching stories: stories.getAllStories + +* Fetch the full active story list of a specific peer: stories.getPeerStories + +* Fetch the stories pinned on a peer's profile: stories.getPinnedStories + +* Fetch the story archive » of a peer we control: stories.getStoriesArchive + +* Find out if a media message's caption can be edited: messages.getMessageEditData + +* Fork a new green thread and execute the passed function in the background: callFork + +* Forwards a list of messages to all peers (users, chats, channels) of the bot: broadcastForwardMessages + +* Forwards messages by their IDs: messages.forwardMessages + +* Generate MTProto vector hash: genVectorHash + +* Generate a login token, for login via QR code.: auth.exportLoginToken + +* Generate a story deep link for a specific story: stories.exportStoryLink + +* Generate an invoice deep link: payments.exportInvoice + +* Generates a temporary profile link for the currently logged-in user: contacts.exportContactToken + +* Get MTProxy/Public Service Announcement information: help.getPromoData + +* Get PSR logger: getPsrLogger + +* Get RTMP URL and stream key for RTMP livestreams. Can be used even before creating the actual RTMP livestream with phone.createGroupCall (the rtmp_stream flag must be set): phone.getGroupCallStreamRtmpUrl + +* Get TL namespaces: getMethodNamespaces + +* Get TL serializer: getTL + +* Get Telegram Premium promotion information: help.getPremiumPromo + +* Get Telegram UTF-8 length of string: mbStrlen + +* Get a document by its SHA256 hash, mainly used for gifs: messages.getDocumentByHash + +* Get a list of channels/supergroups we left, requires a takeout session, see here » for more info: channels.getLeftChannels + +* Get a list of default suggested channel emoji statuses: account.getChannelDefaultEmojiStatuses + +* Get a list of default suggested emoji statuses: account.getDefaultEmojiStatuses + +* Get a list of peers that can be used to join a group call, presenting yourself as a specific user/channel: phone.getGroupCallJoinAs + +* Get a list of sponsored messages: channels.getSponsoredMessages + +* Get a message to show to the user when starting the bot: getWebMessage + +* Get a payment form: payments.getPaymentForm + +* Get a set of suggested custom emoji stickers that can be used as group picture: account.getDefaultGroupPhotoEmojis + +* Get a set of suggested custom emoji stickers that can be used as profile picture: account.getDefaultProfilePhotoEmojis + +* Get a set of suggested custom emoji stickers that can be used in an accent color pattern: account.getDefaultBackgroundEmojis + +* Get admin IDs (equal to all user report peers): getAdminIds + +* Get all archived stickers: messages.getArchivedStickers + +* Get all available chat themes »: account.getChatThemes + +* Get all contacts, requires a takeout session, see here » for more info: contacts.getSaved + +* Get all groups that can be used as discussion groups: channels.getGroupsForDiscussion + +* Get all installed stickers: messages.getAllStickers + +* Get all pending and running calls, indexed by user ID: getAllCalls + +* Get all saved Telegram Passport documents, for more info see the passport docs »: account.getAllSecureValues + +* Get an invite link for a group call or livestream: phone.exportGroupCallInvite + +* Get and increase the view counter of a message sent or forwarded from a channel: messages.getMessagesViews + +* Get app-specific configuration, see client configuration for more info on the result: help.getAppConfig + +* Get async DNS client: getDNSClient + +* Get async HTTP client: getHTTPClient + +* Get authorization info: getAuthorization + +* Get autosave settings: account.getAutoSaveSettings + +* Get cached (or eventually re-fetch) server-side config: getConfig + +* Get cached server-side config: getCachedConfig + +* Get call state: getCallState + +* Get changed emoji keywords »: messages.getEmojiKeywordsDifference + +* Get channel statistics: stats.getBroadcastStats + +* Get channel/supergroup messages: channels.getMessages + +* Get channels/supergroups/geogroups we're admin in. Usually called when the user exceeds the limit for owned public channels/supergroups/geogroups, and the user is given the choice to remove one of his channels/supergroups/geogroups: channels.getAdminedPublicChannels + +* Get chats in common with a user: messages.getCommonChats + +* Get configuration for CDN file downloads: help.getCdnConfig + +* Get contents of remote file asynchronously: fileGetContents + +* Get count of online users in a chat: messages.getOnlines + +* Get current number of memory-mapped regions, UNIX only: getMaps + +* Get current password hint: getHint + +* Get days to live of account: account.getAccountTTL + +* Get dialog info of specified peers: messages.getPeerDialogs + +* Get dialogs manually marked as unread: messages.getDialogUnreadMarks + +* Get diffie-hellman configuration: getDhConfig + +* Get discussion message from the associated discussion group of a channel to show it on top of the comment section, without actually joining the group: messages.getDiscussionMessage + +* Get download info of file: getDownloadInfo + +* Get download link of media file: getDownloadLink + +* Get event handler (or plugin instance): getEventHandler + +* Get extension from file location: getExtensionFromLocation + +* Get extension from mime type: getExtensionFromMime + +* Get faved stickers: messages.getFavedStickers + +* Get featured stickers: messages.getFeaturedStickers + +* Get final element of array: end + +* Get folders: messages.getDialogFilters + +* Get forum topics by their ID: channels.getForumTopicsByID + +* Get full list of MTProto and API methods: getAllMethods + +* Get global privacy settings: account.getGlobalPrivacySettings + +* Get group call participants: phone.getGroupParticipants + +* Get highscores of a game sent using an inline bot: messages.getInlineGameHighScores + +* Get highscores of a game: messages.getGameHighScores + +* Get inactive channels and supergroups: channels.getInactiveChannels + +* Get info about RTMP streams in a group call or livestream.: phone.getGroupCallStreamChannels + +* Get info about a certain wallpaper: account.getWallPaper + +* Get info about a channel/supergroup participant: channels.getParticipant + +* Get info about a chat invite: messages.getExportedChatInvite + +* Get info about a credit card: payments.getBankCardData + +* Get info about a group call: phone.getGroupCall + +* Get info about a stickerset: messages.getStickerSet + +* Get info about an unsupported deep link, see here for more info »: help.getDeepLinkInfo + +* Get info about chat invites generated by admins: messages.getAdminsWithInvites + +* Get info about file: getFileInfo + +* Get info about multiple wallpapers: account.getMultiWallPapers + +* Get info about the chat invites of a specific chat: messages.getExportedChatInvites + +* Get info about the logged-in user, not cached: fullGetSelf + +* Get info about the users that joined the chat using a specific chat invite: messages.getChatInviteImporters + +* Get information about a language in a localization pack: langpack.getLanguage + +* Get information about all languages in a localization pack: langpack.getLanguages + +* Get information about extended media: messages.getExtendedMedia + +* Get installed mask stickers: messages.getMaskStickers + +* Get installed themes: account.getThemes + +* Get instant view page: messages.getWebPage + +* Get link and embed info of a message in a channel/supergroup: channels.exportMessageLink + +* Get live location history of a certain user: messages.getRecentLocations + +* Get localization pack strings: langpack.getLangPack + +* Get localized emoji keywords »: messages.getEmojiKeywords + +* Get localized name of the telegram support user: help.getSupportName + +* Get localized name, about text and description of a bot (or of the current account, if called by a bot): bots.getBotInfo + +* Get logged-in sessions: account.getAuthorizations + +* Get logger: getLogger + +* Get maximum number of memory-mapped regions, UNIX only: getMaxMaps + +* Get media autodownload settings: account.getAutoDownloadSettings + +* Get message ranges for saving the user's chat history: messages.getSplitRanges + +* Get message reaction list, along with the sender of each reaction: messages.getMessageReactionsList + +* Get message reactions »: messages.getMessagesReactions + +* Get message statistics: stats.getMessageStats + +* Get messages in a reply thread: messages.getReplies + +* Get mime type from buffer: getMimeFromBuffer + +* Get mime type from file extension: getMimeFromExtension + +* Get mime type of file: getMimeFromFile + +* Get more info about a Seamless Telegram Login authorization request, for more info click here »: messages.requestUrlAuth + +* Get most used peers: contacts.getTopPeers + +* Get name, ISO code, localized name and phone codes/patterns of all available countries: help.getCountriesList + +* Get namespaced methods (method => namespace): getMethodsNamespaced + +* Get new strings in language pack: langpack.getDifference + +* Get passport configuration: help.getPassportConfig + +* Get payment receipt: payments.getPaymentReceipt + +* Get peer settings: messages.getPeerSettings + +* Get phone call configuration to be passed to libtgvoip's shared config: phone.getCallConfig + +* Get phone call information: getCall + +* Get pinned dialogs: messages.getPinnedDialogs + +* Get pinned saved dialogs, see here » for more info: messages.getPinnedSavedDialogs + +* Get poll results for non-anonymous polls: messages.getPollVotes + +* Get poll results: messages.getPollResults + +* Get preview of webpage: messages.getWebPagePreview + +* Get privacy settings of current account: account.getPrivacy + +* Get random integer: randomInt + +* Get recent stickers: messages.getRecentStickers + +* Get recently used emoji statuses: account.getRecentEmojiStatuses + +* Get recently used message reactions: messages.getRecentReactions + +* Get recently used t.me links: help.getRecentMeUrls + +* Get saved GIFs: messages.getSavedGifs + +* Get saved Telegram Passport document, for more info see the passport docs »: account.getSecureValue + +* Get saved payment information: payments.getSavedInfo + +* Get scheduled messages: messages.getScheduledHistory + +* Get scheduled messages: messages.getScheduledMessages + +* Get secret chat: getSecretChat + +* Get secure random string of specified length: random + +* Get sensitive content settings: account.getContentSettings + +* Get sponsored messages for channel: getSponsoredMessages + +* Get statistics for a certain story: stats.getStoryStats + +* Get stickers attached to a photo or video: messages.getAttachedStickers + +* Get stickers by emoji: messages.getStickers + +* Get strings from a language pack: langpack.getStrings + +* Get suggested folders: messages.getSuggestedDialogFilters + +* Get supergroup statistics: stats.getMegagroupStats + +* Get temporary payment password: account.getTmpPassword + +* Get the IDs of the maximum read stories for a set of peers: stories.getPeerMaxIDs + +* Get the admin log of a channel/supergroup: channels.getAdminLog + +* Get the file that is currently being played: callGetCurrent + +* Get the number of results that would be found by a messages.search call with the same parameters: messages.getSearchCounters + +* Get the participants of a supergroup/channel: channels.getParticipants + +* Get the phone call with the specified user ID: getCallByPeer + +* Get the progress of a currently running broadcast: getBroadcastProgress + +* Get the reaction and interaction list of a story posted to a channel, along with the sender of each reaction: stories.getStoryReactionsList + +* Get the set of accent color palettes » that can be used for message accents: help.getPeerColors + +* Get the set of accent color palettes » that can be used in profile page backgrounds: help.getPeerProfileColors + +* Get the telegram IDs of all contacts.: contacts.getContactIDs + +* Get theme information: account.getTheme + +* Get topics of a forum: channels.getForumTopics + +* Get type of peer: getType + +* Get unread messages where we were mentioned: messages.getUnreadMentions + +* Get unread reactions to messages you sent: messages.getUnreadReactions + +* Get users and geochats near you, see here » for more info: contacts.getLocated + +* Get various warnings to show to the user in the web UI: getWebWarnings + +* Get web login widget authorizations: account.getWebAuthorizations + +* Get which users read a specific message: only available for groups and supergroups with less than chat_read_mark_size_threshold members, read receipts will be stored for chat_read_mark_expire_period seconds after the message was sent, see client configuration for more info »: messages.getMessageReadParticipants + +* Gets a secret chat message: getSecretMessage + +* Gets current notification settings for a given user/group, from all users/all groups: account.getNotifySettings + +* Gets featured custom emoji stickersets: messages.getFeaturedEmojiStickers + +* Gets info of the propic of a user: getPropicInfo + +* Gets the current number of boosts of a channel: premium.getBoostsStatus + +* Gets the default value of the Time-To-Live setting, applied to all new chats: messages.getDefaultHistoryTTL + +* Gets the list of currently installed custom emoji stickersets: messages.getEmojiStickers + +* Gets the menu button action for a given user or for all users, previously set using bots.setBotMenuButton; users can see this information in the botInfo constructor: bots.getBotMenuButton + +* Got popular message reactions: messages.getTopReactions + +* Hide MTProxy/Public Service Announcement information: help.hidePromoData + +* Hide or display the participants list in a supergroup: channels.toggleParticipantsHidden + +* Hide the active stories of a specific peer, preventing them from being displayed on the action bar on the homescreen: stories.toggleAllStoriesHidden + +* Hide the active stories of a user, preventing them from being displayed on the action bar on the homescreen, see here » for more info: stories.togglePeerStoriesHidden + +* Hide/unhide message history for new channel/supergroup users: channels.togglePreHistoryHidden + +* If the add contact action bar is active, add that user as contact: contacts.acceptContact + +* If you sent an invoice requesting a shipping address and the parameter is_flexible was specified, the bot will receive an updateBotShippingQuery update. Use this method to reply to shipping queries: messages.setBotShippingResults + +* Import a chat folder deep link », joining some or all the chats in the folder: chatlists.joinChatlistInvite + +* Import a chat invite and join a private chat/supergroup/channel: messages.importChatInvite + +* Import authorization: importAuthorization + +* Import chat history from a foreign chat app into a specific Telegram chat, click here for more info about imported chats »: messages.initHistoryImport + +* Imports contacts: saves a full list on the server, adds already registered contacts to the contact list, returns added contacts and their info: contacts.importContacts + +* Increment the view counter of one or more stories: stories.incrementStoryViews + +* Indicate to the server (from the user side) that the user is still using a web app: messages.prolongWebView + +* Inflate stripped photosize to full JPG payload: inflateStripped + +* Informs server about a purchase made through the App Store: for official applications only: payments.assignAppStoreTransaction + +* Informs server about a purchase made through the Play Store: for official applications only: payments.assignPlayMarketTransaction + +* Informs the server about the number of pending bot updates if they haven't been processed for a long time; for bots only: help.setBotUpdatesStatus + +* Informs the server that the user has either:: channels.clickSponsoredMessage + +* Initialize a takeout session, see here » for more info: account.initTakeoutSession + +* Initialize connection: initConnection + +* Initialize self-restart hack: initSelfRestart + +* Initiate a 2FA password reset: can only be used if the user is already logged-in, see here for more info »: account.resetPassword + +* Initiates QR code login: qrLogin + +* Install a stickerset: messages.installStickerSet + +* Install a theme: account.installTheme + +* Install wallpaper: account.installWallPaper + +* Install/uninstall wallpaper: account.saveWallPaper + +* Installs a previously uploaded photo as a profile photo: photos.updateProfilePhoto + +* Internal endpoint used by the download server: processDownloadServerPing + +* Internal use: help.editUserInfo + +* Invalidate the specified login codes, see here » for more info: account.invalidateSignInCodes + +* Invite a set of users to a group call: phone.inviteToGroupCall + +* Invite users to a channel/supergroup: channels.inviteToChannel + +* Invoke a method within a takeout session, see here » for more info: invokeWithTakeout + +* Invoke a request without subscribing the used connection for updates (this is enabled by default for file queries): invokeWithoutUpdates + +* Invoke the specified query using the specified API layer: invokeWithLayer + +* Invoke with the given message range: invokeWithMessagesRange + +* Invokes a query after a successful completion of previous queries: invokeAfterMsgs + +* Invokes a query after successful completion of one of the previous queries: invokeAfterMsg + +* Join a channel/supergroup: channels.joinChannel + +* Join a group call: phone.joinGroupCall + +* Join channels and supergroups recently added to a chat folder deep link »: chatlists.joinChatlistUpdates + +* Launch a prepaid giveaway »: payments.launchPrepaidGiveaway + +* Leave a channel/supergroup: channels.leaveChannel + +* Leave a group call: phone.leaveGroupCall + +* List all chat folder deep links » associated to a folder: chatlists.getExportedInvites + +* Load channel statistics graph asynchronously: stats.loadAsyncGraph + +* Log in to telegram (via CLI or web): start + +* Log out an active authorized session by its hash: account.resetAuthorization + +* Log out an active web telegram login session: account.resetWebAuthorization + +* Logger: logger + +* Login as bot: botLogin + +* Login as user: phoneLogin + +* Login by importing an authorization token: auth.importWebTokenAuthorization + +* Login using a redirected login token, generated in case of DC mismatch during QR code login: auth.importLoginToken + +* Logout the session: logout + +* Look for custom emojis associated to a UTF8 emoji: messages.searchCustomEmoji + +* Look for updates of telegram's terms of service: help.getTermsOfServiceUpdate + +* MTProto to TD params: MTProtoToTd + +* MTProto to TDCLI params: MTProtoToTdcli + +* Make a user admin in a basic group: messages.editChatAdmin + +* Manually convert HTML to a message and a set of entities: htmlToMessageEntities + +* Manually convert markdown to a message and a set of entities: markdownToMessageEntities + +* Manually mark dialog as unread: messages.markDialogUnread + +* Mark a specific sponsored message as read: channels.viewSponsoredMessage + +* Mark a thread as read: messages.readDiscussion + +* Mark all stories up to a certain ID as read, for a given peer; will emit an updateReadStories update to all logged-in sessions: stories.readStories + +* Mark channel/supergroup history as read: channels.readHistory + +* Mark channel/supergroup message contents as read: channels.readMessageContents + +* Mark mentions as read: messages.readMentions + +* Mark message reactions » as read: messages.readReactions + +* Mark new featured stickers as read: messages.readFeaturedStickers + +* Mark or unmark a sticker as favorite: messages.faveSticker + +* Mark sponsored message as read: viewSponsoredMessage + +* Marks message history as read: messages.readHistory + +* Marks message history within a secret chat as read: messages.readEncryptedHistory + +* Method for fetching previously featured stickers: messages.getOldFeaturedStickers + +* Modify autosave settings: account.saveAutoSaveSettings + +* Modify the admin rights of a user in a supergroup/channel: channels.editAdmin + +* Notifies the sender about the recipient having listened a voice message or watched a video: messages.readMessageContents + +* Notify the other user in a private chat that a screenshot of the chat was taken: messages.sendScreenshotNotification + +* Notify the user that the sent passport data contains some errors The user will not be able to re-submit their Passport data to you until the errors are fixed (the contents of the field for which you returned the error must change): users.setSecureValueErrors + +* Obtain a certain event handler plugin instance: getPlugin + +* Obtain a list of Telegram Premium giveaway/gift code » options: payments.getPremiumGiftCodeOptions + +* Obtain a list of bot commands for the specified bot scope and language code: bots.getBotCommands + +* Obtain a list of channels where the user can post stories: stories.getChatsToSend + +* Obtain a list of related languages that must be used when fetching emoji keyword lists »: messages.getEmojiKeywordsLanguages + +* Obtain a list of similarly themed public channels, selected based on similarities in their subscriber bases: channels.getChannelRecommendations + +* Obtain available message reactions »: messages.getAvailableReactions + +* Obtain configuration for two-factor authorization with password: account.getPassword + +* Obtain forwards of a story as a message to public chats and reposts by public channels: stats.getStoryPublicForwards + +* Obtain full info about a set of stories by their IDs: stories.getStoriesByID + +* Obtain info about the view count, forward count, reactions and recent viewers of one or more stories: stories.getStoriesViews + +* Obtain information about a Telegram Premium giftcode »: payments.checkGiftCode + +* Obtain information about a Telegram Premium giveaway »: payments.getGiveawayInfo + +* Obtain information about a chat folder deep link »: chatlists.checkChatlistInvite + +* Obtain information about a direct link Mini App: messages.getBotApp + +* Obtain the API ID UI template: getWebAPITemplate + +* Obtain the latest read story ID for all peers when first logging in, returned as a list of updateReadStories updates, see here » for more info: stories.getAllReadPeerStories + +* Obtain the list of users that have viewed a specific story we posted: stories.getStoryViewsList + +* Obtain user info from a temporary profile link: contacts.importContactToken + +* Obtain which peers are we currently boosting, and how many boost slots we have left: premium.getMyBoosts + +* Obtains a list of messages, indicating to which other public channels was a channel message forwarded.: stats.getMessagePublicForwards + +* Obtains a list of peers that can be used to send messages in a specific group: channels.getSendAs + +* Obtains a pipe that can be used to upload a file from a stream: getStreamPipe + +* Obtains info about the boosts that were applied to a certain channel (admins only): premium.getBoostsList + +* Obtains information about a chat export file, generated by a foreign chat app, click here for more info about imported chats »: messages.checkHistoryImport + +* Once the user has confirmed their payment and shipping details, the bot receives an updateBotPrecheckoutQuery update.: messages.setBotPrecheckoutResults + +* Only useful when consuming MadelineProto updates through an API in another language (like Javascript), **absolutely not recommended when directly writing MadelineProto bots**: getUpdates + +* Open a bot mini app from a direct Mini App deep link, sending over user information after user confirmation: messages.requestAppWebView + +* Open a bot mini app, sending over user information after user confirmation: messages.requestWebView + +* Open a bot mini app: messages.requestSimpleWebView + +* Opens a file in append-only mode: openFileAppendOnly + +* Optional: notify the server that the user is currently busy in a call: this will automatically refuse all incoming phone calls until the current phone call is ended: phone.receivedCall + +* Parse, update and store settings: updateSettings + +* Pauses playback of the current audio file in the call: pausePlay + +* Perform static analysis on a certain event handler class, to make sure it satisfies some performance requirements: validateEventHandlerClass + +* Pin a message: messages.updatePinnedMessage + +* Pin or unpin a saved message dialog »: messages.toggleSavedDialogPin + +* Pin or unpin forum topics: channels.updatePinnedForumTopic + +* Pin or unpin one or more stories: stories.togglePinned + +* Pin/unpin a dialog: messages.toggleDialogPin + +* Play file in call: callPlay + +* Play files on hold in call: callPlayOnHold + +* Positive modulo: posmod + +* Press an inline callback button and get a callback answer from the bot: messages.getBotCallbackAnswer + +* Provide a buffered reader for a file, URL or amp stream: openBuffered + +* Provide a stream for a file, URL or amp stream: getStream + +* Query an inline bot: messages.getInlineBotResults + +* Rate a call, returns info about the rating message sent to the official VoIP bot: phone.setCallRating + +* Rate transcribed voice message: messages.rateTranscribedAudio + +* React to a story: stories.sendReaction + +* React to message: messages.sendReaction + +* Refresh full peer cache for a certain peer: refreshFullPeerCache + +* Refresh peer cache for a certain peer: refreshPeerCache + +* Register device to receive PUSH notifications: account.registerDevice + +* Remove a sticker from the set where it belongs, bots only. The sticker set must have been created by the bot: stickers.removeStickerFromSet + +* Removes all contacts without an associated Telegram account: contacts.resetSaved + +* Renames a stickerset, bots only: stickers.renameStickerSet + +* Reorder active usernames: channels.reorderUsernames + +* Reorder folders: messages.updateDialogFiltersOrder + +* Reorder installed stickersets: messages.reorderStickerSets + +* Reorder pinned dialogs: messages.reorderPinnedDialogs + +* Reorder pinned forum topics: channels.reorderPinnedForumTopics + +* Reorder pinned saved message dialogs »: messages.reorderPinnedSavedDialogs + +* Reorder usernames associated to a bot we own: bots.reorderUsernames + +* Reorder usernames associated with the currently logged-in user: account.reorderUsernames + +* Replace the contents of an entire blocklist, see here for more info »: contacts.setBlocked + +* Report a message in a chat for violation of telegram's Terms of Service: messages.report + +* Report a message reaction: messages.reportReaction + +* Report a native antispam false positive: channels.reportAntiSpamFalsePositive + +* Report a new incoming chat for spam, if the peer settings of the chat allow us to do that: messages.reportSpam + +* Report a peer for violation of telegram's Terms of Service: account.reportPeer + +* Report a profile photo of a dialog: account.reportProfilePhoto + +* Report a secret chat for spam: messages.reportEncryptedSpam + +* Report a story: stories.report + +* Report an error to the previously set peer: report + +* Report memory profile with memprof: reportMemoryProfile + +* Reports some messages from a user in a supergroup as spam; requires administrator rights in the supergroup: channels.reportSpam + +* Represents a list of emoji categories, to be used when selecting custom emojis to set as custom emoji status: messages.getEmojiStatusGroups + +* Represents a list of emoji categories, to be used when selecting custom emojis to set as profile picture: messages.getEmojiProfilePhotoGroups + +* Represents a list of emoji categories, to be used when selecting custom emojis: messages.getEmojiGroups + +* Request VoIP call: requestCall + +* Request an SMS code via Firebase: auth.requestFirebaseSms + +* Request recovery code of a 2FA password, only for accounts with a recovery email configured: auth.requestPasswordRecovery + +* Request secret chat: requestSecretChat + +* Resend the code to verify an email to use as 2FA recovery method: account.resendPasswordEmail + +* Resend the login code via another medium, the phone code type is determined by the return value of the previous auth.sendCode/auth.resendCode: see login for more info: auth.resendCode + +* Reset all active web telegram login sessions: account.resetWebAuthorizations + +* Reset rating of top peer: contacts.resetTopPeerRating + +* Reset the 2FA password using the recovery code sent using auth.requestPasswordRecovery: auth.recoverPassword + +* Reset the login email »: auth.resetLoginEmail + +* Reset the update state and fetch all updates from the beginning: resetUpdateState + +* Resets all notification settings from users and groups: account.resetNotifySettings + +* Resolve a phone number to get user info, if their privacy settings allow it: contacts.resolvePhone + +* Restart update loop: restart + +* Resumes playback of the current audio file in the call: resumePlay + +* Rethrow exception into event loop: rethrow + +* Return all message drafts.: messages.getAllDrafts + +* Return current settings: getSettings + +* Returns a Telegram Passport authorization form for sharing data with a service: account.getAuthorizationForm + +* Returns a list of available wallpapers: account.getWallPapers + +* Returns an HTTP URL which can be used to automatically log in into translation platform and suggest new emoji keywords ». The URL will be valid for 30 seconds after generation: messages.getEmojiURL + +* Returns attachment menu entry for a bot mini app that can be launched from the attachment menu »: messages.getAttachMenuBot + +* Returns chat basic info on their IDs: messages.getChats + +* Returns content of a web file, by proxying the request through telegram, see the webfile docs for more info: upload.getWebFile + +* Returns current configuration, including data center configuration: help.getConfig + +* Returns fetch the full list of custom emoji IDs » that cannot be used in channel emoji statuses »: account.getChannelRestrictedStatusEmojis + +* Returns identifiers of pinned or always included chats from a chat folder imported using a chat folder deep link », which are suggested to be left when the chat folder is deleted: chatlists.getLeaveChatlistSuggestions + +* Returns info on data center nearest to the user: help.getNearestDc + +* Returns information about the next messages of the specified type in the chat split by days: messages.getSearchResultsCalendar + +* Returns information on update availability for the current application: help.getAppUpdate + +* Returns installed attachment menu bot mini apps »: messages.getAttachMenuBots + +* Returns list of chats with non-default notification settings: account.getNotifyExceptions + +* Returns localized text of a text message with an invitation: help.getInviteText + +* Returns saved messages » forwarded from a specific peer: messages.getSavedHistory + +* Returns sparse positions of messages of the specified type in the chat to be used for shared media scroll implementation: messages.getSearchResultsPositions + +* Returns the conversation history with one interlocutor / within a chat: messages.getHistory + +* Returns the current saved dialog list, see here » for more info: messages.getSavedDialogs + +* Returns the current user dialog list: messages.getDialogs + +* Returns the current user's contact list: contacts.getContacts + +* Returns the list of blocked users: contacts.getBlocked + +* Returns the list of messages by their IDs: messages.getMessages + +* Returns the list of user photos: photos.getUserPhotos + +* Returns the lists of boost that were applied to a channel by a specific user (admins only): premium.getUserBoosts + +* Returns the session name: getSessionName + +* Returns the support user for the "ask a question" feature: help.getSupport + +* Returns users found by username substring: contacts.search + +* Returns whether the current user is a bot: isSelfBot + +* Returns whether the current user is a premium user, cached: isPremium + +* Returns whether the current user is a user: isSelfUser + +* Reupload telegram file: uploadFromTgfile + +* Save a message draft associated to a chat: messages.saveDraft + +* Save a theme: account.saveTheme + +* Save or remove saved notification sound: account.saveRingtone + +* Save phone call debug information: phone.saveCallLog + +* Saves logs of application on the server: help.saveAppLog + +* Search for custom emoji stickersets »: messages.searchEmojiStickerSets + +* Search for messages and peers globally: messages.searchGlobal + +* Search for messages: messages.search + +* Search for stickersets: messages.searchStickerSets + +* Securely save Telegram Passport document, for more info see the passport docs »: account.saveSecureValue + +* Send VoIP signaling data: phone.sendSignalingData + +* Send a custom request from a mini bot app, triggered by a web_app_invoke_custom_method event »: bots.invokeWebViewCustomMethod + +* Send a media: messages.sendMedia + +* Send a result obtained using messages.getInlineBotResults: messages.sendInlineBotResult + +* Send an album or grouped media: messages.sendMultiMedia + +* Send an email verification code: account.sendVerifyEmailCode + +* Send compiled payment form: payments.sendPaymentForm + +* Send confirmation code to cancel account deletion, for more info click here »: account.sendConfirmPhoneCode + +* Send one or more chosen peers, as requested by a keyboardButtonRequestPeer button: messages.sendBotRequestedPeer + +* Send phone call debug data to server: phone.saveCallDebug + +* Send scheduled messages right away: messages.sendScheduledMessages + +* Send the verification phone code for telegram passport: account.sendVerifyPhoneCode + +* Send typing event by the current user to a secret chat: messages.setEncryptedTyping + +* Sends a Telegram Passport authorization form, effectively sharing data with the service: account.acceptAuthorization + +* Sends a current user typing event (see SendMessageAction for all event types) to a conversation partner or group: messages.setTyping + +* Sends a custom request; for bots only: bots.sendCustomRequest + +* Sends a document: sendDocument + +* Sends a gif: sendGif + +* Sends a list of messages to all peers (users, chats, channels) of the bot: broadcastMessages + +* Sends a message to a chat: messages.sendMessage + +* Sends a message to all report peers (admins of the bot): sendMessageToAdmins + +* Sends a message with a file attachment to a secret chat: messages.sendEncryptedFile + +* Sends a message: sendMessage + +* Sends a photo: sendDocumentPhoto + +* Sends a photo: sendPhoto + +* Sends a service message to a secret chat: messages.sendEncryptedService + +* Sends a sticker: sendSticker + +* Sends a text message to a secret chat: messages.sendEncrypted + +* Sends a video: sendVideo + +* Sends a voice: sendVoice + +* Sends an audio: sendAudio + +* Sends an updateCustomEvent update to the event handler: sendCustomEvent + +* Set NOOP update handler, ignoring all updates: setNoop + +* Set a custom wallpaper » in a specific private chat with another user: messages.setChatWallPaper + +* Set account self-destruction period: account.setAccountTTL + +* Set an emoji status for a channel: channels.updateEmojiStatus + +* Set an emoji status: account.updateEmojiStatus + +* Set bot command list: bots.setBotCommands + +* Set global privacy settings: account.setGlobalPrivacySettings + +* Set localized name, about text and description of a bot (or of the current account, if called by a bot): bots.setBotInfo + +* Set maximum Time-To-Live of all messages in the specified chat: messages.setHistoryTTL + +* Set output file or stream for incoming OPUS audio packets in a call: callSetOutput + +* Set peer(s) where to send errors occurred in the event loop: setReportPeers + +* Set sensitive content settings (for viewing or hiding NSFW content): account.setContentSettings + +* Set stickerset thumbnail: stickers.setStickerSetThumb + +* Set the API ID UI template: setWebApiTemplate + +* Set the callback answer to a user button press (bots only): messages.setBotCallbackAnswer + +* Set the default peer that will be used to join a group call in a specific dialog: phone.saveDefaultGroupCallJoinAs + +* Set the default suggested admin rights for bots being added as admins to channels, see here for more info on how to handle them »: bots.setBotBroadcastDefaultAdminRights + +* Set the default suggested admin rights for bots being added as admins to groups, see here for more info on how to handle them »: bots.setBotGroupDefaultAdminRights + +* Set time-to-live of current session: account.setAuthorizationTTL + +* Set webhook update handler: setWebhook + +* Set whether all users should join a discussion group in order to comment on a post »: channels.toggleJoinToSend + +* Set whether all users should request admin approval to join the group »: channels.toggleJoinRequest + +* Sets the menu button action » for a given user or for all users: bots.setBotMenuButton + +* Should be called after the user hides the report spam/add as contact bar of a new chat, effectively prevents the user from executing the actions specified in the action bar »: messages.hidePeerSettingsBar + +* Show or hide the real-time chat translation popup for a certain chat: messages.togglePeerTranslations + +* Start a conversation with a bot using a deep linking parameter: messages.startBot + +* Start a scheduled group call: phone.startScheduledGroupCall + +* Start multiple instances of MadelineProto and the event handlers (enables async): startAndLoopMulti + +* Start or stop recording a group call: the recorded audio and video streams will be automatically sent to Saved messages (the chat with ourselves): phone.toggleGroupCallRecord + +* Start screen sharing in a call: phone.joinGroupCallPresentation + +* Stop getting notifications about discussion replies of a certain user in @replies: contacts.blockFromReplies + +* Stop screen sharing in a group call: phone.leaveGroupCallPresentation + +* Stop update loop: stop + +* Stops playing all files in the call, clears the main and the hold playlist: stopPlay + +* Store RSA keys for CDN datacenters: getCdnConfig + +* Submit requested order information for validation: payments.validateRequestedInfo + +* Subscribe or unsubscribe to a scheduled group call: phone.toggleGroupCallStartSubscription + +* Subscribe to event handler updates for a channel/supergroup we're not a member of: subscribeToUpdates + +* Suggests a short name for a given stickerpack name: stickers.suggestShortName + +* Telegram UTF-8 multibyte split: mbStrSplit + +* Telegram UTF-8 multibyte substring: mbSubstr + +* Terminate a group call: phone.discardGroupCall + +* Terminate a takeout session, see here » for more info: account.finishTakeoutSession + +* Terminate webview interaction started with messages.requestWebView, sending the specified message to the chat on behalf of the user: messages.sendWebViewResultMessage + +* Terminates all user's authorized sessions except for the current one: auth.resetAuthorizations + +* Test fibers: testFibers + +* Toggle contact sign up notifications: account.setContactSignUpNotification + +* Toggle supergroup slow mode: if enabled, users will only be able to send one message every seconds seconds: channels.toggleSlowMode + +* Transcribe voice message: messages.transcribeAudio + +* Transfer channel ownership: channels.editCreator + +* Translate a given text: messages.translateText + +* Turn a basic group into a supergroup: messages.migrateChat + +* Uninstall a stickerset: messages.uninstallStickerSet + +* Unpack base256 signed int: unpackSignedInt + +* Unpack base256 signed long to string: unpackSignedLongString + +* Unpack base256 signed long: unpackSignedLong + +* Unpack binary double: unpackDouble + +* Unpack bot API file ID: unpackFileId + +* Unpin all pinned messages: messages.unpinAllMessages + +* Unset event handler: unsetEventHandler + +* Update folder: messages.updateDialogFilter + +* Update the accent color and background custom emoji » of a channel: channels.updateColor + +* Update the accent color and background custom emoji » of the current account: account.updateColor + +* Update the keywords, emojis or mask coordinates of a sticker, bots only: stickers.changeSticker + +* Update theme: account.updateTheme + +* Updates current user profile photo: photos.uploadProfilePhoto + +* Updates online user status: account.updateStatus + +* Updates user profile: account.updateProfile + +* Upload a custom profile picture for a contact, or suggest a new profile picture to a contact: photos.uploadContactProfilePhoto + +* Upload a file and associate it to a chat (without actually sending it to the chat): messages.uploadMedia + +* Upload a media file associated with an imported chat, click here for more info »: messages.uploadImportedMedia + +* Upload encrypted file and associate it to a secret chat: messages.uploadEncryptedFile + +* Upload file from URL: uploadFromUrl + +* Upload file from callable: uploadFromCallable + +* Upload file from stream: uploadFromStream + +* Upload file to secret chat: uploadEncrypted + +* Upload file: upload + +* Upload notification sound, use account.saveRingtone to convert it and add it to the list of saved notification sounds: account.uploadRingtone + +* Upload theme: account.uploadTheme + +* Uploads a Telegram Story: stories.sendStory + +* Use this method to obtain the online statuses of all contacts with an accessible Telegram account: contacts.getStatuses + +* Use this method to set the score of the specified user in a game sent as a normal message (bots only): messages.setGameScore + +* Use this method to set the score of the specified user in a game sent as an inline message (bots only): messages.setInlineGameScore + +* Use this to accept a Seamless Telegram Login authorization request, for more info click here »: messages.acceptUrlAuth + +* Used by the user to relay data from an opened reply keyboard bot mini app to the bot that owns it: messages.sendWebViewData + +* Users may also choose to display messages from all topics of a forum as if they were sent to a normal group, using a "View as messages" setting in the local client: this setting only affects the current account, and is synced to other logged in sessions using this method: channels.toggleViewForumAsMessages + +* Validates a username and checks availability: account.checkUsername + +* Verify a new phone number to associate to the current account: account.sendChangePhoneCode + +* Verify a phone number for telegram passport: account.verifyPhone + +* Verify an email address: account.verifyEmail + +* Verify an email to use as 2FA recovery method: account.confirmPasswordEmail + +* View and search recently sent media.: messages.searchSentMedia + +* Vote in a poll: messages.sendVote + +* When called, skips to the next file in the playlist: skipPlay + +* When client-side passcode lock feature is enabled, will not show message texts in incoming PUSH notifications: account.updateDeviceLocked + +* When was full info for this chat last cached: fullChatLastUpdated + +* Whether the currently playing audio file is paused: isPlayPaused + +* Whether the user will receive notifications when contacts sign up: account.getContactSignUpNotification + +* Whether this is altervista: isAltervista + +* Whether we can convert any audio/video file to a VoIP OGG OPUS file, or the files must be preconverted using @libtgvoipbot: canConvertOgg + +* Whether we can convert any audio/video file using ffmpeg: canUseFFmpeg + +* Whether we're an IPC client instance: isIpc + +* Whether we're an IPC server process (as opposed to an event handler): isIpcWorker + +* Whether we're currently connected to the test DCs: isTestMode + +* Wrap a Message constructor into an abstract Message object: wrapMessage + +* Wrap a Pin constructor into an abstract Pinned object: wrapPin + +* Wrap a media constructor into an abstract Media object: wrapMedia + +* Wrap an Update constructor into an abstract Update object: wrapUpdate + +* You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info: auth.bindTempAuthKey + +* You cannot use this method directly, instead use $MadelineProto->getDhConfig();: messages.getDhConfig + +* You cannot use this method directly, please use the event handler, instead: updates.getChannelDifference + +* You cannot use this method directly, please use the event handler, instead: updates.getDifference + +* You cannot use this method directly, please use the event handler, instead: updates.getState + +* You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats: messages.acceptEncryption + +* You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats: messages.discardEncryption + +* You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats: messages.requestEncryption + +* You cannot use this method directly, see https://docs.madelineproto.xyz#calls for more info on handling calls: phone.acceptCall + +* You cannot use this method directly, see https://docs.madelineproto.xyz#calls for more info on handling calls: phone.confirmCall + +* You cannot use this method directly, see https://docs.madelineproto.xyz#calls for more info on handling calls: phone.discardCall + +* You cannot use this method directly, see https://docs.madelineproto.xyz#calls for more info on handling calls: phone.requestCall + +* You cannot use this method directly, use $MadelineProto->exportAuthorization() instead, see https://docs.madelineproto.xyz/docs/LOGIN.html: auth.exportAuthorization + +* You cannot use this method directly, use $MadelineProto->importAuthorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html: auth.importAuthorization + +* You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info): auth.importBotAuthorization + +* You cannot use this method directly, use the complete2falogin method instead (see https://docs.madelineproto.xyz for more info): auth.checkPassword + +* You cannot use this method directly, use the completePhoneLogin method instead (see https://docs.madelineproto.xyz for more info): auth.signIn + +* You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info): auth.signUp + +* You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info): channels.getChannels + +* You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info): channels.getFullChannel + +* You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info): messages.getFullChat + +* You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info): users.getFullUser + +* You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info): users.getUsers + +* You cannot use this method directly, use the logout method instead (see https://docs.madelineproto.xyz for more info): auth.logOut + +* You cannot use this method directly, use the phoneLogin method instead (see https://docs.madelineproto.xyz for more info): auth.sendCode + +* You cannot use this method directly, use the resolveUsername, getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info): contacts.resolveUsername + +* You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info: upload.getCdnFile + +* You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info: upload.getCdnFileHashes + +* You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info: upload.getFile + +* You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info: upload.getFileHashes + +* You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info: upload.reuploadCdnFile + +* You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info: upload.saveBigFilePart + +* You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info: upload.saveFilePart + +* You cannot use this method directly: messages.receivedQueue + +* You cannot use this method directly; use $MadelineProto->update2fa($params), instead (see https://docs.madelineproto.xyz for more info): account.getPasswordSettings + +* You cannot use this method directly; use $MadelineProto->update2fa($params), instead (see https://docs.madelineproto.xyz for more info): account.updatePasswordSettings + +* account.createBusinessChatLink + +* account.deleteBusinessChatLink + +* account.disablePeerConnectedBot + +* account.editBusinessChatLink + +* account.getBotBusinessConnection + +* account.getBusinessChatLinks + +* account.getConnectedBots + +* account.getReactionsNotifySettings + +* account.resolveBusinessChatLink + +* account.setReactionsNotifySettings + +* account.toggleConnectedBotPaused + +* account.toggleSponsoredMessages + +* account.updateBirthday + +* account.updateBusinessAwayMessage + +* account.updateBusinessGreetingMessage + +* account.updateBusinessIntro + +* account.updateBusinessLocation + +* account.updateBusinessWorkHours + +* account.updateConnectedBot + +* account.updatePersonalChannel + +* auth.reportMissingCode + +* base64URL decode: base64urlDecode + +* channels.reportSponsoredMessage + +* channels.restrictSponsoredMessages + +* channels.setBoostsToUnblockRestrictions + +* channels.setEmojiStickers + +* contacts.getBirthdays + +* fragment.getCollectibleInfo + +* help.getTimezonesList + +* invokeWithBusinessConnection + +* messages.checkQuickReplyShortcut + +* messages.deleteQuickReplyMessages + +* messages.deleteQuickReplyShortcut + +* messages.editQuickReplyShortcut + +* messages.getDefaultTagReactions + +* messages.getEmojiStickerGroups + +* messages.getMyStickers + +* messages.getOutboxReadDate + +* messages.getQuickReplies + +* messages.getQuickReplyMessages + +* messages.getSavedReactionTags + +* messages.reorderQuickReplies + +* messages.sendQuickReplyMessages + +* messages.toggleDialogFilterTags + +* messages.updateSavedReactionTag + +* null-byte RLE decode: rleDecode + +* null-byte RLE encode: rleEncode + +* smsjobs.finishJob + +* smsjobs.getSmsJob + +* smsjobs.getStatus + +* smsjobs.isEligibleToJoin + +* smsjobs.join + +* smsjobs.leave + +* smsjobs.updateSettings + +* stats.getBroadcastRevenueStats + +* stats.getBroadcastRevenueTransactions + +* stats.getBroadcastRevenueWithdrawalUrl + +* stickers.replaceSticker + +* stories.togglePinnedToTop + +* users.getIsPremiumRequiredToContact + + diff --git a/docs/API_docs/methods/initConnection.md b/docs/API_docs/methods/initConnection.md new file mode 100644 index 0000000000..6992134b15 --- /dev/null +++ b/docs/API_docs/methods/initConnection.md @@ -0,0 +1,50 @@ +--- +title: "initConnection" +description: "Initialize connection" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Method: initConnection +[Back to methods index](index.html) + + + +Initialize connection + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|api\_id|[int](/API_docs/types/int.html) | Application identifier (see. [App configuration](https://core.telegram.org/myapp)) | Optional| +|device\_model|[string](/API_docs/types/string.html) | Device model | Optional| +|system\_version|[string](/API_docs/types/string.html) | Operation system version | Optional| +|app\_version|[string](/API_docs/types/string.html) | Application version | Optional| +|system\_lang\_code|[string](/API_docs/types/string.html) | Code for the language used on the device's OS, ISO 639-1 standard | Optional| +|lang\_pack|[string](/API_docs/types/string.html) | Language pack to use | Optional| +|lang\_code|[string](/API_docs/types/string.html) | Code for the language used on the client, ISO 639-1 standard | Optional| +|proxy|[InputClientProxy](/API_docs/types/InputClientProxy.html) | Info about an MTProto proxy | Optional| +|params|[JSONValue](/API_docs/types/JSONValue.html) | Additional initConnection parameters.
For now, only the `tz_offset` field is supported, for specifying timezone offset in seconds. | Optional| +|query|[!X](/API_docs/types/!X.html) | The query itself | Yes| + + +### Return type: [X](/API_docs/types/X.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$X = $MadelineProto->initConnection(api_id: $int, device_model: 'string', system_version: 'string', app_version: 'string', system_lang_code: 'string', lang_pack: 'string', lang_code: 'string', proxy: $InputClientProxy, params: $JSONValue, query: $!X, ); +``` + diff --git a/docs/API_docs/methods/invokeAfterMsg.md b/docs/API_docs/methods/invokeAfterMsg.md new file mode 100644 index 0000000000..a5e7098b26 --- /dev/null +++ b/docs/API_docs/methods/invokeAfterMsg.md @@ -0,0 +1,42 @@ +--- +title: "invokeAfterMsg" +description: "Invokes a query after successful completion of one of the previous queries." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Method: invokeAfterMsg +[Back to methods index](index.html) + + + +Invokes a query after successful completion of one of the previous queries. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|msg\_id|[long](/API_docs/types/long.html) | Message identifier on which a current query depends | Yes| +|query|[!X](/API_docs/types/!X.html) | The query itself | Yes| + + +### Return type: [X](/API_docs/types/X.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$X = $MadelineProto->invokeAfterMsg(msg_id: $long, query: $!X, ); +``` + diff --git a/docs/API_docs/methods/invokeAfterMsgs.md b/docs/API_docs/methods/invokeAfterMsgs.md new file mode 100644 index 0000000000..8d0de73599 --- /dev/null +++ b/docs/API_docs/methods/invokeAfterMsgs.md @@ -0,0 +1,42 @@ +--- +title: "invokeAfterMsgs" +description: "Invokes a query after a successful completion of previous queries" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Method: invokeAfterMsgs +[Back to methods index](index.html) + + + +Invokes a query after a successful completion of previous queries + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|msg\_ids|Array of [long](/API_docs/types/long.html) | List of messages on which a current query depends | Yes| +|query|[!X](/API_docs/types/!X.html) | The query itself | Yes| + + +### Return type: [X](/API_docs/types/X.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$X = $MadelineProto->invokeAfterMsgs(msg_ids: [$long, $long], query: $!X, ); +``` + diff --git a/docs/API_docs/methods/invokeWithBusinessConnection.md b/docs/API_docs/methods/invokeWithBusinessConnection.md new file mode 100644 index 0000000000..25b2692fc3 --- /dev/null +++ b/docs/API_docs/methods/invokeWithBusinessConnection.md @@ -0,0 +1,40 @@ +--- +title: "invokeWithBusinessConnection" +description: "invokeWithBusinessConnection parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Method: invokeWithBusinessConnection +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|connection\_id|[string](/API_docs/types/string.html) | Optional| +|query|[!X](/API_docs/types/!X.html) | Yes| + + +### Return type: [X](/API_docs/types/X.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$X = $MadelineProto->invokeWithBusinessConnection(connection_id: 'string', query: $!X, ); +``` + diff --git a/docs/API_docs/methods/invokeWithLayer.md b/docs/API_docs/methods/invokeWithLayer.md new file mode 100644 index 0000000000..0ba8a01c75 --- /dev/null +++ b/docs/API_docs/methods/invokeWithLayer.md @@ -0,0 +1,42 @@ +--- +title: "invokeWithLayer" +description: "Invoke the specified query using the specified API [layer](https://core.telegram.org/api/invoking#layers)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Method: invokeWithLayer +[Back to methods index](index.html) + + + +Invoke the specified query using the specified API [layer](https://core.telegram.org/api/invoking#layers) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|layer|[int](/API_docs/types/int.html) | The layer to use | Optional| +|query|[!X](/API_docs/types/!X.html) | The query | Yes| + + +### Return type: [X](/API_docs/types/X.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$X = $MadelineProto->invokeWithLayer(layer: $int, query: $!X, ); +``` + diff --git a/docs/API_docs/methods/invokeWithMessagesRange.md b/docs/API_docs/methods/invokeWithMessagesRange.md new file mode 100644 index 0000000000..eaa6ccba6e --- /dev/null +++ b/docs/API_docs/methods/invokeWithMessagesRange.md @@ -0,0 +1,42 @@ +--- +title: "invokeWithMessagesRange" +description: "Invoke with the given message range" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Method: invokeWithMessagesRange +[Back to methods index](index.html) + + + +Invoke with the given message range + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|range|[MessageRange](/API_docs/types/MessageRange.html) | Message range | Yes| +|query|[!X](/API_docs/types/!X.html) | Query | Yes| + + +### Return type: [X](/API_docs/types/X.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$X = $MadelineProto->invokeWithMessagesRange(range: $MessageRange, query: $!X, ); +``` + diff --git a/docs/API_docs/methods/invokeWithTakeout.md b/docs/API_docs/methods/invokeWithTakeout.md new file mode 100644 index 0000000000..83d81bd627 --- /dev/null +++ b/docs/API_docs/methods/invokeWithTakeout.md @@ -0,0 +1,42 @@ +--- +title: "invokeWithTakeout" +description: "Invoke a method within a [takeout session, see here » for more info](https://core.telegram.org/api/takeout)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Method: invokeWithTakeout +[Back to methods index](index.html) + + + +Invoke a method within a [takeout session, see here » for more info](https://core.telegram.org/api/takeout). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|takeout\_id|[long](/API_docs/types/long.html) | [Takeout session ID »](https://core.telegram.org/api/takeout) | Yes| +|query|[!X](/API_docs/types/!X.html) | Query | Yes| + + +### Return type: [X](/API_docs/types/X.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$X = $MadelineProto->invokeWithTakeout(takeout_id: $long, query: $!X, ); +``` + diff --git a/docs/API_docs/methods/invokeWithoutUpdates.md b/docs/API_docs/methods/invokeWithoutUpdates.md new file mode 100644 index 0000000000..6a440bd78e --- /dev/null +++ b/docs/API_docs/methods/invokeWithoutUpdates.md @@ -0,0 +1,41 @@ +--- +title: "invokeWithoutUpdates" +description: "Invoke a request without subscribing the used connection for [updates](https://core.telegram.org/api/updates) (this is enabled by default for [file queries](https://core.telegram.org/api/files))." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Method: invokeWithoutUpdates +[Back to methods index](index.html) + + + +Invoke a request without subscribing the used connection for [updates](https://core.telegram.org/api/updates) (this is enabled by default for [file queries](https://core.telegram.org/api/files)). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|query|[!X](/API_docs/types/!X.html) | The query | Yes| + + +### Return type: [X](/API_docs/types/X.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$X = $MadelineProto->invokeWithoutUpdates(query: $!X, ); +``` + diff --git a/docs/API_docs/methods/langpack.getDifference.md b/docs/API_docs/methods/langpack.getDifference.md new file mode 100644 index 0000000000..36889cf4e9 --- /dev/null +++ b/docs/API_docs/methods/langpack.getDifference.md @@ -0,0 +1,44 @@ +--- +title: "langpack.getDifference" +description: "Get new strings in language pack" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/langpack_getDifference.html +--- +# Method: langpack.getDifference +[Back to methods index](index.html) + + + +Get new strings in language pack + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|lang\_pack|[string](/API_docs/types/string.html) | Language pack | Optional| +|lang\_code|[string](/API_docs/types/string.html) | Language code | Optional| +|from\_version|[int](/API_docs/types/int.html) | Previous localization pack version | Optional| + + +### Return type: [LangPackDifference](/API_docs/types/LangPackDifference.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$LangPackDifference = $MadelineProto->langpack->getDifference(lang_pack: 'string', lang_code: 'string', from_version: $int, ); +``` + diff --git a/docs/API_docs/methods/langpack.getLangPack.md b/docs/API_docs/methods/langpack.getLangPack.md new file mode 100644 index 0000000000..0d2b3b3a0a --- /dev/null +++ b/docs/API_docs/methods/langpack.getLangPack.md @@ -0,0 +1,43 @@ +--- +title: "langpack.getLangPack" +description: "Get localization pack strings" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/langpack_getLangPack.html +--- +# Method: langpack.getLangPack +[Back to methods index](index.html) + + + +Get localization pack strings + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|lang\_pack|[string](/API_docs/types/string.html) | Language pack name, usually obtained from a [language pack link](https://core.telegram.org/api/links#language-pack-links) | Optional| +|lang\_code|[string](/API_docs/types/string.html) | Language code | Optional| + + +### Return type: [LangPackDifference](/API_docs/types/LangPackDifference.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$LangPackDifference = $MadelineProto->langpack->getLangPack(lang_pack: 'string', lang_code: 'string', ); +``` + diff --git a/docs/API_docs/methods/langpack.getLanguage.md b/docs/API_docs/methods/langpack.getLanguage.md new file mode 100644 index 0000000000..6b6e475c1b --- /dev/null +++ b/docs/API_docs/methods/langpack.getLanguage.md @@ -0,0 +1,43 @@ +--- +title: "langpack.getLanguage" +description: "Get information about a language in a localization pack" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/langpack_getLanguage.html +--- +# Method: langpack.getLanguage +[Back to methods index](index.html) + + + +Get information about a language in a localization pack + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|lang\_pack|[string](/API_docs/types/string.html) | Language pack name, usually obtained from a [language pack link](https://core.telegram.org/api/links#language-pack-links) | Optional| +|lang\_code|[string](/API_docs/types/string.html) | Language code | Optional| + + +### Return type: [LangPackLanguage](/API_docs/types/LangPackLanguage.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$LangPackLanguage = $MadelineProto->langpack->getLanguage(lang_pack: 'string', lang_code: 'string', ); +``` + diff --git a/docs/API_docs/methods/langpack.getLanguages.md b/docs/API_docs/methods/langpack.getLanguages.md new file mode 100644 index 0000000000..588297f156 --- /dev/null +++ b/docs/API_docs/methods/langpack.getLanguages.md @@ -0,0 +1,42 @@ +--- +title: "langpack.getLanguages" +description: "Get information about all languages in a localization pack" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/langpack_getLanguages.html +--- +# Method: langpack.getLanguages +[Back to methods index](index.html) + + + +Get information about all languages in a localization pack + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|lang\_pack|[string](/API_docs/types/string.html) | Language pack | Optional| + + +### Return type: [Vector\_of\_LangPackLanguage](/API_docs/types/LangPackLanguage.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_LangPackLanguage = $MadelineProto->langpack->getLanguages(lang_pack: 'string', ); +``` + diff --git a/docs/API_docs/methods/langpack.getStrings.md b/docs/API_docs/methods/langpack.getStrings.md new file mode 100644 index 0000000000..a990ba9a09 --- /dev/null +++ b/docs/API_docs/methods/langpack.getStrings.md @@ -0,0 +1,44 @@ +--- +title: "langpack.getStrings" +description: "Get strings from a language pack" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/langpack_getStrings.html +--- +# Method: langpack.getStrings +[Back to methods index](index.html) + + + +Get strings from a language pack + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|lang\_pack|[string](/API_docs/types/string.html) | Language pack name, usually obtained from a [language pack link](https://core.telegram.org/api/links#language-pack-links) | Optional| +|lang\_code|[string](/API_docs/types/string.html) | Language code | Optional| +|keys|Array of [string](/API_docs/types/string.html) | Strings to get | Yes| + + +### Return type: [Vector\_of\_LangPackString](/API_docs/types/LangPackString.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_LangPackString = $MadelineProto->langpack->getStrings(lang_pack: 'string', lang_code: 'string', keys: ['string', 'string'], ); +``` + diff --git a/docs/API_docs/methods/messages.acceptEncryption.md b/docs/API_docs/methods/messages.acceptEncryption.md new file mode 100644 index 0000000000..85da64e3c6 --- /dev/null +++ b/docs/API_docs/methods/messages.acceptEncryption.md @@ -0,0 +1,44 @@ +--- +title: "messages.acceptEncryption" +description: "You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_acceptEncryption.html +--- +# Method: messages.acceptEncryption +[Back to methods index](index.html) + + + +You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Secret chat ID, Update, EncryptedMessage or InputEncryptedChat](/API_docs/types/InputEncryptedChat.html) | Secret chat ID | Yes| +|g\_b|[bytes](/API_docs/types/bytes.html) | `B = g ^ b mod p`, see [Wikipedia](https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange) | Yes| +|key\_fingerprint|[strlong](/API_docs/constructors/strlong.html) | | Yes| + + +### Return type: [EncryptedChat](/API_docs/types/EncryptedChat.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$EncryptedChat = $MadelineProto->messages->acceptEncryption(peer: $InputEncryptedChat, g_b: 'bytes', key_fingerprint: $strlong, ); +``` + diff --git a/docs/API_docs/methods/messages.acceptUrlAuth.md b/docs/API_docs/methods/messages.acceptUrlAuth.md new file mode 100644 index 0000000000..ef36418c5c --- /dev/null +++ b/docs/API_docs/methods/messages.acceptUrlAuth.md @@ -0,0 +1,46 @@ +--- +title: "messages.acceptUrlAuth" +description: "Use this to accept a Seamless Telegram Login authorization request, for more info [click here »](https://core.telegram.org/api/url-authorization)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_acceptUrlAuth.html +--- +# Method: messages.acceptUrlAuth +[Back to methods index](index.html) + + + +Use this to accept a Seamless Telegram Login authorization request, for more info [click here »](https://core.telegram.org/api/url-authorization) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|write\_allowed|[Bool](/API_docs/types/Bool.html) | Set this flag to allow the bot to send messages to you (if requested) | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The location of the message | Optional| +|msg\_id|[int](/API_docs/types/int.html) | Message ID of the message with the login button | Optional| +|button\_id|[int](/API_docs/types/int.html) | ID of the login button | Optional| +|url|[string](/API_docs/types/string.html) | URL used for [link URL authorization, click here for more info »](https://core.telegram.org/api/url-authorization#link-url-authorization) | Optional| + + +### Return type: [UrlAuthResult](/API_docs/types/UrlAuthResult.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$UrlAuthResult = $MadelineProto->messages->acceptUrlAuth(write_allowed: $Bool, peer: $InputPeer, msg_id: $int, button_id: $int, url: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.addChatUser.md b/docs/API_docs/methods/messages.addChatUser.md new file mode 100644 index 0000000000..449d2a5c7a --- /dev/null +++ b/docs/API_docs/methods/messages.addChatUser.md @@ -0,0 +1,46 @@ +--- +title: "messages.addChatUser" +description: "Adds a user to a chat and sends a service message on it." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_addChatUser.html +--- +# Method: messages.addChatUser +[Back to methods index](index.html) + + + +Adds a user to a chat and sends a service message on it. + +May also return 0-N updates of type [updateGroupInvitePrivacyForbidden](../constructors/updateGroupInvitePrivacyForbidden.html): it indicates we couldn't add a user to a chat because of their privacy settings; if required, an [invite link](https://core.telegram.org/api/invites) can be shared with the user, instead. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|chat\_id|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | | Optional| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | User ID to be added | Optional| +|fwd\_limit|[int](/API_docs/types/int.html) | Number of last messages to be forwarded | Optional| + + +### Return type: [messages.InvitedUsers](/API_docs/types/messages.InvitedUsers.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_InvitedUsers = $MadelineProto->messages->addChatUser(chat_id: $InputPeer, user_id: $InputUser, fwd_limit: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.checkChatInvite.md b/docs/API_docs/methods/messages.checkChatInvite.md new file mode 100644 index 0000000000..d034c8561d --- /dev/null +++ b/docs/API_docs/methods/messages.checkChatInvite.md @@ -0,0 +1,42 @@ +--- +title: "messages.checkChatInvite" +description: "Check the validity of a chat invite link and get basic info about it" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_checkChatInvite.html +--- +# Method: messages.checkChatInvite +[Back to methods index](index.html) + + + +Check the validity of a chat invite link and get basic info about it + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|[string](/API_docs/types/string.html) | Invite hash from [chat invite deep link »](https://core.telegram.org/api/links#chat-invite-links). | Optional| + + +### Return type: [ChatInvite](/API_docs/types/ChatInvite.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$ChatInvite = $MadelineProto->messages->checkChatInvite(hash: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.checkHistoryImport.md b/docs/API_docs/methods/messages.checkHistoryImport.md new file mode 100644 index 0000000000..88cebe5271 --- /dev/null +++ b/docs/API_docs/methods/messages.checkHistoryImport.md @@ -0,0 +1,42 @@ +--- +title: "messages.checkHistoryImport" +description: "Obtains information about a chat export file, generated by a foreign chat app, [click here for more info about imported chats »](https://core.telegram.org/api/import)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_checkHistoryImport.html +--- +# Method: messages.checkHistoryImport +[Back to methods index](index.html) + + + +Obtains information about a chat export file, generated by a foreign chat app, [click here for more info about imported chats »](https://core.telegram.org/api/import). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|import\_head|[string](/API_docs/types/string.html) | Beginning of the message file; up to 100 lines. | Optional| + + +### Return type: [messages.HistoryImportParsed](/API_docs/types/messages.HistoryImportParsed.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_HistoryImportParsed = $MadelineProto->messages->checkHistoryImport(import_head: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.checkHistoryImportPeer.md b/docs/API_docs/methods/messages.checkHistoryImportPeer.md new file mode 100644 index 0000000000..005e458c3a --- /dev/null +++ b/docs/API_docs/methods/messages.checkHistoryImportPeer.md @@ -0,0 +1,44 @@ +--- +title: "messages.checkHistoryImportPeer" +description: "Check whether chat history exported from another chat app can be [imported into a specific Telegram chat, click here for more info »](https://core.telegram.org/api/import)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_checkHistoryImportPeer.html +--- +# Method: messages.checkHistoryImportPeer +[Back to methods index](index.html) + + + +Check whether chat history exported from another chat app can be [imported into a specific Telegram chat, click here for more info »](https://core.telegram.org/api/import). + +If the check succeeds, and no RPC errors are returned, a [messages.CheckedHistoryImportPeer](../types/messages.CheckedHistoryImportPeer.html) constructor will be returned, with a confirmation text to be shown to the user, before actually initializing the import. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The chat where we want to [import history »](https://core.telegram.org/api/import). | Optional| + + +### Return type: [messages.CheckedHistoryImportPeer](/API_docs/types/messages.CheckedHistoryImportPeer.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_CheckedHistoryImportPeer = $MadelineProto->messages->checkHistoryImportPeer(peer: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/messages.checkQuickReplyShortcut.md b/docs/API_docs/methods/messages.checkQuickReplyShortcut.md new file mode 100644 index 0000000000..eaba9fabaa --- /dev/null +++ b/docs/API_docs/methods/messages.checkQuickReplyShortcut.md @@ -0,0 +1,40 @@ +--- +title: "messages.checkQuickReplyShortcut" +description: "messages.checkQuickReplyShortcut parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_checkQuickReplyShortcut.html +--- +# Method: messages.checkQuickReplyShortcut +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|shortcut|[string](/API_docs/types/string.html) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->checkQuickReplyShortcut(shortcut: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.clearAllDrafts.md b/docs/API_docs/methods/messages.clearAllDrafts.md new file mode 100644 index 0000000000..c85a412d84 --- /dev/null +++ b/docs/API_docs/methods/messages.clearAllDrafts.md @@ -0,0 +1,37 @@ +--- +title: "messages.clearAllDrafts" +description: "Clear all [drafts](https://core.telegram.org/api/drafts)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_clearAllDrafts.html +--- +# Method: messages.clearAllDrafts +[Back to methods index](index.html) + + + +Clear all [drafts](https://core.telegram.org/api/drafts). + + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->clearAllDrafts(); +``` + diff --git a/docs/API_docs/methods/messages.clearRecentReactions.md b/docs/API_docs/methods/messages.clearRecentReactions.md new file mode 100644 index 0000000000..dee7fda215 --- /dev/null +++ b/docs/API_docs/methods/messages.clearRecentReactions.md @@ -0,0 +1,37 @@ +--- +title: "messages.clearRecentReactions" +description: "Clear recently used [message reactions](https://core.telegram.org/api/reactions)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_clearRecentReactions.html +--- +# Method: messages.clearRecentReactions +[Back to methods index](index.html) + + + +Clear recently used [message reactions](https://core.telegram.org/api/reactions) + + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->clearRecentReactions(); +``` + diff --git a/docs/API_docs/methods/messages.clearRecentStickers.md b/docs/API_docs/methods/messages.clearRecentStickers.md new file mode 100644 index 0000000000..0a1e300020 --- /dev/null +++ b/docs/API_docs/methods/messages.clearRecentStickers.md @@ -0,0 +1,42 @@ +--- +title: "messages.clearRecentStickers" +description: "Clear recent stickers" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_clearRecentStickers.html +--- +# Method: messages.clearRecentStickers +[Back to methods index](index.html) + + + +Clear recent stickers + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|attached|[Bool](/API_docs/types/Bool.html) | Set this flag to clear the list of stickers recently attached to photo or video files | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->clearRecentStickers(attached: $Bool, ); +``` + diff --git a/docs/API_docs/methods/messages.createChat.md b/docs/API_docs/methods/messages.createChat.md new file mode 100644 index 0000000000..0a376d48ed --- /dev/null +++ b/docs/API_docs/methods/messages.createChat.md @@ -0,0 +1,46 @@ +--- +title: "messages.createChat" +description: "Creates a new chat." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_createChat.html +--- +# Method: messages.createChat +[Back to methods index](index.html) + + + +Creates a new chat. + +May also return 0-N updates of type [updateGroupInvitePrivacyForbidden](../constructors/updateGroupInvitePrivacyForbidden.html): it indicates we couldn't add a user to a chat because of their privacy settings; if required, an [invite link](https://core.telegram.org/api/invites) can be shared with the user, instead. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|users|Array of [Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | List of user IDs to be invited | Yes| +|title|[string](/API_docs/types/string.html) | Chat name | Optional| +|ttl\_period|[int](/API_docs/types/int.html) | Time-to-live of all messages that will be sent in the chat: once message.date+message.ttl\_period === time(), the message will be deleted on the server, and must be deleted locally as well. You can use [messages.setDefaultHistoryTTL](../methods/messages.setDefaultHistoryTTL.html) to edit this value later. | Optional| + + +### Return type: [messages.InvitedUsers](/API_docs/types/messages.InvitedUsers.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_InvitedUsers = $MadelineProto->messages->createChat(users: [$InputUser, $InputUser], title: 'string', ttl_period: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.deleteChat.md b/docs/API_docs/methods/messages.deleteChat.md new file mode 100644 index 0000000000..b375550f90 --- /dev/null +++ b/docs/API_docs/methods/messages.deleteChat.md @@ -0,0 +1,42 @@ +--- +title: "messages.deleteChat" +description: "Delete a [chat](https://core.telegram.org/api/channel)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_deleteChat.html +--- +# Method: messages.deleteChat +[Back to methods index](index.html) + + + +Delete a [chat](https://core.telegram.org/api/channel) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|chat\_id|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->deleteChat(chat_id: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/messages.deleteChatUser.md b/docs/API_docs/methods/messages.deleteChatUser.md new file mode 100644 index 0000000000..157cd9a861 --- /dev/null +++ b/docs/API_docs/methods/messages.deleteChatUser.md @@ -0,0 +1,44 @@ +--- +title: "messages.deleteChatUser" +description: "Deletes a user from a chat and sends a service message on it." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_deleteChatUser.html +--- +# Method: messages.deleteChatUser +[Back to methods index](index.html) + + + +Deletes a user from a chat and sends a service message on it. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|revoke\_history|[Bool](/API_docs/types/Bool.html) | Remove the entire chat history of the specified user in this chat. | Optional| +|chat\_id|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | | Optional| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | User ID to be deleted | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->deleteChatUser(revoke_history: $Bool, chat_id: $InputPeer, user_id: $InputUser, ); +``` + diff --git a/docs/API_docs/methods/messages.deleteExportedChatInvite.md b/docs/API_docs/methods/messages.deleteExportedChatInvite.md new file mode 100644 index 0000000000..cd080710fa --- /dev/null +++ b/docs/API_docs/methods/messages.deleteExportedChatInvite.md @@ -0,0 +1,43 @@ +--- +title: "messages.deleteExportedChatInvite" +description: "Delete a chat invite" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_deleteExportedChatInvite.html +--- +# Method: messages.deleteExportedChatInvite +[Back to methods index](index.html) + + + +Delete a chat invite + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer | Optional| +|link|[string](/API_docs/types/string.html) | Invite link | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->deleteExportedChatInvite(peer: $InputPeer, link: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.deleteHistory.md b/docs/API_docs/methods/messages.deleteHistory.md new file mode 100644 index 0000000000..56930114ff --- /dev/null +++ b/docs/API_docs/methods/messages.deleteHistory.md @@ -0,0 +1,47 @@ +--- +title: "messages.deleteHistory" +description: "Deletes communication history." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_deleteHistory.html +--- +# Method: messages.deleteHistory +[Back to methods index](index.html) + + + +Deletes communication history. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|just\_clear|[Bool](/API_docs/types/Bool.html) | Just clear history for the current user, without actually removing messages for every chat user | Optional| +|revoke|[Bool](/API_docs/types/Bool.html) | Whether to delete the message history for all chat participants | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | User or chat, communication history of which will be deleted | Optional| +|max\_id|[int](/API_docs/types/int.html) | Maximum ID of message to delete | Optional| +|min\_date|[int](/API_docs/types/int.html) | Delete all messages newer than this UNIX timestamp | Optional| +|max\_date|[int](/API_docs/types/int.html) | Delete all messages older than this UNIX timestamp | Optional| + + +### Return type: [messages.AffectedHistory](/API_docs/types/messages.AffectedHistory.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_AffectedHistory = $MadelineProto->messages->deleteHistory(just_clear: $Bool, revoke: $Bool, peer: $InputPeer, max_id: $int, min_date: $int, max_date: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.deleteMessages.md b/docs/API_docs/methods/messages.deleteMessages.md new file mode 100644 index 0000000000..9113ad179e --- /dev/null +++ b/docs/API_docs/methods/messages.deleteMessages.md @@ -0,0 +1,43 @@ +--- +title: "messages.deleteMessages" +description: "Deletes messages by their identifiers." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_deleteMessages.html +--- +# Method: messages.deleteMessages +[Back to methods index](index.html) + + + +Deletes messages by their identifiers. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|revoke|[Bool](/API_docs/types/Bool.html) | Whether to delete messages for all participants of the chat | Optional| +|id|Array of [int](/API_docs/types/int.html) | Message ID list | Yes| + + +### Return type: [messages.AffectedMessages](/API_docs/types/messages.AffectedMessages.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_AffectedMessages = $MadelineProto->messages->deleteMessages(revoke: $Bool, id: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/messages.deletePhoneCallHistory.md b/docs/API_docs/methods/messages.deletePhoneCallHistory.md new file mode 100644 index 0000000000..52353a33ab --- /dev/null +++ b/docs/API_docs/methods/messages.deletePhoneCallHistory.md @@ -0,0 +1,42 @@ +--- +title: "messages.deletePhoneCallHistory" +description: "Delete the entire phone call history." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_deletePhoneCallHistory.html +--- +# Method: messages.deletePhoneCallHistory +[Back to methods index](index.html) + + + +Delete the entire phone call history. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|revoke|[Bool](/API_docs/types/Bool.html) | Whether to remove phone call history for participants as well | Optional| + + +### Return type: [messages.AffectedFoundMessages](/API_docs/types/messages.AffectedFoundMessages.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_AffectedFoundMessages = $MadelineProto->messages->deletePhoneCallHistory(revoke: $Bool, ); +``` + diff --git a/docs/API_docs/methods/messages.deleteQuickReplyMessages.md b/docs/API_docs/methods/messages.deleteQuickReplyMessages.md new file mode 100644 index 0000000000..25e9706534 --- /dev/null +++ b/docs/API_docs/methods/messages.deleteQuickReplyMessages.md @@ -0,0 +1,41 @@ +--- +title: "messages.deleteQuickReplyMessages" +description: "messages.deleteQuickReplyMessages parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_deleteQuickReplyMessages.html +--- +# Method: messages.deleteQuickReplyMessages +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|shortcut\_id|[int](/API_docs/types/int.html) | Optional| +|id|Array of [int](/API_docs/types/int.html) | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->deleteQuickReplyMessages(shortcut_id: $int, id: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/messages.deleteQuickReplyShortcut.md b/docs/API_docs/methods/messages.deleteQuickReplyShortcut.md new file mode 100644 index 0000000000..aa6c529ec4 --- /dev/null +++ b/docs/API_docs/methods/messages.deleteQuickReplyShortcut.md @@ -0,0 +1,40 @@ +--- +title: "messages.deleteQuickReplyShortcut" +description: "messages.deleteQuickReplyShortcut parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_deleteQuickReplyShortcut.html +--- +# Method: messages.deleteQuickReplyShortcut +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|shortcut\_id|[int](/API_docs/types/int.html) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->deleteQuickReplyShortcut(shortcut_id: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.deleteRevokedExportedChatInvites.md b/docs/API_docs/methods/messages.deleteRevokedExportedChatInvites.md new file mode 100644 index 0000000000..e6670912f5 --- /dev/null +++ b/docs/API_docs/methods/messages.deleteRevokedExportedChatInvites.md @@ -0,0 +1,43 @@ +--- +title: "messages.deleteRevokedExportedChatInvites" +description: "Delete all revoked chat invites" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_deleteRevokedExportedChatInvites.html +--- +# Method: messages.deleteRevokedExportedChatInvites +[Back to methods index](index.html) + + + +Delete all revoked chat invites + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Chat | Optional| +|admin\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | ID of the admin that originally generated the revoked chat invites | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->deleteRevokedExportedChatInvites(peer: $InputPeer, admin_id: $InputUser, ); +``` + diff --git a/docs/API_docs/methods/messages.deleteSavedHistory.md b/docs/API_docs/methods/messages.deleteSavedHistory.md new file mode 100644 index 0000000000..4b33fc1c3c --- /dev/null +++ b/docs/API_docs/methods/messages.deleteSavedHistory.md @@ -0,0 +1,45 @@ +--- +title: "messages.deleteSavedHistory" +description: "Deletes messages forwarded from a specific peer to [saved messages »](https://core.telegram.org/api/saved-messages)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_deleteSavedHistory.html +--- +# Method: messages.deleteSavedHistory +[Back to methods index](index.html) + + + +Deletes messages forwarded from a specific peer to [saved messages »](https://core.telegram.org/api/saved-messages). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer, whose messages will be deleted from [saved messages »](https://core.telegram.org/api/saved-messages) | Optional| +|max\_id|[int](/API_docs/types/int.html) | Maximum ID of message to delete | Optional| +|min\_date|[int](/API_docs/types/int.html) | Delete all messages newer than this UNIX timestamp | Optional| +|max\_date|[int](/API_docs/types/int.html) | Delete all messages older than this UNIX timestamp | Optional| + + +### Return type: [messages.AffectedHistory](/API_docs/types/messages.AffectedHistory.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_AffectedHistory = $MadelineProto->messages->deleteSavedHistory(peer: $InputPeer, max_id: $int, min_date: $int, max_date: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.deleteScheduledMessages.md b/docs/API_docs/methods/messages.deleteScheduledMessages.md new file mode 100644 index 0000000000..a59309e131 --- /dev/null +++ b/docs/API_docs/methods/messages.deleteScheduledMessages.md @@ -0,0 +1,43 @@ +--- +title: "messages.deleteScheduledMessages" +description: "Delete scheduled messages" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_deleteScheduledMessages.html +--- +# Method: messages.deleteScheduledMessages +[Back to methods index](index.html) + + + +Delete scheduled messages + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer | Optional| +|id|Array of [int](/API_docs/types/int.html) | Scheduled message IDs | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->deleteScheduledMessages(peer: $InputPeer, id: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/messages.discardEncryption.md b/docs/API_docs/methods/messages.discardEncryption.md new file mode 100644 index 0000000000..c6d544da1b --- /dev/null +++ b/docs/API_docs/methods/messages.discardEncryption.md @@ -0,0 +1,43 @@ +--- +title: "messages.discardEncryption" +description: "You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_discardEncryption.html +--- +# Method: messages.discardEncryption +[Back to methods index](index.html) + + + +You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|delete\_history|[Bool](/API_docs/types/Bool.html) | Whether to delete the entire chat history for the other user as well | Optional| +|chat\_id|[int](/API_docs/types/int.html) | Secret chat ID | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->discardEncryption(delete_history: $Bool, chat_id: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.editChatAbout.md b/docs/API_docs/methods/messages.editChatAbout.md new file mode 100644 index 0000000000..5859f49257 --- /dev/null +++ b/docs/API_docs/methods/messages.editChatAbout.md @@ -0,0 +1,43 @@ +--- +title: "messages.editChatAbout" +description: "Edit the description of a [group/supergroup/channel](https://core.telegram.org/api/channel)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_editChatAbout.html +--- +# Method: messages.editChatAbout +[Back to methods index](index.html) + + + +Edit the description of a [group/supergroup/channel](https://core.telegram.org/api/channel). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The [group/supergroup/channel](https://core.telegram.org/api/channel). | Optional| +|about|[string](/API_docs/types/string.html) | The new description | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->editChatAbout(peer: $InputPeer, about: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.editChatAdmin.md b/docs/API_docs/methods/messages.editChatAdmin.md new file mode 100644 index 0000000000..0d7f62a92f --- /dev/null +++ b/docs/API_docs/methods/messages.editChatAdmin.md @@ -0,0 +1,44 @@ +--- +title: "messages.editChatAdmin" +description: "Make a user admin in a [basic group](https://core.telegram.org/api/channel#basic-groups)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_editChatAdmin.html +--- +# Method: messages.editChatAdmin +[Back to methods index](index.html) + + + +Make a user admin in a [basic group](https://core.telegram.org/api/channel#basic-groups). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|chat\_id|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | | Optional| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | The user to make admin | Optional| +|is\_admin|[Bool](/API_docs/types/Bool.html) | Whether to make them admin | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->editChatAdmin(chat_id: $InputPeer, user_id: $InputUser, is_admin: $Bool, ); +``` + diff --git a/docs/API_docs/methods/messages.editChatDefaultBannedRights.md b/docs/API_docs/methods/messages.editChatDefaultBannedRights.md new file mode 100644 index 0000000000..10b080c87f --- /dev/null +++ b/docs/API_docs/methods/messages.editChatDefaultBannedRights.md @@ -0,0 +1,43 @@ +--- +title: "messages.editChatDefaultBannedRights" +description: "Edit the default banned rights of a [channel/supergroup/group](https://core.telegram.org/api/channel)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_editChatDefaultBannedRights.html +--- +# Method: messages.editChatDefaultBannedRights +[Back to methods index](index.html) + + + +Edit the default banned rights of a [channel/supergroup/group](https://core.telegram.org/api/channel). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The peer | Optional| +|banned\_rights|[ChatBannedRights](/API_docs/types/ChatBannedRights.html) | The new global rights | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->editChatDefaultBannedRights(peer: $InputPeer, banned_rights: $ChatBannedRights, ); +``` + diff --git a/docs/API_docs/methods/messages.editChatPhoto.md b/docs/API_docs/methods/messages.editChatPhoto.md new file mode 100644 index 0000000000..0227da9dda --- /dev/null +++ b/docs/API_docs/methods/messages.editChatPhoto.md @@ -0,0 +1,43 @@ +--- +title: "messages.editChatPhoto" +description: "Changes chat photo and sends a service message on it" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_editChatPhoto.html +--- +# Method: messages.editChatPhoto +[Back to methods index](index.html) + + + +Changes chat photo and sends a service message on it + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|chat\_id|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | | Optional| +|photo|[InputChatPhoto](/API_docs/types/InputChatPhoto.html) | Photo to be set | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->editChatPhoto(chat_id: $InputPeer, photo: $InputChatPhoto, ); +``` + diff --git a/docs/API_docs/methods/messages.editChatTitle.md b/docs/API_docs/methods/messages.editChatTitle.md new file mode 100644 index 0000000000..5a530086d9 --- /dev/null +++ b/docs/API_docs/methods/messages.editChatTitle.md @@ -0,0 +1,43 @@ +--- +title: "messages.editChatTitle" +description: "Changes chat name and sends a service message on it." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_editChatTitle.html +--- +# Method: messages.editChatTitle +[Back to methods index](index.html) + + + +Changes chat name and sends a service message on it. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|chat\_id|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | | Optional| +|title|[string](/API_docs/types/string.html) | New chat name, different from the old one | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->editChatTitle(chat_id: $InputPeer, title: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.editExportedChatInvite.md b/docs/API_docs/methods/messages.editExportedChatInvite.md new file mode 100644 index 0000000000..6f44b5074c --- /dev/null +++ b/docs/API_docs/methods/messages.editExportedChatInvite.md @@ -0,0 +1,48 @@ +--- +title: "messages.editExportedChatInvite" +description: "Edit an exported chat invite" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_editExportedChatInvite.html +--- +# Method: messages.editExportedChatInvite +[Back to methods index](index.html) + + + +Edit an exported chat invite + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|revoked|[Bool](/API_docs/types/Bool.html) | Whether to revoke the chat invite | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Chat | Optional| +|link|[string](/API_docs/types/string.html) | Invite link | Optional| +|expire\_date|[int](/API_docs/types/int.html) | New expiration date | Optional| +|usage\_limit|[int](/API_docs/types/int.html) | Maximum number of users that can join using this link | Optional| +|request\_needed|[Bool](/API_docs/types/Bool.html) | Whether admin confirmation is required before admitting each separate user into the chat | Optional| +|title|[string](/API_docs/types/string.html) | Description of the invite link, visible only to administrators | Optional| + + +### Return type: [messages.ExportedChatInvite](/API_docs/types/messages.ExportedChatInvite.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_ExportedChatInvite = $MadelineProto->messages->editExportedChatInvite(revoked: $Bool, peer: $InputPeer, link: 'string', expire_date: $int, usage_limit: $int, request_needed: $Bool, title: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.editInlineBotMessage.md b/docs/API_docs/methods/messages.editInlineBotMessage.md new file mode 100644 index 0000000000..e2c1645578 --- /dev/null +++ b/docs/API_docs/methods/messages.editInlineBotMessage.md @@ -0,0 +1,121 @@ +--- +title: "messages.editInlineBotMessage" +description: "Edit an inline bot message" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_editInlineBotMessage.html +--- +# Method: messages.editInlineBotMessage +[Back to methods index](index.html) + + + +Edit an inline bot message + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|no\_webpage|[Bool](/API_docs/types/Bool.html) | Disable webpage preview | Optional| +|invert\_media|[Bool](/API_docs/types/Bool.html) | If set, any eventual webpage preview will be shown on top of the message instead of at the bottom. | Optional| +|id|[InputBotInlineMessageID](/API_docs/types/InputBotInlineMessageID.html) | Sent inline message ID | Yes| +|message|[string](/API_docs/types/string.html) | Message | Optional| +|media|[MessageMedia, Update, Message or InputMedia](/API_docs/types/InputMedia.html) | Media | Optional| +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Reply markup for inline keyboards | Optional| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | [Message entities for styled text](https://core.telegram.org/api/entities) | Optional| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->editInlineBotMessage(no_webpage: $Bool, invert_media: $Bool, id: $InputBotInlineMessageID, message: 'string', media: $InputMedia, reply_markup: $ReplyMarkup, entities: [$MessageEntity, $MessageEntity], parse_mode: 'string', ); +``` + + +## Usage of reply_markup + +You can provide bot API reply_markup objects here. + + + +## Return value + +If the length of the provided message is bigger than 4096, the message will be split in chunks and the method will be called multiple times, with the same parameters (except for the message), and an array of [Bool](../types/Bool.html) will be returned instead. + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + diff --git a/docs/API_docs/methods/messages.editMessage.md b/docs/API_docs/methods/messages.editMessage.md new file mode 100644 index 0000000000..42b371241b --- /dev/null +++ b/docs/API_docs/methods/messages.editMessage.md @@ -0,0 +1,124 @@ +--- +title: "messages.editMessage" +description: "Edit message" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_editMessage.html +--- +# Method: messages.editMessage +[Back to methods index](index.html) + + + +Edit message + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|no\_webpage|[Bool](/API_docs/types/Bool.html) | Disable webpage preview | Optional| +|invert\_media|[Bool](/API_docs/types/Bool.html) | If set, any eventual webpage preview will be shown on top of the message instead of at the bottom. | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Where was the message sent | Optional| +|id|[int](/API_docs/types/int.html) | ID of the message to edit | Optional| +|message|[string](/API_docs/types/string.html) | New message | Optional| +|media|[MessageMedia, Update, Message or InputMedia](/API_docs/types/InputMedia.html) | New attached media | Optional| +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Reply markup for inline keyboards | Optional| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | [Message entities for styled text](https://core.telegram.org/api/entities) | Optional| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|schedule\_date|[int](/API_docs/types/int.html) | Scheduled message date for [scheduled messages](https://core.telegram.org/api/scheduled-messages) | Optional| +|quick\_reply\_shortcut\_id|[int](/API_docs/types/int.html) | | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->editMessage(no_webpage: $Bool, invert_media: $Bool, peer: $InputPeer, id: $int, message: 'string', media: $InputMedia, reply_markup: $ReplyMarkup, entities: [$MessageEntity, $MessageEntity], parse_mode: 'string', schedule_date: $int, quick_reply_shortcut_id: $int, ); +``` + + +## Usage of reply_markup + +You can provide bot API reply_markup objects here. + + + +## Return value + +If the length of the provided message is bigger than 4096, the message will be split in chunks and the method will be called multiple times, with the same parameters (except for the message), and an array of [Updates](../types/Updates.html) will be returned instead. + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + diff --git a/docs/API_docs/methods/messages.editQuickReplyShortcut.md b/docs/API_docs/methods/messages.editQuickReplyShortcut.md new file mode 100644 index 0000000000..cbf3d56a14 --- /dev/null +++ b/docs/API_docs/methods/messages.editQuickReplyShortcut.md @@ -0,0 +1,41 @@ +--- +title: "messages.editQuickReplyShortcut" +description: "messages.editQuickReplyShortcut parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_editQuickReplyShortcut.html +--- +# Method: messages.editQuickReplyShortcut +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|shortcut\_id|[int](/API_docs/types/int.html) | Optional| +|shortcut|[string](/API_docs/types/string.html) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->editQuickReplyShortcut(shortcut_id: $int, shortcut: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.exportChatInvite.md b/docs/API_docs/methods/messages.exportChatInvite.md new file mode 100644 index 0000000000..326e6522a2 --- /dev/null +++ b/docs/API_docs/methods/messages.exportChatInvite.md @@ -0,0 +1,47 @@ +--- +title: "messages.exportChatInvite" +description: "Export an invite link for a chat" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_exportChatInvite.html +--- +# Method: messages.exportChatInvite +[Back to methods index](index.html) + + + +Export an invite link for a chat + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|legacy\_revoke\_permanent|[Bool](/API_docs/types/Bool.html) | Legacy flag, reproducing legacy behavior of this method: if set, revokes all previous links before creating a new one. Kept for bot API BC, should not be used by modern clients. | Optional| +|request\_needed|[Bool](/API_docs/types/Bool.html) | Whether admin confirmation is required before admitting each separate user into the chat | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Chat | Optional| +|expire\_date|[int](/API_docs/types/int.html) | Expiration date | Optional| +|usage\_limit|[int](/API_docs/types/int.html) | Maximum number of users that can join using this link | Optional| +|title|[string](/API_docs/types/string.html) | Description of the invite link, visible only to administrators | Optional| + + +### Return type: [ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$ExportedChatInvite = $MadelineProto->messages->exportChatInvite(legacy_revoke_permanent: $Bool, request_needed: $Bool, peer: $InputPeer, expire_date: $int, usage_limit: $int, title: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.faveSticker.md b/docs/API_docs/methods/messages.faveSticker.md new file mode 100644 index 0000000000..c96d7dc296 --- /dev/null +++ b/docs/API_docs/methods/messages.faveSticker.md @@ -0,0 +1,43 @@ +--- +title: "messages.faveSticker" +description: "Mark or unmark a sticker as favorite" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_faveSticker.html +--- +# Method: messages.faveSticker +[Back to methods index](index.html) + + + +Mark or unmark a sticker as favorite + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|[MessageMedia, Update, Message or InputDocument](/API_docs/types/InputDocument.html) | Sticker in question | Optional| +|unfave|[Bool](/API_docs/types/Bool.html) | Whether to add or remove a sticker from favorites | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->faveSticker(id: $InputDocument, unfave: $Bool, ); +``` + diff --git a/docs/API_docs/methods/messages.forwardMessages.md b/docs/API_docs/methods/messages.forwardMessages.md new file mode 100644 index 0000000000..aa34cda693 --- /dev/null +++ b/docs/API_docs/methods/messages.forwardMessages.md @@ -0,0 +1,54 @@ +--- +title: "messages.forwardMessages" +description: "Forwards messages by their IDs." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_forwardMessages.html +--- +# Method: messages.forwardMessages +[Back to methods index](index.html) + + + +Forwards messages by their IDs. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|silent|[Bool](/API_docs/types/Bool.html) | Whether to send messages silently (no notification will be triggered on the destination clients) | Optional| +|background|[Bool](/API_docs/types/Bool.html) | Whether to send the message in background | Optional| +|with\_my\_score|[Bool](/API_docs/types/Bool.html) | When forwarding games, whether to include your score in the game | Optional| +|drop\_author|[Bool](/API_docs/types/Bool.html) | Whether to forward messages without quoting the original author | Optional| +|drop\_media\_captions|[Bool](/API_docs/types/Bool.html) | Whether to strip captions from media | Optional| +|noforwards|[Bool](/API_docs/types/Bool.html) | Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn't have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled | Optional| +|from\_peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Source of messages | Optional| +|id|Array of [int](/API_docs/types/int.html) | IDs of messages | Yes| +|to\_peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Destination peer | Optional| +|top\_msg\_id|[int](/API_docs/types/int.html) | Destination [forum topic](https://core.telegram.org/api/forum#forum-topics) | Optional| +|schedule\_date|[int](/API_docs/types/int.html) | Scheduled message date for scheduled messages | Optional| +|send\_as|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Forward the messages as the specified peer | Optional| +|quick\_reply\_shortcut|[InputQuickReplyShortcut](/API_docs/types/InputQuickReplyShortcut.html) | | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->forwardMessages(silent: $Bool, background: $Bool, with_my_score: $Bool, drop_author: $Bool, drop_media_captions: $Bool, noforwards: $Bool, from_peer: $InputPeer, id: [$int, $int], to_peer: $InputPeer, top_msg_id: $int, schedule_date: $int, send_as: $InputPeer, quick_reply_shortcut: $InputQuickReplyShortcut, ); +``` + diff --git a/docs/API_docs/methods/messages.getAdminsWithInvites.md b/docs/API_docs/methods/messages.getAdminsWithInvites.md new file mode 100644 index 0000000000..3b905b33d5 --- /dev/null +++ b/docs/API_docs/methods/messages.getAdminsWithInvites.md @@ -0,0 +1,42 @@ +--- +title: "messages.getAdminsWithInvites" +description: "Get info about chat invites generated by admins." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getAdminsWithInvites.html +--- +# Method: messages.getAdminsWithInvites +[Back to methods index](index.html) + + + +Get info about chat invites generated by admins. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Chat | Optional| + + +### Return type: [messages.ChatAdminsWithInvites](/API_docs/types/messages.ChatAdminsWithInvites.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_ChatAdminsWithInvites = $MadelineProto->messages->getAdminsWithInvites(peer: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/messages.getAllDrafts.md b/docs/API_docs/methods/messages.getAllDrafts.md new file mode 100644 index 0000000000..2bc09ec80a --- /dev/null +++ b/docs/API_docs/methods/messages.getAllDrafts.md @@ -0,0 +1,38 @@ +--- +title: "messages.getAllDrafts" +description: "Return all message [drafts](https://core.telegram.org/api/drafts). " +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getAllDrafts.html +--- +# Method: messages.getAllDrafts +[Back to methods index](index.html) + + + +Return all message [drafts](https://core.telegram.org/api/drafts). +Returns all the latest [updateDraftMessage](../constructors/updateDraftMessage.html) updates related to all chats with drafts. + + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->getAllDrafts(); +``` + diff --git a/docs/API_docs/methods/messages.getAllStickers.md b/docs/API_docs/methods/messages.getAllStickers.md new file mode 100644 index 0000000000..217127ad9e --- /dev/null +++ b/docs/API_docs/methods/messages.getAllStickers.md @@ -0,0 +1,42 @@ +--- +title: "messages.getAllStickers" +description: "Get all installed stickers" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getAllStickers.html +--- +# Method: messages.getAllStickers +[Back to methods index](index.html) + + + +Get all installed stickers + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.AllStickers](/API_docs/types/messages.AllStickers.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_AllStickers = $MadelineProto->messages->getAllStickers(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getArchivedStickers.md b/docs/API_docs/methods/messages.getArchivedStickers.md new file mode 100644 index 0000000000..987e4898a6 --- /dev/null +++ b/docs/API_docs/methods/messages.getArchivedStickers.md @@ -0,0 +1,45 @@ +--- +title: "messages.getArchivedStickers" +description: "Get all archived stickers" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getArchivedStickers.html +--- +# Method: messages.getArchivedStickers +[Back to methods index](index.html) + + + +Get all archived stickers + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|masks|[Bool](/API_docs/types/Bool.html) | Get [mask stickers](https://core.telegram.org/api/stickers#mask-stickers) | Optional| +|emojis|[Bool](/API_docs/types/Bool.html) | Get [custom emoji stickers](https://core.telegram.org/api/custom-emoji) | Optional| +|offset\_id|[long](/API_docs/types/long.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Yes| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [messages.ArchivedStickers](/API_docs/types/messages.ArchivedStickers.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_ArchivedStickers = $MadelineProto->messages->getArchivedStickers(masks: $Bool, emojis: $Bool, offset_id: $long, limit: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.getAttachMenuBot.md b/docs/API_docs/methods/messages.getAttachMenuBot.md new file mode 100644 index 0000000000..770eb5f740 --- /dev/null +++ b/docs/API_docs/methods/messages.getAttachMenuBot.md @@ -0,0 +1,42 @@ +--- +title: "messages.getAttachMenuBot" +description: "Returns attachment menu entry for a [bot mini app that can be launched from the attachment menu »](https://core.telegram.org/api/bots/attach)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getAttachMenuBot.html +--- +# Method: messages.getAttachMenuBot +[Back to methods index](index.html) + + + +Returns attachment menu entry for a [bot mini app that can be launched from the attachment menu »](https://core.telegram.org/api/bots/attach) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|bot|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Bot ID | Optional| + + +### Return type: [AttachMenuBotsBot](/API_docs/types/AttachMenuBotsBot.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$AttachMenuBotsBot = $MadelineProto->messages->getAttachMenuBot(bot: $InputUser, ); +``` + diff --git a/docs/API_docs/methods/messages.getAttachMenuBots.md b/docs/API_docs/methods/messages.getAttachMenuBots.md new file mode 100644 index 0000000000..ae8ced0562 --- /dev/null +++ b/docs/API_docs/methods/messages.getAttachMenuBots.md @@ -0,0 +1,42 @@ +--- +title: "messages.getAttachMenuBots" +description: "Returns installed attachment menu [bot mini apps »](https://core.telegram.org/api/bots/attach)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getAttachMenuBots.html +--- +# Method: messages.getAttachMenuBots +[Back to methods index](index.html) + + + +Returns installed attachment menu [bot mini apps »](https://core.telegram.org/api/bots/attach) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [AttachMenuBots](/API_docs/types/AttachMenuBots.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$AttachMenuBots = $MadelineProto->messages->getAttachMenuBots(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getAttachedStickers.md b/docs/API_docs/methods/messages.getAttachedStickers.md new file mode 100644 index 0000000000..8f4f3b39be --- /dev/null +++ b/docs/API_docs/methods/messages.getAttachedStickers.md @@ -0,0 +1,42 @@ +--- +title: "messages.getAttachedStickers" +description: "Get stickers attached to a photo or video" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getAttachedStickers.html +--- +# Method: messages.getAttachedStickers +[Back to methods index](index.html) + + + +Get stickers attached to a photo or video + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|media|[InputStickeredMedia](/API_docs/types/InputStickeredMedia.html) | Stickered media | Yes| + + +### Return type: [Vector\_of\_StickerSetCovered](/API_docs/types/StickerSetCovered.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_StickerSetCovered = $MadelineProto->messages->getAttachedStickers(media: $InputStickeredMedia, ); +``` + diff --git a/docs/API_docs/methods/messages.getAvailableReactions.md b/docs/API_docs/methods/messages.getAvailableReactions.md new file mode 100644 index 0000000000..e6e0ca804d --- /dev/null +++ b/docs/API_docs/methods/messages.getAvailableReactions.md @@ -0,0 +1,42 @@ +--- +title: "messages.getAvailableReactions" +description: "Obtain available [message reactions »](https://core.telegram.org/api/reactions)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getAvailableReactions.html +--- +# Method: messages.getAvailableReactions +[Back to methods index](index.html) + + + +Obtain available [message reactions »](https://core.telegram.org/api/reactions) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | | Optional| + + +### Return type: [messages.AvailableReactions](/API_docs/types/messages.AvailableReactions.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_AvailableReactions = $MadelineProto->messages->getAvailableReactions(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getBotApp.md b/docs/API_docs/methods/messages.getBotApp.md new file mode 100644 index 0000000000..9fa4d2b1ce --- /dev/null +++ b/docs/API_docs/methods/messages.getBotApp.md @@ -0,0 +1,43 @@ +--- +title: "messages.getBotApp" +description: "Obtain information about a [direct link Mini App](https://core.telegram.org/api/bots/webapps#direct-link-mini-apps)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getBotApp.html +--- +# Method: messages.getBotApp +[Back to methods index](index.html) + + + +Obtain information about a [direct link Mini App](https://core.telegram.org/api/bots/webapps#direct-link-mini-apps) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|app|[InputBotApp](/API_docs/types/InputBotApp.html) | Bot app information obtained from a [Direct Mini App deep link »](https://core.telegram.org/api/links#direct-mini-app-links). | Yes| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.BotApp](/API_docs/types/messages.BotApp.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_BotApp = $MadelineProto->messages->getBotApp(app: $InputBotApp, hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getBotCallbackAnswer.md b/docs/API_docs/methods/messages.getBotCallbackAnswer.md new file mode 100644 index 0000000000..532b7900e5 --- /dev/null +++ b/docs/API_docs/methods/messages.getBotCallbackAnswer.md @@ -0,0 +1,46 @@ +--- +title: "messages.getBotCallbackAnswer" +description: "Press an inline callback button and get a callback answer from the bot" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getBotCallbackAnswer.html +--- +# Method: messages.getBotCallbackAnswer +[Back to methods index](index.html) + + + +Press an inline callback button and get a callback answer from the bot + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|game|[Bool](/API_docs/types/Bool.html) | Whether this is a "play game" button | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Where was the inline keyboard sent | Optional| +|msg\_id|[int](/API_docs/types/int.html) | ID of the Message with the inline keyboard | Optional| +|data|[bytes](/API_docs/types/bytes.html) | Callback data | Optional| +|password|[InputCheckPasswordSRP](/API_docs/types/InputCheckPasswordSRP.html) | For buttons [requiring you to verify your identity with your 2FA password](../constructors/keyboardButtonCallback.html), the SRP payload generated using [SRP](https://core.telegram.org/api/srp). | Optional| + + +### Return type: [messages.BotCallbackAnswer](/API_docs/types/messages.BotCallbackAnswer.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_BotCallbackAnswer = $MadelineProto->messages->getBotCallbackAnswer(game: $Bool, peer: $InputPeer, msg_id: $int, data: 'bytes', password: $InputCheckPasswordSRP, ); +``` + diff --git a/docs/API_docs/methods/messages.getChatInviteImporters.md b/docs/API_docs/methods/messages.getChatInviteImporters.md new file mode 100644 index 0000000000..5d72516b54 --- /dev/null +++ b/docs/API_docs/methods/messages.getChatInviteImporters.md @@ -0,0 +1,48 @@ +--- +title: "messages.getChatInviteImporters" +description: "Get info about the users that joined the chat using a specific chat invite" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getChatInviteImporters.html +--- +# Method: messages.getChatInviteImporters +[Back to methods index](index.html) + + + +Get info about the users that joined the chat using a specific chat invite + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|requested|[Bool](/API_docs/types/Bool.html) | If set, only returns info about users with pending [join requests »](https://core.telegram.org/api/invites#join-requests) | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Chat | Optional| +|link|[string](/API_docs/types/string.html) | Invite link | Optional| +|q|[string](/API_docs/types/string.html) | Search for a user in the pending [join requests »](https://core.telegram.org/api/invites#join-requests) list: only available when the `requested` flag is set, cannot be used together with a specific `link`. | Optional| +|offset\_date|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| +|offset\_user|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | User ID for [pagination](https://core.telegram.org/api/offsets): if set, `offset_date` must also be set. | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [messages.ChatInviteImporters](/API_docs/types/messages.ChatInviteImporters.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_ChatInviteImporters = $MadelineProto->messages->getChatInviteImporters(requested: $Bool, peer: $InputPeer, link: 'string', q: 'string', offset_date: $int, offset_user: $InputUser, limit: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.getChats.md b/docs/API_docs/methods/messages.getChats.md new file mode 100644 index 0000000000..d1347ae6ed --- /dev/null +++ b/docs/API_docs/methods/messages.getChats.md @@ -0,0 +1,42 @@ +--- +title: "messages.getChats" +description: "Returns chat basic info on their IDs." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getChats.html +--- +# Method: messages.getChats +[Back to methods index](index.html) + + + +Returns chat basic info on their IDs. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|Array of [long](/API_docs/types/long.html) | List of chat IDs | Yes| + + +### Return type: [messages.Chats](/API_docs/types/messages.Chats.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Chats = $MadelineProto->messages->getChats(id: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getCommonChats.md b/docs/API_docs/methods/messages.getCommonChats.md new file mode 100644 index 0000000000..75c3eafab9 --- /dev/null +++ b/docs/API_docs/methods/messages.getCommonChats.md @@ -0,0 +1,44 @@ +--- +title: "messages.getCommonChats" +description: "Get chats in common with a user" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getCommonChats.html +--- +# Method: messages.getCommonChats +[Back to methods index](index.html) + + + +Get chats in common with a user + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | User ID | Optional| +|max\_id|[long](/API_docs/types/long.html) | Maximum ID of chat to return (see [pagination](https://core.telegram.org/api/offsets)) | Yes| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [messages.Chats](/API_docs/types/messages.Chats.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Chats = $MadelineProto->messages->getCommonChats(user_id: $InputUser, max_id: $long, limit: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.getCustomEmojiDocuments.md b/docs/API_docs/methods/messages.getCustomEmojiDocuments.md new file mode 100644 index 0000000000..0eb301c685 --- /dev/null +++ b/docs/API_docs/methods/messages.getCustomEmojiDocuments.md @@ -0,0 +1,44 @@ +--- +title: "messages.getCustomEmojiDocuments" +description: "Fetch [custom emoji stickers »](https://core.telegram.org/api/custom-emoji)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getCustomEmojiDocuments.html +--- +# Method: messages.getCustomEmojiDocuments +[Back to methods index](index.html) + + + +Fetch [custom emoji stickers »](https://core.telegram.org/api/custom-emoji). + +Returns a list of [documents](../constructors/document.html) with the animated custom emoji in TGS format, and a [documentAttributeCustomEmoji](../constructors/documentAttributeCustomEmoji.html) attribute with the original emoji and info about the emoji stickerset this custom emoji belongs to. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|document\_id|Array of [long](/API_docs/types/long.html) | [Custom emoji](https://core.telegram.org/api/custom-emoji) IDs from a [messageEntityCustomEmoji](../constructors/messageEntityCustomEmoji.html). | Yes| + + +### Return type: [Vector\_of\_Document](/API_docs/types/Document.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_Document = $MadelineProto->messages->getCustomEmojiDocuments(document_id: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getDefaultHistoryTTL.md b/docs/API_docs/methods/messages.getDefaultHistoryTTL.md new file mode 100644 index 0000000000..45e42947d3 --- /dev/null +++ b/docs/API_docs/methods/messages.getDefaultHistoryTTL.md @@ -0,0 +1,37 @@ +--- +title: "messages.getDefaultHistoryTTL" +description: "Gets the default value of the Time-To-Live setting, applied to all new chats." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getDefaultHistoryTTL.html +--- +# Method: messages.getDefaultHistoryTTL +[Back to methods index](index.html) + + + +Gets the default value of the Time-To-Live setting, applied to all new chats. + + + +### Return type: [DefaultHistoryTTL](/API_docs/types/DefaultHistoryTTL.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$DefaultHistoryTTL = $MadelineProto->messages->getDefaultHistoryTTL(); +``` + diff --git a/docs/API_docs/methods/messages.getDefaultTagReactions.md b/docs/API_docs/methods/messages.getDefaultTagReactions.md new file mode 100644 index 0000000000..3bbb18fda1 --- /dev/null +++ b/docs/API_docs/methods/messages.getDefaultTagReactions.md @@ -0,0 +1,40 @@ +--- +title: "messages.getDefaultTagReactions" +description: "messages.getDefaultTagReactions parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getDefaultTagReactions.html +--- +# Method: messages.getDefaultTagReactions +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | Optional| + + +### Return type: [messages.Reactions](/API_docs/types/messages.Reactions.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Reactions = $MadelineProto->messages->getDefaultTagReactions(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getDhConfig.md b/docs/API_docs/methods/messages.getDhConfig.md new file mode 100644 index 0000000000..3a6ccaedc5 --- /dev/null +++ b/docs/API_docs/methods/messages.getDhConfig.md @@ -0,0 +1,43 @@ +--- +title: "messages.getDhConfig" +description: "You cannot use this method directly, instead use $MadelineProto->getDhConfig();" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getDhConfig.html +--- +# Method: messages.getDhConfig +[Back to methods index](index.html) + + + +You cannot use this method directly, instead use $MadelineProto->getDhConfig(); + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|version|[int](/API_docs/types/int.html) | Value of the **version** parameter from [messages.dhConfig](../constructors/messages.dhConfig.html), available at the client | Optional| +|random\_length|[int](/API_docs/types/int.html) | Length of the required random sequence | Optional| + + +### Return type: [messages.DhConfig](/API_docs/types/messages.DhConfig.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_DhConfig = $MadelineProto->messages->getDhConfig(version: $int, random_length: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.getDialogFilters.md b/docs/API_docs/methods/messages.getDialogFilters.md new file mode 100644 index 0000000000..24a30ca13d --- /dev/null +++ b/docs/API_docs/methods/messages.getDialogFilters.md @@ -0,0 +1,37 @@ +--- +title: "messages.getDialogFilters" +description: "Get [folders](https://core.telegram.org/api/folders)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getDialogFilters.html +--- +# Method: messages.getDialogFilters +[Back to methods index](index.html) + + + +Get [folders](https://core.telegram.org/api/folders) + + + +### Return type: [messages.DialogFilters](/API_docs/types/messages.DialogFilters.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_DialogFilters = $MadelineProto->messages->getDialogFilters(); +``` + diff --git a/docs/API_docs/methods/messages.getDialogUnreadMarks.md b/docs/API_docs/methods/messages.getDialogUnreadMarks.md new file mode 100644 index 0000000000..d6ef9b4861 --- /dev/null +++ b/docs/API_docs/methods/messages.getDialogUnreadMarks.md @@ -0,0 +1,37 @@ +--- +title: "messages.getDialogUnreadMarks" +description: "Get dialogs manually marked as unread" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getDialogUnreadMarks.html +--- +# Method: messages.getDialogUnreadMarks +[Back to methods index](index.html) + + + +Get dialogs manually marked as unread + + + +### Return type: [Vector\_of\_DialogPeer](/API_docs/types/DialogPeer.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_DialogPeer = $MadelineProto->messages->getDialogUnreadMarks(); +``` + diff --git a/docs/API_docs/methods/messages.getDialogs.md b/docs/API_docs/methods/messages.getDialogs.md new file mode 100644 index 0000000000..6cfdbd8a12 --- /dev/null +++ b/docs/API_docs/methods/messages.getDialogs.md @@ -0,0 +1,48 @@ +--- +title: "messages.getDialogs" +description: "Returns the current user dialog list." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getDialogs.html +--- +# Method: messages.getDialogs +[Back to methods index](index.html) + + + +Returns the current user dialog list. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|exclude\_pinned|[Bool](/API_docs/types/Bool.html) | Exclude pinned dialogs | Optional| +|folder\_id|[int](/API_docs/types/int.html) | [Peer folder ID, for more info click here](https://core.telegram.org/api/folders#peer-folders) | Optional| +|offset\_date|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| +|offset\_id|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) (`top_message` ID used for pagination) | Optional| +|offset\_peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | [Offset peer for pagination](https://core.telegram.org/api/offsets) | Optional| +|limit|[int](/API_docs/types/int.html) | Number of list elements to be returned | Optional| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.Dialogs](/API_docs/types/messages.Dialogs.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Dialogs = $MadelineProto->messages->getDialogs(exclude_pinned: $Bool, folder_id: $int, offset_date: $int, offset_id: $int, offset_peer: $InputPeer, limit: $int, hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getDiscussionMessage.md b/docs/API_docs/methods/messages.getDiscussionMessage.md new file mode 100644 index 0000000000..ae4b87bb49 --- /dev/null +++ b/docs/API_docs/methods/messages.getDiscussionMessage.md @@ -0,0 +1,43 @@ +--- +title: "messages.getDiscussionMessage" +description: "Get [discussion message](https://core.telegram.org/api/threads) from the [associated discussion group](https://core.telegram.org/api/discussion) of a channel to show it on top of the comment section, without actually joining the group" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getDiscussionMessage.html +--- +# Method: messages.getDiscussionMessage +[Back to methods index](index.html) + + + +Get [discussion message](https://core.telegram.org/api/threads) from the [associated discussion group](https://core.telegram.org/api/discussion) of a channel to show it on top of the comment section, without actually joining the group + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | [Channel ID](https://core.telegram.org/api/channel) | Optional| +|msg\_id|[int](/API_docs/types/int.html) | Message ID | Optional| + + +### Return type: [messages.DiscussionMessage](/API_docs/types/messages.DiscussionMessage.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_DiscussionMessage = $MadelineProto->messages->getDiscussionMessage(peer: $InputPeer, msg_id: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.getDocumentByHash.md b/docs/API_docs/methods/messages.getDocumentByHash.md new file mode 100644 index 0000000000..cac198d278 --- /dev/null +++ b/docs/API_docs/methods/messages.getDocumentByHash.md @@ -0,0 +1,44 @@ +--- +title: "messages.getDocumentByHash" +description: "Get a document by its SHA256 hash, mainly used for gifs" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getDocumentByHash.html +--- +# Method: messages.getDocumentByHash +[Back to methods index](index.html) + + + +Get a document by its SHA256 hash, mainly used for gifs + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|sha256|[bytes](/API_docs/types/bytes.html) | SHA256 of file | Yes| +|size|[long](/API_docs/types/long.html) | Size of the file in bytes | Yes| +|mime\_type|[string](/API_docs/types/string.html) | Mime type | Optional| + + +### Return type: [Document](/API_docs/types/Document.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Document = $MadelineProto->messages->getDocumentByHash(sha256: 'bytes', size: $long, mime_type: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.getEmojiGroups.md b/docs/API_docs/methods/messages.getEmojiGroups.md new file mode 100644 index 0000000000..98f3a1f79c --- /dev/null +++ b/docs/API_docs/methods/messages.getEmojiGroups.md @@ -0,0 +1,42 @@ +--- +title: "messages.getEmojiGroups" +description: "Represents a list of [emoji categories](https://core.telegram.org/api/custom-emoji#emoji-categories), to be used when selecting [custom emojis](https://core.telegram.org/api/custom-emoji)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getEmojiGroups.html +--- +# Method: messages.getEmojiGroups +[Back to methods index](index.html) + + + +Represents a list of [emoji categories](https://core.telegram.org/api/custom-emoji#emoji-categories), to be used when selecting [custom emojis](https://core.telegram.org/api/custom-emoji). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | | Optional| + + +### Return type: [messages.EmojiGroups](/API_docs/types/messages.EmojiGroups.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_EmojiGroups = $MadelineProto->messages->getEmojiGroups(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getEmojiKeywords.md b/docs/API_docs/methods/messages.getEmojiKeywords.md new file mode 100644 index 0000000000..4639b879e8 --- /dev/null +++ b/docs/API_docs/methods/messages.getEmojiKeywords.md @@ -0,0 +1,42 @@ +--- +title: "messages.getEmojiKeywords" +description: "Get localized [emoji keywords »](https://core.telegram.org/api/custom-emoji#emoji-keywords)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getEmojiKeywords.html +--- +# Method: messages.getEmojiKeywords +[Back to methods index](index.html) + + + +Get localized [emoji keywords »](https://core.telegram.org/api/custom-emoji#emoji-keywords). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|lang\_code|[string](/API_docs/types/string.html) | Language code | Optional| + + +### Return type: [EmojiKeywordsDifference](/API_docs/types/EmojiKeywordsDifference.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$EmojiKeywordsDifference = $MadelineProto->messages->getEmojiKeywords(lang_code: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.getEmojiKeywordsDifference.md b/docs/API_docs/methods/messages.getEmojiKeywordsDifference.md new file mode 100644 index 0000000000..8488c3c819 --- /dev/null +++ b/docs/API_docs/methods/messages.getEmojiKeywordsDifference.md @@ -0,0 +1,43 @@ +--- +title: "messages.getEmojiKeywordsDifference" +description: "Get changed [emoji keywords »](https://core.telegram.org/api/custom-emoji#emoji-keywords)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getEmojiKeywordsDifference.html +--- +# Method: messages.getEmojiKeywordsDifference +[Back to methods index](index.html) + + + +Get changed [emoji keywords »](https://core.telegram.org/api/custom-emoji#emoji-keywords). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|lang\_code|[string](/API_docs/types/string.html) | Language code | Optional| +|from\_version|[int](/API_docs/types/int.html) | Previous stored emoji keyword list `version` | Optional| + + +### Return type: [EmojiKeywordsDifference](/API_docs/types/EmojiKeywordsDifference.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$EmojiKeywordsDifference = $MadelineProto->messages->getEmojiKeywordsDifference(lang_code: 'string', from_version: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.getEmojiKeywordsLanguages.md b/docs/API_docs/methods/messages.getEmojiKeywordsLanguages.md new file mode 100644 index 0000000000..609bad1f65 --- /dev/null +++ b/docs/API_docs/methods/messages.getEmojiKeywordsLanguages.md @@ -0,0 +1,44 @@ +--- +title: "messages.getEmojiKeywordsLanguages" +description: "Obtain a list of related languages that must be used when fetching [emoji keyword lists »](https://core.telegram.org/api/custom-emoji#emoji-keywords)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getEmojiKeywordsLanguages.html +--- +# Method: messages.getEmojiKeywordsLanguages +[Back to methods index](index.html) + + + +Obtain a list of related languages that must be used when fetching [emoji keyword lists »](https://core.telegram.org/api/custom-emoji#emoji-keywords). + +Usually the method will return the passed language codes (if localized) + `en` + some language codes for similar languages (if applicable). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|lang\_codes|Array of [string](/API_docs/types/string.html) | The user's language codes | Yes| + + +### Return type: [Vector\_of\_EmojiLanguage](/API_docs/types/EmojiLanguage.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_EmojiLanguage = $MadelineProto->messages->getEmojiKeywordsLanguages(lang_codes: ['string', 'string'], ); +``` + diff --git a/docs/API_docs/methods/messages.getEmojiProfilePhotoGroups.md b/docs/API_docs/methods/messages.getEmojiProfilePhotoGroups.md new file mode 100644 index 0000000000..dd8efb597f --- /dev/null +++ b/docs/API_docs/methods/messages.getEmojiProfilePhotoGroups.md @@ -0,0 +1,42 @@ +--- +title: "messages.getEmojiProfilePhotoGroups" +description: "Represents a list of [emoji categories](https://core.telegram.org/api/custom-emoji#emoji-categories), to be used when selecting custom emojis to set as [profile picture](https://core.telegram.org/api/files#sticker-profile-pictures)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getEmojiProfilePhotoGroups.html +--- +# Method: messages.getEmojiProfilePhotoGroups +[Back to methods index](index.html) + + + +Represents a list of [emoji categories](https://core.telegram.org/api/custom-emoji#emoji-categories), to be used when selecting custom emojis to set as [profile picture](https://core.telegram.org/api/files#sticker-profile-pictures). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | | Optional| + + +### Return type: [messages.EmojiGroups](/API_docs/types/messages.EmojiGroups.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_EmojiGroups = $MadelineProto->messages->getEmojiProfilePhotoGroups(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getEmojiStatusGroups.md b/docs/API_docs/methods/messages.getEmojiStatusGroups.md new file mode 100644 index 0000000000..ee8f86bde0 --- /dev/null +++ b/docs/API_docs/methods/messages.getEmojiStatusGroups.md @@ -0,0 +1,42 @@ +--- +title: "messages.getEmojiStatusGroups" +description: "Represents a list of [emoji categories](https://core.telegram.org/api/custom-emoji#emoji-categories), to be used when selecting custom emojis to set as [custom emoji status](https://core.telegram.org/api)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getEmojiStatusGroups.html +--- +# Method: messages.getEmojiStatusGroups +[Back to methods index](index.html) + + + +Represents a list of [emoji categories](https://core.telegram.org/api/custom-emoji#emoji-categories), to be used when selecting custom emojis to set as [custom emoji status](https://core.telegram.org/api). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | | Optional| + + +### Return type: [messages.EmojiGroups](/API_docs/types/messages.EmojiGroups.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_EmojiGroups = $MadelineProto->messages->getEmojiStatusGroups(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getEmojiStickerGroups.md b/docs/API_docs/methods/messages.getEmojiStickerGroups.md new file mode 100644 index 0000000000..ef77c9f451 --- /dev/null +++ b/docs/API_docs/methods/messages.getEmojiStickerGroups.md @@ -0,0 +1,40 @@ +--- +title: "messages.getEmojiStickerGroups" +description: "messages.getEmojiStickerGroups parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getEmojiStickerGroups.html +--- +# Method: messages.getEmojiStickerGroups +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | Optional| + + +### Return type: [messages.EmojiGroups](/API_docs/types/messages.EmojiGroups.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_EmojiGroups = $MadelineProto->messages->getEmojiStickerGroups(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getEmojiStickers.md b/docs/API_docs/methods/messages.getEmojiStickers.md new file mode 100644 index 0000000000..e00d219b1e --- /dev/null +++ b/docs/API_docs/methods/messages.getEmojiStickers.md @@ -0,0 +1,42 @@ +--- +title: "messages.getEmojiStickers" +description: "Gets the list of currently installed [custom emoji stickersets](https://core.telegram.org/api/custom-emoji)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getEmojiStickers.html +--- +# Method: messages.getEmojiStickers +[Back to methods index](index.html) + + + +Gets the list of currently installed [custom emoji stickersets](https://core.telegram.org/api/custom-emoji). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.AllStickers](/API_docs/types/messages.AllStickers.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_AllStickers = $MadelineProto->messages->getEmojiStickers(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getEmojiURL.md b/docs/API_docs/methods/messages.getEmojiURL.md new file mode 100644 index 0000000000..8da7ed334d --- /dev/null +++ b/docs/API_docs/methods/messages.getEmojiURL.md @@ -0,0 +1,42 @@ +--- +title: "messages.getEmojiURL" +description: "Returns an HTTP URL which can be used to automatically log in into translation platform and suggest new [emoji keywords »](https://core.telegram.org/api/custom-emoji#emoji-keywords). The URL will be valid for 30 seconds after generation." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getEmojiURL.html +--- +# Method: messages.getEmojiURL +[Back to methods index](index.html) + + + +Returns an HTTP URL which can be used to automatically log in into translation platform and suggest new [emoji keywords »](https://core.telegram.org/api/custom-emoji#emoji-keywords). The URL will be valid for 30 seconds after generation. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|lang\_code|[string](/API_docs/types/string.html) | Language code for which the emoji keywords will be suggested | Optional| + + +### Return type: [EmojiURL](/API_docs/types/EmojiURL.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$EmojiURL = $MadelineProto->messages->getEmojiURL(lang_code: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.getExportedChatInvite.md b/docs/API_docs/methods/messages.getExportedChatInvite.md new file mode 100644 index 0000000000..4fbcc562cc --- /dev/null +++ b/docs/API_docs/methods/messages.getExportedChatInvite.md @@ -0,0 +1,43 @@ +--- +title: "messages.getExportedChatInvite" +description: "Get info about a chat invite" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getExportedChatInvite.html +--- +# Method: messages.getExportedChatInvite +[Back to methods index](index.html) + + + +Get info about a chat invite + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Chat | Optional| +|link|[string](/API_docs/types/string.html) | Invite link | Optional| + + +### Return type: [messages.ExportedChatInvite](/API_docs/types/messages.ExportedChatInvite.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_ExportedChatInvite = $MadelineProto->messages->getExportedChatInvite(peer: $InputPeer, link: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.getExportedChatInvites.md b/docs/API_docs/methods/messages.getExportedChatInvites.md new file mode 100644 index 0000000000..67ba327eaf --- /dev/null +++ b/docs/API_docs/methods/messages.getExportedChatInvites.md @@ -0,0 +1,47 @@ +--- +title: "messages.getExportedChatInvites" +description: "Get info about the chat invites of a specific chat" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getExportedChatInvites.html +--- +# Method: messages.getExportedChatInvites +[Back to methods index](index.html) + + + +Get info about the chat invites of a specific chat + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|revoked|[Bool](/API_docs/types/Bool.html) | Whether to fetch revoked chat invites | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Chat | Optional| +|admin\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Whether to only fetch chat invites from this admin | Optional| +|offset\_date|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| +|offset\_link|[string](/API_docs/types/string.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [messages.ExportedChatInvites](/API_docs/types/messages.ExportedChatInvites.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_ExportedChatInvites = $MadelineProto->messages->getExportedChatInvites(revoked: $Bool, peer: $InputPeer, admin_id: $InputUser, offset_date: $int, offset_link: 'string', limit: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.getExtendedMedia.md b/docs/API_docs/methods/messages.getExtendedMedia.md new file mode 100644 index 0000000000..6f837fd764 --- /dev/null +++ b/docs/API_docs/methods/messages.getExtendedMedia.md @@ -0,0 +1,43 @@ +--- +title: "messages.getExtendedMedia" +description: "Get information about extended media" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getExtendedMedia.html +--- +# Method: messages.getExtendedMedia +[Back to methods index](index.html) + + + +Get information about extended media + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer | Optional| +|id|Array of [int](/API_docs/types/int.html) | Message IDs | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->getExtendedMedia(peer: $InputPeer, id: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/messages.getFavedStickers.md b/docs/API_docs/methods/messages.getFavedStickers.md new file mode 100644 index 0000000000..9bf05db122 --- /dev/null +++ b/docs/API_docs/methods/messages.getFavedStickers.md @@ -0,0 +1,42 @@ +--- +title: "messages.getFavedStickers" +description: "Get faved stickers" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getFavedStickers.html +--- +# Method: messages.getFavedStickers +[Back to methods index](index.html) + + + +Get faved stickers + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.FavedStickers](/API_docs/types/messages.FavedStickers.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_FavedStickers = $MadelineProto->messages->getFavedStickers(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getFeaturedEmojiStickers.md b/docs/API_docs/methods/messages.getFeaturedEmojiStickers.md new file mode 100644 index 0000000000..d2cf6524c4 --- /dev/null +++ b/docs/API_docs/methods/messages.getFeaturedEmojiStickers.md @@ -0,0 +1,42 @@ +--- +title: "messages.getFeaturedEmojiStickers" +description: "Gets featured custom emoji stickersets." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getFeaturedEmojiStickers.html +--- +# Method: messages.getFeaturedEmojiStickers +[Back to methods index](index.html) + + + +Gets featured custom emoji stickersets. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.FeaturedStickers](/API_docs/types/messages.FeaturedStickers.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_FeaturedStickers = $MadelineProto->messages->getFeaturedEmojiStickers(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getFeaturedStickers.md b/docs/API_docs/methods/messages.getFeaturedStickers.md new file mode 100644 index 0000000000..7bfc995554 --- /dev/null +++ b/docs/API_docs/methods/messages.getFeaturedStickers.md @@ -0,0 +1,42 @@ +--- +title: "messages.getFeaturedStickers" +description: "Get featured stickers" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getFeaturedStickers.html +--- +# Method: messages.getFeaturedStickers +[Back to methods index](index.html) + + + +Get featured stickers + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.FeaturedStickers](/API_docs/types/messages.FeaturedStickers.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_FeaturedStickers = $MadelineProto->messages->getFeaturedStickers(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getFullChat.md b/docs/API_docs/methods/messages.getFullChat.md new file mode 100644 index 0000000000..0dd20dccff --- /dev/null +++ b/docs/API_docs/methods/messages.getFullChat.md @@ -0,0 +1,42 @@ +--- +title: "messages.getFullChat" +description: "You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getFullChat.html +--- +# Method: messages.getFullChat +[Back to methods index](index.html) + + + +You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|chat\_id|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | | Optional| + + +### Return type: [messages.ChatFull](/API_docs/types/messages.ChatFull.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_ChatFull = $MadelineProto->messages->getFullChat(chat_id: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/messages.getGameHighScores.md b/docs/API_docs/methods/messages.getGameHighScores.md new file mode 100644 index 0000000000..8f2e4e954b --- /dev/null +++ b/docs/API_docs/methods/messages.getGameHighScores.md @@ -0,0 +1,44 @@ +--- +title: "messages.getGameHighScores" +description: "Get highscores of a game" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getGameHighScores.html +--- +# Method: messages.getGameHighScores +[Back to methods index](index.html) + + + +Get highscores of a game + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Where was the game sent | Optional| +|id|[int](/API_docs/types/int.html) | ID of message with game media attachment | Optional| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Get high scores made by a certain user | Optional| + + +### Return type: [messages.HighScores](/API_docs/types/messages.HighScores.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_HighScores = $MadelineProto->messages->getGameHighScores(peer: $InputPeer, id: $int, user_id: $InputUser, ); +``` + diff --git a/docs/API_docs/methods/messages.getHistory.md b/docs/API_docs/methods/messages.getHistory.md new file mode 100644 index 0000000000..770b86c75b --- /dev/null +++ b/docs/API_docs/methods/messages.getHistory.md @@ -0,0 +1,58 @@ +--- +title: "messages.getHistory" +description: "Returns the conversation history with one interlocutor / within a chat" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getHistory.html +--- +# Method: messages.getHistory +[Back to methods index](index.html) + + + +# Warning: flood wait +**Warning: this method is prone to rate limiting with flood waits, **which can lead to !!! ACCOUNT BANS !!!**, please use the [updates event handler, instead (which is 100% safe) »](/docs/UPDATES.html#async-event-driven)** + +# Warning: non-realtime results +**Warning: this method is not suitable for receiving messages in real-time from chats and users, please use the [updates event handler, instead »](/docs/UPDATES.html#async-event-driven)** + +# Warning: this is probably NOT what you need +You probably need to use the [updates event handler, instead »](/docs/UPDATES.html#async-event-driven) :) + +Returns the conversation history with one interlocutor / within a chat + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Target peer | Optional| +|offset\_id|[int](/API_docs/types/int.html) | Only return messages starting from the specified message ID | Optional| +|offset\_date|[int](/API_docs/types/int.html) | Only return messages sent before the specified date | Optional| +|add\_offset|[int](/API_docs/types/int.html) | Number of list elements to be skipped, negative values are also accepted. | Optional| +|limit|[int](/API_docs/types/int.html) | Number of results to return | Optional| +|max\_id|[int](/API_docs/types/int.html) | If a positive value was transferred, the method will return only messages with IDs less than **max\_id** | Optional| +|min\_id|[int](/API_docs/types/int.html) | If a positive value was transferred, the method will return only messages with IDs more than **min\_id** | Optional| +|hash|Array of [long](/API_docs/types/long.html) | [Result hash](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [messages.Messages](/API_docs/types/messages.Messages.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Messages = $MadelineProto->messages->getHistory(peer: $InputPeer, offset_id: $int, offset_date: $int, add_offset: $int, limit: $int, max_id: $int, min_id: $int, hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getInlineBotResults.md b/docs/API_docs/methods/messages.getInlineBotResults.md new file mode 100644 index 0000000000..c3ad439047 --- /dev/null +++ b/docs/API_docs/methods/messages.getInlineBotResults.md @@ -0,0 +1,46 @@ +--- +title: "messages.getInlineBotResults" +description: "Query an inline bot" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getInlineBotResults.html +--- +# Method: messages.getInlineBotResults +[Back to methods index](index.html) + + + +Query an inline bot + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|bot|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | The bot to query | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The currently opened chat | Optional| +|geo\_point|[InputGeoPoint](/API_docs/types/InputGeoPoint.html) | The geolocation, if requested | Optional| +|query|[string](/API_docs/types/string.html) | The query | Optional| +|offset|[string](/API_docs/types/string.html) | The offset within the results, will be passed directly as-is to the bot. | Optional| + + +### Return type: [messages.BotResults](/API_docs/types/messages.BotResults.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_BotResults = $MadelineProto->messages->getInlineBotResults(bot: $InputUser, peer: $InputPeer, geo_point: $InputGeoPoint, query: 'string', offset: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.getInlineGameHighScores.md b/docs/API_docs/methods/messages.getInlineGameHighScores.md new file mode 100644 index 0000000000..1205112169 --- /dev/null +++ b/docs/API_docs/methods/messages.getInlineGameHighScores.md @@ -0,0 +1,43 @@ +--- +title: "messages.getInlineGameHighScores" +description: "Get highscores of a game sent using an inline bot" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getInlineGameHighScores.html +--- +# Method: messages.getInlineGameHighScores +[Back to methods index](index.html) + + + +Get highscores of a game sent using an inline bot + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|[InputBotInlineMessageID](/API_docs/types/InputBotInlineMessageID.html) | ID of inline message | Yes| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Get high scores of a certain user | Optional| + + +### Return type: [messages.HighScores](/API_docs/types/messages.HighScores.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_HighScores = $MadelineProto->messages->getInlineGameHighScores(id: $InputBotInlineMessageID, user_id: $InputUser, ); +``` + diff --git a/docs/API_docs/methods/messages.getMaskStickers.md b/docs/API_docs/methods/messages.getMaskStickers.md new file mode 100644 index 0000000000..e12eb44284 --- /dev/null +++ b/docs/API_docs/methods/messages.getMaskStickers.md @@ -0,0 +1,42 @@ +--- +title: "messages.getMaskStickers" +description: "Get installed mask stickers" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getMaskStickers.html +--- +# Method: messages.getMaskStickers +[Back to methods index](index.html) + + + +Get installed mask stickers + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.AllStickers](/API_docs/types/messages.AllStickers.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_AllStickers = $MadelineProto->messages->getMaskStickers(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getMessageEditData.md b/docs/API_docs/methods/messages.getMessageEditData.md new file mode 100644 index 0000000000..2aaa97b465 --- /dev/null +++ b/docs/API_docs/methods/messages.getMessageEditData.md @@ -0,0 +1,43 @@ +--- +title: "messages.getMessageEditData" +description: "Find out if a media message's caption can be edited" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getMessageEditData.html +--- +# Method: messages.getMessageEditData +[Back to methods index](index.html) + + + +Find out if a media message's caption can be edited + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer where the media was sent | Optional| +|id|[int](/API_docs/types/int.html) | ID of message | Optional| + + +### Return type: [messages.MessageEditData](/API_docs/types/messages.MessageEditData.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_MessageEditData = $MadelineProto->messages->getMessageEditData(peer: $InputPeer, id: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.getMessageReactionsList.md b/docs/API_docs/methods/messages.getMessageReactionsList.md new file mode 100644 index 0000000000..6283a0f19c --- /dev/null +++ b/docs/API_docs/methods/messages.getMessageReactionsList.md @@ -0,0 +1,46 @@ +--- +title: "messages.getMessageReactionsList" +description: "Get [message reaction](https://core.telegram.org/api/reactions) list, along with the sender of each reaction." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getMessageReactionsList.html +--- +# Method: messages.getMessageReactionsList +[Back to methods index](index.html) + + + +Get [message reaction](https://core.telegram.org/api/reactions) list, along with the sender of each reaction. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer | Optional| +|id|[int](/API_docs/types/int.html) | Message ID | Optional| +|reaction|[Reaction](/API_docs/types/Reaction.html) | Get only reactions of this type | Optional| +|offset|[string](/API_docs/types/string.html) | Offset for pagination (taken from the `next_offset` field of the returned [messages.MessageReactionsList](../types/messages.MessageReactionsList.html)); empty in the first request. | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [messages.MessageReactionsList](/API_docs/types/messages.MessageReactionsList.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_MessageReactionsList = $MadelineProto->messages->getMessageReactionsList(peer: $InputPeer, id: $int, reaction: $Reaction, offset: 'string', limit: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.getMessageReadParticipants.md b/docs/API_docs/methods/messages.getMessageReadParticipants.md new file mode 100644 index 0000000000..388c33c336 --- /dev/null +++ b/docs/API_docs/methods/messages.getMessageReadParticipants.md @@ -0,0 +1,43 @@ +--- +title: "messages.getMessageReadParticipants" +description: "Get which users read a specific message: only available for groups and supergroups with less than [`chat_read_mark_size_threshold` members](https://core.telegram.org/api/config#chat-read-mark-size-threshold), read receipts will be stored for [`chat_read_mark_expire_period` seconds after the message was sent](https://core.telegram.org/api/config#chat-read-mark-expire-period), see [client configuration for more info »](https://core.telegram.org/api/config#client-configuration)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getMessageReadParticipants.html +--- +# Method: messages.getMessageReadParticipants +[Back to methods index](index.html) + + + +Get which users read a specific message: only available for groups and supergroups with less than [`chat_read_mark_size_threshold` members](https://core.telegram.org/api/config#chat-read-mark-size-threshold), read receipts will be stored for [`chat_read_mark_expire_period` seconds after the message was sent](https://core.telegram.org/api/config#chat-read-mark-expire-period), see [client configuration for more info »](https://core.telegram.org/api/config#client-configuration). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Dialog | Optional| +|msg\_id|[int](/API_docs/types/int.html) | Message ID | Optional| + + +### Return type: [Vector\_of\_ReadParticipantDate](/API_docs/types/ReadParticipantDate.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_ReadParticipantDate = $MadelineProto->messages->getMessageReadParticipants(peer: $InputPeer, msg_id: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.getMessages.md b/docs/API_docs/methods/messages.getMessages.md new file mode 100644 index 0000000000..7334366cf5 --- /dev/null +++ b/docs/API_docs/methods/messages.getMessages.md @@ -0,0 +1,51 @@ +--- +title: "messages.getMessages" +description: "Returns the list of messages by their IDs." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getMessages.html +--- +# Method: messages.getMessages +[Back to methods index](index.html) + + + +# Warning: flood wait +**Warning: this method is prone to rate limiting with flood waits, **which can lead to !!! ACCOUNT BANS !!!**, please use the [updates event handler, instead (which is 100% safe) »](/docs/UPDATES.html#async-event-driven)** + +# Warning: non-realtime results +**Warning: this method is not suitable for receiving messages in real-time from chats and users, please use the [updates event handler, instead »](/docs/UPDATES.html#async-event-driven)** + +# Warning: this is probably NOT what you need +You probably need to use the [updates event handler, instead »](/docs/UPDATES.html#async-event-driven) :) + +Returns the list of messages by their IDs. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|Array of [Message ID or InputMessage](/API_docs/types/InputMessage.html) | Message ID list | Yes| + + +### Return type: [messages.Messages](/API_docs/types/messages.Messages.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Messages = $MadelineProto->messages->getMessages(id: [$InputMessage, $InputMessage], ); +``` + diff --git a/docs/API_docs/methods/messages.getMessagesReactions.md b/docs/API_docs/methods/messages.getMessagesReactions.md new file mode 100644 index 0000000000..15adfb21bf --- /dev/null +++ b/docs/API_docs/methods/messages.getMessagesReactions.md @@ -0,0 +1,43 @@ +--- +title: "messages.getMessagesReactions" +description: "Get [message reactions »](https://core.telegram.org/api/reactions)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getMessagesReactions.html +--- +# Method: messages.getMessagesReactions +[Back to methods index](index.html) + + + +Get [message reactions »](https://core.telegram.org/api/reactions) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer | Optional| +|id|Array of [int](/API_docs/types/int.html) | Message IDs | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->getMessagesReactions(peer: $InputPeer, id: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/messages.getMessagesViews.md b/docs/API_docs/methods/messages.getMessagesViews.md new file mode 100644 index 0000000000..5c95d70097 --- /dev/null +++ b/docs/API_docs/methods/messages.getMessagesViews.md @@ -0,0 +1,44 @@ +--- +title: "messages.getMessagesViews" +description: "Get and increase the view counter of a message sent or forwarded from a [channel](https://core.telegram.org/api/channel)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getMessagesViews.html +--- +# Method: messages.getMessagesViews +[Back to methods index](index.html) + + + +Get and increase the view counter of a message sent or forwarded from a [channel](https://core.telegram.org/api/channel) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer where the message was found | Optional| +|id|Array of [int](/API_docs/types/int.html) | ID of message | Yes| +|increment|[Bool](/API_docs/types/Bool.html) | Whether to mark the message as viewed and increment the view counter | Yes| + + +### Return type: [messages.MessageViews](/API_docs/types/messages.MessageViews.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_MessageViews = $MadelineProto->messages->getMessagesViews(peer: $InputPeer, id: [$int, $int], increment: $Bool, ); +``` + diff --git a/docs/API_docs/methods/messages.getMyStickers.md b/docs/API_docs/methods/messages.getMyStickers.md new file mode 100644 index 0000000000..f889fb050d --- /dev/null +++ b/docs/API_docs/methods/messages.getMyStickers.md @@ -0,0 +1,41 @@ +--- +title: "messages.getMyStickers" +description: "messages.getMyStickers parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getMyStickers.html +--- +# Method: messages.getMyStickers +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|offset\_id|[long](/API_docs/types/long.html) | Yes| +|limit|[int](/API_docs/types/int.html) | Optional| + + +### Return type: [messages.MyStickers](/API_docs/types/messages.MyStickers.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_MyStickers = $MadelineProto->messages->getMyStickers(offset_id: $long, limit: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.getOldFeaturedStickers.md b/docs/API_docs/methods/messages.getOldFeaturedStickers.md new file mode 100644 index 0000000000..ec7969f30a --- /dev/null +++ b/docs/API_docs/methods/messages.getOldFeaturedStickers.md @@ -0,0 +1,44 @@ +--- +title: "messages.getOldFeaturedStickers" +description: "Method for fetching previously featured stickers" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getOldFeaturedStickers.html +--- +# Method: messages.getOldFeaturedStickers +[Back to methods index](index.html) + + + +Method for fetching previously featured stickers + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|offset|[int](/API_docs/types/int.html) | Offset | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.FeaturedStickers](/API_docs/types/messages.FeaturedStickers.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_FeaturedStickers = $MadelineProto->messages->getOldFeaturedStickers(offset: $int, limit: $int, hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getOnlines.md b/docs/API_docs/methods/messages.getOnlines.md new file mode 100644 index 0000000000..20425ad12b --- /dev/null +++ b/docs/API_docs/methods/messages.getOnlines.md @@ -0,0 +1,42 @@ +--- +title: "messages.getOnlines" +description: "Get count of online users in a chat" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getOnlines.html +--- +# Method: messages.getOnlines +[Back to methods index](index.html) + + + +Get count of online users in a chat + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The chat | Optional| + + +### Return type: [ChatOnlines](/API_docs/types/ChatOnlines.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$ChatOnlines = $MadelineProto->messages->getOnlines(peer: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/messages.getOutboxReadDate.md b/docs/API_docs/methods/messages.getOutboxReadDate.md new file mode 100644 index 0000000000..f77f743f7b --- /dev/null +++ b/docs/API_docs/methods/messages.getOutboxReadDate.md @@ -0,0 +1,41 @@ +--- +title: "messages.getOutboxReadDate" +description: "messages.getOutboxReadDate parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getOutboxReadDate.html +--- +# Method: messages.getOutboxReadDate +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional| +|msg\_id|[int](/API_docs/types/int.html) | Optional| + + +### Return type: [OutboxReadDate](/API_docs/types/OutboxReadDate.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$OutboxReadDate = $MadelineProto->messages->getOutboxReadDate(peer: $InputPeer, msg_id: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.getPeerDialogs.md b/docs/API_docs/methods/messages.getPeerDialogs.md new file mode 100644 index 0000000000..4d08e9d219 --- /dev/null +++ b/docs/API_docs/methods/messages.getPeerDialogs.md @@ -0,0 +1,42 @@ +--- +title: "messages.getPeerDialogs" +description: "Get dialog info of specified peers" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getPeerDialogs.html +--- +# Method: messages.getPeerDialogs +[Back to methods index](index.html) + + + +Get dialog info of specified peers + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peers|Array of [InputDialogPeer](/API_docs/types/InputDialogPeer.html) | Peers | Yes| + + +### Return type: [messages.PeerDialogs](/API_docs/types/messages.PeerDialogs.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_PeerDialogs = $MadelineProto->messages->getPeerDialogs(peers: [$InputDialogPeer, $InputDialogPeer], ); +``` + diff --git a/docs/API_docs/methods/messages.getPeerSettings.md b/docs/API_docs/methods/messages.getPeerSettings.md new file mode 100644 index 0000000000..eb6337a12e --- /dev/null +++ b/docs/API_docs/methods/messages.getPeerSettings.md @@ -0,0 +1,42 @@ +--- +title: "messages.getPeerSettings" +description: "Get peer settings" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getPeerSettings.html +--- +# Method: messages.getPeerSettings +[Back to methods index](index.html) + + + +Get peer settings + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The peer | Optional| + + +### Return type: [messages.PeerSettings](/API_docs/types/messages.PeerSettings.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_PeerSettings = $MadelineProto->messages->getPeerSettings(peer: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/messages.getPinnedDialogs.md b/docs/API_docs/methods/messages.getPinnedDialogs.md new file mode 100644 index 0000000000..7fe104e3e3 --- /dev/null +++ b/docs/API_docs/methods/messages.getPinnedDialogs.md @@ -0,0 +1,42 @@ +--- +title: "messages.getPinnedDialogs" +description: "Get pinned dialogs" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getPinnedDialogs.html +--- +# Method: messages.getPinnedDialogs +[Back to methods index](index.html) + + + +Get pinned dialogs + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|folder\_id|[int](/API_docs/types/int.html) | [Peer folder ID, for more info click here](https://core.telegram.org/api/folders#peer-folders) | Optional| + + +### Return type: [messages.PeerDialogs](/API_docs/types/messages.PeerDialogs.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_PeerDialogs = $MadelineProto->messages->getPinnedDialogs(folder_id: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.getPinnedSavedDialogs.md b/docs/API_docs/methods/messages.getPinnedSavedDialogs.md new file mode 100644 index 0000000000..5efe677d91 --- /dev/null +++ b/docs/API_docs/methods/messages.getPinnedSavedDialogs.md @@ -0,0 +1,37 @@ +--- +title: "messages.getPinnedSavedDialogs" +description: "Get pinned [saved dialogs, see here »](https://core.telegram.org/api/saved-messages) for more info." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getPinnedSavedDialogs.html +--- +# Method: messages.getPinnedSavedDialogs +[Back to methods index](index.html) + + + +Get pinned [saved dialogs, see here »](https://core.telegram.org/api/saved-messages) for more info. + + + +### Return type: [messages.SavedDialogs](/API_docs/types/messages.SavedDialogs.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_SavedDialogs = $MadelineProto->messages->getPinnedSavedDialogs(); +``` + diff --git a/docs/API_docs/methods/messages.getPollResults.md b/docs/API_docs/methods/messages.getPollResults.md new file mode 100644 index 0000000000..ecaed37bcb --- /dev/null +++ b/docs/API_docs/methods/messages.getPollResults.md @@ -0,0 +1,43 @@ +--- +title: "messages.getPollResults" +description: "Get poll results" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getPollResults.html +--- +# Method: messages.getPollResults +[Back to methods index](index.html) + + + +Get poll results + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer where the poll was found | Optional| +|msg\_id|[int](/API_docs/types/int.html) | Message ID of poll message | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->getPollResults(peer: $InputPeer, msg_id: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.getPollVotes.md b/docs/API_docs/methods/messages.getPollVotes.md new file mode 100644 index 0000000000..ac40cbb62c --- /dev/null +++ b/docs/API_docs/methods/messages.getPollVotes.md @@ -0,0 +1,46 @@ +--- +title: "messages.getPollVotes" +description: "Get poll results for non-anonymous polls" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getPollVotes.html +--- +# Method: messages.getPollVotes +[Back to methods index](index.html) + + + +Get poll results for non-anonymous polls + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Chat where the poll was sent | Optional| +|id|[int](/API_docs/types/int.html) | Message ID | Optional| +|option|[bytes](/API_docs/types/bytes.html) | Get only results for the specified poll `option` | Optional| +|offset|[string](/API_docs/types/string.html) | Offset for results, taken from the `next_offset` field of [messages.votesList](../constructors/messages.votesList.html), initially an empty string.
Note: if no more results are available, the method call will return an empty `next_offset`; thus, avoid providing the `next_offset` returned in [messages.votesList](../constructors/messages.votesList.html) if it is empty, to avoid an infinite loop. | Optional| +|limit|[int](/API_docs/types/int.html) | Number of results to return | Optional| + + +### Return type: [messages.VotesList](/API_docs/types/messages.VotesList.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_VotesList = $MadelineProto->messages->getPollVotes(peer: $InputPeer, id: $int, option: 'bytes', offset: 'string', limit: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.getQuickReplies.md b/docs/API_docs/methods/messages.getQuickReplies.md new file mode 100644 index 0000000000..4452ac86ee --- /dev/null +++ b/docs/API_docs/methods/messages.getQuickReplies.md @@ -0,0 +1,40 @@ +--- +title: "messages.getQuickReplies" +description: "messages.getQuickReplies parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getQuickReplies.html +--- +# Method: messages.getQuickReplies +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | Optional| + + +### Return type: [messages.QuickReplies](/API_docs/types/messages.QuickReplies.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_QuickReplies = $MadelineProto->messages->getQuickReplies(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getQuickReplyMessages.md b/docs/API_docs/methods/messages.getQuickReplyMessages.md new file mode 100644 index 0000000000..0ff44da9a3 --- /dev/null +++ b/docs/API_docs/methods/messages.getQuickReplyMessages.md @@ -0,0 +1,42 @@ +--- +title: "messages.getQuickReplyMessages" +description: "messages.getQuickReplyMessages parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getQuickReplyMessages.html +--- +# Method: messages.getQuickReplyMessages +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|shortcut\_id|[int](/API_docs/types/int.html) | Optional| +|id|Array of [int](/API_docs/types/int.html) | Optional| +|hash|Array of [long](/API_docs/types/long.html) | Optional| + + +### Return type: [messages.Messages](/API_docs/types/messages.Messages.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Messages = $MadelineProto->messages->getQuickReplyMessages(shortcut_id: $int, id: [$int, $int], hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getRecentLocations.md b/docs/API_docs/methods/messages.getRecentLocations.md new file mode 100644 index 0000000000..d46869c756 --- /dev/null +++ b/docs/API_docs/methods/messages.getRecentLocations.md @@ -0,0 +1,44 @@ +--- +title: "messages.getRecentLocations" +description: "Get live location history of a certain user" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getRecentLocations.html +--- +# Method: messages.getRecentLocations +[Back to methods index](index.html) + + + +Get live location history of a certain user + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | User | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.Messages](/API_docs/types/messages.Messages.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Messages = $MadelineProto->messages->getRecentLocations(peer: $InputPeer, limit: $int, hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getRecentReactions.md b/docs/API_docs/methods/messages.getRecentReactions.md new file mode 100644 index 0000000000..d522a65977 --- /dev/null +++ b/docs/API_docs/methods/messages.getRecentReactions.md @@ -0,0 +1,43 @@ +--- +title: "messages.getRecentReactions" +description: "Get recently used [message reactions](https://core.telegram.org/api/reactions)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getRecentReactions.html +--- +# Method: messages.getRecentReactions +[Back to methods index](index.html) + + + +Get recently used [message reactions](https://core.telegram.org/api/reactions) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.Reactions](/API_docs/types/messages.Reactions.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Reactions = $MadelineProto->messages->getRecentReactions(limit: $int, hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getRecentStickers.md b/docs/API_docs/methods/messages.getRecentStickers.md new file mode 100644 index 0000000000..f87268c9b0 --- /dev/null +++ b/docs/API_docs/methods/messages.getRecentStickers.md @@ -0,0 +1,43 @@ +--- +title: "messages.getRecentStickers" +description: "Get recent stickers" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getRecentStickers.html +--- +# Method: messages.getRecentStickers +[Back to methods index](index.html) + + + +Get recent stickers + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|attached|[Bool](/API_docs/types/Bool.html) | Get stickers recently attached to photo or video files | Optional| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.RecentStickers](/API_docs/types/messages.RecentStickers.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_RecentStickers = $MadelineProto->messages->getRecentStickers(attached: $Bool, hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getReplies.md b/docs/API_docs/methods/messages.getReplies.md new file mode 100644 index 0000000000..db8ae03bd1 --- /dev/null +++ b/docs/API_docs/methods/messages.getReplies.md @@ -0,0 +1,50 @@ +--- +title: "messages.getReplies" +description: "Get messages in a reply thread" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getReplies.html +--- +# Method: messages.getReplies +[Back to methods index](index.html) + + + +Get messages in a reply thread + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer | Optional| +|msg\_id|[int](/API_docs/types/int.html) | Message ID | Optional| +|offset\_id|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| +|offset\_date|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| +|add\_offset|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| +|max\_id|[int](/API_docs/types/int.html) | If a positive value was transferred, the method will return only messages with ID smaller than max\_id | Optional| +|min\_id|[int](/API_docs/types/int.html) | If a positive value was transferred, the method will return only messages with ID bigger than min\_id | Optional| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.Messages](/API_docs/types/messages.Messages.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Messages = $MadelineProto->messages->getReplies(peer: $InputPeer, msg_id: $int, offset_id: $int, offset_date: $int, add_offset: $int, limit: $int, max_id: $int, min_id: $int, hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getSavedDialogs.md b/docs/API_docs/methods/messages.getSavedDialogs.md new file mode 100644 index 0000000000..2ac38424b0 --- /dev/null +++ b/docs/API_docs/methods/messages.getSavedDialogs.md @@ -0,0 +1,47 @@ +--- +title: "messages.getSavedDialogs" +description: "Returns the current saved dialog list, see [here »](https://core.telegram.org/api/saved-messages) for more info." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getSavedDialogs.html +--- +# Method: messages.getSavedDialogs +[Back to methods index](index.html) + + + +Returns the current saved dialog list, see [here »](https://core.telegram.org/api/saved-messages) for more info. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|exclude\_pinned|[Bool](/API_docs/types/Bool.html) | Exclude pinned dialogs | Optional| +|offset\_date|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| +|offset\_id|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) (`top_message` ID used for pagination) | Optional| +|offset\_peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | [Offset peer for pagination](https://core.telegram.org/api/offsets) | Optional| +|limit|[int](/API_docs/types/int.html) | Number of list elements to be returned | Optional| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.SavedDialogs](/API_docs/types/messages.SavedDialogs.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_SavedDialogs = $MadelineProto->messages->getSavedDialogs(exclude_pinned: $Bool, offset_date: $int, offset_id: $int, offset_peer: $InputPeer, limit: $int, hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getSavedGifs.md b/docs/API_docs/methods/messages.getSavedGifs.md new file mode 100644 index 0000000000..b9f30499eb --- /dev/null +++ b/docs/API_docs/methods/messages.getSavedGifs.md @@ -0,0 +1,42 @@ +--- +title: "messages.getSavedGifs" +description: "Get saved GIFs" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getSavedGifs.html +--- +# Method: messages.getSavedGifs +[Back to methods index](index.html) + + + +Get saved GIFs + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.SavedGifs](/API_docs/types/messages.SavedGifs.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_SavedGifs = $MadelineProto->messages->getSavedGifs(hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getSavedHistory.md b/docs/API_docs/methods/messages.getSavedHistory.md new file mode 100644 index 0000000000..94a84314d2 --- /dev/null +++ b/docs/API_docs/methods/messages.getSavedHistory.md @@ -0,0 +1,49 @@ +--- +title: "messages.getSavedHistory" +description: "Returns [saved messages »](https://core.telegram.org/api/saved-messages) forwarded from a specific peer" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getSavedHistory.html +--- +# Method: messages.getSavedHistory +[Back to methods index](index.html) + + + +Returns [saved messages »](https://core.telegram.org/api/saved-messages) forwarded from a specific peer + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Target peer | Optional| +|offset\_id|[int](/API_docs/types/int.html) | Only return messages starting from the specified message ID | Optional| +|offset\_date|[int](/API_docs/types/int.html) | Only return messages sent before the specified date | Optional| +|add\_offset|[int](/API_docs/types/int.html) | Number of list elements to be skipped, negative values are also accepted. | Optional| +|limit|[int](/API_docs/types/int.html) | Number of results to return | Optional| +|max\_id|[int](/API_docs/types/int.html) | If a positive value was transferred, the method will return only messages with IDs less than **max\_id** | Optional| +|min\_id|[int](/API_docs/types/int.html) | If a positive value was transferred, the method will return only messages with IDs more than **min\_id** | Optional| +|hash|Array of [long](/API_docs/types/long.html) | [Result hash](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [messages.Messages](/API_docs/types/messages.Messages.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Messages = $MadelineProto->messages->getSavedHistory(peer: $InputPeer, offset_id: $int, offset_date: $int, add_offset: $int, limit: $int, max_id: $int, min_id: $int, hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getSavedReactionTags.md b/docs/API_docs/methods/messages.getSavedReactionTags.md new file mode 100644 index 0000000000..b25314aa0f --- /dev/null +++ b/docs/API_docs/methods/messages.getSavedReactionTags.md @@ -0,0 +1,41 @@ +--- +title: "messages.getSavedReactionTags" +description: "messages.getSavedReactionTags parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getSavedReactionTags.html +--- +# Method: messages.getSavedReactionTags +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional| +|hash|Array of [long](/API_docs/types/long.html) | Optional| + + +### Return type: [messages.SavedReactionTags](/API_docs/types/messages.SavedReactionTags.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_SavedReactionTags = $MadelineProto->messages->getSavedReactionTags(peer: $InputPeer, hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getScheduledHistory.md b/docs/API_docs/methods/messages.getScheduledHistory.md new file mode 100644 index 0000000000..062d6cdaa3 --- /dev/null +++ b/docs/API_docs/methods/messages.getScheduledHistory.md @@ -0,0 +1,43 @@ +--- +title: "messages.getScheduledHistory" +description: "Get scheduled messages" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getScheduledHistory.html +--- +# Method: messages.getScheduledHistory +[Back to methods index](index.html) + + + +Get scheduled messages + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer | Optional| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.Messages](/API_docs/types/messages.Messages.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Messages = $MadelineProto->messages->getScheduledHistory(peer: $InputPeer, hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getScheduledMessages.md b/docs/API_docs/methods/messages.getScheduledMessages.md new file mode 100644 index 0000000000..c9375d6c58 --- /dev/null +++ b/docs/API_docs/methods/messages.getScheduledMessages.md @@ -0,0 +1,43 @@ +--- +title: "messages.getScheduledMessages" +description: "Get scheduled messages" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getScheduledMessages.html +--- +# Method: messages.getScheduledMessages +[Back to methods index](index.html) + + + +Get scheduled messages + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer | Optional| +|id|Array of [int](/API_docs/types/int.html) | IDs of scheduled messages | Yes| + + +### Return type: [messages.Messages](/API_docs/types/messages.Messages.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Messages = $MadelineProto->messages->getScheduledMessages(peer: $InputPeer, id: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/messages.getSearchCounters.md b/docs/API_docs/methods/messages.getSearchCounters.md new file mode 100644 index 0000000000..816ed1e0c1 --- /dev/null +++ b/docs/API_docs/methods/messages.getSearchCounters.md @@ -0,0 +1,45 @@ +--- +title: "messages.getSearchCounters" +description: "Get the number of results that would be found by a [messages.search](../methods/messages.search.html) call with the same parameters" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getSearchCounters.html +--- +# Method: messages.getSearchCounters +[Back to methods index](index.html) + + + +Get the number of results that would be found by a [messages.search](../methods/messages.search.html) call with the same parameters + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer where to search | Optional| +|saved\_peer\_id|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Search within the [saved message dialog »](https://core.telegram.org/api/saved-messages) with this ID. | Optional| +|top\_msg\_id|[int](/API_docs/types/int.html) | If set, consider only messages within the specified [forum topic](https://core.telegram.org/api/forum#forum-topics) | Optional| +|filters|Array of [MessagesFilter](/API_docs/types/MessagesFilter.html) | Search filters | Yes| + + +### Return type: [Vector\_of\_messages.SearchCounter](/API_docs/types/messages.SearchCounter.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_messages_SearchCounter = $MadelineProto->messages->getSearchCounters(peer: $InputPeer, saved_peer_id: $InputPeer, top_msg_id: $int, filters: [$MessagesFilter, $MessagesFilter], ); +``` + diff --git a/docs/API_docs/methods/messages.getSearchResultsCalendar.md b/docs/API_docs/methods/messages.getSearchResultsCalendar.md new file mode 100644 index 0000000000..a61ea5e2dd --- /dev/null +++ b/docs/API_docs/methods/messages.getSearchResultsCalendar.md @@ -0,0 +1,49 @@ +--- +title: "messages.getSearchResultsCalendar" +description: "Returns information about the next messages of the specified type in the chat split by days." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getSearchResultsCalendar.html +--- +# Method: messages.getSearchResultsCalendar +[Back to methods index](index.html) + + + +Returns information about the next messages of the specified type in the chat split by days. + +Returns the results in reverse chronological order. +Can return partial results for the last returned day. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer where to search | Optional| +|saved\_peer\_id|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Search within the [saved message dialog »](https://core.telegram.org/api/saved-messages) with this ID. | Optional| +|filter|[MessagesFilter](/API_docs/types/MessagesFilter.html) | Message filter, [inputMessagesFilterEmpty](../constructors/inputMessagesFilterEmpty.html), [inputMessagesFilterMyMentions](../constructors/inputMessagesFilterMyMentions.html) filters are not supported by this method. | Optional| +|offset\_id|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| +|offset\_date|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [messages.SearchResultsCalendar](/API_docs/types/messages.SearchResultsCalendar.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_SearchResultsCalendar = $MadelineProto->messages->getSearchResultsCalendar(peer: $InputPeer, saved_peer_id: $InputPeer, filter: $MessagesFilter, offset_id: $int, offset_date: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.getSearchResultsPositions.md b/docs/API_docs/methods/messages.getSearchResultsPositions.md new file mode 100644 index 0000000000..06bb9611a7 --- /dev/null +++ b/docs/API_docs/methods/messages.getSearchResultsPositions.md @@ -0,0 +1,48 @@ +--- +title: "messages.getSearchResultsPositions" +description: "Returns sparse positions of messages of the specified type in the chat to be used for shared media scroll implementation." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getSearchResultsPositions.html +--- +# Method: messages.getSearchResultsPositions +[Back to methods index](index.html) + + + +Returns sparse positions of messages of the specified type in the chat to be used for shared media scroll implementation. + +Returns the results in reverse chronological order (i.e., in order of decreasing message\_id). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer where to search | Optional| +|saved\_peer\_id|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Search within the [saved message dialog »](https://core.telegram.org/api/saved-messages) with this ID. | Optional| +|filter|[MessagesFilter](/API_docs/types/MessagesFilter.html) | Message filter, [inputMessagesFilterEmpty](../constructors/inputMessagesFilterEmpty.html), [inputMessagesFilterMyMentions](../constructors/inputMessagesFilterMyMentions.html) filters are not supported by this method. | Optional| +|offset\_id|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [messages.SearchResultsPositions](/API_docs/types/messages.SearchResultsPositions.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_SearchResultsPositions = $MadelineProto->messages->getSearchResultsPositions(peer: $InputPeer, saved_peer_id: $InputPeer, filter: $MessagesFilter, offset_id: $int, limit: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.getSplitRanges.md b/docs/API_docs/methods/messages.getSplitRanges.md new file mode 100644 index 0000000000..db3e08fb9e --- /dev/null +++ b/docs/API_docs/methods/messages.getSplitRanges.md @@ -0,0 +1,37 @@ +--- +title: "messages.getSplitRanges" +description: "Get message ranges for saving the user's chat history" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getSplitRanges.html +--- +# Method: messages.getSplitRanges +[Back to methods index](index.html) + + + +Get message ranges for saving the user's chat history + + + +### Return type: [Vector\_of\_MessageRange](/API_docs/types/MessageRange.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_MessageRange = $MadelineProto->messages->getSplitRanges(); +``` + diff --git a/docs/API_docs/methods/messages.getStickerSet.md b/docs/API_docs/methods/messages.getStickerSet.md new file mode 100644 index 0000000000..025860db6c --- /dev/null +++ b/docs/API_docs/methods/messages.getStickerSet.md @@ -0,0 +1,43 @@ +--- +title: "messages.getStickerSet" +description: "Get info about a stickerset" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getStickerSet.html +--- +# Method: messages.getStickerSet +[Back to methods index](index.html) + + + +Get info about a stickerset + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|stickerset|[InputStickerSet](/API_docs/types/InputStickerSet.html) | Stickerset | Optional| +|hash|Array of [long](/API_docs/types/long.html) | | Optional| + + +### Return type: [messages.StickerSet](/API_docs/types/messages.StickerSet.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_StickerSet = $MadelineProto->messages->getStickerSet(stickerset: $InputStickerSet, hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getStickers.md b/docs/API_docs/methods/messages.getStickers.md new file mode 100644 index 0000000000..ed2f17aeb9 --- /dev/null +++ b/docs/API_docs/methods/messages.getStickers.md @@ -0,0 +1,43 @@ +--- +title: "messages.getStickers" +description: "Get stickers by emoji" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getStickers.html +--- +# Method: messages.getStickers +[Back to methods index](index.html) + + + +Get stickers by emoji + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|emoticon|[string](/API_docs/types/string.html) | The emoji | Optional| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.Stickers](/API_docs/types/messages.Stickers.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Stickers = $MadelineProto->messages->getStickers(emoticon: 'string', hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getSuggestedDialogFilters.md b/docs/API_docs/methods/messages.getSuggestedDialogFilters.md new file mode 100644 index 0000000000..c1b6a380f5 --- /dev/null +++ b/docs/API_docs/methods/messages.getSuggestedDialogFilters.md @@ -0,0 +1,37 @@ +--- +title: "messages.getSuggestedDialogFilters" +description: "Get [suggested folders](https://core.telegram.org/api/folders)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getSuggestedDialogFilters.html +--- +# Method: messages.getSuggestedDialogFilters +[Back to methods index](index.html) + + + +Get [suggested folders](https://core.telegram.org/api/folders) + + + +### Return type: [Vector\_of\_DialogFilterSuggested](/API_docs/types/DialogFilterSuggested.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_DialogFilterSuggested = $MadelineProto->messages->getSuggestedDialogFilters(); +``` + diff --git a/docs/API_docs/methods/messages.getTopReactions.md b/docs/API_docs/methods/messages.getTopReactions.md new file mode 100644 index 0000000000..c0af37f645 --- /dev/null +++ b/docs/API_docs/methods/messages.getTopReactions.md @@ -0,0 +1,43 @@ +--- +title: "messages.getTopReactions" +description: "Got popular [message reactions](https://core.telegram.org/api/reactions)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getTopReactions.html +--- +# Method: messages.getTopReactions +[Back to methods index](index.html) + + + +Got popular [message reactions](https://core.telegram.org/api/reactions) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.Reactions](/API_docs/types/messages.Reactions.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Reactions = $MadelineProto->messages->getTopReactions(limit: $int, hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getUnreadMentions.md b/docs/API_docs/methods/messages.getUnreadMentions.md new file mode 100644 index 0000000000..36580ecb70 --- /dev/null +++ b/docs/API_docs/methods/messages.getUnreadMentions.md @@ -0,0 +1,48 @@ +--- +title: "messages.getUnreadMentions" +description: "Get unread messages where we were mentioned" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getUnreadMentions.html +--- +# Method: messages.getUnreadMentions +[Back to methods index](index.html) + + + +Get unread messages where we were mentioned + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer where to look for mentions | Optional| +|top\_msg\_id|[int](/API_docs/types/int.html) | If set, considers only messages within the specified [forum topic](https://core.telegram.org/api/forum#forum-topics) | Optional| +|offset\_id|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| +|add\_offset|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| +|max\_id|[int](/API_docs/types/int.html) | Maximum message ID to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| +|min\_id|[int](/API_docs/types/int.html) | Minimum message ID to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [messages.Messages](/API_docs/types/messages.Messages.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Messages = $MadelineProto->messages->getUnreadMentions(peer: $InputPeer, top_msg_id: $int, offset_id: $int, add_offset: $int, limit: $int, max_id: $int, min_id: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.getUnreadReactions.md b/docs/API_docs/methods/messages.getUnreadReactions.md new file mode 100644 index 0000000000..c7232aab13 --- /dev/null +++ b/docs/API_docs/methods/messages.getUnreadReactions.md @@ -0,0 +1,48 @@ +--- +title: "messages.getUnreadReactions" +description: "Get unread reactions to messages you sent" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getUnreadReactions.html +--- +# Method: messages.getUnreadReactions +[Back to methods index](index.html) + + + +Get unread reactions to messages you sent + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer | Optional| +|top\_msg\_id|[int](/API_docs/types/int.html) | If set, considers only reactions to messages within the specified [forum topic](https://core.telegram.org/api/forum#forum-topics) | Optional| +|offset\_id|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| +|add\_offset|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| +|max\_id|[int](/API_docs/types/int.html) | Only return reactions for messages up until this message ID | Optional| +|min\_id|[int](/API_docs/types/int.html) | Only return reactions for messages starting from this message ID | Optional| + + +### Return type: [messages.Messages](/API_docs/types/messages.Messages.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Messages = $MadelineProto->messages->getUnreadReactions(peer: $InputPeer, top_msg_id: $int, offset_id: $int, add_offset: $int, limit: $int, max_id: $int, min_id: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.getWebPage.md b/docs/API_docs/methods/messages.getWebPage.md new file mode 100644 index 0000000000..b7c114e365 --- /dev/null +++ b/docs/API_docs/methods/messages.getWebPage.md @@ -0,0 +1,43 @@ +--- +title: "messages.getWebPage" +description: "Get [instant view](https://instantview.telegram.org) page" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getWebPage.html +--- +# Method: messages.getWebPage +[Back to methods index](index.html) + + + +Get [instant view](https://instantview.telegram.org) page + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|url|[string](/API_docs/types/string.html) | URL of IV page to fetch | Optional| +|hash|Array of [long](/API_docs/types/long.html) | | Optional| + + +### Return type: [messages.WebPage](/API_docs/types/messages.WebPage.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_WebPage = $MadelineProto->messages->getWebPage(url: 'string', hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.getWebPagePreview.md b/docs/API_docs/methods/messages.getWebPagePreview.md new file mode 100644 index 0000000000..1c7c965ee5 --- /dev/null +++ b/docs/API_docs/methods/messages.getWebPagePreview.md @@ -0,0 +1,110 @@ +--- +title: "messages.getWebPagePreview" +description: "Get preview of webpage" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_getWebPagePreview.html +--- +# Method: messages.getWebPagePreview +[Back to methods index](index.html) + + + +Get preview of webpage + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|message|[string](/API_docs/types/string.html) | Message from which to extract the preview | Optional| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | [Message entities for styled text](https://core.telegram.org/api/entities) | Optional| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | + + +### Return type: [MessageMedia](/API_docs/types/MessageMedia.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$MessageMedia = $MadelineProto->messages->getWebPagePreview(message: 'string', entities: [$MessageEntity, $MessageEntity], parse_mode: 'string', ); +``` + + +## Return value + +If the length of the provided message is bigger than 4096, the message will be split in chunks and the method will be called multiple times, with the same parameters (except for the message), and an array of [MessageMedia](../types/MessageMedia.html) will be returned instead. + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + diff --git a/docs/API_docs/methods/messages.hideAllChatJoinRequests.md b/docs/API_docs/methods/messages.hideAllChatJoinRequests.md new file mode 100644 index 0000000000..94e3f0ccda --- /dev/null +++ b/docs/API_docs/methods/messages.hideAllChatJoinRequests.md @@ -0,0 +1,44 @@ +--- +title: "messages.hideAllChatJoinRequests" +description: "Dismiss or approve all [join requests](https://core.telegram.org/api/invites#join-requests) related to a specific chat or channel." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_hideAllChatJoinRequests.html +--- +# Method: messages.hideAllChatJoinRequests +[Back to methods index](index.html) + + + +Dismiss or approve all [join requests](https://core.telegram.org/api/invites#join-requests) related to a specific chat or channel. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|approved|[Bool](/API_docs/types/Bool.html) | Whether to dismiss or approve all chat [join requests »](https://core.telegram.org/api/invites#join-requests) | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The chat or channel | Optional| +|link|[string](/API_docs/types/string.html) | Only dismiss or approve [join requests »](https://core.telegram.org/api/invites#join-requests) initiated using this invite link | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->hideAllChatJoinRequests(approved: $Bool, peer: $InputPeer, link: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.hideChatJoinRequest.md b/docs/API_docs/methods/messages.hideChatJoinRequest.md new file mode 100644 index 0000000000..d11e57e53f --- /dev/null +++ b/docs/API_docs/methods/messages.hideChatJoinRequest.md @@ -0,0 +1,44 @@ +--- +title: "messages.hideChatJoinRequest" +description: "Dismiss or approve a chat [join request](https://core.telegram.org/api/invites#join-requests) related to a specific chat or channel." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_hideChatJoinRequest.html +--- +# Method: messages.hideChatJoinRequest +[Back to methods index](index.html) + + + +Dismiss or approve a chat [join request](https://core.telegram.org/api/invites#join-requests) related to a specific chat or channel. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|approved|[Bool](/API_docs/types/Bool.html) | Whether to dismiss or approve the chat [join request »](https://core.telegram.org/api/invites#join-requests) | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The chat or channel | Optional| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | The user whose [join request »](https://core.telegram.org/api/invites#join-requests) should be dismissed or approved | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->hideChatJoinRequest(approved: $Bool, peer: $InputPeer, user_id: $InputUser, ); +``` + diff --git a/docs/API_docs/methods/messages.hidePeerSettingsBar.md b/docs/API_docs/methods/messages.hidePeerSettingsBar.md new file mode 100644 index 0000000000..88742b6d02 --- /dev/null +++ b/docs/API_docs/methods/messages.hidePeerSettingsBar.md @@ -0,0 +1,42 @@ +--- +title: "messages.hidePeerSettingsBar" +description: "Should be called after the user hides the [report spam/add as contact bar](https://core.telegram.org/api/action-bar) of a new chat, effectively prevents the user from executing the actions specified in the [action bar »](https://core.telegram.org/api/action-bar)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_hidePeerSettingsBar.html +--- +# Method: messages.hidePeerSettingsBar +[Back to methods index](index.html) + + + +Should be called after the user hides the [report spam/add as contact bar](https://core.telegram.org/api/action-bar) of a new chat, effectively prevents the user from executing the actions specified in the [action bar »](https://core.telegram.org/api/action-bar). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->hidePeerSettingsBar(peer: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/messages.importChatInvite.md b/docs/API_docs/methods/messages.importChatInvite.md new file mode 100644 index 0000000000..ad0b5fe5ab --- /dev/null +++ b/docs/API_docs/methods/messages.importChatInvite.md @@ -0,0 +1,42 @@ +--- +title: "messages.importChatInvite" +description: "Import a chat invite and join a private chat/supergroup/channel" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_importChatInvite.html +--- +# Method: messages.importChatInvite +[Back to methods index](index.html) + + + +Import a chat invite and join a private chat/supergroup/channel + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hash|[string](/API_docs/types/string.html) | `hash` from a [chat invite deep link](https://core.telegram.org/api/links#chat-invite-links) | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->importChatInvite(hash: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.initHistoryImport.md b/docs/API_docs/methods/messages.initHistoryImport.md new file mode 100644 index 0000000000..558fb42473 --- /dev/null +++ b/docs/API_docs/methods/messages.initHistoryImport.md @@ -0,0 +1,44 @@ +--- +title: "messages.initHistoryImport" +description: "Import chat history from a foreign chat app into a specific Telegram chat, [click here for more info about imported chats »](https://core.telegram.org/api/import)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_initHistoryImport.html +--- +# Method: messages.initHistoryImport +[Back to methods index](index.html) + + + +Import chat history from a foreign chat app into a specific Telegram chat, [click here for more info about imported chats »](https://core.telegram.org/api/import). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The Telegram chat where the [history should be imported](https://core.telegram.org/api/import). | Optional| +|file|[File path or InputFile](/API_docs/types/InputFile.html) | File with messages to import. | Yes| +|media\_count|[int](/API_docs/types/int.html) | Number of media files associated with the chat that will be uploaded using [messages.uploadImportedMedia](../methods/messages.uploadImportedMedia.html). | Optional| + + +### Return type: [messages.HistoryImport](/API_docs/types/messages.HistoryImport.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_HistoryImport = $MadelineProto->messages->initHistoryImport(peer: $InputPeer, file: $InputFile, media_count: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.installStickerSet.md b/docs/API_docs/methods/messages.installStickerSet.md new file mode 100644 index 0000000000..38e6f2d7e3 --- /dev/null +++ b/docs/API_docs/methods/messages.installStickerSet.md @@ -0,0 +1,43 @@ +--- +title: "messages.installStickerSet" +description: "Install a stickerset" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_installStickerSet.html +--- +# Method: messages.installStickerSet +[Back to methods index](index.html) + + + +Install a stickerset + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|stickerset|[InputStickerSet](/API_docs/types/InputStickerSet.html) | Stickerset to install | Optional| +|archived|[Bool](/API_docs/types/Bool.html) | Whether to archive stickerset | Yes| + + +### Return type: [messages.StickerSetInstallResult](/API_docs/types/messages.StickerSetInstallResult.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_StickerSetInstallResult = $MadelineProto->messages->installStickerSet(stickerset: $InputStickerSet, archived: $Bool, ); +``` + diff --git a/docs/API_docs/methods/messages.markDialogUnread.md b/docs/API_docs/methods/messages.markDialogUnread.md new file mode 100644 index 0000000000..451d056848 --- /dev/null +++ b/docs/API_docs/methods/messages.markDialogUnread.md @@ -0,0 +1,43 @@ +--- +title: "messages.markDialogUnread" +description: "Manually mark dialog as unread" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_markDialogUnread.html +--- +# Method: messages.markDialogUnread +[Back to methods index](index.html) + + + +Manually mark dialog as unread + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|unread|[Bool](/API_docs/types/Bool.html) | Mark as unread/read | Optional| +|peer|[InputDialogPeer](/API_docs/types/InputDialogPeer.html) | Dialog | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->markDialogUnread(unread: $Bool, peer: $InputDialogPeer, ); +``` + diff --git a/docs/API_docs/methods/messages.migrateChat.md b/docs/API_docs/methods/messages.migrateChat.md new file mode 100644 index 0000000000..fb6aac437d --- /dev/null +++ b/docs/API_docs/methods/messages.migrateChat.md @@ -0,0 +1,42 @@ +--- +title: "messages.migrateChat" +description: "Turn a [basic group into a supergroup](https://core.telegram.org/api/channel#migration)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_migrateChat.html +--- +# Method: messages.migrateChat +[Back to methods index](index.html) + + + +Turn a [basic group into a supergroup](https://core.telegram.org/api/channel#migration) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|chat\_id|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->migrateChat(chat_id: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/messages.prolongWebView.md b/docs/API_docs/methods/messages.prolongWebView.md new file mode 100644 index 0000000000..3f01fb7b86 --- /dev/null +++ b/docs/API_docs/methods/messages.prolongWebView.md @@ -0,0 +1,49 @@ +--- +title: "messages.prolongWebView" +description: "Indicate to the server (from the user side) that the user is still using a web app." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_prolongWebView.html +--- +# Method: messages.prolongWebView +[Back to methods index](index.html) + + + +Indicate to the server (from the user side) that the user is still using a web app. + +If the method returns a `QUERY_ID_INVALID` error, the webview must be closed. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|silent|[Bool](/API_docs/types/Bool.html) | Whether the inline message that will be sent by the bot on behalf of the user once the web app interaction is [terminated](../methods/messages.sendWebViewResultMessage.html) should be sent silently (no notifications for the receivers). | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Dialog where the web app was opened. | Optional| +|bot|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Bot that owns the [web app](https://core.telegram.org/api/bots/webapps) | Optional| +|query\_id|[long](/API_docs/types/long.html) | Web app interaction ID obtained from [messages.requestWebView](../methods/messages.requestWebView.html) | Yes| +|reply\_to|[InputReplyTo](/API_docs/types/InputReplyTo.html) | If set, indicates that the inline message that will be sent by the bot on behalf of the user once the web app interaction is [terminated](../methods/messages.sendWebViewResultMessage.html) should be sent in reply to the specified message or story. | Optional| +|send\_as|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Open the web app as the specified peer | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->prolongWebView(silent: $Bool, peer: $InputPeer, bot: $InputUser, query_id: $long, reply_to: $InputReplyTo, send_as: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/messages.rateTranscribedAudio.md b/docs/API_docs/methods/messages.rateTranscribedAudio.md new file mode 100644 index 0000000000..8195526e63 --- /dev/null +++ b/docs/API_docs/methods/messages.rateTranscribedAudio.md @@ -0,0 +1,45 @@ +--- +title: "messages.rateTranscribedAudio" +description: "Rate [transcribed voice message](https://core.telegram.org/api/transcribe)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_rateTranscribedAudio.html +--- +# Method: messages.rateTranscribedAudio +[Back to methods index](index.html) + + + +Rate [transcribed voice message](https://core.telegram.org/api/transcribe) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer where the voice message was sent | Optional| +|msg\_id|[int](/API_docs/types/int.html) | Message ID | Optional| +|transcription\_id|[long](/API_docs/types/long.html) | Transcription ID | Yes| +|good|[Bool](/API_docs/types/Bool.html) | Whether the transcription was correct | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->rateTranscribedAudio(peer: $InputPeer, msg_id: $int, transcription_id: $long, good: $Bool, ); +``` + diff --git a/docs/API_docs/methods/messages.readDiscussion.md b/docs/API_docs/methods/messages.readDiscussion.md new file mode 100644 index 0000000000..dd6c11ec09 --- /dev/null +++ b/docs/API_docs/methods/messages.readDiscussion.md @@ -0,0 +1,44 @@ +--- +title: "messages.readDiscussion" +description: "Mark a [thread](https://core.telegram.org/api/threads) as read" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_readDiscussion.html +--- +# Method: messages.readDiscussion +[Back to methods index](index.html) + + + +Mark a [thread](https://core.telegram.org/api/threads) as read + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Group ID | Optional| +|msg\_id|[int](/API_docs/types/int.html) | ID of message that started the thread | Optional| +|read\_max\_id|[int](/API_docs/types/int.html) | ID up to which thread messages were read | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->readDiscussion(peer: $InputPeer, msg_id: $int, read_max_id: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.readEncryptedHistory.md b/docs/API_docs/methods/messages.readEncryptedHistory.md new file mode 100644 index 0000000000..e2e908b47a --- /dev/null +++ b/docs/API_docs/methods/messages.readEncryptedHistory.md @@ -0,0 +1,43 @@ +--- +title: "messages.readEncryptedHistory" +description: "Marks message history within a secret chat as read." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_readEncryptedHistory.html +--- +# Method: messages.readEncryptedHistory +[Back to methods index](index.html) + + + +Marks message history within a secret chat as read. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Secret chat ID, Update, EncryptedMessage or InputEncryptedChat](/API_docs/types/InputEncryptedChat.html) | Secret chat ID | Yes| +|max\_date|[int](/API_docs/types/int.html) | Maximum date value for received messages in history | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->readEncryptedHistory(peer: $InputEncryptedChat, max_date: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.readFeaturedStickers.md b/docs/API_docs/methods/messages.readFeaturedStickers.md new file mode 100644 index 0000000000..a5abf39dd1 --- /dev/null +++ b/docs/API_docs/methods/messages.readFeaturedStickers.md @@ -0,0 +1,42 @@ +--- +title: "messages.readFeaturedStickers" +description: "Mark new featured stickers as read" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_readFeaturedStickers.html +--- +# Method: messages.readFeaturedStickers +[Back to methods index](index.html) + + + +Mark new featured stickers as read + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|Array of [long](/API_docs/types/long.html) | IDs of stickersets to mark as read | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->readFeaturedStickers(id: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.readHistory.md b/docs/API_docs/methods/messages.readHistory.md new file mode 100644 index 0000000000..b384153c2c --- /dev/null +++ b/docs/API_docs/methods/messages.readHistory.md @@ -0,0 +1,43 @@ +--- +title: "messages.readHistory" +description: "Marks message history as read." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_readHistory.html +--- +# Method: messages.readHistory +[Back to methods index](index.html) + + + +Marks message history as read. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Target user or group | Optional| +|max\_id|[int](/API_docs/types/int.html) | If a positive value is passed, only messages with identifiers less or equal than the given one will be read | Optional| + + +### Return type: [messages.AffectedMessages](/API_docs/types/messages.AffectedMessages.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_AffectedMessages = $MadelineProto->messages->readHistory(peer: $InputPeer, max_id: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.readMentions.md b/docs/API_docs/methods/messages.readMentions.md new file mode 100644 index 0000000000..2a1f261afd --- /dev/null +++ b/docs/API_docs/methods/messages.readMentions.md @@ -0,0 +1,43 @@ +--- +title: "messages.readMentions" +description: "Mark mentions as read" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_readMentions.html +--- +# Method: messages.readMentions +[Back to methods index](index.html) + + + +Mark mentions as read + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Dialog | Optional| +|top\_msg\_id|[int](/API_docs/types/int.html) | Mark as read only mentions within the specified [forum topic](https://core.telegram.org/api/forum#forum-topics) | Optional| + + +### Return type: [messages.AffectedHistory](/API_docs/types/messages.AffectedHistory.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_AffectedHistory = $MadelineProto->messages->readMentions(peer: $InputPeer, top_msg_id: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.readMessageContents.md b/docs/API_docs/methods/messages.readMessageContents.md new file mode 100644 index 0000000000..f24c457cf3 --- /dev/null +++ b/docs/API_docs/methods/messages.readMessageContents.md @@ -0,0 +1,42 @@ +--- +title: "messages.readMessageContents" +description: "Notifies the sender about the recipient having listened a voice message or watched a video." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_readMessageContents.html +--- +# Method: messages.readMessageContents +[Back to methods index](index.html) + + + +Notifies the sender about the recipient having listened a voice message or watched a video. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|Array of [int](/API_docs/types/int.html) | Message ID list | Yes| + + +### Return type: [messages.AffectedMessages](/API_docs/types/messages.AffectedMessages.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_AffectedMessages = $MadelineProto->messages->readMessageContents(id: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/messages.readReactions.md b/docs/API_docs/methods/messages.readReactions.md new file mode 100644 index 0000000000..66ebe44c3f --- /dev/null +++ b/docs/API_docs/methods/messages.readReactions.md @@ -0,0 +1,43 @@ +--- +title: "messages.readReactions" +description: "Mark [message reactions »](https://core.telegram.org/api/reactions) as read" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_readReactions.html +--- +# Method: messages.readReactions +[Back to methods index](index.html) + + + +Mark [message reactions »](https://core.telegram.org/api/reactions) as read + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer | Optional| +|top\_msg\_id|[int](/API_docs/types/int.html) | Mark as read only reactions to messages within the specified [forum topic](https://core.telegram.org/api/forum#forum-topics) | Optional| + + +### Return type: [messages.AffectedHistory](/API_docs/types/messages.AffectedHistory.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_AffectedHistory = $MadelineProto->messages->readReactions(peer: $InputPeer, top_msg_id: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.receivedMessages.md b/docs/API_docs/methods/messages.receivedMessages.md new file mode 100644 index 0000000000..f7679079df --- /dev/null +++ b/docs/API_docs/methods/messages.receivedMessages.md @@ -0,0 +1,42 @@ +--- +title: "messages.receivedMessages" +description: "Confirms receipt of messages by a client, cancels PUSH-notification sending." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_receivedMessages.html +--- +# Method: messages.receivedMessages +[Back to methods index](index.html) + + + +Confirms receipt of messages by a client, cancels PUSH-notification sending. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|max\_id|[int](/API_docs/types/int.html) | Maximum message ID available in a client. | Optional| + + +### Return type: [Vector\_of\_ReceivedNotifyMessage](/API_docs/types/ReceivedNotifyMessage.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_ReceivedNotifyMessage = $MadelineProto->messages->receivedMessages(max_id: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.receivedQueue.md b/docs/API_docs/methods/messages.receivedQueue.md new file mode 100644 index 0000000000..17803a4707 --- /dev/null +++ b/docs/API_docs/methods/messages.receivedQueue.md @@ -0,0 +1,42 @@ +--- +title: "messages.receivedQueue" +description: "You cannot use this method directly" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_receivedQueue.html +--- +# Method: messages.receivedQueue +[Back to methods index](index.html) + + + +You cannot use this method directly + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|max\_qts|[int](/API_docs/types/int.html) | Maximum qts value available at the client | Optional| + + +### Return type: [Vector\_of\_long](/API_docs/types/long.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_long = $MadelineProto->messages->receivedQueue(max_qts: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.reorderPinnedDialogs.md b/docs/API_docs/methods/messages.reorderPinnedDialogs.md new file mode 100644 index 0000000000..a453d4e3ee --- /dev/null +++ b/docs/API_docs/methods/messages.reorderPinnedDialogs.md @@ -0,0 +1,44 @@ +--- +title: "messages.reorderPinnedDialogs" +description: "Reorder pinned dialogs" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_reorderPinnedDialogs.html +--- +# Method: messages.reorderPinnedDialogs +[Back to methods index](index.html) + + + +Reorder pinned dialogs + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|force|[Bool](/API_docs/types/Bool.html) | If set, dialogs pinned server-side but not present in the `order` field will be unpinned. | Optional| +|folder\_id|[int](/API_docs/types/int.html) | [Peer folder ID, for more info click here](https://core.telegram.org/api/folders#peer-folders) | Optional| +|order|Array of [InputDialogPeer](/API_docs/types/InputDialogPeer.html) | New dialog order | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->reorderPinnedDialogs(force: $Bool, folder_id: $int, order: [$InputDialogPeer, $InputDialogPeer], ); +``` + diff --git a/docs/API_docs/methods/messages.reorderPinnedSavedDialogs.md b/docs/API_docs/methods/messages.reorderPinnedSavedDialogs.md new file mode 100644 index 0000000000..0e62976e88 --- /dev/null +++ b/docs/API_docs/methods/messages.reorderPinnedSavedDialogs.md @@ -0,0 +1,43 @@ +--- +title: "messages.reorderPinnedSavedDialogs" +description: "Reorder pinned [saved message dialogs »](https://core.telegram.org/api/saved-messages)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_reorderPinnedSavedDialogs.html +--- +# Method: messages.reorderPinnedSavedDialogs +[Back to methods index](index.html) + + + +Reorder pinned [saved message dialogs »](https://core.telegram.org/api/saved-messages). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|force|[Bool](/API_docs/types/Bool.html) | If set, dialogs pinned server-side but not present in the `order` field will be unpinned. | Optional| +|order|Array of [InputDialogPeer](/API_docs/types/InputDialogPeer.html) | New dialog order | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->reorderPinnedSavedDialogs(force: $Bool, order: [$InputDialogPeer, $InputDialogPeer], ); +``` + diff --git a/docs/API_docs/methods/messages.reorderQuickReplies.md b/docs/API_docs/methods/messages.reorderQuickReplies.md new file mode 100644 index 0000000000..c8e242b0fd --- /dev/null +++ b/docs/API_docs/methods/messages.reorderQuickReplies.md @@ -0,0 +1,40 @@ +--- +title: "messages.reorderQuickReplies" +description: "messages.reorderQuickReplies parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_reorderQuickReplies.html +--- +# Method: messages.reorderQuickReplies +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|order|Array of [int](/API_docs/types/int.html) | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->reorderQuickReplies(order: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/messages.reorderStickerSets.md b/docs/API_docs/methods/messages.reorderStickerSets.md new file mode 100644 index 0000000000..def0146076 --- /dev/null +++ b/docs/API_docs/methods/messages.reorderStickerSets.md @@ -0,0 +1,44 @@ +--- +title: "messages.reorderStickerSets" +description: "Reorder installed stickersets" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_reorderStickerSets.html +--- +# Method: messages.reorderStickerSets +[Back to methods index](index.html) + + + +Reorder installed stickersets + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|masks|[Bool](/API_docs/types/Bool.html) | Reorder mask stickersets | Optional| +|emojis|[Bool](/API_docs/types/Bool.html) | Reorder [custom emoji stickersets](https://core.telegram.org/api/custom-emoji) | Optional| +|order|Array of [long](/API_docs/types/long.html) | New stickerset order by stickerset IDs | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->reorderStickerSets(masks: $Bool, emojis: $Bool, order: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.report.md b/docs/API_docs/methods/messages.report.md new file mode 100644 index 0000000000..f574f00ce0 --- /dev/null +++ b/docs/API_docs/methods/messages.report.md @@ -0,0 +1,51 @@ +--- +title: "messages.report" +description: "Report a message in a chat for violation of telegram's Terms of Service" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_report.html +--- +# Method: messages.report +[Back to methods index](index.html) + + + +Report a message in a chat for violation of telegram's Terms of Service + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer | Optional| +|id|Array of [int](/API_docs/types/int.html) | IDs of messages to report | Yes| +|reason|[ReportReason](/API_docs/types/ReportReason.html) | Why are these messages being reported | Yes| +|message|[string](/API_docs/types/string.html) | Comment for report moderation | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->report(peer: $InputPeer, id: [$int, $int], reason: $ReportReason, message: 'string', ); +``` + + +## Return value + +If the length of the provided message is bigger than 4096, the message will be split in chunks and the method will be called multiple times, with the same parameters (except for the message), and an array of [Bool](../types/Bool.html) will be returned instead. + + diff --git a/docs/API_docs/methods/messages.reportEncryptedSpam.md b/docs/API_docs/methods/messages.reportEncryptedSpam.md new file mode 100644 index 0000000000..9578f31235 --- /dev/null +++ b/docs/API_docs/methods/messages.reportEncryptedSpam.md @@ -0,0 +1,42 @@ +--- +title: "messages.reportEncryptedSpam" +description: "Report a secret chat for spam" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_reportEncryptedSpam.html +--- +# Method: messages.reportEncryptedSpam +[Back to methods index](index.html) + + + +Report a secret chat for spam + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Secret chat ID, Update, EncryptedMessage or InputEncryptedChat](/API_docs/types/InputEncryptedChat.html) | The secret chat to report | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->reportEncryptedSpam(peer: $InputEncryptedChat, ); +``` + diff --git a/docs/API_docs/methods/messages.reportReaction.md b/docs/API_docs/methods/messages.reportReaction.md new file mode 100644 index 0000000000..52870d2034 --- /dev/null +++ b/docs/API_docs/methods/messages.reportReaction.md @@ -0,0 +1,44 @@ +--- +title: "messages.reportReaction" +description: "Report a [message reaction](https://core.telegram.org/api/reactions)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_reportReaction.html +--- +# Method: messages.reportReaction +[Back to methods index](index.html) + + + +Report a [message reaction](https://core.telegram.org/api/reactions) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer where the message was sent | Optional| +|id|[int](/API_docs/types/int.html) | Message ID | Optional| +|reaction\_peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer that sent the reaction | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->reportReaction(peer: $InputPeer, id: $int, reaction_peer: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/messages.reportSpam.md b/docs/API_docs/methods/messages.reportSpam.md new file mode 100644 index 0000000000..b9436c8192 --- /dev/null +++ b/docs/API_docs/methods/messages.reportSpam.md @@ -0,0 +1,42 @@ +--- +title: "messages.reportSpam" +description: "Report a new incoming chat for spam, if the [peer settings](../constructors/peerSettings.html) of the chat allow us to do that" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_reportSpam.html +--- +# Method: messages.reportSpam +[Back to methods index](index.html) + + + +Report a new incoming chat for spam, if the [peer settings](../constructors/peerSettings.html) of the chat allow us to do that + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer to report | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->reportSpam(peer: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/messages.requestAppWebView.md b/docs/API_docs/methods/messages.requestAppWebView.md new file mode 100644 index 0000000000..cbba980837 --- /dev/null +++ b/docs/API_docs/methods/messages.requestAppWebView.md @@ -0,0 +1,49 @@ +--- +title: "messages.requestAppWebView" +description: "Open a [bot mini app](https://core.telegram.org/bots/webapps) from a [direct Mini App deep link](https://core.telegram.org/api/links#direct-mini-app-links), sending over user information after user confirmation." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_requestAppWebView.html +--- +# Method: messages.requestAppWebView +[Back to methods index](index.html) + + + +Open a [bot mini app](https://core.telegram.org/bots/webapps) from a [direct Mini App deep link](https://core.telegram.org/api/links#direct-mini-app-links), sending over user information after user confirmation. + +After calling this method, until the user closes the webview, [messages.prolongWebView](../methods/messages.prolongWebView.html) must be called every 60 seconds. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|write\_allowed|[Bool](/API_docs/types/Bool.html) | Set this flag if the bot is asking permission to send messages to the user as specified in the [direct Mini App deep link](https://core.telegram.org/api/links#direct-mini-app-links) docs, and the user agreed. | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | If the client has clicked on the link in a Telegram chat, pass the chat's peer information; otherwise pass the bot's peer information, instead. | Optional| +|app|[InputBotApp](/API_docs/types/InputBotApp.html) | The app obtained by invoking [messages.getBotApp](../methods/messages.getBotApp.html) as specified in the [direct Mini App deep link](https://core.telegram.org/api/links#direct-mini-app-links) docs. | Yes| +|start\_param|[string](/API_docs/types/string.html) | If the `startapp` query string parameter is present in the [direct Mini App deep link](https://core.telegram.org/api/links#direct-mini-app-links), pass it to `start_param`. | Optional| +|theme\_params|[DataJSON](/API_docs/types/DataJSON.html) | [Theme parameters »](https://core.telegram.org/api/bots/webapps#theme-parameters) | Optional| +|platform|[string](/API_docs/types/string.html) | Short name of the application; 0-64 English letters, digits, and underscores | Optional| + + +### Return type: [AppWebViewResult](/API_docs/types/AppWebViewResult.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$AppWebViewResult = $MadelineProto->messages->requestAppWebView(write_allowed: $Bool, peer: $InputPeer, app: $InputBotApp, start_param: 'string', theme_params: $DataJSON, platform: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.requestEncryption.md b/docs/API_docs/methods/messages.requestEncryption.md new file mode 100644 index 0000000000..065d58a3e4 --- /dev/null +++ b/docs/API_docs/methods/messages.requestEncryption.md @@ -0,0 +1,43 @@ +--- +title: "messages.requestEncryption" +description: "You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_requestEncryption.html +--- +# Method: messages.requestEncryption +[Back to methods index](index.html) + + + +You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | User ID | Optional| +|g\_a|[bytes](/API_docs/types/bytes.html) | `A = g ^ a mod p`, see [Wikipedia](https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange) | Yes| + + +### Return type: [EncryptedChat](/API_docs/types/EncryptedChat.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$EncryptedChat = $MadelineProto->messages->requestEncryption(user_id: $InputUser, g_a: 'bytes', ); +``` + diff --git a/docs/API_docs/methods/messages.requestSimpleWebView.md b/docs/API_docs/methods/messages.requestSimpleWebView.md new file mode 100644 index 0000000000..dda02d3373 --- /dev/null +++ b/docs/API_docs/methods/messages.requestSimpleWebView.md @@ -0,0 +1,48 @@ +--- +title: "messages.requestSimpleWebView" +description: "Open a [bot mini app](https://core.telegram.org/api/bots/webapps)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_requestSimpleWebView.html +--- +# Method: messages.requestSimpleWebView +[Back to methods index](index.html) + + + +Open a [bot mini app](https://core.telegram.org/api/bots/webapps). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|from\_switch\_webview|[Bool](/API_docs/types/Bool.html) | Whether the webapp was opened by clicking on the `switch_webview` button shown on top of the inline results list returned by [messages.getInlineBotResults](../methods/messages.getInlineBotResults.html). | Optional| +|from\_side\_menu|[Bool](/API_docs/types/Bool.html) | Set this flag if opening the Mini App from the installed [side menu entry »](https://core.telegram.org/api/bots/attach) or from a [Mini App link »](https://core.telegram.org/api/links#mini-app-links). | Optional| +|bot|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Bot that owns the mini app | Optional| +|url|[string](/API_docs/types/string.html) | Web app URL, if opening from a keyboard button or inline result | Optional| +|start\_param|[string](/API_docs/types/string.html) | Start parameter, if opening from a [Mini App link »](https://core.telegram.org/api/links#mini-app-links). | Optional| +|theme\_params|[DataJSON](/API_docs/types/DataJSON.html) | [Theme parameters »](https://core.telegram.org/api/bots/webapps#theme-parameters) | Optional| +|platform|[string](/API_docs/types/string.html) | Short name of the application; 0-64 English letters, digits, and underscores | Optional| + + +### Return type: [SimpleWebViewResult](/API_docs/types/SimpleWebViewResult.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$SimpleWebViewResult = $MadelineProto->messages->requestSimpleWebView(from_switch_webview: $Bool, from_side_menu: $Bool, bot: $InputUser, url: 'string', start_param: 'string', theme_params: $DataJSON, platform: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.requestUrlAuth.md b/docs/API_docs/methods/messages.requestUrlAuth.md new file mode 100644 index 0000000000..b5843e60ae --- /dev/null +++ b/docs/API_docs/methods/messages.requestUrlAuth.md @@ -0,0 +1,45 @@ +--- +title: "messages.requestUrlAuth" +description: "Get more info about a Seamless Telegram Login authorization request, for more info [click here »](https://core.telegram.org/api/url-authorization)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_requestUrlAuth.html +--- +# Method: messages.requestUrlAuth +[Back to methods index](index.html) + + + +Get more info about a Seamless Telegram Login authorization request, for more info [click here »](https://core.telegram.org/api/url-authorization) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer where the message is located | Optional| +|msg\_id|[int](/API_docs/types/int.html) | The message | Optional| +|button\_id|[int](/API_docs/types/int.html) | The ID of the button with the authorization request | Optional| +|url|[string](/API_docs/types/string.html) | URL used for [link URL authorization, click here for more info »](https://core.telegram.org/api/url-authorization#link-url-authorization) | Optional| + + +### Return type: [UrlAuthResult](/API_docs/types/UrlAuthResult.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$UrlAuthResult = $MadelineProto->messages->requestUrlAuth(peer: $InputPeer, msg_id: $int, button_id: $int, url: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.requestWebView.md b/docs/API_docs/methods/messages.requestWebView.md new file mode 100644 index 0000000000..0a9de94cc9 --- /dev/null +++ b/docs/API_docs/methods/messages.requestWebView.md @@ -0,0 +1,53 @@ +--- +title: "messages.requestWebView" +description: "Open a [bot mini app](https://core.telegram.org/bots/webapps), sending over user information after user confirmation." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_requestWebView.html +--- +# Method: messages.requestWebView +[Back to methods index](index.html) + + + +Open a [bot mini app](https://core.telegram.org/bots/webapps), sending over user information after user confirmation. + +After calling this method, until the user closes the webview, [messages.prolongWebView](../methods/messages.prolongWebView.html) must be called every 60 seconds. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|from\_bot\_menu|[Bool](/API_docs/types/Bool.html) | Whether the webview was opened by clicking on the bot's [menu button »](https://core.telegram.org/api/bots/menu). | Optional| +|silent|[Bool](/API_docs/types/Bool.html) | Whether the inline message that will be sent by the bot on behalf of the user once the web app interaction is [terminated](../methods/messages.sendWebViewResultMessage.html) should be sent silently (no notifications for the receivers). | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Dialog where the web app is being opened, and where the resulting message will be sent (see the [docs for more info »](https://core.telegram.org/api/bots/webapps)). | Optional| +|bot|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Bot that owns the [web app](https://core.telegram.org/api/bots/webapps) | Optional| +|url|[string](/API_docs/types/string.html) | [Web app URL](https://core.telegram.org/api/bots/webapps) | Optional| +|start\_param|[string](/API_docs/types/string.html) | If the web app was opened from the attachment menu using a [attachment menu deep link](https://core.telegram.org/api/links#bot-attachment-or-side-menu-links), `start_param` should contain the `data` from the `startattach` parameter. | Optional| +|theme\_params|[DataJSON](/API_docs/types/DataJSON.html) | [Theme parameters »](https://core.telegram.org/api/bots/webapps#theme-parameters) | Optional| +|platform|[string](/API_docs/types/string.html) | Short name of the application; 0-64 English letters, digits, and underscores | Optional| +|reply\_to|[InputReplyTo](/API_docs/types/InputReplyTo.html) | If set, indicates that the inline message that will be sent by the bot on behalf of the user once the web app interaction is [terminated](../methods/messages.sendWebViewResultMessage.html) should be sent in reply to the specified message or story. | Optional| +|send\_as|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Open the web app as the specified peer, sending the resulting the message as the specified peer. | Optional| + + +### Return type: [WebViewResult](/API_docs/types/WebViewResult.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$WebViewResult = $MadelineProto->messages->requestWebView(from_bot_menu: $Bool, silent: $Bool, peer: $InputPeer, bot: $InputUser, url: 'string', start_param: 'string', theme_params: $DataJSON, platform: 'string', reply_to: $InputReplyTo, send_as: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/messages.saveDefaultSendAs.md b/docs/API_docs/methods/messages.saveDefaultSendAs.md new file mode 100644 index 0000000000..6bfa4ab270 --- /dev/null +++ b/docs/API_docs/methods/messages.saveDefaultSendAs.md @@ -0,0 +1,43 @@ +--- +title: "messages.saveDefaultSendAs" +description: "Change the default peer that should be used when sending messages, reactions, poll votes to a specific group" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_saveDefaultSendAs.html +--- +# Method: messages.saveDefaultSendAs +[Back to methods index](index.html) + + + +Change the default peer that should be used when sending messages, reactions, poll votes to a specific group + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Group | Optional| +|send\_as|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The default peer that should be used when sending messages to the group | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->saveDefaultSendAs(peer: $InputPeer, send_as: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/messages.saveDraft.md b/docs/API_docs/methods/messages.saveDraft.md new file mode 100644 index 0000000000..5a5eee8def --- /dev/null +++ b/docs/API_docs/methods/messages.saveDraft.md @@ -0,0 +1,115 @@ +--- +title: "messages.saveDraft" +description: "Save a message [draft](https://core.telegram.org/api/drafts) associated to a chat." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_saveDraft.html +--- +# Method: messages.saveDraft +[Back to methods index](index.html) + + + +Save a message [draft](https://core.telegram.org/api/drafts) associated to a chat. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|no\_webpage|[Bool](/API_docs/types/Bool.html) | Disable generation of the webpage preview | Optional| +|invert\_media|[Bool](/API_docs/types/Bool.html) | If set, any eventual webpage preview will be shown on top of the message instead of at the bottom. | Optional| +|reply\_to|[InputReplyTo](/API_docs/types/InputReplyTo.html) | If set, indicates that the message should be sent in reply to the specified message or story. | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Destination of the message that should be sent | Optional| +|message|[string](/API_docs/types/string.html) | The draft | Optional| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Message [entities](https://core.telegram.org/api/entities) for styled text | Optional| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|media|[MessageMedia, Update, Message or InputMedia](/API_docs/types/InputMedia.html) | Attached media | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->saveDraft(no_webpage: $Bool, invert_media: $Bool, reply_to: $InputReplyTo, peer: $InputPeer, message: 'string', entities: [$MessageEntity, $MessageEntity], parse_mode: 'string', media: $InputMedia, ); +``` + + +## Return value + +If the length of the provided message is bigger than 4096, the message will be split in chunks and the method will be called multiple times, with the same parameters (except for the message), and an array of [Bool](../types/Bool.html) will be returned instead. + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + diff --git a/docs/API_docs/methods/messages.saveGif.md b/docs/API_docs/methods/messages.saveGif.md new file mode 100644 index 0000000000..ba0d42ce5d --- /dev/null +++ b/docs/API_docs/methods/messages.saveGif.md @@ -0,0 +1,43 @@ +--- +title: "messages.saveGif" +description: "Add GIF to saved gifs list" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_saveGif.html +--- +# Method: messages.saveGif +[Back to methods index](index.html) + + + +Add GIF to saved gifs list + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|[MessageMedia, Update, Message or InputDocument](/API_docs/types/InputDocument.html) | GIF to save | Optional| +|unsave|[Bool](/API_docs/types/Bool.html) | Whether to remove GIF from saved gifs list | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->saveGif(id: $InputDocument, unsave: $Bool, ); +``` + diff --git a/docs/API_docs/methods/messages.saveRecentSticker.md b/docs/API_docs/methods/messages.saveRecentSticker.md new file mode 100644 index 0000000000..31f50549f2 --- /dev/null +++ b/docs/API_docs/methods/messages.saveRecentSticker.md @@ -0,0 +1,44 @@ +--- +title: "messages.saveRecentSticker" +description: "Add/remove sticker from recent stickers list" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_saveRecentSticker.html +--- +# Method: messages.saveRecentSticker +[Back to methods index](index.html) + + + +Add/remove sticker from recent stickers list + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|attached|[Bool](/API_docs/types/Bool.html) | Whether to add/remove stickers recently attached to photo or video files | Optional| +|id|[MessageMedia, Update, Message or InputDocument](/API_docs/types/InputDocument.html) | Sticker | Optional| +|unsave|[Bool](/API_docs/types/Bool.html) | Whether to save or unsave the sticker | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->saveRecentSticker(attached: $Bool, id: $InputDocument, unsave: $Bool, ); +``` + diff --git a/docs/API_docs/methods/messages.search.md b/docs/API_docs/methods/messages.search.md new file mode 100644 index 0000000000..6be94f88df --- /dev/null +++ b/docs/API_docs/methods/messages.search.md @@ -0,0 +1,56 @@ +--- +title: "messages.search" +description: "Search for messages." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_search.html +--- +# Method: messages.search +[Back to methods index](index.html) + + + +Search for messages. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | User or chat, histories with which are searched, or [(inputPeerEmpty)](../constructors/inputPeerEmpty.html) constructor to search in all private chats and [normal groups (not channels) »](https://core.telegram.org/api/channel). Use [messages.searchGlobal](../methods/messages.searchGlobal.html) to search globally in all chats, groups, supergroups and channels. | Optional| +|q|[string](/API_docs/types/string.html) | Text search request | Optional| +|from\_id|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Only return messages sent by the specified user ID | Optional| +|saved\_peer\_id|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Search within the [saved message dialog »](https://core.telegram.org/api/saved-messages) with this ID. | Optional| +|saved\_reaction|Array of [Reaction](/API_docs/types/Reaction.html) | | Optional| +|top\_msg\_id|[int](/API_docs/types/int.html) | [Thread ID](https://core.telegram.org/api/threads) | Optional| +|filter|[MessagesFilter](/API_docs/types/MessagesFilter.html) | Filter to return only specified message types | Optional| +|min\_date|[int](/API_docs/types/int.html) | If a positive value was transferred, only messages with a sending date bigger than the transferred one will be returned | Optional| +|max\_date|[int](/API_docs/types/int.html) | If a positive value was transferred, only messages with a sending date smaller than the transferred one will be returned | Optional| +|offset\_id|[int](/API_docs/types/int.html) | Only return messages starting from the specified message ID | Optional| +|add\_offset|[int](/API_docs/types/int.html) | [Additional offset](https://core.telegram.org/api/offsets) | Optional| +|limit|[int](/API_docs/types/int.html) | [Number of results to return](https://core.telegram.org/api/offsets) | Optional| +|max\_id|[int](/API_docs/types/int.html) | [Maximum message ID to return](https://core.telegram.org/api/offsets) | Optional| +|min\_id|[int](/API_docs/types/int.html) | [Minimum message ID to return](https://core.telegram.org/api/offsets) | Optional| +|hash|Array of [long](/API_docs/types/long.html) | [Hash](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [messages.Messages](/API_docs/types/messages.Messages.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Messages = $MadelineProto->messages->search(peer: $InputPeer, q: 'string', from_id: $InputPeer, saved_peer_id: $InputPeer, saved_reaction: [$Reaction, $Reaction], top_msg_id: $int, filter: $MessagesFilter, min_date: $int, max_date: $int, offset_id: $int, add_offset: $int, limit: $int, max_id: $int, min_id: $int, hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.searchCustomEmoji.md b/docs/API_docs/methods/messages.searchCustomEmoji.md new file mode 100644 index 0000000000..43e985e984 --- /dev/null +++ b/docs/API_docs/methods/messages.searchCustomEmoji.md @@ -0,0 +1,43 @@ +--- +title: "messages.searchCustomEmoji" +description: "Look for [custom emojis](https://core.telegram.org/api/custom-emoji) associated to a UTF8 emoji" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_searchCustomEmoji.html +--- +# Method: messages.searchCustomEmoji +[Back to methods index](index.html) + + + +Look for [custom emojis](https://core.telegram.org/api/custom-emoji) associated to a UTF8 emoji + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|emoticon|[string](/API_docs/types/string.html) | The emoji | Optional| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [EmojiList](/API_docs/types/EmojiList.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$EmojiList = $MadelineProto->messages->searchCustomEmoji(emoticon: 'string', hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.searchEmojiStickerSets.md b/docs/API_docs/methods/messages.searchEmojiStickerSets.md new file mode 100644 index 0000000000..717acafce6 --- /dev/null +++ b/docs/API_docs/methods/messages.searchEmojiStickerSets.md @@ -0,0 +1,44 @@ +--- +title: "messages.searchEmojiStickerSets" +description: "Search for [custom emoji stickersets »](https://core.telegram.org/api/custom-emoji)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_searchEmojiStickerSets.html +--- +# Method: messages.searchEmojiStickerSets +[Back to methods index](index.html) + + + +Search for [custom emoji stickersets »](https://core.telegram.org/api/custom-emoji) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|exclude\_featured|[Bool](/API_docs/types/Bool.html) | Exclude featured stickersets from results | Optional| +|q|[string](/API_docs/types/string.html) | Query string | Optional| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.FoundStickerSets](/API_docs/types/messages.FoundStickerSets.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_FoundStickerSets = $MadelineProto->messages->searchEmojiStickerSets(exclude_featured: $Bool, q: 'string', hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.searchGlobal.md b/docs/API_docs/methods/messages.searchGlobal.md new file mode 100644 index 0000000000..8b84d4486c --- /dev/null +++ b/docs/API_docs/methods/messages.searchGlobal.md @@ -0,0 +1,51 @@ +--- +title: "messages.searchGlobal" +description: "Search for messages and peers globally" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_searchGlobal.html +--- +# Method: messages.searchGlobal +[Back to methods index](index.html) + + + +Search for messages and peers globally + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|broadcasts\_only|[Bool](/API_docs/types/Bool.html) | | Optional| +|folder\_id|[int](/API_docs/types/int.html) | [Peer folder ID, for more info click here](https://core.telegram.org/api/folders#peer-folders) | Optional| +|q|[string](/API_docs/types/string.html) | Query | Optional| +|filter|[MessagesFilter](/API_docs/types/MessagesFilter.html) | Global search filter | Optional| +|min\_date|[int](/API_docs/types/int.html) | If a positive value was specified, the method will return only messages with date bigger than min\_date | Optional| +|max\_date|[int](/API_docs/types/int.html) | If a positive value was transferred, the method will return only messages with date smaller than max\_date | Optional| +|offset\_rate|[int](/API_docs/types/int.html) | Initially 0, then set to the [`next_rate` parameter of messages.messagesSlice](../constructors/messages.messagesSlice.html) | Optional| +|offset\_peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| +|offset\_id|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| +|limit|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [messages.Messages](/API_docs/types/messages.Messages.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Messages = $MadelineProto->messages->searchGlobal(broadcasts_only: $Bool, folder_id: $int, q: 'string', filter: $MessagesFilter, min_date: $int, max_date: $int, offset_rate: $int, offset_peer: $InputPeer, offset_id: $int, limit: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.searchSentMedia.md b/docs/API_docs/methods/messages.searchSentMedia.md new file mode 100644 index 0000000000..72dee72c7b --- /dev/null +++ b/docs/API_docs/methods/messages.searchSentMedia.md @@ -0,0 +1,45 @@ +--- +title: "messages.searchSentMedia" +description: "View and search recently sent media. " +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_searchSentMedia.html +--- +# Method: messages.searchSentMedia +[Back to methods index](index.html) + + + +View and search recently sent media. +This method does not support pagination. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|q|[string](/API_docs/types/string.html) | Optional search query | Optional| +|filter|[MessagesFilter](/API_docs/types/MessagesFilter.html) | Message filter | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return (max 100). | Optional| + + +### Return type: [messages.Messages](/API_docs/types/messages.Messages.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Messages = $MadelineProto->messages->searchSentMedia(q: 'string', filter: $MessagesFilter, limit: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.searchStickerSets.md b/docs/API_docs/methods/messages.searchStickerSets.md new file mode 100644 index 0000000000..289643fc42 --- /dev/null +++ b/docs/API_docs/methods/messages.searchStickerSets.md @@ -0,0 +1,44 @@ +--- +title: "messages.searchStickerSets" +description: "Search for stickersets" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_searchStickerSets.html +--- +# Method: messages.searchStickerSets +[Back to methods index](index.html) + + + +Search for stickersets + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|exclude\_featured|[Bool](/API_docs/types/Bool.html) | Exclude featured stickersets from results | Optional| +|q|[string](/API_docs/types/string.html) | Query string | Optional| +|hash|Array of [long](/API_docs/types/long.html) | [Hash for pagination, for more info click here](https://core.telegram.org/api/offsets#hash-generation) | Optional| + + +### Return type: [messages.FoundStickerSets](/API_docs/types/messages.FoundStickerSets.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_FoundStickerSets = $MadelineProto->messages->searchStickerSets(exclude_featured: $Bool, q: 'string', hash: [$long, $long], ); +``` + diff --git a/docs/API_docs/methods/messages.sendBotRequestedPeer.md b/docs/API_docs/methods/messages.sendBotRequestedPeer.md new file mode 100644 index 0000000000..4ba510323c --- /dev/null +++ b/docs/API_docs/methods/messages.sendBotRequestedPeer.md @@ -0,0 +1,45 @@ +--- +title: "messages.sendBotRequestedPeer" +description: "Send one or more chosen peers, as requested by a [keyboardButtonRequestPeer](../constructors/keyboardButtonRequestPeer.html) button." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_sendBotRequestedPeer.html +--- +# Method: messages.sendBotRequestedPeer +[Back to methods index](index.html) + + + +Send one or more chosen peers, as requested by a [keyboardButtonRequestPeer](../constructors/keyboardButtonRequestPeer.html) button. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The bot that sent the [keyboardButtonRequestPeer](../constructors/keyboardButtonRequestPeer.html) button. | Optional| +|msg\_id|[int](/API_docs/types/int.html) | ID of the message that contained the reply keyboard with the [keyboardButtonRequestPeer](../constructors/keyboardButtonRequestPeer.html) button. | Optional| +|button\_id|[int](/API_docs/types/int.html) | The `button_id` field from the [keyboardButtonRequestPeer](../constructors/keyboardButtonRequestPeer.html) constructor. | Optional| +|requested\_peers|Array of [Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The chosen peers. | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->sendBotRequestedPeer(peer: $InputPeer, msg_id: $int, button_id: $int, requested_peers: [$InputPeer, $InputPeer], ); +``` + diff --git a/docs/API_docs/methods/messages.sendEncrypted.md b/docs/API_docs/methods/messages.sendEncrypted.md new file mode 100644 index 0000000000..41791149aa --- /dev/null +++ b/docs/API_docs/methods/messages.sendEncrypted.md @@ -0,0 +1,44 @@ +--- +title: "messages.sendEncrypted" +description: "Sends a text message to a secret chat." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_sendEncrypted.html +--- +# Method: messages.sendEncrypted +[Back to methods index](index.html) + + + +Sends a text message to a secret chat. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|silent|[Bool](/API_docs/types/Bool.html) | Send encrypted message without a notification | Optional| +|peer|[Secret chat ID, Update, EncryptedMessage or InputEncryptedChat](/API_docs/types/InputEncryptedChat.html) | Secret chat ID | Yes| +|data|[bytes](/API_docs/types/bytes.html) | TL-serialization of [DecryptedMessage](../types/DecryptedMessage.html) type, encrypted with a key that was created during chat initialization | Yes| + + +### Return type: [messages.SentEncryptedMessage](/API_docs/types/messages.SentEncryptedMessage.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_SentEncryptedMessage = $MadelineProto->messages->sendEncrypted(silent: $Bool, peer: $InputEncryptedChat, data: 'bytes', ); +``` + diff --git a/docs/API_docs/methods/messages.sendEncryptedFile.md b/docs/API_docs/methods/messages.sendEncryptedFile.md new file mode 100644 index 0000000000..609f1b90be --- /dev/null +++ b/docs/API_docs/methods/messages.sendEncryptedFile.md @@ -0,0 +1,45 @@ +--- +title: "messages.sendEncryptedFile" +description: "Sends a message with a file attachment to a secret chat" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_sendEncryptedFile.html +--- +# Method: messages.sendEncryptedFile +[Back to methods index](index.html) + + + +Sends a message with a file attachment to a secret chat + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|silent|[Bool](/API_docs/types/Bool.html) | Whether to send the file without triggering a notification | Optional| +|peer|[Secret chat ID, Update, EncryptedMessage or InputEncryptedChat](/API_docs/types/InputEncryptedChat.html) | Secret chat ID | Yes| +|data|[bytes](/API_docs/types/bytes.html) | TL-serialization of [DecryptedMessage](../types/DecryptedMessage.html) type, encrypted with a key generated during chat initialization | Yes| +|file|[File path or InputEncryptedFile](/API_docs/types/InputEncryptedFile.html) | File attachment for the secret chat | Optional| + + +### Return type: [messages.SentEncryptedMessage](/API_docs/types/messages.SentEncryptedMessage.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_SentEncryptedMessage = $MadelineProto->messages->sendEncryptedFile(silent: $Bool, peer: $InputEncryptedChat, data: 'bytes', file: $InputEncryptedFile, ); +``` + diff --git a/docs/API_docs/methods/messages.sendEncryptedService.md b/docs/API_docs/methods/messages.sendEncryptedService.md new file mode 100644 index 0000000000..a97d2ba946 --- /dev/null +++ b/docs/API_docs/methods/messages.sendEncryptedService.md @@ -0,0 +1,43 @@ +--- +title: "messages.sendEncryptedService" +description: "Sends a service message to a secret chat." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_sendEncryptedService.html +--- +# Method: messages.sendEncryptedService +[Back to methods index](index.html) + + + +Sends a service message to a secret chat. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Secret chat ID, Update, EncryptedMessage or InputEncryptedChat](/API_docs/types/InputEncryptedChat.html) | Secret chat ID | Yes| +|data|[bytes](/API_docs/types/bytes.html) | TL-serialization of [DecryptedMessage](../types/DecryptedMessage.html) type, encrypted with a key generated during chat initialization | Yes| + + +### Return type: [messages.SentEncryptedMessage](/API_docs/types/messages.SentEncryptedMessage.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_SentEncryptedMessage = $MadelineProto->messages->sendEncryptedService(peer: $InputEncryptedChat, data: 'bytes', ); +``` + diff --git a/docs/API_docs/methods/messages.sendInlineBotResult.md b/docs/API_docs/methods/messages.sendInlineBotResult.md new file mode 100644 index 0000000000..0859f0d429 --- /dev/null +++ b/docs/API_docs/methods/messages.sendInlineBotResult.md @@ -0,0 +1,52 @@ +--- +title: "messages.sendInlineBotResult" +description: "Send a result obtained using [messages.getInlineBotResults](../methods/messages.getInlineBotResults.html)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_sendInlineBotResult.html +--- +# Method: messages.sendInlineBotResult +[Back to methods index](index.html) + + + +Send a result obtained using [messages.getInlineBotResults](../methods/messages.getInlineBotResults.html). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|silent|[Bool](/API_docs/types/Bool.html) | Whether to send the message silently (no notification will be triggered on the other client) | Optional| +|background|[Bool](/API_docs/types/Bool.html) | Whether to send the message in background | Optional| +|clear\_draft|[Bool](/API_docs/types/Bool.html) | Whether to clear the [draft](https://core.telegram.org/api/drafts) | Optional| +|hide\_via|[Bool](/API_docs/types/Bool.html) | Whether to hide the `via @botname` in the resulting message (only for bot usernames encountered in the [config](../constructors/config.html)) | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Destination | Optional| +|reply\_to|[InputReplyTo](/API_docs/types/InputReplyTo.html) | If set, indicates that the message should be sent in reply to the specified message or story. | Optional| +|query\_id|[long](/API_docs/types/long.html) | Query ID from [messages.getInlineBotResults](../methods/messages.getInlineBotResults.html) | Yes| +|id|[string](/API_docs/types/string.html) | Result ID from [messages.getInlineBotResults](../methods/messages.getInlineBotResults.html) | Optional| +|schedule\_date|[int](/API_docs/types/int.html) | Scheduled message date for scheduled messages | Optional| +|send\_as|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Send this message as the specified peer | Optional| +|quick\_reply\_shortcut|[InputQuickReplyShortcut](/API_docs/types/InputQuickReplyShortcut.html) | | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->sendInlineBotResult(silent: $Bool, background: $Bool, clear_draft: $Bool, hide_via: $Bool, peer: $InputPeer, reply_to: $InputReplyTo, query_id: $long, id: 'string', schedule_date: $int, send_as: $InputPeer, quick_reply_shortcut: $InputQuickReplyShortcut, ); +``` + diff --git a/docs/API_docs/methods/messages.sendMedia.md b/docs/API_docs/methods/messages.sendMedia.md new file mode 100644 index 0000000000..22a3ba5692 --- /dev/null +++ b/docs/API_docs/methods/messages.sendMedia.md @@ -0,0 +1,129 @@ +--- +title: "messages.sendMedia" +description: "Send a media" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_sendMedia.html +--- +# Method: messages.sendMedia +[Back to methods index](index.html) + + + +Send a media + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|silent|[Bool](/API_docs/types/Bool.html) | Send message silently (no notification should be triggered) | Optional| +|background|[Bool](/API_docs/types/Bool.html) | Send message in background | Optional| +|clear\_draft|[Bool](/API_docs/types/Bool.html) | Clear the draft | Optional| +|noforwards|[Bool](/API_docs/types/Bool.html) | Only for bots, disallows forwarding and saving of the messages, even if the destination chat doesn't have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled | Optional| +|update\_stickersets\_order|[Bool](/API_docs/types/Bool.html) | Whether to move used stickersets to top, [see here for more info on this flag »](https://core.telegram.org/api/stickers#recent-stickersets) | Optional| +|invert\_media|[Bool](/API_docs/types/Bool.html) | If set, any eventual webpage preview will be shown on top of the message instead of at the bottom. | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Destination | Optional| +|reply\_to|[InputReplyTo](/API_docs/types/InputReplyTo.html) | If set, indicates that the message should be sent in reply to the specified message or story. | Optional| +|media|[MessageMedia, Update, Message or InputMedia](/API_docs/types/InputMedia.html) | Attached media | Optional| +|message|[string](/API_docs/types/string.html) | Caption | Optional| +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Reply markup for bot keyboards | Optional| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Message [entities](https://core.telegram.org/api/entities) for styled text | Optional| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|schedule\_date|[int](/API_docs/types/int.html) | Scheduled message date for [scheduled messages](https://core.telegram.org/api/scheduled-messages) | Optional| +|send\_as|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Send this message as the specified peer | Optional| +|quick\_reply\_shortcut|[InputQuickReplyShortcut](/API_docs/types/InputQuickReplyShortcut.html) | | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->sendMedia(silent: $Bool, background: $Bool, clear_draft: $Bool, noforwards: $Bool, update_stickersets_order: $Bool, invert_media: $Bool, peer: $InputPeer, reply_to: $InputReplyTo, media: $InputMedia, message: 'string', reply_markup: $ReplyMarkup, entities: [$MessageEntity, $MessageEntity], parse_mode: 'string', schedule_date: $int, send_as: $InputPeer, quick_reply_shortcut: $InputQuickReplyShortcut, ); +``` + + +## Usage of reply_markup + +You can provide bot API reply_markup objects here. + + + +## Return value + +If the length of the provided message is bigger than 4096, the message will be split in chunks and the method will be called multiple times, with the same parameters (except for the message), and an array of [Updates](../types/Updates.html) will be returned instead. + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + diff --git a/docs/API_docs/methods/messages.sendMessage.md b/docs/API_docs/methods/messages.sendMessage.md new file mode 100644 index 0000000000..5b5d689e52 --- /dev/null +++ b/docs/API_docs/methods/messages.sendMessage.md @@ -0,0 +1,129 @@ +--- +title: "messages.sendMessage" +description: "Sends a message to a chat" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_sendMessage.html +--- +# Method: messages.sendMessage +[Back to methods index](index.html) + + + +Sends a message to a chat + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|no\_webpage|[Bool](/API_docs/types/Bool.html) | Set this flag to disable generation of the webpage preview | Optional| +|silent|[Bool](/API_docs/types/Bool.html) | Send this message silently (no notifications for the receivers) | Optional| +|background|[Bool](/API_docs/types/Bool.html) | Send this message as background message | Optional| +|clear\_draft|[Bool](/API_docs/types/Bool.html) | Clear the draft field | Optional| +|noforwards|[Bool](/API_docs/types/Bool.html) | Only for bots, disallows forwarding and saving of the messages, even if the destination chat doesn't have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled | Optional| +|update\_stickersets\_order|[Bool](/API_docs/types/Bool.html) | Whether to move used stickersets to top, [see here for more info on this flag »](https://core.telegram.org/api/stickers#recent-stickersets) | Optional| +|invert\_media|[Bool](/API_docs/types/Bool.html) | If set, any eventual webpage preview will be shown on top of the message instead of at the bottom. | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The destination where the message will be sent | Optional| +|reply\_to|[InputReplyTo](/API_docs/types/InputReplyTo.html) | If set, indicates that the message should be sent in reply to the specified message or story. | Optional| +|message|[string](/API_docs/types/string.html) | The message | Optional| +|reply\_markup|[ReplyMarkup](/API_docs/types/ReplyMarkup.html) | Reply markup for sending bot buttons | Optional| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | Message [entities](https://core.telegram.org/api/entities) for sending styled text | Optional| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|schedule\_date|[int](/API_docs/types/int.html) | Scheduled message date for [scheduled messages](https://core.telegram.org/api/scheduled-messages) | Optional| +|send\_as|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Send this message as the specified peer | Optional| +|quick\_reply\_shortcut|[InputQuickReplyShortcut](/API_docs/types/InputQuickReplyShortcut.html) | | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->sendMessage(no_webpage: $Bool, silent: $Bool, background: $Bool, clear_draft: $Bool, noforwards: $Bool, update_stickersets_order: $Bool, invert_media: $Bool, peer: $InputPeer, reply_to: $InputReplyTo, message: 'string', reply_markup: $ReplyMarkup, entities: [$MessageEntity, $MessageEntity], parse_mode: 'string', schedule_date: $int, send_as: $InputPeer, quick_reply_shortcut: $InputQuickReplyShortcut, ); +``` + + +## Usage of reply_markup + +You can provide bot API reply_markup objects here. + + + +## Return value + +If the length of the provided message is bigger than 4096, the message will be split in chunks and the method will be called multiple times, with the same parameters (except for the message), and an array of [Updates](../types/Updates.html) will be returned instead. + + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + diff --git a/docs/API_docs/methods/messages.sendMultiMedia.md b/docs/API_docs/methods/messages.sendMultiMedia.md new file mode 100644 index 0000000000..c6c5734132 --- /dev/null +++ b/docs/API_docs/methods/messages.sendMultiMedia.md @@ -0,0 +1,53 @@ +--- +title: "messages.sendMultiMedia" +description: "Send an [album or grouped media](https://core.telegram.org/api/files#albums-grouped-media)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_sendMultiMedia.html +--- +# Method: messages.sendMultiMedia +[Back to methods index](index.html) + + + +Send an [album or grouped media](https://core.telegram.org/api/files#albums-grouped-media) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|silent|[Bool](/API_docs/types/Bool.html) | Whether to send the album silently (no notification triggered) | Optional| +|background|[Bool](/API_docs/types/Bool.html) | Send in background? | Optional| +|clear\_draft|[Bool](/API_docs/types/Bool.html) | Whether to clear [drafts](https://core.telegram.org/api/drafts) | Optional| +|noforwards|[Bool](/API_docs/types/Bool.html) | Only for bots, disallows forwarding and saving of the messages, even if the destination chat doesn't have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled | Optional| +|update\_stickersets\_order|[Bool](/API_docs/types/Bool.html) | Whether to move used stickersets to top, [see here for more info on this flag »](https://core.telegram.org/api/stickers#recent-stickersets) | Optional| +|invert\_media|[Bool](/API_docs/types/Bool.html) | If set, any eventual webpage preview will be shown on top of the message instead of at the bottom. | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The destination chat | Optional| +|reply\_to|[InputReplyTo](/API_docs/types/InputReplyTo.html) | If set, indicates that the message should be sent in reply to the specified message or story. | Optional| +|multi\_media|Array of [InputSingleMedia](/API_docs/types/InputSingleMedia.html) | The medias to send | Yes| +|schedule\_date|[int](/API_docs/types/int.html) | Scheduled message date for scheduled messages | Optional| +|send\_as|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Send this message as the specified peer | Optional| +|quick\_reply\_shortcut|[InputQuickReplyShortcut](/API_docs/types/InputQuickReplyShortcut.html) | | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->sendMultiMedia(silent: $Bool, background: $Bool, clear_draft: $Bool, noforwards: $Bool, update_stickersets_order: $Bool, invert_media: $Bool, peer: $InputPeer, reply_to: $InputReplyTo, multi_media: [$InputSingleMedia, $InputSingleMedia], schedule_date: $int, send_as: $InputPeer, quick_reply_shortcut: $InputQuickReplyShortcut, ); +``` + diff --git a/docs/API_docs/methods/messages.sendQuickReplyMessages.md b/docs/API_docs/methods/messages.sendQuickReplyMessages.md new file mode 100644 index 0000000000..8b781ff000 --- /dev/null +++ b/docs/API_docs/methods/messages.sendQuickReplyMessages.md @@ -0,0 +1,42 @@ +--- +title: "messages.sendQuickReplyMessages" +description: "messages.sendQuickReplyMessages parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_sendQuickReplyMessages.html +--- +# Method: messages.sendQuickReplyMessages +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional| +|shortcut\_id|[int](/API_docs/types/int.html) | Optional| +|id|Array of [int](/API_docs/types/int.html) | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->sendQuickReplyMessages(peer: $InputPeer, shortcut_id: $int, id: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/messages.sendReaction.md b/docs/API_docs/methods/messages.sendReaction.md new file mode 100644 index 0000000000..19dcc528ce --- /dev/null +++ b/docs/API_docs/methods/messages.sendReaction.md @@ -0,0 +1,48 @@ +--- +title: "messages.sendReaction" +description: "React to message." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_sendReaction.html +--- +# Method: messages.sendReaction +[Back to methods index](index.html) + + + +React to message. + +Starting from layer 159, the reaction will be sent from the peer specified using [messages.saveDefaultSendAs](../methods/messages.saveDefaultSendAs.html). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|big|[Bool](/API_docs/types/Bool.html) | Whether a bigger and longer reaction should be shown | Optional| +|add\_to\_recent|[Bool](/API_docs/types/Bool.html) | Whether to add this reaction to the [recent reactions list »](https://core.telegram.org/api/reactions#recent-reactions). | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer | Optional| +|msg\_id|[int](/API_docs/types/int.html) | Message ID to react to | Optional| +|reaction|Array of [Reaction](/API_docs/types/Reaction.html) | A list of reactions | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->sendReaction(big: $Bool, add_to_recent: $Bool, peer: $InputPeer, msg_id: $int, reaction: [$Reaction, $Reaction], ); +``` + diff --git a/docs/API_docs/methods/messages.sendScheduledMessages.md b/docs/API_docs/methods/messages.sendScheduledMessages.md new file mode 100644 index 0000000000..5aea1a2e57 --- /dev/null +++ b/docs/API_docs/methods/messages.sendScheduledMessages.md @@ -0,0 +1,43 @@ +--- +title: "messages.sendScheduledMessages" +description: "Send scheduled messages right away" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_sendScheduledMessages.html +--- +# Method: messages.sendScheduledMessages +[Back to methods index](index.html) + + + +Send scheduled messages right away + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer | Optional| +|id|Array of [int](/API_docs/types/int.html) | Scheduled message IDs | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->sendScheduledMessages(peer: $InputPeer, id: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/messages.sendScreenshotNotification.md b/docs/API_docs/methods/messages.sendScreenshotNotification.md new file mode 100644 index 0000000000..8a12414ea2 --- /dev/null +++ b/docs/API_docs/methods/messages.sendScreenshotNotification.md @@ -0,0 +1,43 @@ +--- +title: "messages.sendScreenshotNotification" +description: "Notify the other user in a private chat that a screenshot of the chat was taken" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_sendScreenshotNotification.html +--- +# Method: messages.sendScreenshotNotification +[Back to methods index](index.html) + + + +Notify the other user in a private chat that a screenshot of the chat was taken + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Other user | Optional| +|reply\_to|[InputReplyTo](/API_docs/types/InputReplyTo.html) | Indicates the message that was screenshotted (the specified message ID can also be `0` to avoid indicating any specific message). | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->sendScreenshotNotification(peer: $InputPeer, reply_to: $InputReplyTo, ); +``` + diff --git a/docs/API_docs/methods/messages.sendVote.md b/docs/API_docs/methods/messages.sendVote.md new file mode 100644 index 0000000000..ee4dda52ae --- /dev/null +++ b/docs/API_docs/methods/messages.sendVote.md @@ -0,0 +1,46 @@ +--- +title: "messages.sendVote" +description: "Vote in a [poll](../constructors/poll.html)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_sendVote.html +--- +# Method: messages.sendVote +[Back to methods index](index.html) + + + +Vote in a [poll](../constructors/poll.html) + +Starting from layer 159, the vote will be sent from the peer specified using [messages.saveDefaultSendAs](../methods/messages.saveDefaultSendAs.html). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The chat where the poll was sent | Optional| +|msg\_id|[int](/API_docs/types/int.html) | The message ID of the poll | Optional| +|options|Array of [bytes](/API_docs/types/bytes.html) | The options that were chosen | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->sendVote(peer: $InputPeer, msg_id: $int, options: ['bytes', 'bytes'], ); +``` + diff --git a/docs/API_docs/methods/messages.sendWebViewData.md b/docs/API_docs/methods/messages.sendWebViewData.md new file mode 100644 index 0000000000..7b3446176d --- /dev/null +++ b/docs/API_docs/methods/messages.sendWebViewData.md @@ -0,0 +1,44 @@ +--- +title: "messages.sendWebViewData" +description: "Used by the user to relay data from an opened [reply keyboard bot mini app](https://core.telegram.org/api/bots/webapps) to the bot that owns it." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_sendWebViewData.html +--- +# Method: messages.sendWebViewData +[Back to methods index](index.html) + + + +Used by the user to relay data from an opened [reply keyboard bot mini app](https://core.telegram.org/api/bots/webapps) to the bot that owns it. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|bot|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Bot that owns the web app | Optional| +|button\_text|[string](/API_docs/types/string.html) | Text of the [keyboardButtonSimpleWebView](../constructors/keyboardButtonSimpleWebView.html) that was pressed to open the web app. | Optional| +|data|[string](/API_docs/types/string.html) | Data to relay to the bot, obtained from a [`web_app_data_send` JS event](https://core.telegram.org/api/web-events#web-app-data-send). | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->sendWebViewData(bot: $InputUser, button_text: 'string', data: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.sendWebViewResultMessage.md b/docs/API_docs/methods/messages.sendWebViewResultMessage.md new file mode 100644 index 0000000000..93c0d062e9 --- /dev/null +++ b/docs/API_docs/methods/messages.sendWebViewResultMessage.md @@ -0,0 +1,43 @@ +--- +title: "messages.sendWebViewResultMessage" +description: "Terminate webview interaction started with [messages.requestWebView](../methods/messages.requestWebView.html), sending the specified message to the chat on behalf of the user." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_sendWebViewResultMessage.html +--- +# Method: messages.sendWebViewResultMessage +[Back to methods index](index.html) + + + +Terminate webview interaction started with [messages.requestWebView](../methods/messages.requestWebView.html), sending the specified message to the chat on behalf of the user. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|bot\_query\_id|[string](/API_docs/types/string.html) | Webview interaction ID obtained from [messages.requestWebView](../methods/messages.requestWebView.html) | Optional| +|result|[InputBotInlineResult](/API_docs/types/InputBotInlineResult.html) | Message to send | Yes| + + +### Return type: [WebViewMessageSent](/API_docs/types/WebViewMessageSent.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$WebViewMessageSent = $MadelineProto->messages->sendWebViewResultMessage(bot_query_id: 'string', result: $InputBotInlineResult, ); +``` + diff --git a/docs/API_docs/methods/messages.setBotCallbackAnswer.md b/docs/API_docs/methods/messages.setBotCallbackAnswer.md new file mode 100644 index 0000000000..ef0a57e57f --- /dev/null +++ b/docs/API_docs/methods/messages.setBotCallbackAnswer.md @@ -0,0 +1,52 @@ +--- +title: "messages.setBotCallbackAnswer" +description: "Set the callback answer to a user button press (bots only)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_setBotCallbackAnswer.html +--- +# Method: messages.setBotCallbackAnswer +[Back to methods index](index.html) + + + +Set the callback answer to a user button press (bots only) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|alert|[Bool](/API_docs/types/Bool.html) | Whether to show the message as a popup instead of a toast notification | Optional| +|query\_id|[long](/API_docs/types/long.html) | Query ID | Yes| +|message|[string](/API_docs/types/string.html) | Popup to show | Optional| +|url|[string](/API_docs/types/string.html) | URL to open | Optional| +|cache\_time|[int](/API_docs/types/int.html) | Cache validity | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->setBotCallbackAnswer(alert: $Bool, query_id: $long, message: 'string', url: 'string', cache_time: $int, ); +``` + + +## Return value + +If the length of the provided message is bigger than 4096, the message will be split in chunks and the method will be called multiple times, with the same parameters (except for the message), and an array of [Bool](../types/Bool.html) will be returned instead. + + diff --git a/docs/API_docs/methods/messages.setBotPrecheckoutResults.md b/docs/API_docs/methods/messages.setBotPrecheckoutResults.md new file mode 100644 index 0000000000..08d3555e3b --- /dev/null +++ b/docs/API_docs/methods/messages.setBotPrecheckoutResults.md @@ -0,0 +1,46 @@ +--- +title: "messages.setBotPrecheckoutResults" +description: "Once the user has confirmed their payment and shipping details, the bot receives an [updateBotPrecheckoutQuery](../constructors/updateBotPrecheckoutQuery.html) update. " +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_setBotPrecheckoutResults.html +--- +# Method: messages.setBotPrecheckoutResults +[Back to methods index](index.html) + + + +Once the user has confirmed their payment and shipping details, the bot receives an [updateBotPrecheckoutQuery](../constructors/updateBotPrecheckoutQuery.html) update. +Use this method to respond to such pre-checkout queries. +**Note**: Telegram must receive an answer within 10 seconds after the pre-checkout query was sent. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|success|[Bool](/API_docs/types/Bool.html) | Set this flag if everything is alright (goods are available, etc.) and the bot is ready to proceed with the order, otherwise do not set it, and set the `error` field, instead | Optional| +|query\_id|[long](/API_docs/types/long.html) | Unique identifier for the query to be answered | Yes| +|error|[string](/API_docs/types/string.html) | Required if the `success` isn't set. Error message in human readable form that explains the reason for failure to proceed with the checkout (e.g. "Sorry, somebody just bought the last of our amazing black T-shirts while you were busy filling out your payment details. Please choose a different color or garment!"). Telegram will display this message to the user. | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->setBotPrecheckoutResults(success: $Bool, query_id: $long, error: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.setBotShippingResults.md b/docs/API_docs/methods/messages.setBotShippingResults.md new file mode 100644 index 0000000000..a0b640c1d3 --- /dev/null +++ b/docs/API_docs/methods/messages.setBotShippingResults.md @@ -0,0 +1,44 @@ +--- +title: "messages.setBotShippingResults" +description: "If you sent an invoice requesting a shipping address and the parameter is\_flexible was specified, the bot will receive an [updateBotShippingQuery](../constructors/updateBotShippingQuery.html) update. Use this method to reply to shipping queries." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_setBotShippingResults.html +--- +# Method: messages.setBotShippingResults +[Back to methods index](index.html) + + + +If you sent an invoice requesting a shipping address and the parameter is\_flexible was specified, the bot will receive an [updateBotShippingQuery](../constructors/updateBotShippingQuery.html) update. Use this method to reply to shipping queries. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|query\_id|[long](/API_docs/types/long.html) | Unique identifier for the query to be answered | Yes| +|error|[string](/API_docs/types/string.html) | Error message in human readable form that explains why it is impossible to complete the order (e.g. "Sorry, delivery to your desired address is unavailable"). Telegram will display this message to the user. | Optional| +|shipping\_options|Array of [ShippingOption](/API_docs/types/ShippingOption.html) | A vector of available shipping options. | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->setBotShippingResults(query_id: $long, error: 'string', shipping_options: [$ShippingOption, $ShippingOption], ); +``` + diff --git a/docs/API_docs/methods/messages.setChatAvailableReactions.md b/docs/API_docs/methods/messages.setChatAvailableReactions.md new file mode 100644 index 0000000000..5b61499679 --- /dev/null +++ b/docs/API_docs/methods/messages.setChatAvailableReactions.md @@ -0,0 +1,44 @@ +--- +title: "messages.setChatAvailableReactions" +description: "Change the set of [message reactions »](https://core.telegram.org/api/reactions) that can be used in a certain group, supergroup or channel" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_setChatAvailableReactions.html +--- +# Method: messages.setChatAvailableReactions +[Back to methods index](index.html) + + + +Change the set of [message reactions »](https://core.telegram.org/api/reactions) that can be used in a certain group, supergroup or channel + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Group where to apply changes | Optional| +|available\_reactions|[ChatReactions](/API_docs/types/ChatReactions.html) | Allowed reaction emojis | Yes| +|reactions\_limit|[int](/API_docs/types/int.html) | | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->setChatAvailableReactions(peer: $InputPeer, available_reactions: $ChatReactions, reactions_limit: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.setChatTheme.md b/docs/API_docs/methods/messages.setChatTheme.md new file mode 100644 index 0000000000..9be51338b1 --- /dev/null +++ b/docs/API_docs/methods/messages.setChatTheme.md @@ -0,0 +1,43 @@ +--- +title: "messages.setChatTheme" +description: "Change the chat theme of a certain chat" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_setChatTheme.html +--- +# Method: messages.setChatTheme +[Back to methods index](index.html) + + + +Change the chat theme of a certain chat + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Private chat where to change theme | Optional| +|emoticon|[string](/API_docs/types/string.html) | Emoji, identifying a specific chat theme; a list of chat themes can be fetched using [account.getChatThemes](../methods/account.getChatThemes.html) | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->setChatTheme(peer: $InputPeer, emoticon: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.setChatWallPaper.md b/docs/API_docs/methods/messages.setChatWallPaper.md new file mode 100644 index 0000000000..af21adba4f --- /dev/null +++ b/docs/API_docs/methods/messages.setChatWallPaper.md @@ -0,0 +1,47 @@ +--- +title: "messages.setChatWallPaper" +description: "Set a custom [wallpaper »](https://core.telegram.org/api/wallpapers) in a specific private chat with another user." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_setChatWallPaper.html +--- +# Method: messages.setChatWallPaper +[Back to methods index](index.html) + + + +Set a custom [wallpaper »](https://core.telegram.org/api/wallpapers) in a specific private chat with another user. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|for\_both|[Bool](/API_docs/types/Bool.html) | Only for [Premium](https://core.telegram.org/api/premium) users, sets the specified wallpaper for both users of the chat, without requiring confirmation from the other user. | Optional| +|revert|[Bool](/API_docs/types/Bool.html) | If we don't like the new wallpaper the other user of the chat has chosen for us using the `for_both` flag, we can re-set our previous wallpaper just on our side using this flag. | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The private chat where the wallpaper will be set | Optional| +|wallpaper|[InputWallPaper](/API_docs/types/InputWallPaper.html) | The [wallpaper »](https://core.telegram.org/api/wallpapers), obtained as described in the [wallpaper documentation »](https://core.telegram.org/api/wallpapers#uploading-wallpapers); must **not** be provided when installing a wallpaper obtained from a [messageActionSetChatWallPaper](../constructors/messageActionSetChatWallPaper.html) service message (`id` must be provided, instead). | Optional| +|settings|[WallPaperSettings](/API_docs/types/WallPaperSettings.html) | Wallpaper settings, obtained as described in the [wallpaper documentation »](https://core.telegram.org/api/wallpapers#uploading-wallpapers) or from [messageActionSetChatWallPaper](../constructors/messageActionSetChatWallPaper.html).`wallpaper`.`settings`. | Optional| +|id|[int](/API_docs/types/int.html) | If the wallpaper was obtained from a [messageActionSetChatWallPaper](../constructors/messageActionSetChatWallPaper.html) service message, must contain the ID of that message. | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->setChatWallPaper(for_both: $Bool, revert: $Bool, peer: $InputPeer, wallpaper: $InputWallPaper, settings: $WallPaperSettings, id: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.setDefaultHistoryTTL.md b/docs/API_docs/methods/messages.setDefaultHistoryTTL.md new file mode 100644 index 0000000000..7d0f725f89 --- /dev/null +++ b/docs/API_docs/methods/messages.setDefaultHistoryTTL.md @@ -0,0 +1,42 @@ +--- +title: "messages.setDefaultHistoryTTL" +description: "Changes the default value of the Time-To-Live setting, applied to all new chats." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_setDefaultHistoryTTL.html +--- +# Method: messages.setDefaultHistoryTTL +[Back to methods index](index.html) + + + +Changes the default value of the Time-To-Live setting, applied to all new chats. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|period|[int](/API_docs/types/int.html) | The new default Time-To-Live of all messages sent in new chats. | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->setDefaultHistoryTTL(period: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.setDefaultReaction.md b/docs/API_docs/methods/messages.setDefaultReaction.md new file mode 100644 index 0000000000..3bc51498af --- /dev/null +++ b/docs/API_docs/methods/messages.setDefaultReaction.md @@ -0,0 +1,42 @@ +--- +title: "messages.setDefaultReaction" +description: "Change default emoji reaction to use in the quick reaction menu: the value is synced across devices and can be fetched using [help.getConfig, `reactions_default` field](../methods/help.getConfig.html)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_setDefaultReaction.html +--- +# Method: messages.setDefaultReaction +[Back to methods index](index.html) + + + +Change default emoji reaction to use in the quick reaction menu: the value is synced across devices and can be fetched using [help.getConfig, `reactions_default` field](../methods/help.getConfig.html). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|reaction|[Reaction](/API_docs/types/Reaction.html) | New emoji reaction | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->setDefaultReaction(reaction: $Reaction, ); +``` + diff --git a/docs/API_docs/methods/messages.setEncryptedTyping.md b/docs/API_docs/methods/messages.setEncryptedTyping.md new file mode 100644 index 0000000000..70af896e03 --- /dev/null +++ b/docs/API_docs/methods/messages.setEncryptedTyping.md @@ -0,0 +1,43 @@ +--- +title: "messages.setEncryptedTyping" +description: "Send typing event by the current user to a secret chat." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_setEncryptedTyping.html +--- +# Method: messages.setEncryptedTyping +[Back to methods index](index.html) + + + +Send typing event by the current user to a secret chat. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Secret chat ID, Update, EncryptedMessage or InputEncryptedChat](/API_docs/types/InputEncryptedChat.html) | Secret chat ID | Yes| +|typing|[Bool](/API_docs/types/Bool.html) | Typing.
**Possible values**:
[(boolTrue)](../constructors/boolTrue.html), if the user started typing and more than **5 seconds** have passed since the last request
[(boolFalse)](../constructors/boolFalse.html), if the user stopped typing | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->setEncryptedTyping(peer: $InputEncryptedChat, typing: $Bool, ); +``` + diff --git a/docs/API_docs/methods/messages.setGameScore.md b/docs/API_docs/methods/messages.setGameScore.md new file mode 100644 index 0000000000..a5fc369ba5 --- /dev/null +++ b/docs/API_docs/methods/messages.setGameScore.md @@ -0,0 +1,47 @@ +--- +title: "messages.setGameScore" +description: "Use this method to set the score of the specified user in a game sent as a normal message (bots only)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_setGameScore.html +--- +# Method: messages.setGameScore +[Back to methods index](index.html) + + + +Use this method to set the score of the specified user in a game sent as a normal message (bots only). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|edit\_message|[Bool](/API_docs/types/Bool.html) | Set this flag if the game message should be automatically edited to include the current scoreboard | Optional| +|force|[Bool](/API_docs/types/Bool.html) | Set this flag if the high score is allowed to decrease. This can be useful when fixing mistakes or banning cheaters | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Unique identifier of target chat | Optional| +|id|[int](/API_docs/types/int.html) | Identifier of the sent message | Optional| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | User identifier | Optional| +|score|[int](/API_docs/types/int.html) | New score | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->setGameScore(edit_message: $Bool, force: $Bool, peer: $InputPeer, id: $int, user_id: $InputUser, score: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.setHistoryTTL.md b/docs/API_docs/methods/messages.setHistoryTTL.md new file mode 100644 index 0000000000..e629645fd9 --- /dev/null +++ b/docs/API_docs/methods/messages.setHistoryTTL.md @@ -0,0 +1,43 @@ +--- +title: "messages.setHistoryTTL" +description: "Set maximum Time-To-Live of all messages in the specified chat" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_setHistoryTTL.html +--- +# Method: messages.setHistoryTTL +[Back to methods index](index.html) + + + +Set maximum Time-To-Live of all messages in the specified chat + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The dialog | Optional| +|period|[int](/API_docs/types/int.html) | Automatically delete all messages sent in the chat after this many seconds | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->setHistoryTTL(peer: $InputPeer, period: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.setInlineBotResults.md b/docs/API_docs/methods/messages.setInlineBotResults.md new file mode 100644 index 0000000000..c7444e7248 --- /dev/null +++ b/docs/API_docs/methods/messages.setInlineBotResults.md @@ -0,0 +1,49 @@ +--- +title: "messages.setInlineBotResults" +description: "Answer an inline query, for bots only" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_setInlineBotResults.html +--- +# Method: messages.setInlineBotResults +[Back to methods index](index.html) + + + +Answer an inline query, for bots only + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|gallery|[Bool](/API_docs/types/Bool.html) | Set this flag if the results are composed of media files | Optional| +|private|[Bool](/API_docs/types/Bool.html) | Set this flag if results may be cached on the server side only for the user that sent the query. By default, results may be returned to any user who sends the same query | Optional| +|query\_id|[long](/API_docs/types/long.html) | Unique identifier for the answered query | Yes| +|results|Array of [InputBotInlineResult](/API_docs/types/InputBotInlineResult.html) | Vector of results for the inline query | Yes| +|cache\_time|[int](/API_docs/types/int.html) | The maximum amount of time in seconds that the result of the inline query may be cached on the server. Defaults to 300. | Optional| +|next\_offset|[string](/API_docs/types/string.html) | Pass the offset that a client should send in the next query with the same text to receive more results. Pass an empty string if there are no more results or if you don't support pagination. Offset length can't exceed 64 bytes. | Optional| +|switch\_pm|[InlineBotSwitchPM](/API_docs/types/InlineBotSwitchPM.html) | If passed, clients will display a button on top of the remaining inline result list with the specified text, that switches the user to a private chat with the bot and sends the bot a start message with a certain parameter. | Optional| +|switch\_webview|[InlineBotWebView](/API_docs/types/InlineBotWebView.html) | If passed, clients will display a button on top of the remaining inline result list with the specified text, that switches the user to the specified [inline mode mini app](https://core.telegram.org/api/bots/webapps#inline-mode-mini-apps). | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->setInlineBotResults(gallery: $Bool, private: $Bool, query_id: $long, results: [$InputBotInlineResult, $InputBotInlineResult], cache_time: $int, next_offset: 'string', switch_pm: $InlineBotSwitchPM, switch_webview: $InlineBotWebView, ); +``` + diff --git a/docs/API_docs/methods/messages.setInlineGameScore.md b/docs/API_docs/methods/messages.setInlineGameScore.md new file mode 100644 index 0000000000..70b7c87ff9 --- /dev/null +++ b/docs/API_docs/methods/messages.setInlineGameScore.md @@ -0,0 +1,46 @@ +--- +title: "messages.setInlineGameScore" +description: "Use this method to set the score of the specified user in a game sent as an inline message (bots only)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_setInlineGameScore.html +--- +# Method: messages.setInlineGameScore +[Back to methods index](index.html) + + + +Use this method to set the score of the specified user in a game sent as an inline message (bots only). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|edit\_message|[Bool](/API_docs/types/Bool.html) | Set this flag if the game message should be automatically edited to include the current scoreboard | Optional| +|force|[Bool](/API_docs/types/Bool.html) | Set this flag if the high score is allowed to decrease. This can be useful when fixing mistakes or banning cheaters | Optional| +|id|[InputBotInlineMessageID](/API_docs/types/InputBotInlineMessageID.html) | ID of the inline message | Yes| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | User identifier | Optional| +|score|[int](/API_docs/types/int.html) | New score | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->setInlineGameScore(edit_message: $Bool, force: $Bool, id: $InputBotInlineMessageID, user_id: $InputUser, score: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.setTyping.md b/docs/API_docs/methods/messages.setTyping.md new file mode 100644 index 0000000000..3efcf802cf --- /dev/null +++ b/docs/API_docs/methods/messages.setTyping.md @@ -0,0 +1,44 @@ +--- +title: "messages.setTyping" +description: "Sends a current user typing event (see [SendMessageAction](../types/SendMessageAction.html) for all event types) to a conversation partner or group." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_setTyping.html +--- +# Method: messages.setTyping +[Back to methods index](index.html) + + + +Sends a current user typing event (see [SendMessageAction](../types/SendMessageAction.html) for all event types) to a conversation partner or group. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Target user or group | Optional| +|top\_msg\_id|[int](/API_docs/types/int.html) | [Topic ID](https://core.telegram.org/api/threads) | Optional| +|action|[SendMessageAction](/API_docs/types/SendMessageAction.html) | Type of action | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->setTyping(peer: $InputPeer, top_msg_id: $int, action: $SendMessageAction, ); +``` + diff --git a/docs/API_docs/methods/messages.startBot.md b/docs/API_docs/methods/messages.startBot.md new file mode 100644 index 0000000000..a45a37eb77 --- /dev/null +++ b/docs/API_docs/methods/messages.startBot.md @@ -0,0 +1,44 @@ +--- +title: "messages.startBot" +description: "Start a conversation with a bot using a [deep linking parameter](https://core.telegram.org/api/links#bot-links)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_startBot.html +--- +# Method: messages.startBot +[Back to methods index](index.html) + + + +Start a conversation with a bot using a [deep linking parameter](https://core.telegram.org/api/links#bot-links) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|bot|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | The bot | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The chat where to start the bot, can be the bot's private chat or a group | Optional| +|start\_param|[string](/API_docs/types/string.html) | [Deep linking parameter](https://core.telegram.org/api/links#bot-links) | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->startBot(bot: $InputUser, peer: $InputPeer, start_param: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.startHistoryImport.md b/docs/API_docs/methods/messages.startHistoryImport.md new file mode 100644 index 0000000000..7f1233e315 --- /dev/null +++ b/docs/API_docs/methods/messages.startHistoryImport.md @@ -0,0 +1,44 @@ +--- +title: "messages.startHistoryImport" +description: "Complete the [history import process](https://core.telegram.org/api/import), importing all messages into the chat. " +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_startHistoryImport.html +--- +# Method: messages.startHistoryImport +[Back to methods index](index.html) + + + +Complete the [history import process](https://core.telegram.org/api/import), importing all messages into the chat. +To be called only after initializing the import with [messages.initHistoryImport](../methods/messages.initHistoryImport.html) and uploading all files using [messages.uploadImportedMedia](../methods/messages.uploadImportedMedia.html). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The Telegram chat where the messages should be [imported, click here for more info »](https://core.telegram.org/api/import) | Optional| +|import\_id|[long](/API_docs/types/long.html) | Identifier of a history import session, returned by [messages.initHistoryImport](../methods/messages.initHistoryImport.html). | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->startHistoryImport(peer: $InputPeer, import_id: $long, ); +``` + diff --git a/docs/API_docs/methods/messages.toggleBotInAttachMenu.md b/docs/API_docs/methods/messages.toggleBotInAttachMenu.md new file mode 100644 index 0000000000..00386e9cf9 --- /dev/null +++ b/docs/API_docs/methods/messages.toggleBotInAttachMenu.md @@ -0,0 +1,44 @@ +--- +title: "messages.toggleBotInAttachMenu" +description: "Enable or disable [web bot attachment menu »](https://core.telegram.org/api/bots/attach)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_toggleBotInAttachMenu.html +--- +# Method: messages.toggleBotInAttachMenu +[Back to methods index](index.html) + + + +Enable or disable [web bot attachment menu »](https://core.telegram.org/api/bots/attach) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|write\_allowed|[Bool](/API_docs/types/Bool.html) | Whether the user authorizes the bot to write messages to them, if requested by [attachMenuBot](../constructors/attachMenuBot.html).`request_write_access` | Optional| +|bot|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Bot ID | Optional| +|enabled|[Bool](/API_docs/types/Bool.html) | Toggle | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->toggleBotInAttachMenu(write_allowed: $Bool, bot: $InputUser, enabled: $Bool, ); +``` + diff --git a/docs/API_docs/methods/messages.toggleDialogFilterTags.md b/docs/API_docs/methods/messages.toggleDialogFilterTags.md new file mode 100644 index 0000000000..fab64cfdcd --- /dev/null +++ b/docs/API_docs/methods/messages.toggleDialogFilterTags.md @@ -0,0 +1,40 @@ +--- +title: "messages.toggleDialogFilterTags" +description: "messages.toggleDialogFilterTags parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_toggleDialogFilterTags.html +--- +# Method: messages.toggleDialogFilterTags +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|enabled|[Bool](/API_docs/types/Bool.html) | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->toggleDialogFilterTags(enabled: $Bool, ); +``` + diff --git a/docs/API_docs/methods/messages.toggleDialogPin.md b/docs/API_docs/methods/messages.toggleDialogPin.md new file mode 100644 index 0000000000..d164c170df --- /dev/null +++ b/docs/API_docs/methods/messages.toggleDialogPin.md @@ -0,0 +1,43 @@ +--- +title: "messages.toggleDialogPin" +description: "Pin/unpin a dialog" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_toggleDialogPin.html +--- +# Method: messages.toggleDialogPin +[Back to methods index](index.html) + + + +Pin/unpin a dialog + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|pinned|[Bool](/API_docs/types/Bool.html) | Whether to pin or unpin the dialog | Optional| +|peer|[InputDialogPeer](/API_docs/types/InputDialogPeer.html) | The dialog to pin | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->toggleDialogPin(pinned: $Bool, peer: $InputDialogPeer, ); +``` + diff --git a/docs/API_docs/methods/messages.toggleNoForwards.md b/docs/API_docs/methods/messages.toggleNoForwards.md new file mode 100644 index 0000000000..bbe7d4b7af --- /dev/null +++ b/docs/API_docs/methods/messages.toggleNoForwards.md @@ -0,0 +1,43 @@ +--- +title: "messages.toggleNoForwards" +description: "Enable or disable [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) on a channel or chat" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_toggleNoForwards.html +--- +# Method: messages.toggleNoForwards +[Back to methods index](index.html) + + + +Enable or disable [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) on a channel or chat + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The chat or channel | Optional| +|enabled|[Bool](/API_docs/types/Bool.html) | Enable or disable content protection | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->toggleNoForwards(peer: $InputPeer, enabled: $Bool, ); +``` + diff --git a/docs/API_docs/methods/messages.togglePeerTranslations.md b/docs/API_docs/methods/messages.togglePeerTranslations.md new file mode 100644 index 0000000000..feade248e6 --- /dev/null +++ b/docs/API_docs/methods/messages.togglePeerTranslations.md @@ -0,0 +1,43 @@ +--- +title: "messages.togglePeerTranslations" +description: "Show or hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_togglePeerTranslations.html +--- +# Method: messages.togglePeerTranslations +[Back to methods index](index.html) + + + +Show or hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|disabled|[Bool](/API_docs/types/Bool.html) | Whether to disable or enable the real-time chat translation popup | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The peer | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->togglePeerTranslations(disabled: $Bool, peer: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/messages.toggleSavedDialogPin.md b/docs/API_docs/methods/messages.toggleSavedDialogPin.md new file mode 100644 index 0000000000..82f2ef9f60 --- /dev/null +++ b/docs/API_docs/methods/messages.toggleSavedDialogPin.md @@ -0,0 +1,43 @@ +--- +title: "messages.toggleSavedDialogPin" +description: "Pin or unpin a [saved message dialog »](https://core.telegram.org/api/saved-messages)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_toggleSavedDialogPin.html +--- +# Method: messages.toggleSavedDialogPin +[Back to methods index](index.html) + + + +Pin or unpin a [saved message dialog »](https://core.telegram.org/api/saved-messages). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|pinned|[Bool](/API_docs/types/Bool.html) | Whether to pin or unpin the dialog | Optional| +|peer|[InputDialogPeer](/API_docs/types/InputDialogPeer.html) | The dialog to pin | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->toggleSavedDialogPin(pinned: $Bool, peer: $InputDialogPeer, ); +``` + diff --git a/docs/API_docs/methods/messages.toggleStickerSets.md b/docs/API_docs/methods/messages.toggleStickerSets.md new file mode 100644 index 0000000000..0cb7a97c83 --- /dev/null +++ b/docs/API_docs/methods/messages.toggleStickerSets.md @@ -0,0 +1,45 @@ +--- +title: "messages.toggleStickerSets" +description: "Apply changes to multiple stickersets" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_toggleStickerSets.html +--- +# Method: messages.toggleStickerSets +[Back to methods index](index.html) + + + +Apply changes to multiple stickersets + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|uninstall|[Bool](/API_docs/types/Bool.html) | Uninstall the specified stickersets | Optional| +|archive|[Bool](/API_docs/types/Bool.html) | Archive the specified stickersets | Optional| +|unarchive|[Bool](/API_docs/types/Bool.html) | Unarchive the specified stickersets | Optional| +|stickersets|Array of [InputStickerSet](/API_docs/types/InputStickerSet.html) | Stickersets to act upon | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->toggleStickerSets(uninstall: $Bool, archive: $Bool, unarchive: $Bool, stickersets: [$InputStickerSet, $InputStickerSet], ); +``` + diff --git a/docs/API_docs/methods/messages.transcribeAudio.md b/docs/API_docs/methods/messages.transcribeAudio.md new file mode 100644 index 0000000000..ac3b44d62b --- /dev/null +++ b/docs/API_docs/methods/messages.transcribeAudio.md @@ -0,0 +1,43 @@ +--- +title: "messages.transcribeAudio" +description: "[Transcribe voice message](https://core.telegram.org/api/transcribe)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_transcribeAudio.html +--- +# Method: messages.transcribeAudio +[Back to methods index](index.html) + + + +[Transcribe voice message](https://core.telegram.org/api/transcribe) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer ID where the voice message was sent | Optional| +|msg\_id|[int](/API_docs/types/int.html) | Voice message ID | Optional| + + +### Return type: [messages.TranscribedAudio](/API_docs/types/messages.TranscribedAudio.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_TranscribedAudio = $MadelineProto->messages->transcribeAudio(peer: $InputPeer, msg_id: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.translateText.md b/docs/API_docs/methods/messages.translateText.md new file mode 100644 index 0000000000..ae90cd0848 --- /dev/null +++ b/docs/API_docs/methods/messages.translateText.md @@ -0,0 +1,47 @@ +--- +title: "messages.translateText" +description: "Translate a given text." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_translateText.html +--- +# Method: messages.translateText +[Back to methods index](index.html) + + + +Translate a given text. + +[Styled text entities](https://core.telegram.org/api/entities) will only be preserved for [Telegram Premium](https://core.telegram.org/api/premium) users. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | If the text is a chat message, the peer ID | Optional| +|id|Array of [int](/API_docs/types/int.html) | A list of message IDs to translate | Optional| +|text|Array of [TextWithEntities](/API_docs/types/TextWithEntities.html) | A list of styled messages to translate | Optional| +|to\_lang|[string](/API_docs/types/string.html) | Two-letter ISO 639-1 language code of the language to which the message is translated | Optional| + + +### Return type: [messages.TranslatedText](/API_docs/types/messages.TranslatedText.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_TranslatedText = $MadelineProto->messages->translateText(peer: $InputPeer, id: [$int, $int], text: [$TextWithEntities, $TextWithEntities], to_lang: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.uninstallStickerSet.md b/docs/API_docs/methods/messages.uninstallStickerSet.md new file mode 100644 index 0000000000..ec4752ef56 --- /dev/null +++ b/docs/API_docs/methods/messages.uninstallStickerSet.md @@ -0,0 +1,42 @@ +--- +title: "messages.uninstallStickerSet" +description: "Uninstall a stickerset" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_uninstallStickerSet.html +--- +# Method: messages.uninstallStickerSet +[Back to methods index](index.html) + + + +Uninstall a stickerset + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|stickerset|[InputStickerSet](/API_docs/types/InputStickerSet.html) | The stickerset to uninstall | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->uninstallStickerSet(stickerset: $InputStickerSet, ); +``` + diff --git a/docs/API_docs/methods/messages.unpinAllMessages.md b/docs/API_docs/methods/messages.unpinAllMessages.md new file mode 100644 index 0000000000..1d37802f5d --- /dev/null +++ b/docs/API_docs/methods/messages.unpinAllMessages.md @@ -0,0 +1,43 @@ +--- +title: "messages.unpinAllMessages" +description: "[Unpin](https://core.telegram.org/api/pin) all pinned messages" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_unpinAllMessages.html +--- +# Method: messages.unpinAllMessages +[Back to methods index](index.html) + + + +[Unpin](https://core.telegram.org/api/pin) all pinned messages + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Chat where to unpin | Optional| +|top\_msg\_id|[int](/API_docs/types/int.html) | [Forum topic](https://core.telegram.org/api/forum#forum-topics) where to unpin | Optional| + + +### Return type: [messages.AffectedHistory](/API_docs/types/messages.AffectedHistory.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_AffectedHistory = $MadelineProto->messages->unpinAllMessages(peer: $InputPeer, top_msg_id: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.updateDialogFilter.md b/docs/API_docs/methods/messages.updateDialogFilter.md new file mode 100644 index 0000000000..c3550d27e5 --- /dev/null +++ b/docs/API_docs/methods/messages.updateDialogFilter.md @@ -0,0 +1,43 @@ +--- +title: "messages.updateDialogFilter" +description: "Update [folder](https://core.telegram.org/api/folders)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_updateDialogFilter.html +--- +# Method: messages.updateDialogFilter +[Back to methods index](index.html) + + + +Update [folder](https://core.telegram.org/api/folders) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|[int](/API_docs/types/int.html) | [Folder](https://core.telegram.org/api/folders) ID | Optional| +|filter|[DialogFilter](/API_docs/types/DialogFilter.html) | [Folder](https://core.telegram.org/api/folders) info | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->updateDialogFilter(id: $int, filter: $DialogFilter, ); +``` + diff --git a/docs/API_docs/methods/messages.updateDialogFiltersOrder.md b/docs/API_docs/methods/messages.updateDialogFiltersOrder.md new file mode 100644 index 0000000000..dd087522a8 --- /dev/null +++ b/docs/API_docs/methods/messages.updateDialogFiltersOrder.md @@ -0,0 +1,42 @@ +--- +title: "messages.updateDialogFiltersOrder" +description: "Reorder [folders](https://core.telegram.org/api/folders)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_updateDialogFiltersOrder.html +--- +# Method: messages.updateDialogFiltersOrder +[Back to methods index](index.html) + + + +Reorder [folders](https://core.telegram.org/api/folders) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|order|Array of [int](/API_docs/types/int.html) | New [folder](https://core.telegram.org/api/folders) order | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->updateDialogFiltersOrder(order: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/messages.updatePinnedMessage.md b/docs/API_docs/methods/messages.updatePinnedMessage.md new file mode 100644 index 0000000000..e69be46342 --- /dev/null +++ b/docs/API_docs/methods/messages.updatePinnedMessage.md @@ -0,0 +1,46 @@ +--- +title: "messages.updatePinnedMessage" +description: "Pin a message" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_updatePinnedMessage.html +--- +# Method: messages.updatePinnedMessage +[Back to methods index](index.html) + + + +Pin a message + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|silent|[Bool](/API_docs/types/Bool.html) | Pin the message silently, without triggering a notification | Optional| +|unpin|[Bool](/API_docs/types/Bool.html) | Whether the message should unpinned or pinned | Optional| +|pm\_oneside|[Bool](/API_docs/types/Bool.html) | Whether the message should only be pinned on the local side of a one-to-one chat | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The peer where to pin the message | Optional| +|id|[int](/API_docs/types/int.html) | The message to pin or unpin | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->messages->updatePinnedMessage(silent: $Bool, unpin: $Bool, pm_oneside: $Bool, peer: $InputPeer, id: $int, ); +``` + diff --git a/docs/API_docs/methods/messages.updateSavedReactionTag.md b/docs/API_docs/methods/messages.updateSavedReactionTag.md new file mode 100644 index 0000000000..2044f0e6ca --- /dev/null +++ b/docs/API_docs/methods/messages.updateSavedReactionTag.md @@ -0,0 +1,41 @@ +--- +title: "messages.updateSavedReactionTag" +description: "messages.updateSavedReactionTag parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_updateSavedReactionTag.html +--- +# Method: messages.updateSavedReactionTag +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|reaction|[Reaction](/API_docs/types/Reaction.html) | Optional| +|title|[string](/API_docs/types/string.html) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->messages->updateSavedReactionTag(reaction: $Reaction, title: 'string', ); +``` + diff --git a/docs/API_docs/methods/messages.uploadEncryptedFile.md b/docs/API_docs/methods/messages.uploadEncryptedFile.md new file mode 100644 index 0000000000..814f93bb5d --- /dev/null +++ b/docs/API_docs/methods/messages.uploadEncryptedFile.md @@ -0,0 +1,43 @@ +--- +title: "messages.uploadEncryptedFile" +description: "Upload encrypted file and associate it to a secret chat" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_uploadEncryptedFile.html +--- +# Method: messages.uploadEncryptedFile +[Back to methods index](index.html) + + + +Upload encrypted file and associate it to a secret chat + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Secret chat ID, Update, EncryptedMessage or InputEncryptedChat](/API_docs/types/InputEncryptedChat.html) | The secret chat to associate the file to | Yes| +|file|[File path or InputEncryptedFile](/API_docs/types/InputEncryptedFile.html) | The file | Optional| + + +### Return type: [EncryptedFile](/API_docs/types/EncryptedFile.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$EncryptedFile = $MadelineProto->messages->uploadEncryptedFile(peer: $InputEncryptedChat, file: $InputEncryptedFile, ); +``` + diff --git a/docs/API_docs/methods/messages.uploadImportedMedia.md b/docs/API_docs/methods/messages.uploadImportedMedia.md new file mode 100644 index 0000000000..72962c2f17 --- /dev/null +++ b/docs/API_docs/methods/messages.uploadImportedMedia.md @@ -0,0 +1,45 @@ +--- +title: "messages.uploadImportedMedia" +description: "Upload a media file associated with an [imported chat, click here for more info »](https://core.telegram.org/api/import)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_uploadImportedMedia.html +--- +# Method: messages.uploadImportedMedia +[Back to methods index](index.html) + + + +Upload a media file associated with an [imported chat, click here for more info »](https://core.telegram.org/api/import). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The Telegram chat where the media will be imported | Optional| +|import\_id|[long](/API_docs/types/long.html) | Identifier of a [history import session](https://core.telegram.org/api/import), returned by [messages.initHistoryImport](../methods/messages.initHistoryImport.html) | Yes| +|file\_name|[string](/API_docs/types/string.html) | File name | Optional| +|media|[MessageMedia, Update, Message or InputMedia](/API_docs/types/InputMedia.html) | Media metadata | Optional| + + +### Return type: [MessageMedia](/API_docs/types/MessageMedia.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$MessageMedia = $MadelineProto->messages->uploadImportedMedia(peer: $InputPeer, import_id: $long, file_name: 'string', media: $InputMedia, ); +``` + diff --git a/docs/API_docs/methods/messages.uploadMedia.md b/docs/API_docs/methods/messages.uploadMedia.md new file mode 100644 index 0000000000..bcafbddfa3 --- /dev/null +++ b/docs/API_docs/methods/messages.uploadMedia.md @@ -0,0 +1,44 @@ +--- +title: "messages.uploadMedia" +description: "Upload a file and associate it to a chat (without actually sending it to the chat)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/messages_uploadMedia.html +--- +# Method: messages.uploadMedia +[Back to methods index](index.html) + + + +Upload a file and associate it to a chat (without actually sending it to the chat) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|business\_connection\_id|[string](/API_docs/types/string.html) | | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The chat, can be [inputPeerEmpty](../constructors/inputPeerEmpty.html) for bots and [inputPeerSelf](../constructors/inputPeerSelf.html) for users. | Optional| +|media|[MessageMedia, Update, Message or InputMedia](/API_docs/types/InputMedia.html) | File uploaded in chunks as described in [files »](https://core.telegram.org/api/files) | Optional| + + +### Return type: [MessageMedia](/API_docs/types/MessageMedia.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$MessageMedia = $MadelineProto->messages->uploadMedia(business_connection_id: 'string', peer: $InputPeer, media: $InputMedia, ); +``` + diff --git a/docs/API_docs/methods/payments.applyGiftCode.md b/docs/API_docs/methods/payments.applyGiftCode.md new file mode 100644 index 0000000000..f263da036e --- /dev/null +++ b/docs/API_docs/methods/payments.applyGiftCode.md @@ -0,0 +1,42 @@ +--- +title: "payments.applyGiftCode" +description: "Apply a [Telegram Premium giftcode »](https://core.telegram.org/api/giveaways)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/payments_applyGiftCode.html +--- +# Method: payments.applyGiftCode +[Back to methods index](index.html) + + + +Apply a [Telegram Premium giftcode »](https://core.telegram.org/api/giveaways) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|slug|[string](/API_docs/types/string.html) | The code to apply | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->payments->applyGiftCode(slug: 'string', ); +``` + diff --git a/docs/API_docs/methods/payments.assignAppStoreTransaction.md b/docs/API_docs/methods/payments.assignAppStoreTransaction.md new file mode 100644 index 0000000000..615e655ce4 --- /dev/null +++ b/docs/API_docs/methods/payments.assignAppStoreTransaction.md @@ -0,0 +1,43 @@ +--- +title: "payments.assignAppStoreTransaction" +description: "Informs server about a purchase made through the App Store: for official applications only." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/payments_assignAppStoreTransaction.html +--- +# Method: payments.assignAppStoreTransaction +[Back to methods index](index.html) + + + +Informs server about a purchase made through the App Store: for official applications only. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|receipt|[bytes](/API_docs/types/bytes.html) | Receipt | Yes| +|purpose|[InputStorePaymentPurpose](/API_docs/types/InputStorePaymentPurpose.html) | Payment purpose | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->payments->assignAppStoreTransaction(receipt: 'bytes', purpose: $InputStorePaymentPurpose, ); +``` + diff --git a/docs/API_docs/methods/payments.assignPlayMarketTransaction.md b/docs/API_docs/methods/payments.assignPlayMarketTransaction.md new file mode 100644 index 0000000000..3e85accfa7 --- /dev/null +++ b/docs/API_docs/methods/payments.assignPlayMarketTransaction.md @@ -0,0 +1,43 @@ +--- +title: "payments.assignPlayMarketTransaction" +description: "Informs server about a purchase made through the Play Store: for official applications only." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/payments_assignPlayMarketTransaction.html +--- +# Method: payments.assignPlayMarketTransaction +[Back to methods index](index.html) + + + +Informs server about a purchase made through the Play Store: for official applications only. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|receipt|[DataJSON](/API_docs/types/DataJSON.html) | Receipt | Yes| +|purpose|[InputStorePaymentPurpose](/API_docs/types/InputStorePaymentPurpose.html) | Payment purpose | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->payments->assignPlayMarketTransaction(receipt: $DataJSON, purpose: $InputStorePaymentPurpose, ); +``` + diff --git a/docs/API_docs/methods/payments.canPurchasePremium.md b/docs/API_docs/methods/payments.canPurchasePremium.md new file mode 100644 index 0000000000..034e41213b --- /dev/null +++ b/docs/API_docs/methods/payments.canPurchasePremium.md @@ -0,0 +1,42 @@ +--- +title: "payments.canPurchasePremium" +description: "Checks whether Telegram Premium purchase is possible. Must be called before in-store Premium purchase, official apps only." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/payments_canPurchasePremium.html +--- +# Method: payments.canPurchasePremium +[Back to methods index](index.html) + + + +Checks whether Telegram Premium purchase is possible. Must be called before in-store Premium purchase, official apps only. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|purpose|[InputStorePaymentPurpose](/API_docs/types/InputStorePaymentPurpose.html) | Payment purpose | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->payments->canPurchasePremium(purpose: $InputStorePaymentPurpose, ); +``` + diff --git a/docs/API_docs/methods/payments.checkGiftCode.md b/docs/API_docs/methods/payments.checkGiftCode.md new file mode 100644 index 0000000000..958e29b8e2 --- /dev/null +++ b/docs/API_docs/methods/payments.checkGiftCode.md @@ -0,0 +1,42 @@ +--- +title: "payments.checkGiftCode" +description: "Obtain information about a [Telegram Premium giftcode »](https://core.telegram.org/api/giveaways)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/payments_checkGiftCode.html +--- +# Method: payments.checkGiftCode +[Back to methods index](index.html) + + + +Obtain information about a [Telegram Premium giftcode »](https://core.telegram.org/api/giveaways) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|slug|[string](/API_docs/types/string.html) | The giftcode to check | Optional| + + +### Return type: [payments.CheckedGiftCode](/API_docs/types/payments.CheckedGiftCode.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$payments_CheckedGiftCode = $MadelineProto->payments->checkGiftCode(slug: 'string', ); +``` + diff --git a/docs/API_docs/methods/payments.clearSavedInfo.md b/docs/API_docs/methods/payments.clearSavedInfo.md new file mode 100644 index 0000000000..8633807c42 --- /dev/null +++ b/docs/API_docs/methods/payments.clearSavedInfo.md @@ -0,0 +1,43 @@ +--- +title: "payments.clearSavedInfo" +description: "Clear saved payment information" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/payments_clearSavedInfo.html +--- +# Method: payments.clearSavedInfo +[Back to methods index](index.html) + + + +Clear saved payment information + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|credentials|[Bool](/API_docs/types/Bool.html) | Remove saved payment credentials | Optional| +|info|[Bool](/API_docs/types/Bool.html) | Clear the last order settings saved by the user | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->payments->clearSavedInfo(credentials: $Bool, info: $Bool, ); +``` + diff --git a/docs/API_docs/methods/payments.exportInvoice.md b/docs/API_docs/methods/payments.exportInvoice.md new file mode 100644 index 0000000000..39c9179638 --- /dev/null +++ b/docs/API_docs/methods/payments.exportInvoice.md @@ -0,0 +1,42 @@ +--- +title: "payments.exportInvoice" +description: "Generate an [invoice deep link](https://core.telegram.org/api/links#invoice-links)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/payments_exportInvoice.html +--- +# Method: payments.exportInvoice +[Back to methods index](index.html) + + + +Generate an [invoice deep link](https://core.telegram.org/api/links#invoice-links) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|invoice\_media|[MessageMedia, Update, Message or InputMedia](/API_docs/types/InputMedia.html) | Invoice | Optional| + + +### Return type: [payments.ExportedInvoice](/API_docs/types/payments.ExportedInvoice.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$payments_ExportedInvoice = $MadelineProto->payments->exportInvoice(invoice_media: $InputMedia, ); +``` + diff --git a/docs/API_docs/methods/payments.getBankCardData.md b/docs/API_docs/methods/payments.getBankCardData.md new file mode 100644 index 0000000000..6650eb2955 --- /dev/null +++ b/docs/API_docs/methods/payments.getBankCardData.md @@ -0,0 +1,42 @@ +--- +title: "payments.getBankCardData" +description: "Get info about a credit card" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/payments_getBankCardData.html +--- +# Method: payments.getBankCardData +[Back to methods index](index.html) + + + +Get info about a credit card + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|number|[string](/API_docs/types/string.html) | Credit card number | Optional| + + +### Return type: [payments.BankCardData](/API_docs/types/payments.BankCardData.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$payments_BankCardData = $MadelineProto->payments->getBankCardData(number: 'string', ); +``` + diff --git a/docs/API_docs/methods/payments.getGiveawayInfo.md b/docs/API_docs/methods/payments.getGiveawayInfo.md new file mode 100644 index 0000000000..f0ae6ff69e --- /dev/null +++ b/docs/API_docs/methods/payments.getGiveawayInfo.md @@ -0,0 +1,43 @@ +--- +title: "payments.getGiveawayInfo" +description: "Obtain information about a [Telegram Premium giveaway »](https://core.telegram.org/api/giveaways)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/payments_getGiveawayInfo.html +--- +# Method: payments.getGiveawayInfo +[Back to methods index](index.html) + + + +Obtain information about a [Telegram Premium giveaway »](https://core.telegram.org/api/giveaways). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The peer where the giveaway was posted. | Optional| +|msg\_id|[int](/API_docs/types/int.html) | Message ID of the [messageActionGiveawayLaunch](../constructors/messageActionGiveawayLaunch.html) service message | Optional| + + +### Return type: [payments.GiveawayInfo](/API_docs/types/payments.GiveawayInfo.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$payments_GiveawayInfo = $MadelineProto->payments->getGiveawayInfo(peer: $InputPeer, msg_id: $int, ); +``` + diff --git a/docs/API_docs/methods/payments.getPaymentForm.md b/docs/API_docs/methods/payments.getPaymentForm.md new file mode 100644 index 0000000000..583c09c463 --- /dev/null +++ b/docs/API_docs/methods/payments.getPaymentForm.md @@ -0,0 +1,43 @@ +--- +title: "payments.getPaymentForm" +description: "Get a payment form" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/payments_getPaymentForm.html +--- +# Method: payments.getPaymentForm +[Back to methods index](index.html) + + + +Get a payment form + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|invoice|[InputInvoice](/API_docs/types/InputInvoice.html) | Invoice | Yes| +|theme\_params|[DataJSON](/API_docs/types/DataJSON.html) | A JSON object with the following keys, containing color theme information (integers, RGB24) to pass to the payment provider, to apply in eventual verification pages:
`bg_color` \- Background color
`text_color` \- Text color
`hint_color` \- Hint text color
`link_color` \- Link color
`button_color` \- Button color
`button_text_color` \- Button text color | Optional| + + +### Return type: [payments.PaymentForm](/API_docs/types/payments.PaymentForm.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$payments_PaymentForm = $MadelineProto->payments->getPaymentForm(invoice: $InputInvoice, theme_params: $DataJSON, ); +``` + diff --git a/docs/API_docs/methods/payments.getPaymentReceipt.md b/docs/API_docs/methods/payments.getPaymentReceipt.md new file mode 100644 index 0000000000..3afd6177cc --- /dev/null +++ b/docs/API_docs/methods/payments.getPaymentReceipt.md @@ -0,0 +1,43 @@ +--- +title: "payments.getPaymentReceipt" +description: "Get payment receipt" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/payments_getPaymentReceipt.html +--- +# Method: payments.getPaymentReceipt +[Back to methods index](index.html) + + + +Get payment receipt + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The peer where the payment receipt was sent | Optional| +|msg\_id|[int](/API_docs/types/int.html) | Message ID of receipt | Optional| + + +### Return type: [payments.PaymentReceipt](/API_docs/types/payments.PaymentReceipt.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$payments_PaymentReceipt = $MadelineProto->payments->getPaymentReceipt(peer: $InputPeer, msg_id: $int, ); +``` + diff --git a/docs/API_docs/methods/payments.getPremiumGiftCodeOptions.md b/docs/API_docs/methods/payments.getPremiumGiftCodeOptions.md new file mode 100644 index 0000000000..d1038c54fa --- /dev/null +++ b/docs/API_docs/methods/payments.getPremiumGiftCodeOptions.md @@ -0,0 +1,42 @@ +--- +title: "payments.getPremiumGiftCodeOptions" +description: "Obtain a list of Telegram Premium [giveaway/gift code »](https://core.telegram.org/api/giveaways) options." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/payments_getPremiumGiftCodeOptions.html +--- +# Method: payments.getPremiumGiftCodeOptions +[Back to methods index](index.html) + + + +Obtain a list of Telegram Premium [giveaway/gift code »](https://core.telegram.org/api/giveaways) options. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|boost\_peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The channel that will start the giveaway | Optional| + + +### Return type: [Vector\_of\_PremiumGiftCodeOption](/API_docs/types/PremiumGiftCodeOption.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_PremiumGiftCodeOption = $MadelineProto->payments->getPremiumGiftCodeOptions(boost_peer: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/payments.getSavedInfo.md b/docs/API_docs/methods/payments.getSavedInfo.md new file mode 100644 index 0000000000..e78b9d6ced --- /dev/null +++ b/docs/API_docs/methods/payments.getSavedInfo.md @@ -0,0 +1,37 @@ +--- +title: "payments.getSavedInfo" +description: "Get saved payment information" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/payments_getSavedInfo.html +--- +# Method: payments.getSavedInfo +[Back to methods index](index.html) + + + +Get saved payment information + + + +### Return type: [payments.SavedInfo](/API_docs/types/payments.SavedInfo.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$payments_SavedInfo = $MadelineProto->payments->getSavedInfo(); +``` + diff --git a/docs/API_docs/methods/payments.launchPrepaidGiveaway.md b/docs/API_docs/methods/payments.launchPrepaidGiveaway.md new file mode 100644 index 0000000000..557649c5cd --- /dev/null +++ b/docs/API_docs/methods/payments.launchPrepaidGiveaway.md @@ -0,0 +1,44 @@ +--- +title: "payments.launchPrepaidGiveaway" +description: "Launch a [prepaid giveaway »](https://core.telegram.org/api/giveaways)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/payments_launchPrepaidGiveaway.html +--- +# Method: payments.launchPrepaidGiveaway +[Back to methods index](index.html) + + + +Launch a [prepaid giveaway »](https://core.telegram.org/api/giveaways). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The peer where to launch the giveaway. | Optional| +|giveaway\_id|[long](/API_docs/types/long.html) | The prepaid giveaway ID. | Yes| +|purpose|[InputStorePaymentPurpose](/API_docs/types/InputStorePaymentPurpose.html) | Giveway parameters | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->payments->launchPrepaidGiveaway(peer: $InputPeer, giveaway_id: $long, purpose: $InputStorePaymentPurpose, ); +``` + diff --git a/docs/API_docs/methods/payments.sendPaymentForm.md b/docs/API_docs/methods/payments.sendPaymentForm.md new file mode 100644 index 0000000000..293650f514 --- /dev/null +++ b/docs/API_docs/methods/payments.sendPaymentForm.md @@ -0,0 +1,47 @@ +--- +title: "payments.sendPaymentForm" +description: "Send compiled payment form" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/payments_sendPaymentForm.html +--- +# Method: payments.sendPaymentForm +[Back to methods index](index.html) + + + +Send compiled payment form + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|form\_id|[long](/API_docs/types/long.html) | Form ID | Yes| +|invoice|[InputInvoice](/API_docs/types/InputInvoice.html) | Invoice | Yes| +|requested\_info\_id|[string](/API_docs/types/string.html) | ID of saved and validated [order info](../constructors/payments.validatedRequestedInfo.html) | Optional| +|shipping\_option\_id|[string](/API_docs/types/string.html) | Chosen shipping option ID | Optional| +|credentials|[InputPaymentCredentials](/API_docs/types/InputPaymentCredentials.html) | Payment credentials | Yes| +|tip\_amount|[long](/API_docs/types/long.html) | Tip, 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](https://core.telegram.org/bots/payments/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies). | Optional| + + +### Return type: [payments.PaymentResult](/API_docs/types/payments.PaymentResult.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$payments_PaymentResult = $MadelineProto->payments->sendPaymentForm(form_id: $long, invoice: $InputInvoice, requested_info_id: 'string', shipping_option_id: 'string', credentials: $InputPaymentCredentials, tip_amount: $long, ); +``` + diff --git a/docs/API_docs/methods/payments.validateRequestedInfo.md b/docs/API_docs/methods/payments.validateRequestedInfo.md new file mode 100644 index 0000000000..3e47fa4fce --- /dev/null +++ b/docs/API_docs/methods/payments.validateRequestedInfo.md @@ -0,0 +1,44 @@ +--- +title: "payments.validateRequestedInfo" +description: "Submit requested order information for validation" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/payments_validateRequestedInfo.html +--- +# Method: payments.validateRequestedInfo +[Back to methods index](index.html) + + + +Submit requested order information for validation + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|save|[Bool](/API_docs/types/Bool.html) | Save order information to re-use it for future orders | Optional| +|invoice|[InputInvoice](/API_docs/types/InputInvoice.html) | Invoice | Yes| +|info|[PaymentRequestedInfo](/API_docs/types/PaymentRequestedInfo.html) | Requested order information | Yes| + + +### Return type: [payments.ValidatedRequestedInfo](/API_docs/types/payments.ValidatedRequestedInfo.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$payments_ValidatedRequestedInfo = $MadelineProto->payments->validateRequestedInfo(save: $Bool, invoice: $InputInvoice, info: $PaymentRequestedInfo, ); +``` + diff --git a/docs/API_docs/methods/phone.acceptCall.md b/docs/API_docs/methods/phone.acceptCall.md new file mode 100644 index 0000000000..81facc33d4 --- /dev/null +++ b/docs/API_docs/methods/phone.acceptCall.md @@ -0,0 +1,44 @@ +--- +title: "phone.acceptCall" +description: "You cannot use this method directly, see https://docs.madelineproto.xyz#calls for more info on handling calls" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_acceptCall.html +--- +# Method: phone.acceptCall +[Back to methods index](index.html) + + + +You cannot use this method directly, see https://docs.madelineproto.xyz#calls for more info on handling calls + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[InputPhoneCall](/API_docs/types/InputPhoneCall.html) | The call to accept | Yes| +|g\_b|[bytes](/API_docs/types/bytes.html) | [Parameter for E2E encryption key exchange »](https://core.telegram.org/api/end-to-end/voice-calls) | Yes| +|protocol|[PhoneCallProtocol](/API_docs/types/PhoneCallProtocol.html) | Phone call settings | Yes| + + +### Return type: [phone.PhoneCall](/API_docs/types/phone.PhoneCall.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$phone_PhoneCall = $MadelineProto->phone->acceptCall(peer: $InputPhoneCall, g_b: 'bytes', protocol: $PhoneCallProtocol, ); +``` + diff --git a/docs/API_docs/methods/phone.checkGroupCall.md b/docs/API_docs/methods/phone.checkGroupCall.md new file mode 100644 index 0000000000..c0ee4a5be7 --- /dev/null +++ b/docs/API_docs/methods/phone.checkGroupCall.md @@ -0,0 +1,44 @@ +--- +title: "phone.checkGroupCall" +description: "Check whether the group call Server Forwarding Unit is currently receiving the streams with the specified WebRTC source IDs. " +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_checkGroupCall.html +--- +# Method: phone.checkGroupCall +[Back to methods index](index.html) + + + +Check whether the group call Server Forwarding Unit is currently receiving the streams with the specified WebRTC source IDs. +Returns an intersection of the source IDs specified in `sources`, and the source IDs currently being forwarded by the SFU. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | Group call | Yes| +|sources|Array of [int](/API_docs/types/int.html) | Source IDs | Yes| + + +### Return type: [Vector\_of\_int](/API_docs/types/int.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_int = $MadelineProto->phone->checkGroupCall(call: $InputGroupCall, sources: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/phone.confirmCall.md b/docs/API_docs/methods/phone.confirmCall.md new file mode 100644 index 0000000000..3044c3d3a5 --- /dev/null +++ b/docs/API_docs/methods/phone.confirmCall.md @@ -0,0 +1,45 @@ +--- +title: "phone.confirmCall" +description: "You cannot use this method directly, see https://docs.madelineproto.xyz#calls for more info on handling calls" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_confirmCall.html +--- +# Method: phone.confirmCall +[Back to methods index](index.html) + + + +You cannot use this method directly, see https://docs.madelineproto.xyz#calls for more info on handling calls + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[InputPhoneCall](/API_docs/types/InputPhoneCall.html) | The phone call | Yes| +|g\_a|[bytes](/API_docs/types/bytes.html) | [Parameter for E2E encryption key exchange »](https://core.telegram.org/api/end-to-end/voice-calls) | Yes| +|key\_fingerprint|[strlong](/API_docs/constructors/strlong.html) | | Yes| +|protocol|[PhoneCallProtocol](/API_docs/types/PhoneCallProtocol.html) | Phone call settings | Yes| + + +### Return type: [phone.PhoneCall](/API_docs/types/phone.PhoneCall.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$phone_PhoneCall = $MadelineProto->phone->confirmCall(peer: $InputPhoneCall, g_a: 'bytes', key_fingerprint: $strlong, protocol: $PhoneCallProtocol, ); +``` + diff --git a/docs/API_docs/methods/phone.createGroupCall.md b/docs/API_docs/methods/phone.createGroupCall.md new file mode 100644 index 0000000000..81e4005ba5 --- /dev/null +++ b/docs/API_docs/methods/phone.createGroupCall.md @@ -0,0 +1,45 @@ +--- +title: "phone.createGroupCall" +description: "Create a group call or livestream" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_createGroupCall.html +--- +# Method: phone.createGroupCall +[Back to methods index](index.html) + + + +Create a group call or livestream + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|rtmp\_stream|[Bool](/API_docs/types/Bool.html) | Whether RTMP stream support should be enabled: only the [group/supergroup/channel](https://core.telegram.org/api/channel) owner can use this flag. | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Associate the group call or livestream to the provided [group/supergroup/channel](https://core.telegram.org/api/channel) | Optional| +|title|[string](/API_docs/types/string.html) | Call title | Optional| +|schedule\_date|[int](/API_docs/types/int.html) | For scheduled group call or livestreams, the absolute date when the group call will start | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->phone->createGroupCall(rtmp_stream: $Bool, peer: $InputPeer, title: 'string', schedule_date: $int, ); +``` + diff --git a/docs/API_docs/methods/phone.discardCall.md b/docs/API_docs/methods/phone.discardCall.md new file mode 100644 index 0000000000..cb33d08636 --- /dev/null +++ b/docs/API_docs/methods/phone.discardCall.md @@ -0,0 +1,46 @@ +--- +title: "phone.discardCall" +description: "You cannot use this method directly, see https://docs.madelineproto.xyz#calls for more info on handling calls" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_discardCall.html +--- +# Method: phone.discardCall +[Back to methods index](index.html) + + + +You cannot use this method directly, see https://docs.madelineproto.xyz#calls for more info on handling calls + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|video|[Bool](/API_docs/types/Bool.html) | Whether this is a video call | Optional| +|peer|[InputPhoneCall](/API_docs/types/InputPhoneCall.html) | The phone call | Yes| +|duration|[int](/API_docs/types/int.html) | Call duration | Optional| +|reason|[PhoneCallDiscardReason](/API_docs/types/PhoneCallDiscardReason.html) | Why was the call discarded | Yes| +|connection\_id|[long](/API_docs/types/long.html) | Preferred libtgvoip relay ID | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->phone->discardCall(video: $Bool, peer: $InputPhoneCall, duration: $int, reason: $PhoneCallDiscardReason, connection_id: $long, ); +``` + diff --git a/docs/API_docs/methods/phone.discardGroupCall.md b/docs/API_docs/methods/phone.discardGroupCall.md new file mode 100644 index 0000000000..32951fd23e --- /dev/null +++ b/docs/API_docs/methods/phone.discardGroupCall.md @@ -0,0 +1,42 @@ +--- +title: "phone.discardGroupCall" +description: "Terminate a group call" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_discardGroupCall.html +--- +# Method: phone.discardGroupCall +[Back to methods index](index.html) + + + +Terminate a group call + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | The group call to terminate | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->phone->discardGroupCall(call: $InputGroupCall, ); +``` + diff --git a/docs/API_docs/methods/phone.editGroupCallParticipant.md b/docs/API_docs/methods/phone.editGroupCallParticipant.md new file mode 100644 index 0000000000..e71c3ca61e --- /dev/null +++ b/docs/API_docs/methods/phone.editGroupCallParticipant.md @@ -0,0 +1,55 @@ +--- +title: "phone.editGroupCallParticipant" +description: "Edit information about a given group call participant" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_editGroupCallParticipant.html +--- +# Method: phone.editGroupCallParticipant +[Back to methods index](index.html) + + + +Edit information about a given group call participant + +Note: [flags](https://core.telegram.org/mtproto/TL-combinators#conditional-fields).N?[Bool](../types/Bool.html) parameters can have three possible values: + +- If the [TL flag](https://core.telegram.org/mtproto/TL-combinators#conditional-fields) is not set, the previous value will not be changed. +- If the [TL flag](https://core.telegram.org/mtproto/TL-combinators#conditional-fields) is set and contains a [boolTrue](../constructors/boolTrue.html), the previous value will be overwritten to `true`. +- If the [TL flag](https://core.telegram.org/mtproto/TL-combinators#conditional-fields) is set and contains a [boolFalse](../constructors/boolFalse.html), the previous value will be overwritten to `false`. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | The group call | Yes| +|participant|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The group call participant (can also be the user itself) | Optional| +|muted|[Bool](/API_docs/types/Bool.html) | Whether to mute or unmute the specified participant | Optional| +|volume|[int](/API_docs/types/int.html) | New volume | Optional| +|raise\_hand|[Bool](/API_docs/types/Bool.html) | Raise or lower hand | Optional| +|video\_stopped|[Bool](/API_docs/types/Bool.html) | Start or stop the video stream | Optional| +|video\_paused|[Bool](/API_docs/types/Bool.html) | Pause or resume the video stream | Optional| +|presentation\_paused|[Bool](/API_docs/types/Bool.html) | Pause or resume the screen sharing stream | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->phone->editGroupCallParticipant(call: $InputGroupCall, participant: $InputPeer, muted: $Bool, volume: $int, raise_hand: $Bool, video_stopped: $Bool, video_paused: $Bool, presentation_paused: $Bool, ); +``` + diff --git a/docs/API_docs/methods/phone.editGroupCallTitle.md b/docs/API_docs/methods/phone.editGroupCallTitle.md new file mode 100644 index 0000000000..556c8f46fe --- /dev/null +++ b/docs/API_docs/methods/phone.editGroupCallTitle.md @@ -0,0 +1,43 @@ +--- +title: "phone.editGroupCallTitle" +description: "Edit the title of a group call or livestream" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_editGroupCallTitle.html +--- +# Method: phone.editGroupCallTitle +[Back to methods index](index.html) + + + +Edit the title of a group call or livestream + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | Group call | Yes| +|title|[string](/API_docs/types/string.html) | New title | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->phone->editGroupCallTitle(call: $InputGroupCall, title: 'string', ); +``` + diff --git a/docs/API_docs/methods/phone.exportGroupCallInvite.md b/docs/API_docs/methods/phone.exportGroupCallInvite.md new file mode 100644 index 0000000000..7b8594658f --- /dev/null +++ b/docs/API_docs/methods/phone.exportGroupCallInvite.md @@ -0,0 +1,43 @@ +--- +title: "phone.exportGroupCallInvite" +description: "Get an [invite link](https://core.telegram.org/api/links#video-chat-livestream-links) for a group call or livestream" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_exportGroupCallInvite.html +--- +# Method: phone.exportGroupCallInvite +[Back to methods index](index.html) + + + +Get an [invite link](https://core.telegram.org/api/links#video-chat-livestream-links) for a group call or livestream + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|can\_self\_unmute|[Bool](/API_docs/types/Bool.html) | For livestreams or muted group chats, if set, users that join using this link will be able to speak without explicitly requesting permission by (for example by raising their hand). | Optional| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | The group call | Yes| + + +### Return type: [phone.ExportedGroupCallInvite](/API_docs/types/phone.ExportedGroupCallInvite.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$phone_ExportedGroupCallInvite = $MadelineProto->phone->exportGroupCallInvite(can_self_unmute: $Bool, call: $InputGroupCall, ); +``` + diff --git a/docs/API_docs/methods/phone.getCallConfig.md b/docs/API_docs/methods/phone.getCallConfig.md new file mode 100644 index 0000000000..829c08d184 --- /dev/null +++ b/docs/API_docs/methods/phone.getCallConfig.md @@ -0,0 +1,37 @@ +--- +title: "phone.getCallConfig" +description: "Get phone call configuration to be passed to libtgvoip's shared config" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_getCallConfig.html +--- +# Method: phone.getCallConfig +[Back to methods index](index.html) + + + +Get phone call configuration to be passed to libtgvoip's shared config + + + +### Return type: [DataJSON](/API_docs/types/DataJSON.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$DataJSON = $MadelineProto->phone->getCallConfig(); +``` + diff --git a/docs/API_docs/methods/phone.getGroupCall.md b/docs/API_docs/methods/phone.getGroupCall.md new file mode 100644 index 0000000000..8ee1c0a87f --- /dev/null +++ b/docs/API_docs/methods/phone.getGroupCall.md @@ -0,0 +1,43 @@ +--- +title: "phone.getGroupCall" +description: "Get info about a group call" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_getGroupCall.html +--- +# Method: phone.getGroupCall +[Back to methods index](index.html) + + + +Get info about a group call + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | The group call | Yes| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [phone.GroupCall](/API_docs/types/phone.GroupCall.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$phone_GroupCall = $MadelineProto->phone->getGroupCall(call: $InputGroupCall, limit: $int, ); +``` + diff --git a/docs/API_docs/methods/phone.getGroupCallJoinAs.md b/docs/API_docs/methods/phone.getGroupCallJoinAs.md new file mode 100644 index 0000000000..a6da3c1655 --- /dev/null +++ b/docs/API_docs/methods/phone.getGroupCallJoinAs.md @@ -0,0 +1,42 @@ +--- +title: "phone.getGroupCallJoinAs" +description: "Get a list of peers that can be used to join a group call, presenting yourself as a specific user/channel." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_getGroupCallJoinAs.html +--- +# Method: phone.getGroupCallJoinAs +[Back to methods index](index.html) + + + +Get a list of peers that can be used to join a group call, presenting yourself as a specific user/channel. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The dialog whose group call or livestream we're trying to join | Optional| + + +### Return type: [phone.JoinAsPeers](/API_docs/types/phone.JoinAsPeers.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$phone_JoinAsPeers = $MadelineProto->phone->getGroupCallJoinAs(peer: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/phone.getGroupCallStreamChannels.md b/docs/API_docs/methods/phone.getGroupCallStreamChannels.md new file mode 100644 index 0000000000..839d612062 --- /dev/null +++ b/docs/API_docs/methods/phone.getGroupCallStreamChannels.md @@ -0,0 +1,44 @@ +--- +title: "phone.getGroupCallStreamChannels" +description: "Get info about RTMP streams in a group call or livestream. " +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_getGroupCallStreamChannels.html +--- +# Method: phone.getGroupCallStreamChannels +[Back to methods index](index.html) + + + +Get info about RTMP streams in a group call or livestream. +This method should be invoked to the same group/channel-related DC used for [downloading livestream chunks](https://core.telegram.org/api/files#downloading-files). +As usual, the media DC is preferred, if available. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | Group call or livestream | Yes| + + +### Return type: [phone.GroupCallStreamChannels](/API_docs/types/phone.GroupCallStreamChannels.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$phone_GroupCallStreamChannels = $MadelineProto->phone->getGroupCallStreamChannels(call: $InputGroupCall, ); +``` + diff --git a/docs/API_docs/methods/phone.getGroupCallStreamRtmpUrl.md b/docs/API_docs/methods/phone.getGroupCallStreamRtmpUrl.md new file mode 100644 index 0000000000..6153bda0f9 --- /dev/null +++ b/docs/API_docs/methods/phone.getGroupCallStreamRtmpUrl.md @@ -0,0 +1,43 @@ +--- +title: "phone.getGroupCallStreamRtmpUrl" +description: "Get RTMP URL and stream key for RTMP livestreams. Can be used even before creating the actual RTMP livestream with [phone.createGroupCall](../methods/phone.createGroupCall.html) (the `rtmp_stream` flag must be set)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_getGroupCallStreamRtmpUrl.html +--- +# Method: phone.getGroupCallStreamRtmpUrl +[Back to methods index](index.html) + + + +Get RTMP URL and stream key for RTMP livestreams. Can be used even before creating the actual RTMP livestream with [phone.createGroupCall](../methods/phone.createGroupCall.html) (the `rtmp_stream` flag must be set). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer to livestream into | Optional| +|revoke|[Bool](/API_docs/types/Bool.html) | Whether to revoke the previous stream key or simply return the existing one | Yes| + + +### Return type: [phone.GroupCallStreamRtmpUrl](/API_docs/types/phone.GroupCallStreamRtmpUrl.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$phone_GroupCallStreamRtmpUrl = $MadelineProto->phone->getGroupCallStreamRtmpUrl(peer: $InputPeer, revoke: $Bool, ); +``` + diff --git a/docs/API_docs/methods/phone.getGroupParticipants.md b/docs/API_docs/methods/phone.getGroupParticipants.md new file mode 100644 index 0000000000..cdb3558a7c --- /dev/null +++ b/docs/API_docs/methods/phone.getGroupParticipants.md @@ -0,0 +1,46 @@ +--- +title: "phone.getGroupParticipants" +description: "Get group call participants" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_getGroupParticipants.html +--- +# Method: phone.getGroupParticipants +[Back to methods index](index.html) + + + +Get group call participants + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | Group call | Yes| +|ids|Array of [Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | If specified, will fetch group participant info about the specified peers | Yes| +|sources|Array of [int](/API_docs/types/int.html) | If specified, will fetch group participant info about the specified WebRTC source IDs | Yes| +|offset|[string](/API_docs/types/string.html) | Offset for results, taken from the `next_offset` field of [phone.groupParticipants](../constructors/phone.groupParticipants.html), initially an empty string.
Note: if no more results are available, the method call will return an empty `next_offset`; thus, avoid providing the `next_offset` returned in [phone.groupParticipants](../constructors/phone.groupParticipants.html) if it is empty, to avoid an infinite loop. | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [phone.GroupParticipants](/API_docs/types/phone.GroupParticipants.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$phone_GroupParticipants = $MadelineProto->phone->getGroupParticipants(call: $InputGroupCall, ids: [$InputPeer, $InputPeer], sources: [$int, $int], offset: 'string', limit: $int, ); +``` + diff --git a/docs/API_docs/methods/phone.inviteToGroupCall.md b/docs/API_docs/methods/phone.inviteToGroupCall.md new file mode 100644 index 0000000000..055dda92a3 --- /dev/null +++ b/docs/API_docs/methods/phone.inviteToGroupCall.md @@ -0,0 +1,43 @@ +--- +title: "phone.inviteToGroupCall" +description: "Invite a set of users to a group call." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_inviteToGroupCall.html +--- +# Method: phone.inviteToGroupCall +[Back to methods index](index.html) + + + +Invite a set of users to a group call. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | The group call | Yes| +|users|Array of [Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | The users to invite. | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->phone->inviteToGroupCall(call: $InputGroupCall, users: [$InputUser, $InputUser], ); +``` + diff --git a/docs/API_docs/methods/phone.joinGroupCall.md b/docs/API_docs/methods/phone.joinGroupCall.md new file mode 100644 index 0000000000..5ca8893b59 --- /dev/null +++ b/docs/API_docs/methods/phone.joinGroupCall.md @@ -0,0 +1,47 @@ +--- +title: "phone.joinGroupCall" +description: "Join a group call" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_joinGroupCall.html +--- +# Method: phone.joinGroupCall +[Back to methods index](index.html) + + + +Join a group call + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|muted|[Bool](/API_docs/types/Bool.html) | If set, the user will be muted by default upon joining. | Optional| +|video\_stopped|[Bool](/API_docs/types/Bool.html) | If set, the user's video will be disabled by default upon joining. | Optional| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | The group call | Yes| +|join\_as|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Join the group call, presenting yourself as the specified user/channel | Optional| +|invite\_hash|[string](/API_docs/types/string.html) | The invitation hash from the [invite link »](https://core.telegram.org/api/links#video-chat-livestream-links), if provided allows speaking in a livestream or muted group chat. | Optional| +|params|[DataJSON](/API_docs/types/DataJSON.html) | WebRTC parameters | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->phone->joinGroupCall(muted: $Bool, video_stopped: $Bool, call: $InputGroupCall, join_as: $InputPeer, invite_hash: 'string', params: $DataJSON, ); +``` + diff --git a/docs/API_docs/methods/phone.joinGroupCallPresentation.md b/docs/API_docs/methods/phone.joinGroupCallPresentation.md new file mode 100644 index 0000000000..57106ddae2 --- /dev/null +++ b/docs/API_docs/methods/phone.joinGroupCallPresentation.md @@ -0,0 +1,43 @@ +--- +title: "phone.joinGroupCallPresentation" +description: "Start screen sharing in a call" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_joinGroupCallPresentation.html +--- +# Method: phone.joinGroupCallPresentation +[Back to methods index](index.html) + + + +Start screen sharing in a call + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | The group call | Yes| +|params|[DataJSON](/API_docs/types/DataJSON.html) | WebRTC parameters | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->phone->joinGroupCallPresentation(call: $InputGroupCall, params: $DataJSON, ); +``` + diff --git a/docs/API_docs/methods/phone.leaveGroupCall.md b/docs/API_docs/methods/phone.leaveGroupCall.md new file mode 100644 index 0000000000..054afeecb8 --- /dev/null +++ b/docs/API_docs/methods/phone.leaveGroupCall.md @@ -0,0 +1,43 @@ +--- +title: "phone.leaveGroupCall" +description: "Leave a group call" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_leaveGroupCall.html +--- +# Method: phone.leaveGroupCall +[Back to methods index](index.html) + + + +Leave a group call + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | The group call | Yes| +|source|[int](/API_docs/types/int.html) | Your source ID | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->phone->leaveGroupCall(call: $InputGroupCall, source: $int, ); +``` + diff --git a/docs/API_docs/methods/phone.leaveGroupCallPresentation.md b/docs/API_docs/methods/phone.leaveGroupCallPresentation.md new file mode 100644 index 0000000000..8bc2186d1f --- /dev/null +++ b/docs/API_docs/methods/phone.leaveGroupCallPresentation.md @@ -0,0 +1,42 @@ +--- +title: "phone.leaveGroupCallPresentation" +description: "Stop screen sharing in a group call" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_leaveGroupCallPresentation.html +--- +# Method: phone.leaveGroupCallPresentation +[Back to methods index](index.html) + + + +Stop screen sharing in a group call + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | The group call | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->phone->leaveGroupCallPresentation(call: $InputGroupCall, ); +``` + diff --git a/docs/API_docs/methods/phone.receivedCall.md b/docs/API_docs/methods/phone.receivedCall.md new file mode 100644 index 0000000000..79086514b2 --- /dev/null +++ b/docs/API_docs/methods/phone.receivedCall.md @@ -0,0 +1,42 @@ +--- +title: "phone.receivedCall" +description: "Optional: notify the server that the user is currently busy in a call: this will automatically refuse all incoming phone calls until the current phone call is ended." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_receivedCall.html +--- +# Method: phone.receivedCall +[Back to methods index](index.html) + + + +Optional: notify the server that the user is currently busy in a call: this will automatically refuse all incoming phone calls until the current phone call is ended. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[InputPhoneCall](/API_docs/types/InputPhoneCall.html) | The phone call we're currently in | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->phone->receivedCall(peer: $InputPhoneCall, ); +``` + diff --git a/docs/API_docs/methods/phone.requestCall.md b/docs/API_docs/methods/phone.requestCall.md new file mode 100644 index 0000000000..3cdc8af88d --- /dev/null +++ b/docs/API_docs/methods/phone.requestCall.md @@ -0,0 +1,45 @@ +--- +title: "phone.requestCall" +description: "You cannot use this method directly, see https://docs.madelineproto.xyz#calls for more info on handling calls" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_requestCall.html +--- +# Method: phone.requestCall +[Back to methods index](index.html) + + + +You cannot use this method directly, see https://docs.madelineproto.xyz#calls for more info on handling calls + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|video|[Bool](/API_docs/types/Bool.html) | Whether to start a video call | Optional| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Destination of the phone call | Optional| +|g\_a\_hash|[bytes](/API_docs/types/bytes.html) | [Parameter for E2E encryption key exchange »](https://core.telegram.org/api/end-to-end/voice-calls) | Yes| +|protocol|[PhoneCallProtocol](/API_docs/types/PhoneCallProtocol.html) | Phone call settings | Yes| + + +### Return type: [phone.PhoneCall](/API_docs/types/phone.PhoneCall.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$phone_PhoneCall = $MadelineProto->phone->requestCall(video: $Bool, user_id: $InputUser, g_a_hash: 'bytes', protocol: $PhoneCallProtocol, ); +``` + diff --git a/docs/API_docs/methods/phone.saveCallDebug.md b/docs/API_docs/methods/phone.saveCallDebug.md new file mode 100644 index 0000000000..a321cd6494 --- /dev/null +++ b/docs/API_docs/methods/phone.saveCallDebug.md @@ -0,0 +1,43 @@ +--- +title: "phone.saveCallDebug" +description: "Send phone call debug data to server" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_saveCallDebug.html +--- +# Method: phone.saveCallDebug +[Back to methods index](index.html) + + + +Send phone call debug data to server + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[InputPhoneCall](/API_docs/types/InputPhoneCall.html) | Phone call | Yes| +|debug|[DataJSON](/API_docs/types/DataJSON.html) | Debug statistics obtained from libtgvoip | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->phone->saveCallDebug(peer: $InputPhoneCall, debug: $DataJSON, ); +``` + diff --git a/docs/API_docs/methods/phone.saveCallLog.md b/docs/API_docs/methods/phone.saveCallLog.md new file mode 100644 index 0000000000..5459e70778 --- /dev/null +++ b/docs/API_docs/methods/phone.saveCallLog.md @@ -0,0 +1,43 @@ +--- +title: "phone.saveCallLog" +description: "Save phone call debug information" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_saveCallLog.html +--- +# Method: phone.saveCallLog +[Back to methods index](index.html) + + + +Save phone call debug information + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[InputPhoneCall](/API_docs/types/InputPhoneCall.html) | Phone call | Yes| +|file|[File path or InputFile](/API_docs/types/InputFile.html) | Logs | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->phone->saveCallLog(peer: $InputPhoneCall, file: $InputFile, ); +``` + diff --git a/docs/API_docs/methods/phone.saveDefaultGroupCallJoinAs.md b/docs/API_docs/methods/phone.saveDefaultGroupCallJoinAs.md new file mode 100644 index 0000000000..93144f823a --- /dev/null +++ b/docs/API_docs/methods/phone.saveDefaultGroupCallJoinAs.md @@ -0,0 +1,43 @@ +--- +title: "phone.saveDefaultGroupCallJoinAs" +description: "Set the default peer that will be used to join a group call in a specific dialog." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_saveDefaultGroupCallJoinAs.html +--- +# Method: phone.saveDefaultGroupCallJoinAs +[Back to methods index](index.html) + + + +Set the default peer that will be used to join a group call in a specific dialog. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The dialog | Optional| +|join\_as|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The default peer that will be used to join group calls in this dialog, presenting yourself as a specific user/channel. | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->phone->saveDefaultGroupCallJoinAs(peer: $InputPeer, join_as: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/phone.sendSignalingData.md b/docs/API_docs/methods/phone.sendSignalingData.md new file mode 100644 index 0000000000..701ddefce2 --- /dev/null +++ b/docs/API_docs/methods/phone.sendSignalingData.md @@ -0,0 +1,43 @@ +--- +title: "phone.sendSignalingData" +description: "Send VoIP signaling data" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_sendSignalingData.html +--- +# Method: phone.sendSignalingData +[Back to methods index](index.html) + + + +Send VoIP signaling data + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[InputPhoneCall](/API_docs/types/InputPhoneCall.html) | Phone call | Yes| +|data|[bytes](/API_docs/types/bytes.html) | Signaling payload | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->phone->sendSignalingData(peer: $InputPhoneCall, data: 'bytes', ); +``` + diff --git a/docs/API_docs/methods/phone.setCallRating.md b/docs/API_docs/methods/phone.setCallRating.md new file mode 100644 index 0000000000..c47dc0086e --- /dev/null +++ b/docs/API_docs/methods/phone.setCallRating.md @@ -0,0 +1,45 @@ +--- +title: "phone.setCallRating" +description: "Rate a call, returns info about the rating message sent to the official VoIP bot." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_setCallRating.html +--- +# Method: phone.setCallRating +[Back to methods index](index.html) + + + +Rate a call, returns info about the rating message sent to the official VoIP bot. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|user\_initiative|[Bool](/API_docs/types/Bool.html) | Whether the user decided on their own initiative to rate the call | Optional| +|peer|[InputPhoneCall](/API_docs/types/InputPhoneCall.html) | The call to rate | Yes| +|rating|[int](/API_docs/types/int.html) | Rating in `1-5` stars | Optional| +|comment|[string](/API_docs/types/string.html) | An additional comment | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->phone->setCallRating(user_initiative: $Bool, peer: $InputPhoneCall, rating: $int, comment: 'string', ); +``` + diff --git a/docs/API_docs/methods/phone.startScheduledGroupCall.md b/docs/API_docs/methods/phone.startScheduledGroupCall.md new file mode 100644 index 0000000000..ceaa0ab949 --- /dev/null +++ b/docs/API_docs/methods/phone.startScheduledGroupCall.md @@ -0,0 +1,42 @@ +--- +title: "phone.startScheduledGroupCall" +description: "Start a scheduled group call." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_startScheduledGroupCall.html +--- +# Method: phone.startScheduledGroupCall +[Back to methods index](index.html) + + + +Start a scheduled group call. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | The scheduled group call | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->phone->startScheduledGroupCall(call: $InputGroupCall, ); +``` + diff --git a/docs/API_docs/methods/phone.toggleGroupCallRecord.md b/docs/API_docs/methods/phone.toggleGroupCallRecord.md new file mode 100644 index 0000000000..e93791035b --- /dev/null +++ b/docs/API_docs/methods/phone.toggleGroupCallRecord.md @@ -0,0 +1,46 @@ +--- +title: "phone.toggleGroupCallRecord" +description: "Start or stop recording a group call: the recorded audio and video streams will be automatically sent to `Saved messages` (the chat with ourselves)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_toggleGroupCallRecord.html +--- +# Method: phone.toggleGroupCallRecord +[Back to methods index](index.html) + + + +Start or stop recording a group call: the recorded audio and video streams will be automatically sent to `Saved messages` (the chat with ourselves). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|start|[Bool](/API_docs/types/Bool.html) | Whether to start or stop recording | Optional| +|video|[Bool](/API_docs/types/Bool.html) | Whether to also record video streams | Optional| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | The group call or livestream | Yes| +|title|[string](/API_docs/types/string.html) | Recording title | Optional| +|video\_portrait|[Bool](/API_docs/types/Bool.html) | If video stream recording is enabled, whether to record in portrait or landscape mode | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->phone->toggleGroupCallRecord(start: $Bool, video: $Bool, call: $InputGroupCall, title: 'string', video_portrait: $Bool, ); +``` + diff --git a/docs/API_docs/methods/phone.toggleGroupCallSettings.md b/docs/API_docs/methods/phone.toggleGroupCallSettings.md new file mode 100644 index 0000000000..77c5348b8c --- /dev/null +++ b/docs/API_docs/methods/phone.toggleGroupCallSettings.md @@ -0,0 +1,44 @@ +--- +title: "phone.toggleGroupCallSettings" +description: "Change group call settings" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_toggleGroupCallSettings.html +--- +# Method: phone.toggleGroupCallSettings +[Back to methods index](index.html) + + + +Change group call settings + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|reset\_invite\_hash|[Bool](/API_docs/types/Bool.html) | Invalidate existing invite links | Optional| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | Group call | Yes| +|join\_muted|[Bool](/API_docs/types/Bool.html) | Whether all users will that join this group call are muted by default upon joining the group call | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->phone->toggleGroupCallSettings(reset_invite_hash: $Bool, call: $InputGroupCall, join_muted: $Bool, ); +``` + diff --git a/docs/API_docs/methods/phone.toggleGroupCallStartSubscription.md b/docs/API_docs/methods/phone.toggleGroupCallStartSubscription.md new file mode 100644 index 0000000000..385587c568 --- /dev/null +++ b/docs/API_docs/methods/phone.toggleGroupCallStartSubscription.md @@ -0,0 +1,43 @@ +--- +title: "phone.toggleGroupCallStartSubscription" +description: "Subscribe or unsubscribe to a scheduled group call" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/phone_toggleGroupCallStartSubscription.html +--- +# Method: phone.toggleGroupCallStartSubscription +[Back to methods index](index.html) + + + +Subscribe or unsubscribe to a scheduled group call + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|call|[InputGroupCall](/API_docs/types/InputGroupCall.html) | Scheduled group call | Yes| +|subscribed|[Bool](/API_docs/types/Bool.html) | Enable or disable subscription | Yes| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->phone->toggleGroupCallStartSubscription(call: $InputGroupCall, subscribed: $Bool, ); +``` + diff --git a/docs/API_docs/methods/photos.deletePhotos.md b/docs/API_docs/methods/photos.deletePhotos.md new file mode 100644 index 0000000000..f962b5baca --- /dev/null +++ b/docs/API_docs/methods/photos.deletePhotos.md @@ -0,0 +1,42 @@ +--- +title: "photos.deletePhotos" +description: "Deletes profile photos. The method returns a list of successfully deleted photo IDs." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/photos_deletePhotos.html +--- +# Method: photos.deletePhotos +[Back to methods index](index.html) + + + +Deletes profile photos. The method returns a list of successfully deleted photo IDs. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|Array of [MessageMedia, Update, Message or InputPhoto](/API_docs/types/InputPhoto.html) | Input photos to delete | Yes| + + +### Return type: [Vector\_of\_long](/API_docs/types/long.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_long = $MadelineProto->photos->deletePhotos(id: [$InputPhoto, $InputPhoto], ); +``` + diff --git a/docs/API_docs/methods/photos.getUserPhotos.md b/docs/API_docs/methods/photos.getUserPhotos.md new file mode 100644 index 0000000000..c789522d9c --- /dev/null +++ b/docs/API_docs/methods/photos.getUserPhotos.md @@ -0,0 +1,45 @@ +--- +title: "photos.getUserPhotos" +description: "Returns the list of user photos." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/photos_getUserPhotos.html +--- +# Method: photos.getUserPhotos +[Back to methods index](index.html) + + + +Returns the list of user photos. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | User ID | Optional| +|offset|[int](/API_docs/types/int.html) | Number of list elements to be skipped | Optional| +|max\_id|[long](/API_docs/types/long.html) | If a positive value was transferred, the method will return only photos with IDs less than the set one. This parameter is often useful when [refetching file references »](https://core.telegram.org/api/file_reference), as in conjuction with `limit=1` and `offset=-1` the [photo](../constructors/photo.html) object with the `id` specified in `max_id` can be fetched. | Yes| +|limit|[int](/API_docs/types/int.html) | Number of list elements to be returned | Optional| + + +### Return type: [photos.Photos](/API_docs/types/photos.Photos.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$photos_Photos = $MadelineProto->photos->getUserPhotos(user_id: $InputUser, offset: $int, max_id: $long, limit: $int, ); +``` + diff --git a/docs/API_docs/methods/photos.updateProfilePhoto.md b/docs/API_docs/methods/photos.updateProfilePhoto.md new file mode 100644 index 0000000000..2b0b2abcbc --- /dev/null +++ b/docs/API_docs/methods/photos.updateProfilePhoto.md @@ -0,0 +1,44 @@ +--- +title: "photos.updateProfilePhoto" +description: "Installs a previously uploaded photo as a profile photo." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/photos_updateProfilePhoto.html +--- +# Method: photos.updateProfilePhoto +[Back to methods index](index.html) + + + +Installs a previously uploaded photo as a profile photo. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|fallback|[Bool](/API_docs/types/Bool.html) | If set, the chosen profile photo will be shown to users that can't display your main profile photo due to your privacy settings. | Optional| +|bot|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Can contain info of a bot we own, to change the profile photo of that bot, instead of the current user. | Optional| +|id|[MessageMedia, Update, Message or InputPhoto](/API_docs/types/InputPhoto.html) | Input photo | Optional| + + +### Return type: [photos.Photo](/API_docs/types/photos.Photo.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$photos_Photo = $MadelineProto->photos->updateProfilePhoto(fallback: $Bool, bot: $InputUser, id: $InputPhoto, ); +``` + diff --git a/docs/API_docs/methods/photos.uploadContactProfilePhoto.md b/docs/API_docs/methods/photos.uploadContactProfilePhoto.md new file mode 100644 index 0000000000..437f4e2807 --- /dev/null +++ b/docs/API_docs/methods/photos.uploadContactProfilePhoto.md @@ -0,0 +1,50 @@ +--- +title: "photos.uploadContactProfilePhoto" +description: "Upload a custom profile picture for a contact, or suggest a new profile picture to a contact." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/photos_uploadContactProfilePhoto.html +--- +# Method: photos.uploadContactProfilePhoto +[Back to methods index](index.html) + + + +Upload a custom profile picture for a contact, or suggest a new profile picture to a contact. + +The `file`, `video` and `video_emoji_markup` flags are mutually exclusive. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|suggest|[Bool](/API_docs/types/Bool.html) | If set, will send a [messageActionSuggestProfilePhoto](../constructors/messageActionSuggestProfilePhoto.html) service message to `user_id`, suggesting them to use the specified profile picture; otherwise, will set a personal profile picture for the user (only visible to the current user). | Optional| +|save|[Bool](/API_docs/types/Bool.html) | If set, removes a previously set personal profile picture (does not affect suggested profile pictures, to remove them simply deleted the [messageActionSuggestProfilePhoto](../constructors/messageActionSuggestProfilePhoto.html) service message with [messages.deleteMessages](../methods/messages.deleteMessages.html)). | Optional| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | The contact | Optional| +|file|[File path or InputFile](/API_docs/types/InputFile.html) | Profile photo | Optional| +|video|[File path or InputFile](/API_docs/types/InputFile.html) | [Animated profile picture](https://core.telegram.org/api/files#animated-profile-pictures) video | Optional| +|video\_start\_ts|[double](/API_docs/types/double.html) | Floating point UNIX timestamp in seconds, indicating the frame of the video/sticker that should be used as static preview; can only be used if `video` or `video_emoji_markup` is set. | Optional| +|video\_emoji\_markup|[VideoSize](/API_docs/types/VideoSize.html) | Animated sticker profile picture, must contain either a [videoSizeEmojiMarkup](../constructors/videoSizeEmojiMarkup.html) or a [videoSizeStickerMarkup](../constructors/videoSizeStickerMarkup.html) constructor. | Optional| + + +### Return type: [photos.Photo](/API_docs/types/photos.Photo.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$photos_Photo = $MadelineProto->photos->uploadContactProfilePhoto(suggest: $Bool, save: $Bool, user_id: $InputUser, file: $InputFile, video: $InputFile, video_start_ts: $double, video_emoji_markup: $VideoSize, ); +``` + diff --git a/docs/API_docs/methods/photos.uploadProfilePhoto.md b/docs/API_docs/methods/photos.uploadProfilePhoto.md new file mode 100644 index 0000000000..b5d091c46a --- /dev/null +++ b/docs/API_docs/methods/photos.uploadProfilePhoto.md @@ -0,0 +1,49 @@ +--- +title: "photos.uploadProfilePhoto" +description: "Updates current user profile photo." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/photos_uploadProfilePhoto.html +--- +# Method: photos.uploadProfilePhoto +[Back to methods index](index.html) + + + +Updates current user profile photo. + +The `file`, `video` and `video_emoji_markup` flags are mutually exclusive. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|fallback|[Bool](/API_docs/types/Bool.html) | If set, the chosen profile photo will be shown to users that can't display your main profile photo due to your privacy settings. | Optional| +|bot|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Can contain info of a bot we own, to change the profile photo of that bot, instead of the current user. | Optional| +|file|[File path or InputFile](/API_docs/types/InputFile.html) | Profile photo | Optional| +|video|[File path or InputFile](/API_docs/types/InputFile.html) | [Animated profile picture](https://core.telegram.org/api/files#animated-profile-pictures) video | Optional| +|video\_start\_ts|[double](/API_docs/types/double.html) | Floating point UNIX timestamp in seconds, indicating the frame of the video/sticker that should be used as static preview; can only be used if `video` or `video_emoji_markup` is set. | Optional| +|video\_emoji\_markup|[VideoSize](/API_docs/types/VideoSize.html) | Animated sticker profile picture, must contain either a [videoSizeEmojiMarkup](../constructors/videoSizeEmojiMarkup.html) or a [videoSizeStickerMarkup](../constructors/videoSizeStickerMarkup.html) constructor. | Optional| + + +### Return type: [photos.Photo](/API_docs/types/photos.Photo.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$photos_Photo = $MadelineProto->photos->uploadProfilePhoto(fallback: $Bool, bot: $InputUser, file: $InputFile, video: $InputFile, video_start_ts: $double, video_emoji_markup: $VideoSize, ); +``` + diff --git a/docs/API_docs/methods/premium.applyBoost.md b/docs/API_docs/methods/premium.applyBoost.md new file mode 100644 index 0000000000..d8a4efd658 --- /dev/null +++ b/docs/API_docs/methods/premium.applyBoost.md @@ -0,0 +1,43 @@ +--- +title: "premium.applyBoost" +description: "Apply one or more [boosts »](https://core.telegram.org/api/boost) to a peer." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/premium_applyBoost.html +--- +# Method: premium.applyBoost +[Back to methods index](index.html) + + + +Apply one or more [boosts »](https://core.telegram.org/api/boost) to a peer. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|slots|Array of [int](/API_docs/types/int.html) | Which [boost slots](https://core.telegram.org/api/boost) to assign to this peer. | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The peer to boost. | Optional| + + +### Return type: [premium.MyBoosts](/API_docs/types/premium.MyBoosts.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$premium_MyBoosts = $MadelineProto->premium->applyBoost(slots: [$int, $int], peer: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/premium.getBoostsList.md b/docs/API_docs/methods/premium.getBoostsList.md new file mode 100644 index 0000000000..8801012dee --- /dev/null +++ b/docs/API_docs/methods/premium.getBoostsList.md @@ -0,0 +1,45 @@ +--- +title: "premium.getBoostsList" +description: "Obtains info about the boosts that were applied to a certain channel (admins only)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/premium_getBoostsList.html +--- +# Method: premium.getBoostsList +[Back to methods index](index.html) + + + +Obtains info about the boosts that were applied to a certain channel (admins only) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|gifts|[Bool](/API_docs/types/Bool.html) | Whether to return only info about boosts received from [gift codes and giveaways created by the channel »](https://core.telegram.org/api/giveaways) | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The channel | Optional| +|offset|[string](/API_docs/types/string.html) | Offset for pagination, obtained from [premium.boostsList](../constructors/premium.boostsList.html).`next_offset` | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [premium.BoostsList](/API_docs/types/premium.BoostsList.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$premium_BoostsList = $MadelineProto->premium->getBoostsList(gifts: $Bool, peer: $InputPeer, offset: 'string', limit: $int, ); +``` + diff --git a/docs/API_docs/methods/premium.getBoostsStatus.md b/docs/API_docs/methods/premium.getBoostsStatus.md new file mode 100644 index 0000000000..4b47c039ae --- /dev/null +++ b/docs/API_docs/methods/premium.getBoostsStatus.md @@ -0,0 +1,42 @@ +--- +title: "premium.getBoostsStatus" +description: "Gets the current [number of boosts](https://core.telegram.org/api/boost) of a channel." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/premium_getBoostsStatus.html +--- +# Method: premium.getBoostsStatus +[Back to methods index](index.html) + + + +Gets the current [number of boosts](https://core.telegram.org/api/boost) of a channel. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The peer. | Optional| + + +### Return type: [premium.BoostsStatus](/API_docs/types/premium.BoostsStatus.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$premium_BoostsStatus = $MadelineProto->premium->getBoostsStatus(peer: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/premium.getMyBoosts.md b/docs/API_docs/methods/premium.getMyBoosts.md new file mode 100644 index 0000000000..9d4070a12e --- /dev/null +++ b/docs/API_docs/methods/premium.getMyBoosts.md @@ -0,0 +1,37 @@ +--- +title: "premium.getMyBoosts" +description: "Obtain which peers are we currently [boosting](https://core.telegram.org/api/boost), and how many [boost slots](https://core.telegram.org/api/boost) we have left." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/premium_getMyBoosts.html +--- +# Method: premium.getMyBoosts +[Back to methods index](index.html) + + + +Obtain which peers are we currently [boosting](https://core.telegram.org/api/boost), and how many [boost slots](https://core.telegram.org/api/boost) we have left. + + + +### Return type: [premium.MyBoosts](/API_docs/types/premium.MyBoosts.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$premium_MyBoosts = $MadelineProto->premium->getMyBoosts(); +``` + diff --git a/docs/API_docs/methods/premium.getUserBoosts.md b/docs/API_docs/methods/premium.getUserBoosts.md new file mode 100644 index 0000000000..5c5fe6a63a --- /dev/null +++ b/docs/API_docs/methods/premium.getUserBoosts.md @@ -0,0 +1,43 @@ +--- +title: "premium.getUserBoosts" +description: "Returns the lists of boost that were applied to a channel by a specific user (admins only)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/premium_getUserBoosts.html +--- +# Method: premium.getUserBoosts +[Back to methods index](index.html) + + + +Returns the lists of boost that were applied to a channel by a specific user (admins only) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The channel | Optional| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | The user | Optional| + + +### Return type: [premium.BoostsList](/API_docs/types/premium.BoostsList.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$premium_BoostsList = $MadelineProto->premium->getUserBoosts(peer: $InputPeer, user_id: $InputUser, ); +``` + diff --git a/docs/API_docs/methods/smsjobs.finishJob.md b/docs/API_docs/methods/smsjobs.finishJob.md new file mode 100644 index 0000000000..44506f4cdc --- /dev/null +++ b/docs/API_docs/methods/smsjobs.finishJob.md @@ -0,0 +1,41 @@ +--- +title: "smsjobs.finishJob" +description: "smsjobs.finishJob parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/smsjobs_finishJob.html +--- +# Method: smsjobs.finishJob +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|job\_id|[string](/API_docs/types/string.html) | Optional| +|error|[string](/API_docs/types/string.html) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->smsjobs->finishJob(job_id: 'string', error: 'string', ); +``` + diff --git a/docs/API_docs/methods/smsjobs.getSmsJob.md b/docs/API_docs/methods/smsjobs.getSmsJob.md new file mode 100644 index 0000000000..d700a41300 --- /dev/null +++ b/docs/API_docs/methods/smsjobs.getSmsJob.md @@ -0,0 +1,40 @@ +--- +title: "smsjobs.getSmsJob" +description: "smsjobs.getSmsJob parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/smsjobs_getSmsJob.html +--- +# Method: smsjobs.getSmsJob +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|job\_id|[string](/API_docs/types/string.html) | Optional| + + +### Return type: [SmsJob](/API_docs/types/SmsJob.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$SmsJob = $MadelineProto->smsjobs->getSmsJob(job_id: 'string', ); +``` + diff --git a/docs/API_docs/methods/smsjobs.getStatus.md b/docs/API_docs/methods/smsjobs.getStatus.md new file mode 100644 index 0000000000..3e71d1abdc --- /dev/null +++ b/docs/API_docs/methods/smsjobs.getStatus.md @@ -0,0 +1,35 @@ +--- +title: "smsjobs.getStatus" +description: "smsjobs.getStatus parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/smsjobs_getStatus.html +--- +# Method: smsjobs.getStatus +[Back to methods index](index.html) + + + + + +### Return type: [smsjobs.Status](/API_docs/types/smsjobs.Status.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$smsjobs_Status = $MadelineProto->smsjobs->getStatus(); +``` + diff --git a/docs/API_docs/methods/smsjobs.isEligibleToJoin.md b/docs/API_docs/methods/smsjobs.isEligibleToJoin.md new file mode 100644 index 0000000000..1461e4df03 --- /dev/null +++ b/docs/API_docs/methods/smsjobs.isEligibleToJoin.md @@ -0,0 +1,35 @@ +--- +title: "smsjobs.isEligibleToJoin" +description: "smsjobs.isEligibleToJoin parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/smsjobs_isEligibleToJoin.html +--- +# Method: smsjobs.isEligibleToJoin +[Back to methods index](index.html) + + + + + +### Return type: [smsjobs.EligibilityToJoin](/API_docs/types/smsjobs.EligibilityToJoin.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$smsjobs_EligibilityToJoin = $MadelineProto->smsjobs->isEligibleToJoin(); +``` + diff --git a/docs/API_docs/methods/smsjobs.join.md b/docs/API_docs/methods/smsjobs.join.md new file mode 100644 index 0000000000..f23173317b --- /dev/null +++ b/docs/API_docs/methods/smsjobs.join.md @@ -0,0 +1,35 @@ +--- +title: "smsjobs.join" +description: "smsjobs.join parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/smsjobs_join.html +--- +# Method: smsjobs.join +[Back to methods index](index.html) + + + + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->smsjobs->join(); +``` + diff --git a/docs/API_docs/methods/smsjobs.leave.md b/docs/API_docs/methods/smsjobs.leave.md new file mode 100644 index 0000000000..60260789d3 --- /dev/null +++ b/docs/API_docs/methods/smsjobs.leave.md @@ -0,0 +1,35 @@ +--- +title: "smsjobs.leave" +description: "smsjobs.leave parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/smsjobs_leave.html +--- +# Method: smsjobs.leave +[Back to methods index](index.html) + + + + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->smsjobs->leave(); +``` + diff --git a/docs/API_docs/methods/smsjobs.updateSettings.md b/docs/API_docs/methods/smsjobs.updateSettings.md new file mode 100644 index 0000000000..64c0b6300d --- /dev/null +++ b/docs/API_docs/methods/smsjobs.updateSettings.md @@ -0,0 +1,40 @@ +--- +title: "smsjobs.updateSettings" +description: "smsjobs.updateSettings parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/smsjobs_updateSettings.html +--- +# Method: smsjobs.updateSettings +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|allow\_international|[Bool](/API_docs/types/Bool.html) | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->smsjobs->updateSettings(allow_international: $Bool, ); +``` + diff --git a/docs/API_docs/methods/stats.getBroadcastRevenueStats.md b/docs/API_docs/methods/stats.getBroadcastRevenueStats.md new file mode 100644 index 0000000000..5598a53a52 --- /dev/null +++ b/docs/API_docs/methods/stats.getBroadcastRevenueStats.md @@ -0,0 +1,41 @@ +--- +title: "stats.getBroadcastRevenueStats" +description: "stats.getBroadcastRevenueStats parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stats_getBroadcastRevenueStats.html +--- +# Method: stats.getBroadcastRevenueStats +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|dark|[Bool](/API_docs/types/Bool.html) | Optional| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Optional| + + +### Return type: [stats.BroadcastRevenueStats](/API_docs/types/stats.BroadcastRevenueStats.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$stats_BroadcastRevenueStats = $MadelineProto->stats->getBroadcastRevenueStats(dark: $Bool, channel: $InputChannel, ); +``` + diff --git a/docs/API_docs/methods/stats.getBroadcastRevenueTransactions.md b/docs/API_docs/methods/stats.getBroadcastRevenueTransactions.md new file mode 100644 index 0000000000..f02324d7a4 --- /dev/null +++ b/docs/API_docs/methods/stats.getBroadcastRevenueTransactions.md @@ -0,0 +1,42 @@ +--- +title: "stats.getBroadcastRevenueTransactions" +description: "stats.getBroadcastRevenueTransactions parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stats_getBroadcastRevenueTransactions.html +--- +# Method: stats.getBroadcastRevenueTransactions +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Optional| +|offset|[int](/API_docs/types/int.html) | Optional| +|limit|[int](/API_docs/types/int.html) | Optional| + + +### Return type: [stats.BroadcastRevenueTransactions](/API_docs/types/stats.BroadcastRevenueTransactions.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$stats_BroadcastRevenueTransactions = $MadelineProto->stats->getBroadcastRevenueTransactions(channel: $InputChannel, offset: $int, limit: $int, ); +``` + diff --git a/docs/API_docs/methods/stats.getBroadcastRevenueWithdrawalUrl.md b/docs/API_docs/methods/stats.getBroadcastRevenueWithdrawalUrl.md new file mode 100644 index 0000000000..6bb3d54f56 --- /dev/null +++ b/docs/API_docs/methods/stats.getBroadcastRevenueWithdrawalUrl.md @@ -0,0 +1,41 @@ +--- +title: "stats.getBroadcastRevenueWithdrawalUrl" +description: "stats.getBroadcastRevenueWithdrawalUrl parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stats_getBroadcastRevenueWithdrawalUrl.html +--- +# Method: stats.getBroadcastRevenueWithdrawalUrl +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Optional| +|password|[InputCheckPasswordSRP](/API_docs/types/InputCheckPasswordSRP.html) | Yes| + + +### Return type: [stats.BroadcastRevenueWithdrawalUrl](/API_docs/types/stats.BroadcastRevenueWithdrawalUrl.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$stats_BroadcastRevenueWithdrawalUrl = $MadelineProto->stats->getBroadcastRevenueWithdrawalUrl(channel: $InputChannel, password: $InputCheckPasswordSRP, ); +``` + diff --git a/docs/API_docs/methods/stats.getBroadcastStats.md b/docs/API_docs/methods/stats.getBroadcastStats.md new file mode 100644 index 0000000000..2af7eda1d8 --- /dev/null +++ b/docs/API_docs/methods/stats.getBroadcastStats.md @@ -0,0 +1,43 @@ +--- +title: "stats.getBroadcastStats" +description: "Get [channel statistics](https://core.telegram.org/api/stats)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stats_getBroadcastStats.html +--- +# Method: stats.getBroadcastStats +[Back to methods index](index.html) + + + +Get [channel statistics](https://core.telegram.org/api/stats) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|dark|[Bool](/API_docs/types/Bool.html) | Whether to enable dark theme for graph colors | Optional| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | The channel | Optional| + + +### Return type: [stats.BroadcastStats](/API_docs/types/stats.BroadcastStats.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$stats_BroadcastStats = $MadelineProto->stats->getBroadcastStats(dark: $Bool, channel: $InputChannel, ); +``` + diff --git a/docs/API_docs/methods/stats.getMegagroupStats.md b/docs/API_docs/methods/stats.getMegagroupStats.md new file mode 100644 index 0000000000..255dbc8907 --- /dev/null +++ b/docs/API_docs/methods/stats.getMegagroupStats.md @@ -0,0 +1,43 @@ +--- +title: "stats.getMegagroupStats" +description: "Get [supergroup statistics](https://core.telegram.org/api/stats)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stats_getMegagroupStats.html +--- +# Method: stats.getMegagroupStats +[Back to methods index](index.html) + + + +Get [supergroup statistics](https://core.telegram.org/api/stats) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|dark|[Bool](/API_docs/types/Bool.html) | Whether to enable dark theme for graph colors | Optional| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | [Supergroup ID](https://core.telegram.org/api/channel) | Optional| + + +### Return type: [stats.MegagroupStats](/API_docs/types/stats.MegagroupStats.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$stats_MegagroupStats = $MadelineProto->stats->getMegagroupStats(dark: $Bool, channel: $InputChannel, ); +``` + diff --git a/docs/API_docs/methods/stats.getMessagePublicForwards.md b/docs/API_docs/methods/stats.getMessagePublicForwards.md new file mode 100644 index 0000000000..6364e50c7b --- /dev/null +++ b/docs/API_docs/methods/stats.getMessagePublicForwards.md @@ -0,0 +1,46 @@ +--- +title: "stats.getMessagePublicForwards" +description: "Obtains a list of messages, indicating to which other public channels was a channel message forwarded. " +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stats_getMessagePublicForwards.html +--- +# Method: stats.getMessagePublicForwards +[Back to methods index](index.html) + + + +Obtains a list of messages, indicating to which other public channels was a channel message forwarded. +Will return a list of [messages](../constructors/message.html) with `peer_id` equal to the public channel to which this message was forwarded. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Source channel | Optional| +|msg\_id|[int](/API_docs/types/int.html) | Source message ID | Optional| +|offset|[string](/API_docs/types/string.html) | Offset for [pagination](https://core.telegram.org/api/offsets), empty string on first call, then use the `next_offset` field of the returned constructor (if present, otherwise no more results are available). | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [stats.PublicForwards](/API_docs/types/stats.PublicForwards.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$stats_PublicForwards = $MadelineProto->stats->getMessagePublicForwards(channel: $InputChannel, msg_id: $int, offset: 'string', limit: $int, ); +``` + diff --git a/docs/API_docs/methods/stats.getMessageStats.md b/docs/API_docs/methods/stats.getMessageStats.md new file mode 100644 index 0000000000..9221c3094d --- /dev/null +++ b/docs/API_docs/methods/stats.getMessageStats.md @@ -0,0 +1,44 @@ +--- +title: "stats.getMessageStats" +description: "Get [message statistics](https://core.telegram.org/api/stats)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stats_getMessageStats.html +--- +# Method: stats.getMessageStats +[Back to methods index](index.html) + + + +Get [message statistics](https://core.telegram.org/api/stats) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|dark|[Bool](/API_docs/types/Bool.html) | Whether to enable dark theme for graph colors | Optional| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | Channel ID | Optional| +|msg\_id|[int](/API_docs/types/int.html) | Message ID | Optional| + + +### Return type: [stats.MessageStats](/API_docs/types/stats.MessageStats.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$stats_MessageStats = $MadelineProto->stats->getMessageStats(dark: $Bool, channel: $InputChannel, msg_id: $int, ); +``` + diff --git a/docs/API_docs/methods/stats.getStoryPublicForwards.md b/docs/API_docs/methods/stats.getStoryPublicForwards.md new file mode 100644 index 0000000000..7baf78dd7d --- /dev/null +++ b/docs/API_docs/methods/stats.getStoryPublicForwards.md @@ -0,0 +1,45 @@ +--- +title: "stats.getStoryPublicForwards" +description: "Obtain forwards of a [story](https://core.telegram.org/api/stories) as a message to public chats and reposts by public channels." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stats_getStoryPublicForwards.html +--- +# Method: stats.getStoryPublicForwards +[Back to methods index](index.html) + + + +Obtain forwards of a [story](https://core.telegram.org/api/stories) as a message to public chats and reposts by public channels. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer where the story was originally posted | Optional| +|id|[int](/API_docs/types/int.html) | [Story](https://core.telegram.org/api/stories) ID | Optional| +|offset|[string](/API_docs/types/string.html) | Offset for pagination, from [stats.PublicForwards](../constructors/stats.publicForwards.html).`next_offset`. | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [stats.PublicForwards](/API_docs/types/stats.PublicForwards.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$stats_PublicForwards = $MadelineProto->stats->getStoryPublicForwards(peer: $InputPeer, id: $int, offset: 'string', limit: $int, ); +``` + diff --git a/docs/API_docs/methods/stats.getStoryStats.md b/docs/API_docs/methods/stats.getStoryStats.md new file mode 100644 index 0000000000..4a4d7ff83d --- /dev/null +++ b/docs/API_docs/methods/stats.getStoryStats.md @@ -0,0 +1,44 @@ +--- +title: "stats.getStoryStats" +description: "Get [statistics](https://core.telegram.org/api/stats) for a certain [story](https://core.telegram.org/api/stories)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stats_getStoryStats.html +--- +# Method: stats.getStoryStats +[Back to methods index](index.html) + + + +Get [statistics](https://core.telegram.org/api/stats) for a certain [story](https://core.telegram.org/api/stories). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|dark|[Bool](/API_docs/types/Bool.html) | Whether to enable the dark theme for graph colors | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The peer that posted the story | Optional| +|id|[int](/API_docs/types/int.html) | Story ID | Optional| + + +### Return type: [stats.StoryStats](/API_docs/types/stats.StoryStats.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$stats_StoryStats = $MadelineProto->stats->getStoryStats(dark: $Bool, peer: $InputPeer, id: $int, ); +``` + diff --git a/docs/API_docs/methods/stats.loadAsyncGraph.md b/docs/API_docs/methods/stats.loadAsyncGraph.md new file mode 100644 index 0000000000..4eab95ab7d --- /dev/null +++ b/docs/API_docs/methods/stats.loadAsyncGraph.md @@ -0,0 +1,43 @@ +--- +title: "stats.loadAsyncGraph" +description: "Load [channel statistics graph](https://core.telegram.org/api/stats) asynchronously" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stats_loadAsyncGraph.html +--- +# Method: stats.loadAsyncGraph +[Back to methods index](index.html) + + + +Load [channel statistics graph](https://core.telegram.org/api/stats) asynchronously + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|token|[string](/API_docs/types/string.html) | Graph token from [statsGraphAsync](../constructors/statsGraphAsync.html) constructor | Optional| +|x|[long](/API_docs/types/long.html) | Zoom value, if required | Optional| + + +### Return type: [StatsGraph](/API_docs/types/StatsGraph.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$StatsGraph = $MadelineProto->stats->loadAsyncGraph(token: 'string', x: $long, ); +``` + diff --git a/docs/API_docs/methods/stickers.addStickerToSet.md b/docs/API_docs/methods/stickers.addStickerToSet.md new file mode 100644 index 0000000000..f93ba5ca0e --- /dev/null +++ b/docs/API_docs/methods/stickers.addStickerToSet.md @@ -0,0 +1,43 @@ +--- +title: "stickers.addStickerToSet" +description: "Add a sticker to a stickerset, bots only. The sticker set must have been created by the bot." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stickers_addStickerToSet.html +--- +# Method: stickers.addStickerToSet +[Back to methods index](index.html) + + + +Add a sticker to a stickerset, bots only. The sticker set must have been created by the bot. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|stickerset|[InputStickerSet](/API_docs/types/InputStickerSet.html) | The stickerset | Optional| +|sticker|[InputStickerSetItem](/API_docs/types/InputStickerSetItem.html) | The sticker | Yes| + + +### Return type: [messages.StickerSet](/API_docs/types/messages.StickerSet.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_StickerSet = $MadelineProto->stickers->addStickerToSet(stickerset: $InputStickerSet, sticker: $InputStickerSetItem, ); +``` + diff --git a/docs/API_docs/methods/stickers.changeSticker.md b/docs/API_docs/methods/stickers.changeSticker.md new file mode 100644 index 0000000000..18b1f0d49d --- /dev/null +++ b/docs/API_docs/methods/stickers.changeSticker.md @@ -0,0 +1,45 @@ +--- +title: "stickers.changeSticker" +description: "Update the keywords, emojis or [mask coordinates](https://core.telegram.org/api/stickers#mask-stickers) of a sticker, bots only." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stickers_changeSticker.html +--- +# Method: stickers.changeSticker +[Back to methods index](index.html) + + + +Update the keywords, emojis or [mask coordinates](https://core.telegram.org/api/stickers#mask-stickers) of a sticker, bots only. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|sticker|[MessageMedia, Update, Message or InputDocument](/API_docs/types/InputDocument.html) | The sticker | Optional| +|emoji|[string](/API_docs/types/string.html) | If set, updates the emoji list associated to the sticker | Optional| +|mask\_coords|[MaskCoords](/API_docs/types/MaskCoords.html) | If set, updates the [mask coordinates](https://core.telegram.org/api/stickers#mask-stickers) | Optional| +|keywords|[string](/API_docs/types/string.html) | If set, updates the sticker keywords (separated by commas). Can't be provided for mask stickers. | Optional| + + +### Return type: [messages.StickerSet](/API_docs/types/messages.StickerSet.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_StickerSet = $MadelineProto->stickers->changeSticker(sticker: $InputDocument, emoji: 'string', mask_coords: $MaskCoords, keywords: 'string', ); +``` + diff --git a/docs/API_docs/methods/stickers.changeStickerPosition.md b/docs/API_docs/methods/stickers.changeStickerPosition.md new file mode 100644 index 0000000000..5e9f5370bf --- /dev/null +++ b/docs/API_docs/methods/stickers.changeStickerPosition.md @@ -0,0 +1,43 @@ +--- +title: "stickers.changeStickerPosition" +description: "Changes the absolute position of a sticker in the set to which it belongs; for bots only. The sticker set must have been created by the bot" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stickers_changeStickerPosition.html +--- +# Method: stickers.changeStickerPosition +[Back to methods index](index.html) + + + +Changes the absolute position of a sticker in the set to which it belongs; for bots only. The sticker set must have been created by the bot + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|sticker|[MessageMedia, Update, Message or InputDocument](/API_docs/types/InputDocument.html) | The sticker | Optional| +|position|[int](/API_docs/types/int.html) | The new position of the sticker, zero-based | Optional| + + +### Return type: [messages.StickerSet](/API_docs/types/messages.StickerSet.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_StickerSet = $MadelineProto->stickers->changeStickerPosition(sticker: $InputDocument, position: $int, ); +``` + diff --git a/docs/API_docs/methods/stickers.checkShortName.md b/docs/API_docs/methods/stickers.checkShortName.md new file mode 100644 index 0000000000..e304bca1b8 --- /dev/null +++ b/docs/API_docs/methods/stickers.checkShortName.md @@ -0,0 +1,42 @@ +--- +title: "stickers.checkShortName" +description: "Check whether the given short name is available" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stickers_checkShortName.html +--- +# Method: stickers.checkShortName +[Back to methods index](index.html) + + + +Check whether the given short name is available + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|short\_name|[string](/API_docs/types/string.html) | Short name | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->stickers->checkShortName(short_name: 'string', ); +``` + diff --git a/docs/API_docs/methods/stickers.createStickerSet.md b/docs/API_docs/methods/stickers.createStickerSet.md new file mode 100644 index 0000000000..0a52716514 --- /dev/null +++ b/docs/API_docs/methods/stickers.createStickerSet.md @@ -0,0 +1,50 @@ +--- +title: "stickers.createStickerSet" +description: "Create a stickerset, bots only." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stickers_createStickerSet.html +--- +# Method: stickers.createStickerSet +[Back to methods index](index.html) + + + +Create a stickerset, bots only. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|masks|[Bool](/API_docs/types/Bool.html) | Whether this is a mask stickerset | Optional| +|emojis|[Bool](/API_docs/types/Bool.html) | Whether this is a [custom emoji](https://core.telegram.org/api/custom-emoji) stickerset. | Optional| +|text\_color|[Bool](/API_docs/types/Bool.html) | Whether the color of TGS custom emojis contained in this set should be changed to the text color when used in messages, the accent color if used as emoji status, white on chat photos, or another appropriate color based on context. For custom emoji stickersets only. | Optional| +|user\_id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Stickerset owner | Optional| +|title|[string](/API_docs/types/string.html) | Stickerset name, `1-64` chars | Optional| +|short\_name|[string](/API_docs/types/string.html) | Short name of sticker set, to be used in [sticker deep links »](https://core.telegram.org/api/links#stickerset-links). Can contain only english letters, digits and underscores. Must begin with a letter, can't contain consecutive underscores and, **if called by a bot**, must end in `"_by_"`. `` is case insensitive. 1-64 characters. | Optional| +|thumb|[MessageMedia, Update, Message or InputDocument](/API_docs/types/InputDocument.html) | Thumbnail | Optional| +|stickers|Array of [InputStickerSetItem](/API_docs/types/InputStickerSetItem.html) | Stickers | Yes| +|software|[string](/API_docs/types/string.html) | Used when [importing stickers using the sticker import SDKs](https://core.telegram.org/import-stickers), specifies the name of the software that created the stickers | Optional| + + +### Return type: [messages.StickerSet](/API_docs/types/messages.StickerSet.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_StickerSet = $MadelineProto->stickers->createStickerSet(masks: $Bool, emojis: $Bool, text_color: $Bool, user_id: $InputUser, title: 'string', short_name: 'string', thumb: $InputDocument, stickers: [$InputStickerSetItem, $InputStickerSetItem], software: 'string', ); +``` + diff --git a/docs/API_docs/methods/stickers.deleteStickerSet.md b/docs/API_docs/methods/stickers.deleteStickerSet.md new file mode 100644 index 0000000000..fe92efac8b --- /dev/null +++ b/docs/API_docs/methods/stickers.deleteStickerSet.md @@ -0,0 +1,42 @@ +--- +title: "stickers.deleteStickerSet" +description: "Deletes a stickerset we created, bots only." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stickers_deleteStickerSet.html +--- +# Method: stickers.deleteStickerSet +[Back to methods index](index.html) + + + +Deletes a stickerset we created, bots only. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|stickerset|[InputStickerSet](/API_docs/types/InputStickerSet.html) | Stickerset to delete | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->stickers->deleteStickerSet(stickerset: $InputStickerSet, ); +``` + diff --git a/docs/API_docs/methods/stickers.removeStickerFromSet.md b/docs/API_docs/methods/stickers.removeStickerFromSet.md new file mode 100644 index 0000000000..e2ca9b8b3f --- /dev/null +++ b/docs/API_docs/methods/stickers.removeStickerFromSet.md @@ -0,0 +1,42 @@ +--- +title: "stickers.removeStickerFromSet" +description: "Remove a sticker from the set where it belongs, bots only. The sticker set must have been created by the bot." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stickers_removeStickerFromSet.html +--- +# Method: stickers.removeStickerFromSet +[Back to methods index](index.html) + + + +Remove a sticker from the set where it belongs, bots only. The sticker set must have been created by the bot. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|sticker|[MessageMedia, Update, Message or InputDocument](/API_docs/types/InputDocument.html) | The sticker to remove | Optional| + + +### Return type: [messages.StickerSet](/API_docs/types/messages.StickerSet.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_StickerSet = $MadelineProto->stickers->removeStickerFromSet(sticker: $InputDocument, ); +``` + diff --git a/docs/API_docs/methods/stickers.renameStickerSet.md b/docs/API_docs/methods/stickers.renameStickerSet.md new file mode 100644 index 0000000000..1c941eaaf8 --- /dev/null +++ b/docs/API_docs/methods/stickers.renameStickerSet.md @@ -0,0 +1,43 @@ +--- +title: "stickers.renameStickerSet" +description: "Renames a stickerset, bots only." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stickers_renameStickerSet.html +--- +# Method: stickers.renameStickerSet +[Back to methods index](index.html) + + + +Renames a stickerset, bots only. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|stickerset|[InputStickerSet](/API_docs/types/InputStickerSet.html) | Stickerset to rename | Optional| +|title|[string](/API_docs/types/string.html) | New stickerset title | Optional| + + +### Return type: [messages.StickerSet](/API_docs/types/messages.StickerSet.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_StickerSet = $MadelineProto->stickers->renameStickerSet(stickerset: $InputStickerSet, title: 'string', ); +``` + diff --git a/docs/API_docs/methods/stickers.replaceSticker.md b/docs/API_docs/methods/stickers.replaceSticker.md new file mode 100644 index 0000000000..8034f6ac57 --- /dev/null +++ b/docs/API_docs/methods/stickers.replaceSticker.md @@ -0,0 +1,41 @@ +--- +title: "stickers.replaceSticker" +description: "stickers.replaceSticker parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stickers_replaceSticker.html +--- +# Method: stickers.replaceSticker +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|sticker|[MessageMedia, Update, Message or InputDocument](/API_docs/types/InputDocument.html) | Optional| +|new\_sticker|[InputStickerSetItem](/API_docs/types/InputStickerSetItem.html) | Yes| + + +### Return type: [messages.StickerSet](/API_docs/types/messages.StickerSet.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_StickerSet = $MadelineProto->stickers->replaceSticker(sticker: $InputDocument, new_sticker: $InputStickerSetItem, ); +``` + diff --git a/docs/API_docs/methods/stickers.setStickerSetThumb.md b/docs/API_docs/methods/stickers.setStickerSetThumb.md new file mode 100644 index 0000000000..fcab5fbd4c --- /dev/null +++ b/docs/API_docs/methods/stickers.setStickerSetThumb.md @@ -0,0 +1,44 @@ +--- +title: "stickers.setStickerSetThumb" +description: "Set stickerset thumbnail" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stickers_setStickerSetThumb.html +--- +# Method: stickers.setStickerSetThumb +[Back to methods index](index.html) + + + +Set stickerset thumbnail + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|stickerset|[InputStickerSet](/API_docs/types/InputStickerSet.html) | Stickerset | Optional| +|thumb|[MessageMedia, Update, Message or InputDocument](/API_docs/types/InputDocument.html) | Thumbnail (only for normal stickersets, not custom emoji stickersets). | Optional| +|thumb\_document\_id|[long](/API_docs/types/long.html) | Only for [custom emoji stickersets](https://core.telegram.org/api/custom-emoji), ID of a custom emoji present in the set to use as thumbnail; pass 0 to fallback to the first custom emoji of the set. | Optional| + + +### Return type: [messages.StickerSet](/API_docs/types/messages.StickerSet.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_StickerSet = $MadelineProto->stickers->setStickerSetThumb(stickerset: $InputStickerSet, thumb: $InputDocument, thumb_document_id: $long, ); +``` + diff --git a/docs/API_docs/methods/stickers.suggestShortName.md b/docs/API_docs/methods/stickers.suggestShortName.md new file mode 100644 index 0000000000..e8b8c0ddc1 --- /dev/null +++ b/docs/API_docs/methods/stickers.suggestShortName.md @@ -0,0 +1,42 @@ +--- +title: "stickers.suggestShortName" +description: "Suggests a short name for a given stickerpack name" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stickers_suggestShortName.html +--- +# Method: stickers.suggestShortName +[Back to methods index](index.html) + + + +Suggests a short name for a given stickerpack name + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|title|[string](/API_docs/types/string.html) | Sticker pack name | Optional| + + +### Return type: [stickers.SuggestedShortName](/API_docs/types/stickers.SuggestedShortName.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$stickers_SuggestedShortName = $MadelineProto->stickers->suggestShortName(title: 'string', ); +``` + diff --git a/docs/API_docs/methods/stories.activateStealthMode.md b/docs/API_docs/methods/stories.activateStealthMode.md new file mode 100644 index 0000000000..ca0c854a6f --- /dev/null +++ b/docs/API_docs/methods/stories.activateStealthMode.md @@ -0,0 +1,45 @@ +--- +title: "stories.activateStealthMode" +description: "Activates [stories stealth mode](https://core.telegram.org/api/stories#stealth-mode), see [here »](https://core.telegram.org/api/stories#stealth-mode) for more info." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_activateStealthMode.html +--- +# Method: stories.activateStealthMode +[Back to methods index](index.html) + + + +Activates [stories stealth mode](https://core.telegram.org/api/stories#stealth-mode), see [here »](https://core.telegram.org/api/stories#stealth-mode) for more info. + +Will return an [updateStoriesStealthMode](../constructors/updateStoriesStealthMode.html). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|past|[Bool](/API_docs/types/Bool.html) | Whether to erase views from any stories opened in the past [`stories_stealth_past_period` seconds »](https://core.telegram.org/api/config#stories-stealth-past-period), as specified by the [client configuration](https://core.telegram.org/api/config#client-configuration). | Optional| +|future|[Bool](/API_docs/types/Bool.html) | Whether to hide future story views for the next [`stories_stealth_future_period` seconds »](https://core.telegram.org/api/config#stories-stealth-future-period), as specified by the [client configuration](https://core.telegram.org/api/config#client-configuration). | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->stories->activateStealthMode(past: $Bool, future: $Bool, ); +``` + diff --git a/docs/API_docs/methods/stories.canSendStory.md b/docs/API_docs/methods/stories.canSendStory.md new file mode 100644 index 0000000000..bc4ab5b982 --- /dev/null +++ b/docs/API_docs/methods/stories.canSendStory.md @@ -0,0 +1,42 @@ +--- +title: "stories.canSendStory" +description: "Check whether we can post stories as the specified peer." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_canSendStory.html +--- +# Method: stories.canSendStory +[Back to methods index](index.html) + + + +Check whether we can post stories as the specified peer. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The peer from which we wish to post stories. | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->stories->canSendStory(peer: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/stories.deleteStories.md b/docs/API_docs/methods/stories.deleteStories.md new file mode 100644 index 0000000000..8452d950e5 --- /dev/null +++ b/docs/API_docs/methods/stories.deleteStories.md @@ -0,0 +1,43 @@ +--- +title: "stories.deleteStories" +description: "Deletes some posted [stories](https://core.telegram.org/api/stories)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_deleteStories.html +--- +# Method: stories.deleteStories +[Back to methods index](index.html) + + + +Deletes some posted [stories](https://core.telegram.org/api/stories). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Channel/user from where to delete stories. | Optional| +|id|Array of [int](/API_docs/types/int.html) | IDs of stories to delete. | Yes| + + +### Return type: [Vector\_of\_int](/API_docs/types/int.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_int = $MadelineProto->stories->deleteStories(peer: $InputPeer, id: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/stories.editStory.md b/docs/API_docs/methods/stories.editStory.md new file mode 100644 index 0000000000..67d00795db --- /dev/null +++ b/docs/API_docs/methods/stories.editStory.md @@ -0,0 +1,109 @@ +--- +title: "stories.editStory" +description: "Edit an uploaded [story](https://core.telegram.org/api/stories)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_editStory.html +--- +# Method: stories.editStory +[Back to methods index](index.html) + + + +Edit an uploaded [story](https://core.telegram.org/api/stories) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer where the story was posted. | Optional| +|id|[int](/API_docs/types/int.html) | ID of story to edit. | Optional| +|media|[MessageMedia, Update, Message or InputMedia](/API_docs/types/InputMedia.html) | If specified, replaces the story media. | Optional| +|media\_areas|Array of [MediaArea](/API_docs/types/MediaArea.html) | [Media areas](https://core.telegram.org/api/stories#media-areas) associated to the story, see [here »](https://core.telegram.org/api/stories#media-areas) for more info. | Optional| +|caption|[string](/API_docs/types/string.html) | If specified, replaces the story caption. | Optional| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | [Message entities for styled text in the caption](https://core.telegram.org/api/entities), if allowed by the [`stories_entities` client configuration parameter »](https://core.telegram.org/api/config#stories-entities). | Optional| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|privacy\_rules|Array of [InputPrivacyRule](/API_docs/types/InputPrivacyRule.html) | If specified, alters the [privacy settings »](https://core.telegram.org/api/privacy) of the story, changing who can or can't view the story. | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->stories->editStory(peer: $InputPeer, id: $int, media: $InputMedia, media_areas: [$MediaArea, $MediaArea], caption: 'string', entities: [$MessageEntity, $MessageEntity], parse_mode: 'string', privacy_rules: [$InputPrivacyRule, $InputPrivacyRule], ); +``` + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + diff --git a/docs/API_docs/methods/stories.exportStoryLink.md b/docs/API_docs/methods/stories.exportStoryLink.md new file mode 100644 index 0000000000..16fa6534d9 --- /dev/null +++ b/docs/API_docs/methods/stories.exportStoryLink.md @@ -0,0 +1,43 @@ +--- +title: "stories.exportStoryLink" +description: "Generate a [story deep link](https://core.telegram.org/api/links#story-links) for a specific story" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_exportStoryLink.html +--- +# Method: stories.exportStoryLink +[Back to methods index](index.html) + + + +Generate a [story deep link](https://core.telegram.org/api/links#story-links) for a specific story + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer where the story was posted | Optional| +|id|[int](/API_docs/types/int.html) | Story ID | Optional| + + +### Return type: [ExportedStoryLink](/API_docs/types/ExportedStoryLink.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$ExportedStoryLink = $MadelineProto->stories->exportStoryLink(peer: $InputPeer, id: $int, ); +``` + diff --git a/docs/API_docs/methods/stories.getAllReadPeerStories.md b/docs/API_docs/methods/stories.getAllReadPeerStories.md new file mode 100644 index 0000000000..784c078723 --- /dev/null +++ b/docs/API_docs/methods/stories.getAllReadPeerStories.md @@ -0,0 +1,37 @@ +--- +title: "stories.getAllReadPeerStories" +description: "Obtain the latest read story ID for all peers when first logging in, returned as a list of [updateReadStories](../constructors/updateReadStories.html) updates, see [here »](https://core.telegram.org/api/stories#watching-stories) for more info." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_getAllReadPeerStories.html +--- +# Method: stories.getAllReadPeerStories +[Back to methods index](index.html) + + + +Obtain the latest read story ID for all peers when first logging in, returned as a list of [updateReadStories](../constructors/updateReadStories.html) updates, see [here »](https://core.telegram.org/api/stories#watching-stories) for more info. + + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->stories->getAllReadPeerStories(); +``` + diff --git a/docs/API_docs/methods/stories.getAllStories.md b/docs/API_docs/methods/stories.getAllStories.md new file mode 100644 index 0000000000..eedec4e579 --- /dev/null +++ b/docs/API_docs/methods/stories.getAllStories.md @@ -0,0 +1,44 @@ +--- +title: "stories.getAllStories" +description: "Fetch the List of active (or active and hidden) stories, see [here »](https://core.telegram.org/api/stories#watching-stories) for more info on watching stories." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_getAllStories.html +--- +# Method: stories.getAllStories +[Back to methods index](index.html) + + + +Fetch the List of active (or active and hidden) stories, see [here »](https://core.telegram.org/api/stories#watching-stories) for more info on watching stories. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|next|[Bool](/API_docs/types/Bool.html) | If `next` and `state` are both set, uses the passed `state` to paginate to the next results; if neither `state` nor `next` are set, fetches the initial page; if `state` is set and `next` is not set, check for changes in the active/hidden peerset, see [here »](https://core.telegram.org/api/stories#watching-stories) for more info on the full flow. | Optional| +|hidden|[Bool](/API_docs/types/Bool.html) | If set, fetches the hidden active story list, otherwise fetches the active story list, see [here »](https://core.telegram.org/api/stories#watching-stories) for more info on the full flow. | Optional| +|state|[string](/API_docs/types/string.html) | If `next` and `state` are both set, uses the passed `state` to paginate to the next results; if neither `state` nor `next` are set, fetches the initial page; if `state` is set and `next` is not set, check for changes in the active/hidden peerset, see [here »](https://core.telegram.org/api/stories#watching-stories) for more info on the full flow. | Optional| + + +### Return type: [stories.AllStories](/API_docs/types/stories.AllStories.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$stories_AllStories = $MadelineProto->stories->getAllStories(next: $Bool, hidden: $Bool, state: 'string', ); +``` + diff --git a/docs/API_docs/methods/stories.getChatsToSend.md b/docs/API_docs/methods/stories.getChatsToSend.md new file mode 100644 index 0000000000..d9c9ec8110 --- /dev/null +++ b/docs/API_docs/methods/stories.getChatsToSend.md @@ -0,0 +1,37 @@ +--- +title: "stories.getChatsToSend" +description: "Obtain a list of channels where the user can post [stories](https://core.telegram.org/api/stories)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_getChatsToSend.html +--- +# Method: stories.getChatsToSend +[Back to methods index](index.html) + + + +Obtain a list of channels where the user can post [stories](https://core.telegram.org/api/stories) + + + +### Return type: [messages.Chats](/API_docs/types/messages.Chats.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$messages_Chats = $MadelineProto->stories->getChatsToSend(); +``` + diff --git a/docs/API_docs/methods/stories.getPeerMaxIDs.md b/docs/API_docs/methods/stories.getPeerMaxIDs.md new file mode 100644 index 0000000000..39c5a74cee --- /dev/null +++ b/docs/API_docs/methods/stories.getPeerMaxIDs.md @@ -0,0 +1,42 @@ +--- +title: "stories.getPeerMaxIDs" +description: "Get the IDs of the maximum read stories for a set of peers." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_getPeerMaxIDs.html +--- +# Method: stories.getPeerMaxIDs +[Back to methods index](index.html) + + + +Get the IDs of the maximum read stories for a set of peers. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|Array of [Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peers | Yes| + + +### Return type: [Vector\_of\_int](/API_docs/types/int.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_int = $MadelineProto->stories->getPeerMaxIDs(id: [$InputPeer, $InputPeer], ); +``` + diff --git a/docs/API_docs/methods/stories.getPeerStories.md b/docs/API_docs/methods/stories.getPeerStories.md new file mode 100644 index 0000000000..3c30bdb212 --- /dev/null +++ b/docs/API_docs/methods/stories.getPeerStories.md @@ -0,0 +1,42 @@ +--- +title: "stories.getPeerStories" +description: "Fetch the full active [story list](https://core.telegram.org/api/stories#watching-stories) of a specific peer." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_getPeerStories.html +--- +# Method: stories.getPeerStories +[Back to methods index](index.html) + + + +Fetch the full active [story list](https://core.telegram.org/api/stories#watching-stories) of a specific peer. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer whose stories should be fetched | Optional| + + +### Return type: [stories.PeerStories](/API_docs/types/stories.PeerStories.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$stories_PeerStories = $MadelineProto->stories->getPeerStories(peer: $InputPeer, ); +``` + diff --git a/docs/API_docs/methods/stories.getPinnedStories.md b/docs/API_docs/methods/stories.getPinnedStories.md new file mode 100644 index 0000000000..2ac5bd8241 --- /dev/null +++ b/docs/API_docs/methods/stories.getPinnedStories.md @@ -0,0 +1,44 @@ +--- +title: "stories.getPinnedStories" +description: "Fetch the [stories](https://core.telegram.org/api/stories#pinned-or-archived-stories) pinned on a peer's profile." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_getPinnedStories.html +--- +# Method: stories.getPinnedStories +[Back to methods index](index.html) + + + +Fetch the [stories](https://core.telegram.org/api/stories#pinned-or-archived-stories) pinned on a peer's profile. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer whose pinned stories should be fetched | Optional| +|offset\_id|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [stories.Stories](/API_docs/types/stories.Stories.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$stories_Stories = $MadelineProto->stories->getPinnedStories(peer: $InputPeer, offset_id: $int, limit: $int, ); +``` + diff --git a/docs/API_docs/methods/stories.getStoriesArchive.md b/docs/API_docs/methods/stories.getStoriesArchive.md new file mode 100644 index 0000000000..3ce43a5557 --- /dev/null +++ b/docs/API_docs/methods/stories.getStoriesArchive.md @@ -0,0 +1,44 @@ +--- +title: "stories.getStoriesArchive" +description: "Fetch the [story archive »](https://core.telegram.org/api/stories#pinned-or-archived-stories) of a peer we control." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_getStoriesArchive.html +--- +# Method: stories.getStoriesArchive +[Back to methods index](index.html) + + + +Fetch the [story archive »](https://core.telegram.org/api/stories#pinned-or-archived-stories) of a peer we control. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer whose archived stories should be fetched | Optional| +|offset\_id|[int](/API_docs/types/int.html) | [Offsets for pagination, for more info click here](https://core.telegram.org/api/offsets) | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [stories.Stories](/API_docs/types/stories.Stories.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$stories_Stories = $MadelineProto->stories->getStoriesArchive(peer: $InputPeer, offset_id: $int, limit: $int, ); +``` + diff --git a/docs/API_docs/methods/stories.getStoriesByID.md b/docs/API_docs/methods/stories.getStoriesByID.md new file mode 100644 index 0000000000..3143fe6d86 --- /dev/null +++ b/docs/API_docs/methods/stories.getStoriesByID.md @@ -0,0 +1,43 @@ +--- +title: "stories.getStoriesByID" +description: "Obtain full info about a set of [stories](https://core.telegram.org/api/stories) by their IDs." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_getStoriesByID.html +--- +# Method: stories.getStoriesByID +[Back to methods index](index.html) + + + +Obtain full info about a set of [stories](https://core.telegram.org/api/stories) by their IDs. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer where the stories were posted | Optional| +|id|Array of [int](/API_docs/types/int.html) | Story IDs | Yes| + + +### Return type: [stories.Stories](/API_docs/types/stories.Stories.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$stories_Stories = $MadelineProto->stories->getStoriesByID(peer: $InputPeer, id: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/stories.getStoriesViews.md b/docs/API_docs/methods/stories.getStoriesViews.md new file mode 100644 index 0000000000..43a365a24c --- /dev/null +++ b/docs/API_docs/methods/stories.getStoriesViews.md @@ -0,0 +1,43 @@ +--- +title: "stories.getStoriesViews" +description: "Obtain info about the view count, forward count, reactions and recent viewers of one or more [stories](https://core.telegram.org/api/stories)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_getStoriesViews.html +--- +# Method: stories.getStoriesViews +[Back to methods index](index.html) + + + +Obtain info about the view count, forward count, reactions and recent viewers of one or more [stories](https://core.telegram.org/api/stories). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer whose stories should be fetched | Optional| +|id|Array of [int](/API_docs/types/int.html) | Story IDs | Yes| + + +### Return type: [stories.StoryViews](/API_docs/types/stories.StoryViews.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$stories_StoryViews = $MadelineProto->stories->getStoriesViews(peer: $InputPeer, id: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/stories.getStoryReactionsList.md b/docs/API_docs/methods/stories.getStoryReactionsList.md new file mode 100644 index 0000000000..a53d4345a5 --- /dev/null +++ b/docs/API_docs/methods/stories.getStoryReactionsList.md @@ -0,0 +1,49 @@ +--- +title: "stories.getStoryReactionsList" +description: "Get the [reaction](https://core.telegram.org/api/reactions) and interaction list of a [story](https://core.telegram.org/api/stories) posted to a channel, along with the sender of each reaction." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_getStoryReactionsList.html +--- +# Method: stories.getStoryReactionsList +[Back to methods index](index.html) + + + +Get the [reaction](https://core.telegram.org/api/reactions) and interaction list of a [story](https://core.telegram.org/api/stories) posted to a channel, along with the sender of each reaction. + +Can only be used by channel admins. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|forwards\_first|[Bool](/API_docs/types/Bool.html) | If set, returns forwards and reposts first, then reactions, then other views; otherwise returns interactions sorted just by interaction date. | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Channel | Optional| +|id|[int](/API_docs/types/int.html) | [Story](https://core.telegram.org/api/stories) ID | Optional| +|reaction|[Reaction](/API_docs/types/Reaction.html) | Get only reactions of this type | Optional| +|offset|[string](/API_docs/types/string.html) | Offset for pagination (taken from the `next_offset` field of the returned [stories.StoryReactionsList](../types/stories.StoryReactionsList.html)); empty in the first request. | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [stories.StoryReactionsList](/API_docs/types/stories.StoryReactionsList.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$stories_StoryReactionsList = $MadelineProto->stories->getStoryReactionsList(forwards_first: $Bool, peer: $InputPeer, id: $int, reaction: $Reaction, offset: 'string', limit: $int, ); +``` + diff --git a/docs/API_docs/methods/stories.getStoryViewsList.md b/docs/API_docs/methods/stories.getStoryViewsList.md new file mode 100644 index 0000000000..14db4b0d8e --- /dev/null +++ b/docs/API_docs/methods/stories.getStoryViewsList.md @@ -0,0 +1,49 @@ +--- +title: "stories.getStoryViewsList" +description: "Obtain the list of users that have viewed a specific [story we posted](https://core.telegram.org/api/stories)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_getStoryViewsList.html +--- +# Method: stories.getStoryViewsList +[Back to methods index](index.html) + + + +Obtain the list of users that have viewed a specific [story we posted](https://core.telegram.org/api/stories) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|just\_contacts|[Bool](/API_docs/types/Bool.html) | Whether to only fetch view reaction/views made by our [contacts](https://core.telegram.org/api/contacts) | Optional| +|reactions\_first|[Bool](/API_docs/types/Bool.html) | Whether to return [storyView](../constructors/storyView.html) info about users that reacted to the story (i.e. if set, the server will first sort results by view date as usual, and then also additionally sort the list by putting [storyView](../constructors/storyView.html)s with an associated reaction first in the list). Ignored if `forwards_first` is set. | Optional| +|forwards\_first|[Bool](/API_docs/types/Bool.html) | If set, returns forwards and reposts first, then reactions, then other views; otherwise returns interactions sorted just by interaction date. | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer where the story was posted | Optional| +|q|[string](/API_docs/types/string.html) | Search for specific peers | Optional| +|id|[int](/API_docs/types/int.html) | Story ID | Optional| +|offset|[string](/API_docs/types/string.html) | Offset for pagination, obtained from [stories.storyViewsList](../constructors/stories.storyViewsList.html).`next_offset` | Optional| +|limit|[int](/API_docs/types/int.html) | Maximum number of results to return, [see pagination](https://core.telegram.org/api/offsets) | Optional| + + +### Return type: [stories.StoryViewsList](/API_docs/types/stories.StoryViewsList.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$stories_StoryViewsList = $MadelineProto->stories->getStoryViewsList(just_contacts: $Bool, reactions_first: $Bool, forwards_first: $Bool, peer: $InputPeer, q: 'string', id: $int, offset: 'string', limit: $int, ); +``` + diff --git a/docs/API_docs/methods/stories.incrementStoryViews.md b/docs/API_docs/methods/stories.incrementStoryViews.md new file mode 100644 index 0000000000..b9278159ea --- /dev/null +++ b/docs/API_docs/methods/stories.incrementStoryViews.md @@ -0,0 +1,43 @@ +--- +title: "stories.incrementStoryViews" +description: "Increment the view counter of one or more stories." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_incrementStoryViews.html +--- +# Method: stories.incrementStoryViews +[Back to methods index](index.html) + + + +Increment the view counter of one or more stories. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer where the stories were posted. | Optional| +|id|Array of [int](/API_docs/types/int.html) | IDs of the stories (maximum 200 at a time). | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->stories->incrementStoryViews(peer: $InputPeer, id: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/stories.readStories.md b/docs/API_docs/methods/stories.readStories.md new file mode 100644 index 0000000000..5985b9bb50 --- /dev/null +++ b/docs/API_docs/methods/stories.readStories.md @@ -0,0 +1,43 @@ +--- +title: "stories.readStories" +description: "Mark all stories up to a certain ID as read, for a given peer; will emit an [updateReadStories](../constructors/updateReadStories.html) update to all logged-in sessions." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_readStories.html +--- +# Method: stories.readStories +[Back to methods index](index.html) + + + +Mark all stories up to a certain ID as read, for a given peer; will emit an [updateReadStories](../constructors/updateReadStories.html) update to all logged-in sessions. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The peer whose stories should be marked as read. | Optional| +|max\_id|[int](/API_docs/types/int.html) | Mark all stories up to and including this ID as read | Optional| + + +### Return type: [Vector\_of\_int](/API_docs/types/int.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_int = $MadelineProto->stories->readStories(peer: $InputPeer, max_id: $int, ); +``` + diff --git a/docs/API_docs/methods/stories.report.md b/docs/API_docs/methods/stories.report.md new file mode 100644 index 0000000000..721a10e35f --- /dev/null +++ b/docs/API_docs/methods/stories.report.md @@ -0,0 +1,51 @@ +--- +title: "stories.report" +description: "Report a story." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_report.html +--- +# Method: stories.report +[Back to methods index](index.html) + + + +Report a story. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The peer that uploaded the story. | Optional| +|id|Array of [int](/API_docs/types/int.html) | IDs of the stories to report. | Yes| +|reason|[ReportReason](/API_docs/types/ReportReason.html) | Why are these storeis being reported. | Yes| +|message|[string](/API_docs/types/string.html) | Comment for report moderation | Optional| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->stories->report(peer: $InputPeer, id: [$int, $int], reason: $ReportReason, message: 'string', ); +``` + + +## Return value + +If the length of the provided message is bigger than 4096, the message will be split in chunks and the method will be called multiple times, with the same parameters (except for the message), and an array of [Bool](../types/Bool.html) will be returned instead. + + diff --git a/docs/API_docs/methods/stories.sendReaction.md b/docs/API_docs/methods/stories.sendReaction.md new file mode 100644 index 0000000000..361b8b10d4 --- /dev/null +++ b/docs/API_docs/methods/stories.sendReaction.md @@ -0,0 +1,45 @@ +--- +title: "stories.sendReaction" +description: "React to a story." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_sendReaction.html +--- +# Method: stories.sendReaction +[Back to methods index](index.html) + + + +React to a story. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|add\_to\_recent|[Bool](/API_docs/types/Bool.html) | Whether to add this reaction to the [recent reactions list »](https://core.telegram.org/api/reactions#recent-reactions). | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The peer that sent the story | Optional| +|story\_id|[int](/API_docs/types/int.html) | ID of the story to react to | Optional| +|reaction|[Reaction](/API_docs/types/Reaction.html) | Reaction | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->stories->sendReaction(add_to_recent: $Bool, peer: $InputPeer, story_id: $int, reaction: $Reaction, ); +``` + diff --git a/docs/API_docs/methods/stories.sendStory.md b/docs/API_docs/methods/stories.sendStory.md new file mode 100644 index 0000000000..8143a908d3 --- /dev/null +++ b/docs/API_docs/methods/stories.sendStory.md @@ -0,0 +1,114 @@ +--- +title: "stories.sendStory" +description: "Uploads a [Telegram Story](https://core.telegram.org/api/stories)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_sendStory.html +--- +# Method: stories.sendStory +[Back to methods index](index.html) + + + +Uploads a [Telegram Story](https://core.telegram.org/api/stories). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|pinned|[Bool](/API_docs/types/Bool.html) | Whether to add the story to the profile automatically upon expiration. If not set, the story will only be added to the archive, see [here »](https://core.telegram.org/api/stories) for more info. | Optional| +|noforwards|[Bool](/API_docs/types/Bool.html) | If set, disables forwards, screenshots, and downloads. | Optional| +|fwd\_modified|[Bool](/API_docs/types/Bool.html) | Set this flag when reposting stories with `fwd_from_id`+`fwd_from_id`, if the `media` was modified before reposting. | Optional| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | The peer to send the story as. | Optional| +|media|[MessageMedia, Update, Message or InputMedia](/API_docs/types/InputMedia.html) | The story media. | Optional| +|media\_areas|Array of [MediaArea](/API_docs/types/MediaArea.html) | [Media areas](https://core.telegram.org/api/stories#media-areas) associated to the story, see [here »](https://core.telegram.org/api/stories#media-areas) for more info. | Optional| +|caption|[string](/API_docs/types/string.html) | Story caption. | Optional| +|entities|Array of [MessageEntity](/API_docs/types/MessageEntity.html) | [Message entities for styled text](https://core.telegram.org/api/entities), if allowed by the [`stories_entities` client configuration parameter »](https://core.telegram.org/api/config#stories-entities). | Optional| +|parse\_mode| [string](/API_docs/types/string.html) | Whether to parse HTML or Markdown markup in the message| Optional | +|privacy\_rules|Array of [InputPrivacyRule](/API_docs/types/InputPrivacyRule.html) | [Privacy rules](https://core.telegram.org/api/privacy) for the story, indicating who can or can't view the story. | Yes| +|period|[int](/API_docs/types/int.html) | Period after which the story is moved to archive (and to the profile if `pinned` is set), in seconds; must be one of `6 * 3600`, `12 * 3600`, `86400`, or `2 * 86400` for Telegram Premium users, and `86400` otherwise. | Optional| +|fwd\_from\_id|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | If set, indicates that this story is a repost of story with ID `fwd_from_story` posted by the peer in `fwd_from_id`. | Optional| +|fwd\_from\_story|[int](/API_docs/types/int.html) | If set, indicates that this story is a repost of story with ID `fwd_from_story` posted by the peer in `fwd_from_id`. | Optional| + + +### Return type: [Updates](/API_docs/types/Updates.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Updates = $MadelineProto->stories->sendStory(pinned: $Bool, noforwards: $Bool, fwd_modified: $Bool, peer: $InputPeer, media: $InputMedia, media_areas: [$MediaArea, $MediaArea], caption: 'string', entities: [$MessageEntity, $MessageEntity], parse_mode: 'string', privacy_rules: [$InputPrivacyRule, $InputPrivacyRule], period: $int, fwd_from_id: $InputPeer, fwd_from_story: $int, ); +``` + + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +
pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + diff --git a/docs/API_docs/methods/stories.toggleAllStoriesHidden.md b/docs/API_docs/methods/stories.toggleAllStoriesHidden.md new file mode 100644 index 0000000000..61086782c4 --- /dev/null +++ b/docs/API_docs/methods/stories.toggleAllStoriesHidden.md @@ -0,0 +1,42 @@ +--- +title: "stories.toggleAllStoriesHidden" +description: "Hide the active stories of a specific peer, preventing them from being displayed on the action bar on the homescreen." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_toggleAllStoriesHidden.html +--- +# Method: stories.toggleAllStoriesHidden +[Back to methods index](index.html) + + + +Hide the active stories of a specific peer, preventing them from being displayed on the action bar on the homescreen. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|hidden|[Bool](/API_docs/types/Bool.html) | Whether to hide or unhide all active stories of the peer | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->stories->toggleAllStoriesHidden(hidden: $Bool, ); +``` + diff --git a/docs/API_docs/methods/stories.togglePeerStoriesHidden.md b/docs/API_docs/methods/stories.togglePeerStoriesHidden.md new file mode 100644 index 0000000000..320f527132 --- /dev/null +++ b/docs/API_docs/methods/stories.togglePeerStoriesHidden.md @@ -0,0 +1,43 @@ +--- +title: "stories.togglePeerStoriesHidden" +description: "Hide the active stories of a user, preventing them from being displayed on the action bar on the homescreen, see [here »](https://core.telegram.org/api/stories#hiding-stories-of-other-users) for more info." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_togglePeerStoriesHidden.html +--- +# Method: stories.togglePeerStoriesHidden +[Back to methods index](index.html) + + + +Hide the active stories of a user, preventing them from being displayed on the action bar on the homescreen, see [here »](https://core.telegram.org/api/stories#hiding-stories-of-other-users) for more info. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer whose stories should be (un)hidden. | Optional| +|hidden|[Bool](/API_docs/types/Bool.html) | Whether to hide or unhide stories. | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->stories->togglePeerStoriesHidden(peer: $InputPeer, hidden: $Bool, ); +``` + diff --git a/docs/API_docs/methods/stories.togglePinned.md b/docs/API_docs/methods/stories.togglePinned.md new file mode 100644 index 0000000000..748ab4cb50 --- /dev/null +++ b/docs/API_docs/methods/stories.togglePinned.md @@ -0,0 +1,44 @@ +--- +title: "stories.togglePinned" +description: "Pin or unpin one or more stories" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_togglePinned.html +--- +# Method: stories.togglePinned +[Back to methods index](index.html) + + + +Pin or unpin one or more stories + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Peer where to pin or unpin stories | Optional| +|id|Array of [int](/API_docs/types/int.html) | IDs of stories to pin or unpin | Yes| +|pinned|[Bool](/API_docs/types/Bool.html) | Whether to pin or unpin the stories | Yes| + + +### Return type: [Vector\_of\_int](/API_docs/types/int.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_int = $MadelineProto->stories->togglePinned(peer: $InputPeer, id: [$int, $int], pinned: $Bool, ); +``` + diff --git a/docs/API_docs/methods/stories.togglePinnedToTop.md b/docs/API_docs/methods/stories.togglePinnedToTop.md new file mode 100644 index 0000000000..47356bf004 --- /dev/null +++ b/docs/API_docs/methods/stories.togglePinnedToTop.md @@ -0,0 +1,41 @@ +--- +title: "stories.togglePinnedToTop" +description: "stories.togglePinnedToTop parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/stories_togglePinnedToTop.html +--- +# Method: stories.togglePinnedToTop +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|peer|[Username, chat ID, Update, Message or InputPeer](/API_docs/types/InputPeer.html) | Optional| +|id|Array of [int](/API_docs/types/int.html) | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->stories->togglePinnedToTop(peer: $InputPeer, id: [$int, $int], ); +``` + diff --git a/docs/API_docs/methods/updates.getChannelDifference.md b/docs/API_docs/methods/updates.getChannelDifference.md new file mode 100644 index 0000000000..d012133603 --- /dev/null +++ b/docs/API_docs/methods/updates.getChannelDifference.md @@ -0,0 +1,50 @@ +--- +title: "updates.getChannelDifference" +description: "You cannot use this method directly, please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html), instead." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/updates_getChannelDifference.html +--- +# Method: updates.getChannelDifference +[Back to methods index](index.html) + + + +# Warning: this is a low-level, complex method that **must never** be used directly. +The [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html) provides a high-level abstraction that **must** be used instead of this method to fetch updates. +If you want to fetch all users of a bot using a bot token, use [getDialogIds](https://docs.madelineproto.xyz/docs/DIALOGS.html) or the high-level [broadcast API](https://docs.madelineproto.xyz/docs/BROADCAST.html), instead. + +You cannot use this method directly, please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html), instead. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|force|[Bool](/API_docs/types/Bool.html) | Set to true to skip some possibly unneeded updates and reduce server-side load | Optional| +|channel|[Username, chat ID, Update, Message or InputChannel](/API_docs/types/InputChannel.html) | The channel | Optional| +|filter|[ChannelMessagesFilter](/API_docs/types/ChannelMessagesFilter.html) | Messsage filter | Optional| +|pts|[int](/API_docs/types/int.html) | Persistent timestamp (see [updates](https://core.telegram.org/api/updates)) | Optional| +|limit|[int](/API_docs/types/int.html) | How many updates to fetch, max `100000`
Ordinary (non-bot) users are supposed to pass `10-100` | Optional| + + +### Return type: [updates.ChannelDifference](/API_docs/types/updates.ChannelDifference.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$updates_ChannelDifference = $MadelineProto->updates->getChannelDifference(force: $Bool, channel: $InputChannel, filter: $ChannelMessagesFilter, pts: $int, limit: $int, ); +``` + diff --git a/docs/API_docs/methods/updates.getDifference.md b/docs/API_docs/methods/updates.getDifference.md new file mode 100644 index 0000000000..cc260d2ceb --- /dev/null +++ b/docs/API_docs/methods/updates.getDifference.md @@ -0,0 +1,51 @@ +--- +title: "updates.getDifference" +description: "You cannot use this method directly, please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html), instead." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/updates_getDifference.html +--- +# Method: updates.getDifference +[Back to methods index](index.html) + + + +# Warning: this is a low-level, complex method that **must never** be used directly. +The [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html) provides a high-level abstraction that **must** be used instead of this method to fetch updates. +If you want to fetch all users of a bot using a bot token, use [getDialogIds](https://docs.madelineproto.xyz/docs/DIALOGS.html) or the high-level [broadcast API](https://docs.madelineproto.xyz/docs/BROADCAST.html), instead. + +You cannot use this method directly, please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html), instead. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|pts|[int](/API_docs/types/int.html) | PTS, see [updates](https://core.telegram.org/api/updates). | Optional| +|pts\_limit|[int](/API_docs/types/int.html) | PTS limit | Optional| +|pts\_total\_limit|[int](/API_docs/types/int.html) | For fast updating: if provided and `pts + pts_total_limit < remote pts`, [updates.differenceTooLong](../constructors/updates.differenceTooLong.html) will be returned.
Simply tells the server to not return the difference if it is bigger than `pts_total_limit`
If the remote pts is too big (> ~4000000), this field will default to 1000000 | Optional| +|date|[int](/API_docs/types/int.html) | date, see [updates](https://core.telegram.org/api/updates). | Optional| +|qts|[int](/API_docs/types/int.html) | QTS, see [updates](https://core.telegram.org/api/updates). | Optional| +|qts\_limit|[int](/API_docs/types/int.html) | QTS limit | Optional| + + +### Return type: [updates.Difference](/API_docs/types/updates.Difference.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$updates_Difference = $MadelineProto->updates->getDifference(pts: $int, pts_limit: $int, pts_total_limit: $int, date: $int, qts: $int, qts_limit: $int, ); +``` + diff --git a/docs/API_docs/methods/updates.getState.md b/docs/API_docs/methods/updates.getState.md new file mode 100644 index 0000000000..b55c355c47 --- /dev/null +++ b/docs/API_docs/methods/updates.getState.md @@ -0,0 +1,41 @@ +--- +title: "updates.getState" +description: "You cannot use this method directly, please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html), instead." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/updates_getState.html +--- +# Method: updates.getState +[Back to methods index](index.html) + + + +# Warning: this is a low-level, complex method that **must never** be used directly. +The [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html) provides a high-level abstraction that **must** be used instead of this method to fetch updates. +If you want to fetch all users of a bot using a bot token, use [getDialogIds](https://docs.madelineproto.xyz/docs/DIALOGS.html) or the high-level [broadcast API](https://docs.madelineproto.xyz/docs/BROADCAST.html), instead. + +You cannot use this method directly, please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html), instead. + + + +### Return type: [updates.State](/API_docs/types/updates.State.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$updates_State = $MadelineProto->updates->getState(); +``` + diff --git a/docs/API_docs/methods/upload.getCdnFile.md b/docs/API_docs/methods/upload.getCdnFile.md new file mode 100644 index 0000000000..b83002552f --- /dev/null +++ b/docs/API_docs/methods/upload.getCdnFile.md @@ -0,0 +1,44 @@ +--- +title: "upload.getCdnFile" +description: "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/upload_getCdnFile.html +--- +# Method: upload.getCdnFile +[Back to methods index](index.html) + + + +You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|file\_token|[string](/API_docs/types/string.html) | | Optional| +|offset|[long](/API_docs/types/long.html) | Offset of chunk to download | Yes| +|limit|[int](/API_docs/types/int.html) | Length of chunk to download | Optional| + + +### Return type: [upload.CdnFile](/API_docs/types/upload.CdnFile.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$upload_CdnFile = $MadelineProto->upload->getCdnFile(file_token: 'string', offset: $long, limit: $int, ); +``` + diff --git a/docs/API_docs/methods/upload.getCdnFileHashes.md b/docs/API_docs/methods/upload.getCdnFileHashes.md new file mode 100644 index 0000000000..2c62c25481 --- /dev/null +++ b/docs/API_docs/methods/upload.getCdnFileHashes.md @@ -0,0 +1,43 @@ +--- +title: "upload.getCdnFileHashes" +description: "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/upload_getCdnFileHashes.html +--- +# Method: upload.getCdnFileHashes +[Back to methods index](index.html) + + + +You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|file\_token|[string](/API_docs/types/string.html) | | Optional| +|offset|[long](/API_docs/types/long.html) | Offset from which to start getting hashes | Yes| + + +### Return type: [Vector\_of\_FileHash](/API_docs/types/FileHash.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_FileHash = $MadelineProto->upload->getCdnFileHashes(file_token: 'string', offset: $long, ); +``` + diff --git a/docs/API_docs/methods/upload.getFile.md b/docs/API_docs/methods/upload.getFile.md new file mode 100644 index 0000000000..79161e5fec --- /dev/null +++ b/docs/API_docs/methods/upload.getFile.md @@ -0,0 +1,46 @@ +--- +title: "upload.getFile" +description: "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/upload_getFile.html +--- +# Method: upload.getFile +[Back to methods index](index.html) + + + +You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|precise|[Bool](/API_docs/types/Bool.html) | Disable some checks on limit and offset values, useful for example to stream videos by keyframes | Optional| +|cdn\_supported|[Bool](/API_docs/types/Bool.html) | Whether the current client supports [CDN downloads](https://core.telegram.org/cdn) | Optional| +|location|[InputFileLocation](/API_docs/types/InputFileLocation.html) | File location | Yes| +|offset|[long](/API_docs/types/long.html) | Number of bytes to be skipped | Yes| +|limit|[int](/API_docs/types/int.html) | Number of bytes to be returned | Optional| + + +### Return type: [upload.File](/API_docs/types/upload.File.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$upload_File = $MadelineProto->upload->getFile(precise: $Bool, cdn_supported: $Bool, location: $InputFileLocation, offset: $long, limit: $int, ); +``` + diff --git a/docs/API_docs/methods/upload.getFileHashes.md b/docs/API_docs/methods/upload.getFileHashes.md new file mode 100644 index 0000000000..b985438b2d --- /dev/null +++ b/docs/API_docs/methods/upload.getFileHashes.md @@ -0,0 +1,43 @@ +--- +title: "upload.getFileHashes" +description: "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/upload_getFileHashes.html +--- +# Method: upload.getFileHashes +[Back to methods index](index.html) + + + +You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|location|[InputFileLocation](/API_docs/types/InputFileLocation.html) | File | Yes| +|offset|[long](/API_docs/types/long.html) | Offset from which to get file hashes | Yes| + + +### Return type: [Vector\_of\_FileHash](/API_docs/types/FileHash.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_FileHash = $MadelineProto->upload->getFileHashes(location: $InputFileLocation, offset: $long, ); +``` + diff --git a/docs/API_docs/methods/upload.getWebFile.md b/docs/API_docs/methods/upload.getWebFile.md new file mode 100644 index 0000000000..b69fa53e1f --- /dev/null +++ b/docs/API_docs/methods/upload.getWebFile.md @@ -0,0 +1,46 @@ +--- +title: "upload.getWebFile" +description: "Returns content of a web file, by proxying the request through telegram, see the [webfile docs for more info](https://core.telegram.org/api/files#downloading-webfiles)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/upload_getWebFile.html +--- +# Method: upload.getWebFile +[Back to methods index](index.html) + + + +Returns content of a web file, by proxying the request through telegram, see the [webfile docs for more info](https://core.telegram.org/api/files#downloading-webfiles). + +**Note**: the query must be sent to the DC specified in the `webfile_dc_id` [MTProto configuration field](https://core.telegram.org/api/config#mtproto-configuration). + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|location|[InputWebFileLocation](/API_docs/types/InputWebFileLocation.html) | The file to download | Yes| +|offset|[int](/API_docs/types/int.html) | Number of bytes to be skipped | Optional| +|limit|[int](/API_docs/types/int.html) | Number of bytes to be returned | Optional| + + +### Return type: [upload.WebFile](/API_docs/types/upload.WebFile.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$upload_WebFile = $MadelineProto->upload->getWebFile(location: $InputWebFileLocation, offset: $int, limit: $int, ); +``` + diff --git a/docs/API_docs/methods/upload.reuploadCdnFile.md b/docs/API_docs/methods/upload.reuploadCdnFile.md new file mode 100644 index 0000000000..6dd0ba4101 --- /dev/null +++ b/docs/API_docs/methods/upload.reuploadCdnFile.md @@ -0,0 +1,43 @@ +--- +title: "upload.reuploadCdnFile" +description: "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/upload_reuploadCdnFile.html +--- +# Method: upload.reuploadCdnFile +[Back to methods index](index.html) + + + +You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|file\_token|[string](/API_docs/types/string.html) | | Optional| +|request\_token|[bytes](/API_docs/types/bytes.html) | Request token | Yes| + + +### Return type: [Vector\_of\_FileHash](/API_docs/types/FileHash.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_FileHash = $MadelineProto->upload->reuploadCdnFile(file_token: 'string', request_token: 'bytes', ); +``` + diff --git a/docs/API_docs/methods/upload.saveBigFilePart.md b/docs/API_docs/methods/upload.saveBigFilePart.md new file mode 100644 index 0000000000..34c9a9ebde --- /dev/null +++ b/docs/API_docs/methods/upload.saveBigFilePart.md @@ -0,0 +1,45 @@ +--- +title: "upload.saveBigFilePart" +description: "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/upload_saveBigFilePart.html +--- +# Method: upload.saveBigFilePart +[Back to methods index](index.html) + + + +You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|file\_id|[long](/API_docs/types/long.html) | Random file id, created by the client | Yes| +|file\_part|[int](/API_docs/types/int.html) | Part sequence number | Optional| +|file\_total\_parts|[int](/API_docs/types/int.html) | Total number of parts | Optional| +|bytes|[bytes](/API_docs/types/bytes.html) | Binary data, part contents | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->upload->saveBigFilePart(file_id: $long, file_part: $int, file_total_parts: $int, bytes: 'bytes', ); +``` + diff --git a/docs/API_docs/methods/upload.saveFilePart.md b/docs/API_docs/methods/upload.saveFilePart.md new file mode 100644 index 0000000000..413790e3b4 --- /dev/null +++ b/docs/API_docs/methods/upload.saveFilePart.md @@ -0,0 +1,44 @@ +--- +title: "upload.saveFilePart" +description: "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/upload_saveFilePart.html +--- +# Method: upload.saveFilePart +[Back to methods index](index.html) + + + +You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|file\_id|[long](/API_docs/types/long.html) | Random file identifier created by the client | Yes| +|file\_part|[int](/API_docs/types/int.html) | Numerical order of a part | Optional| +|bytes|[bytes](/API_docs/types/bytes.html) | Binary data, content of a part | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->upload->saveFilePart(file_id: $long, file_part: $int, bytes: 'bytes', ); +``` + diff --git a/docs/API_docs/methods/users.getFullUser.md b/docs/API_docs/methods/users.getFullUser.md new file mode 100644 index 0000000000..01fe8c4771 --- /dev/null +++ b/docs/API_docs/methods/users.getFullUser.md @@ -0,0 +1,42 @@ +--- +title: "users.getFullUser" +description: "You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/users_getFullUser.html +--- +# Method: users.getFullUser +[Back to methods index](index.html) + + + +You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | User ID | Optional| + + +### Return type: [users.UserFull](/API_docs/types/users.UserFull.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$users_UserFull = $MadelineProto->users->getFullUser(id: $InputUser, ); +``` + diff --git a/docs/API_docs/methods/users.getIsPremiumRequiredToContact.md b/docs/API_docs/methods/users.getIsPremiumRequiredToContact.md new file mode 100644 index 0000000000..12e4f0a275 --- /dev/null +++ b/docs/API_docs/methods/users.getIsPremiumRequiredToContact.md @@ -0,0 +1,40 @@ +--- +title: "users.getIsPremiumRequiredToContact" +description: "users.getIsPremiumRequiredToContact parameters, return type and example" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/users_getIsPremiumRequiredToContact.html +--- +# Method: users.getIsPremiumRequiredToContact +[Back to methods index](index.html) + + + +### Parameters: + +| Name | Type | Required | +|----------|---------------|----------| +|id|Array of [Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | Yes| + + +### Return type: [Vector\_of\_Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **NO** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_Bool = $MadelineProto->users->getIsPremiumRequiredToContact(id: [$InputUser, $InputUser], ); +``` + diff --git a/docs/API_docs/methods/users.getUsers.md b/docs/API_docs/methods/users.getUsers.md new file mode 100644 index 0000000000..389fbc099d --- /dev/null +++ b/docs/API_docs/methods/users.getUsers.md @@ -0,0 +1,42 @@ +--- +title: "users.getUsers" +description: "You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/users_getUsers.html +--- +# Method: users.getUsers +[Back to methods index](index.html) + + + +You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info) + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|Array of [Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | List of user identifiers | Yes| + + +### Return type: [Vector\_of\_User](/API_docs/types/User.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Vector_of_User = $MadelineProto->users->getUsers(id: [$InputUser, $InputUser], ); +``` + diff --git a/docs/API_docs/methods/users.setSecureValueErrors.md b/docs/API_docs/methods/users.setSecureValueErrors.md new file mode 100644 index 0000000000..d65729d31b --- /dev/null +++ b/docs/API_docs/methods/users.setSecureValueErrors.md @@ -0,0 +1,45 @@ +--- +title: "users.setSecureValueErrors" +description: "Notify the user that the sent [passport](https://core.telegram.org/passport) data contains some errors The user will not be able to re-submit their Passport data to you until the errors are fixed (the contents of the field for which you returned the error must change)." +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/methods/users_setSecureValueErrors.html +--- +# Method: users.setSecureValueErrors +[Back to methods index](index.html) + + + +Notify the user that the sent [passport](https://core.telegram.org/passport) data contains some errors The user will not be able to re-submit their Passport data to you until the errors are fixed (the contents of the field for which you returned the error must change). + +Use this if the data submitted by the user doesn't satisfy the standards your service requires for any reason. For example, if a birthday date seems invalid, a submitted document is blurry, a scan shows evidence of tampering, etc. Supply some details in the error message to make sure the user knows how to correct the issues. + +### Parameters: + +| Name | Type | Description | Required | +|----------|---------------|-------------|----------| +|id|[Username, chat ID, Update, Message or InputUser](/API_docs/types/InputUser.html) | The user | Optional| +|errors|Array of [SecureValueError](/API_docs/types/SecureValueError.html) | Errors | Yes| + + +### Return type: [Bool](/API_docs/types/Bool.html) + +### Can bots use this method: **YES** + + +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$Bool = $MadelineProto->users->setSecureValueErrors(id: $InputUser, errors: [$SecureValueError, $SecureValueError], ); +``` + diff --git a/docs/API_docs/types/!X.md b/docs/API_docs/types/!X.md new file mode 100644 index 0000000000..ec30994107 --- /dev/null +++ b/docs/API_docs/types/!X.md @@ -0,0 +1,11 @@ +--- +title: !X +description: Represents a TL serialized payload +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: !X +[Back to constructor index](index.html) + +Represents a TL serialized payload. +Typically you would want to provide a simple constructor or a method array here (method name under `_` as with constructors). diff --git a/docs/API_docs/types/AccountDaysTTL.md b/docs/API_docs/types/AccountDaysTTL.md new file mode 100644 index 0000000000..29627c6245 --- /dev/null +++ b/docs/API_docs/types/AccountDaysTTL.md @@ -0,0 +1,23 @@ +--- +title: AccountDaysTTL +description: constructors and methods of type AccountDaysTTL +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: AccountDaysTTL +[Back to types index](index.html) + + + +### Possible values (constructors): + +[accountDaysTTL](/API_docs/constructors/accountDaysTTL.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getAccountTTL](/API_docs/methods/account.getAccountTTL.html) + + + diff --git a/docs/API_docs/types/AppWebViewResult.md b/docs/API_docs/types/AppWebViewResult.md new file mode 100644 index 0000000000..433de58a10 --- /dev/null +++ b/docs/API_docs/types/AppWebViewResult.md @@ -0,0 +1,23 @@ +--- +title: AppWebViewResult +description: constructors and methods of type AppWebViewResult +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: AppWebViewResult +[Back to types index](index.html) + + + +### Possible values (constructors): + +[appWebViewResultUrl](/API_docs/constructors/appWebViewResultUrl.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->requestAppWebView](/API_docs/methods/messages.requestAppWebView.html) + + + diff --git a/docs/API_docs/types/AttachMenuBot.md b/docs/API_docs/types/AttachMenuBot.md new file mode 100644 index 0000000000..a6732f4ebc --- /dev/null +++ b/docs/API_docs/types/AttachMenuBot.md @@ -0,0 +1,21 @@ +--- +title: AttachMenuBot +description: constructors and methods of type AttachMenuBot +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: AttachMenuBot +[Back to types index](index.html) + + + +### Possible values (constructors): + +[attachMenuBot](/API_docs/constructors/attachMenuBot.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/AttachMenuBotIcon.md b/docs/API_docs/types/AttachMenuBotIcon.md new file mode 100644 index 0000000000..62600540b0 --- /dev/null +++ b/docs/API_docs/types/AttachMenuBotIcon.md @@ -0,0 +1,21 @@ +--- +title: AttachMenuBotIcon +description: constructors and methods of type AttachMenuBotIcon +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: AttachMenuBotIcon +[Back to types index](index.html) + + + +### Possible values (constructors): + +[attachMenuBotIcon](/API_docs/constructors/attachMenuBotIcon.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/AttachMenuBotIconColor.md b/docs/API_docs/types/AttachMenuBotIconColor.md new file mode 100644 index 0000000000..4c0aa199c1 --- /dev/null +++ b/docs/API_docs/types/AttachMenuBotIconColor.md @@ -0,0 +1,21 @@ +--- +title: AttachMenuBotIconColor +description: constructors and methods of type AttachMenuBotIconColor +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: AttachMenuBotIconColor +[Back to types index](index.html) + + + +### Possible values (constructors): + +[attachMenuBotIconColor](/API_docs/constructors/attachMenuBotIconColor.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/AttachMenuBots.md b/docs/API_docs/types/AttachMenuBots.md new file mode 100644 index 0000000000..15bc4ab0f5 --- /dev/null +++ b/docs/API_docs/types/AttachMenuBots.md @@ -0,0 +1,25 @@ +--- +title: AttachMenuBots +description: constructors and methods of type AttachMenuBots +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: AttachMenuBots +[Back to types index](index.html) + + + +### Possible values (constructors): + +[attachMenuBotsNotModified](/API_docs/constructors/attachMenuBotsNotModified.html) + +[attachMenuBots](/API_docs/constructors/attachMenuBots.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getAttachMenuBots](/API_docs/methods/messages.getAttachMenuBots.html) + + + diff --git a/docs/API_docs/types/AttachMenuBotsBot.md b/docs/API_docs/types/AttachMenuBotsBot.md new file mode 100644 index 0000000000..eaf20dabe9 --- /dev/null +++ b/docs/API_docs/types/AttachMenuBotsBot.md @@ -0,0 +1,23 @@ +--- +title: AttachMenuBotsBot +description: constructors and methods of type AttachMenuBotsBot +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: AttachMenuBotsBot +[Back to types index](index.html) + + + +### Possible values (constructors): + +[attachMenuBotsBot](/API_docs/constructors/attachMenuBotsBot.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getAttachMenuBot](/API_docs/methods/messages.getAttachMenuBot.html) + + + diff --git a/docs/API_docs/types/AttachMenuPeerType.md b/docs/API_docs/types/AttachMenuPeerType.md new file mode 100644 index 0000000000..0102dbc169 --- /dev/null +++ b/docs/API_docs/types/AttachMenuPeerType.md @@ -0,0 +1,29 @@ +--- +title: AttachMenuPeerType +description: constructors and methods of type AttachMenuPeerType +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: AttachMenuPeerType +[Back to types index](index.html) + + + +### Possible values (constructors): + +[attachMenuPeerTypeSameBotPM](/API_docs/constructors/attachMenuPeerTypeSameBotPM.html) + +[attachMenuPeerTypeBotPM](/API_docs/constructors/attachMenuPeerTypeBotPM.html) + +[attachMenuPeerTypePM](/API_docs/constructors/attachMenuPeerTypePM.html) + +[attachMenuPeerTypeChat](/API_docs/constructors/attachMenuPeerTypeChat.html) + +[attachMenuPeerTypeBroadcast](/API_docs/constructors/attachMenuPeerTypeBroadcast.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Authorization.md b/docs/API_docs/types/Authorization.md new file mode 100644 index 0000000000..c3c7160bf8 --- /dev/null +++ b/docs/API_docs/types/Authorization.md @@ -0,0 +1,23 @@ +--- +title: Authorization +description: constructors and methods of type Authorization +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Authorization +[Back to types index](index.html) + + + +### Possible values (constructors): + +[authorization](/API_docs/constructors/authorization.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->auth->acceptLoginToken](/API_docs/methods/auth.acceptLoginToken.html) + + + diff --git a/docs/API_docs/types/AutoDownloadSettings.md b/docs/API_docs/types/AutoDownloadSettings.md new file mode 100644 index 0000000000..09c7041262 --- /dev/null +++ b/docs/API_docs/types/AutoDownloadSettings.md @@ -0,0 +1,21 @@ +--- +title: AutoDownloadSettings +description: constructors and methods of type AutoDownloadSettings +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: AutoDownloadSettings +[Back to types index](index.html) + + + +### Possible values (constructors): + +[autoDownloadSettings](/API_docs/constructors/autoDownloadSettings.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/AutoSaveException.md b/docs/API_docs/types/AutoSaveException.md new file mode 100644 index 0000000000..0382716ae0 --- /dev/null +++ b/docs/API_docs/types/AutoSaveException.md @@ -0,0 +1,21 @@ +--- +title: AutoSaveException +description: constructors and methods of type AutoSaveException +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: AutoSaveException +[Back to types index](index.html) + + + +### Possible values (constructors): + +[autoSaveException](/API_docs/constructors/autoSaveException.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/AutoSaveSettings.md b/docs/API_docs/types/AutoSaveSettings.md new file mode 100644 index 0000000000..a4eed87e3a --- /dev/null +++ b/docs/API_docs/types/AutoSaveSettings.md @@ -0,0 +1,21 @@ +--- +title: AutoSaveSettings +description: constructors and methods of type AutoSaveSettings +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: AutoSaveSettings +[Back to types index](index.html) + + + +### Possible values (constructors): + +[autoSaveSettings](/API_docs/constructors/autoSaveSettings.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/AvailableReaction.md b/docs/API_docs/types/AvailableReaction.md new file mode 100644 index 0000000000..2d2a2c949d --- /dev/null +++ b/docs/API_docs/types/AvailableReaction.md @@ -0,0 +1,21 @@ +--- +title: AvailableReaction +description: constructors and methods of type AvailableReaction +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: AvailableReaction +[Back to types index](index.html) + + + +### Possible values (constructors): + +[availableReaction](/API_docs/constructors/availableReaction.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/BankCardOpenUrl.md b/docs/API_docs/types/BankCardOpenUrl.md new file mode 100644 index 0000000000..15a45ba9b3 --- /dev/null +++ b/docs/API_docs/types/BankCardOpenUrl.md @@ -0,0 +1,21 @@ +--- +title: BankCardOpenUrl +description: constructors and methods of type BankCardOpenUrl +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BankCardOpenUrl +[Back to types index](index.html) + + + +### Possible values (constructors): + +[bankCardOpenUrl](/API_docs/constructors/bankCardOpenUrl.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/BaseTheme.md b/docs/API_docs/types/BaseTheme.md new file mode 100644 index 0000000000..f16b31a6ae --- /dev/null +++ b/docs/API_docs/types/BaseTheme.md @@ -0,0 +1,29 @@ +--- +title: BaseTheme +description: constructors and methods of type BaseTheme +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BaseTheme +[Back to types index](index.html) + + + +### Possible values (constructors): + +[baseThemeClassic](/API_docs/constructors/baseThemeClassic.html) + +[baseThemeDay](/API_docs/constructors/baseThemeDay.html) + +[baseThemeNight](/API_docs/constructors/baseThemeNight.html) + +[baseThemeTinted](/API_docs/constructors/baseThemeTinted.html) + +[baseThemeArctic](/API_docs/constructors/baseThemeArctic.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Birthday.md b/docs/API_docs/types/Birthday.md new file mode 100644 index 0000000000..205aa01c9f --- /dev/null +++ b/docs/API_docs/types/Birthday.md @@ -0,0 +1,21 @@ +--- +title: Birthday +description: constructors and methods of type Birthday +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Birthday +[Back to types index](index.html) + + + +### Possible values (constructors): + +[birthday](/API_docs/constructors/birthday.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Bool.md b/docs/API_docs/types/Bool.md new file mode 100644 index 0000000000..29aa87e0a5 --- /dev/null +++ b/docs/API_docs/types/Bool.md @@ -0,0 +1,10 @@ +--- +title: Bool +description: Represents a boolean. +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Bool +[Back to types index](index.html) + +Represents a boolean. diff --git a/docs/API_docs/types/Boost.md b/docs/API_docs/types/Boost.md new file mode 100644 index 0000000000..55cbe1c4f3 --- /dev/null +++ b/docs/API_docs/types/Boost.md @@ -0,0 +1,21 @@ +--- +title: Boost +description: constructors and methods of type Boost +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Boost +[Back to types index](index.html) + + + +### Possible values (constructors): + +[boost](/API_docs/constructors/boost.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/BotApp.md b/docs/API_docs/types/BotApp.md new file mode 100644 index 0000000000..69e24f1eea --- /dev/null +++ b/docs/API_docs/types/BotApp.md @@ -0,0 +1,23 @@ +--- +title: BotApp +description: constructors and methods of type BotApp +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BotApp +[Back to types index](index.html) + + + +### Possible values (constructors): + +[botAppNotModified](/API_docs/constructors/botAppNotModified.html) + +[botApp](/API_docs/constructors/botApp.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/BotBusinessConnection.md b/docs/API_docs/types/BotBusinessConnection.md new file mode 100644 index 0000000000..c560c7aeb8 --- /dev/null +++ b/docs/API_docs/types/BotBusinessConnection.md @@ -0,0 +1,21 @@ +--- +title: BotBusinessConnection +description: constructors and methods of type BotBusinessConnection +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BotBusinessConnection +[Back to types index](index.html) + + + +### Possible values (constructors): + +[botBusinessConnection](/API_docs/constructors/botBusinessConnection.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/BotCommand.md b/docs/API_docs/types/BotCommand.md new file mode 100644 index 0000000000..e6b1e8d53a --- /dev/null +++ b/docs/API_docs/types/BotCommand.md @@ -0,0 +1,23 @@ +--- +title: BotCommand +description: constructors and methods of type BotCommand +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BotCommand +[Back to types index](index.html) + + + +### Possible values (constructors): + +[botCommand](/API_docs/constructors/botCommand.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->bots->getBotCommands](/API_docs/methods/bots.getBotCommands.html) + + + diff --git a/docs/API_docs/types/BotCommandScope.md b/docs/API_docs/types/BotCommandScope.md new file mode 100644 index 0000000000..799c5cb2f7 --- /dev/null +++ b/docs/API_docs/types/BotCommandScope.md @@ -0,0 +1,33 @@ +--- +title: BotCommandScope +description: constructors and methods of type BotCommandScope +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BotCommandScope +[Back to types index](index.html) + + + +### Possible values (constructors): + +[botCommandScopeDefault](/API_docs/constructors/botCommandScopeDefault.html) + +[botCommandScopeUsers](/API_docs/constructors/botCommandScopeUsers.html) + +[botCommandScopeChats](/API_docs/constructors/botCommandScopeChats.html) + +[botCommandScopeChatAdmins](/API_docs/constructors/botCommandScopeChatAdmins.html) + +[botCommandScopePeer](/API_docs/constructors/botCommandScopePeer.html) + +[botCommandScopePeerAdmins](/API_docs/constructors/botCommandScopePeerAdmins.html) + +[botCommandScopePeerUser](/API_docs/constructors/botCommandScopePeerUser.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/BotInfo.md b/docs/API_docs/types/BotInfo.md new file mode 100644 index 0000000000..ca0bfb7f87 --- /dev/null +++ b/docs/API_docs/types/BotInfo.md @@ -0,0 +1,21 @@ +--- +title: BotInfo +description: constructors and methods of type BotInfo +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BotInfo +[Back to types index](index.html) + + + +### Possible values (constructors): + +[botInfo](/API_docs/constructors/botInfo.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/BotInlineMessage.md b/docs/API_docs/types/BotInlineMessage.md new file mode 100644 index 0000000000..9ececd7452 --- /dev/null +++ b/docs/API_docs/types/BotInlineMessage.md @@ -0,0 +1,33 @@ +--- +title: BotInlineMessage +description: constructors and methods of type BotInlineMessage +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BotInlineMessage +[Back to types index](index.html) + + + +### Possible values (constructors): + +[botInlineMessageMediaAuto](/API_docs/constructors/botInlineMessageMediaAuto.html) + +[botInlineMessageText](/API_docs/constructors/botInlineMessageText.html) + +[botInlineMessageMediaGeo](/API_docs/constructors/botInlineMessageMediaGeo.html) + +[botInlineMessageMediaVenue](/API_docs/constructors/botInlineMessageMediaVenue.html) + +[botInlineMessageMediaContact](/API_docs/constructors/botInlineMessageMediaContact.html) + +[botInlineMessageMediaInvoice](/API_docs/constructors/botInlineMessageMediaInvoice.html) + +[botInlineMessageMediaWebPage](/API_docs/constructors/botInlineMessageMediaWebPage.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/BotInlineResult.md b/docs/API_docs/types/BotInlineResult.md new file mode 100644 index 0000000000..1dbaf0e9e3 --- /dev/null +++ b/docs/API_docs/types/BotInlineResult.md @@ -0,0 +1,23 @@ +--- +title: BotInlineResult +description: constructors and methods of type BotInlineResult +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BotInlineResult +[Back to types index](index.html) + + + +### Possible values (constructors): + +[botInlineResult](/API_docs/constructors/botInlineResult.html) + +[botInlineMediaResult](/API_docs/constructors/botInlineMediaResult.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/BotMenuButton.md b/docs/API_docs/types/BotMenuButton.md new file mode 100644 index 0000000000..83cb067b1f --- /dev/null +++ b/docs/API_docs/types/BotMenuButton.md @@ -0,0 +1,27 @@ +--- +title: BotMenuButton +description: constructors and methods of type BotMenuButton +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BotMenuButton +[Back to types index](index.html) + + + +### Possible values (constructors): + +[botMenuButtonDefault](/API_docs/constructors/botMenuButtonDefault.html) + +[botMenuButtonCommands](/API_docs/constructors/botMenuButtonCommands.html) + +[botMenuButton](/API_docs/constructors/botMenuButton.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->bots->getBotMenuButton](/API_docs/methods/bots.getBotMenuButton.html) + + + diff --git a/docs/API_docs/types/BroadcastRevenueBalances.md b/docs/API_docs/types/BroadcastRevenueBalances.md new file mode 100644 index 0000000000..9717d9c5d3 --- /dev/null +++ b/docs/API_docs/types/BroadcastRevenueBalances.md @@ -0,0 +1,21 @@ +--- +title: BroadcastRevenueBalances +description: constructors and methods of type BroadcastRevenueBalances +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BroadcastRevenueBalances +[Back to types index](index.html) + + + +### Possible values (constructors): + +[broadcastRevenueBalances](/API_docs/constructors/broadcastRevenueBalances.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/BroadcastRevenueTransaction.md b/docs/API_docs/types/BroadcastRevenueTransaction.md new file mode 100644 index 0000000000..d98efa4734 --- /dev/null +++ b/docs/API_docs/types/BroadcastRevenueTransaction.md @@ -0,0 +1,25 @@ +--- +title: BroadcastRevenueTransaction +description: constructors and methods of type BroadcastRevenueTransaction +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BroadcastRevenueTransaction +[Back to types index](index.html) + + + +### Possible values (constructors): + +[broadcastRevenueTransactionProceeds](/API_docs/constructors/broadcastRevenueTransactionProceeds.html) + +[broadcastRevenueTransactionWithdrawal](/API_docs/constructors/broadcastRevenueTransactionWithdrawal.html) + +[broadcastRevenueTransactionRefund](/API_docs/constructors/broadcastRevenueTransactionRefund.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/BusinessAwayMessage.md b/docs/API_docs/types/BusinessAwayMessage.md new file mode 100644 index 0000000000..72407e9a15 --- /dev/null +++ b/docs/API_docs/types/BusinessAwayMessage.md @@ -0,0 +1,21 @@ +--- +title: BusinessAwayMessage +description: constructors and methods of type BusinessAwayMessage +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BusinessAwayMessage +[Back to types index](index.html) + + + +### Possible values (constructors): + +[businessAwayMessage](/API_docs/constructors/businessAwayMessage.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/BusinessAwayMessageSchedule.md b/docs/API_docs/types/BusinessAwayMessageSchedule.md new file mode 100644 index 0000000000..e76e8a85e6 --- /dev/null +++ b/docs/API_docs/types/BusinessAwayMessageSchedule.md @@ -0,0 +1,25 @@ +--- +title: BusinessAwayMessageSchedule +description: constructors and methods of type BusinessAwayMessageSchedule +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BusinessAwayMessageSchedule +[Back to types index](index.html) + + + +### Possible values (constructors): + +[businessAwayMessageScheduleAlways](/API_docs/constructors/businessAwayMessageScheduleAlways.html) + +[businessAwayMessageScheduleOutsideWorkHours](/API_docs/constructors/businessAwayMessageScheduleOutsideWorkHours.html) + +[businessAwayMessageScheduleCustom](/API_docs/constructors/businessAwayMessageScheduleCustom.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/BusinessBotRecipients.md b/docs/API_docs/types/BusinessBotRecipients.md new file mode 100644 index 0000000000..9a56f089b2 --- /dev/null +++ b/docs/API_docs/types/BusinessBotRecipients.md @@ -0,0 +1,21 @@ +--- +title: BusinessBotRecipients +description: constructors and methods of type BusinessBotRecipients +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BusinessBotRecipients +[Back to types index](index.html) + + + +### Possible values (constructors): + +[businessBotRecipients](/API_docs/constructors/businessBotRecipients.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/BusinessChatLink.md b/docs/API_docs/types/BusinessChatLink.md new file mode 100644 index 0000000000..594fdf4327 --- /dev/null +++ b/docs/API_docs/types/BusinessChatLink.md @@ -0,0 +1,25 @@ +--- +title: BusinessChatLink +description: constructors and methods of type BusinessChatLink +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BusinessChatLink +[Back to types index](index.html) + + + +### Possible values (constructors): + +[businessChatLink](/API_docs/constructors/businessChatLink.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->createBusinessChatLink](/API_docs/methods/account.createBusinessChatLink.html) + +[$MadelineProto->account->editBusinessChatLink](/API_docs/methods/account.editBusinessChatLink.html) + + + diff --git a/docs/API_docs/types/BusinessGreetingMessage.md b/docs/API_docs/types/BusinessGreetingMessage.md new file mode 100644 index 0000000000..5184388410 --- /dev/null +++ b/docs/API_docs/types/BusinessGreetingMessage.md @@ -0,0 +1,21 @@ +--- +title: BusinessGreetingMessage +description: constructors and methods of type BusinessGreetingMessage +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BusinessGreetingMessage +[Back to types index](index.html) + + + +### Possible values (constructors): + +[businessGreetingMessage](/API_docs/constructors/businessGreetingMessage.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/BusinessIntro.md b/docs/API_docs/types/BusinessIntro.md new file mode 100644 index 0000000000..9904ac182e --- /dev/null +++ b/docs/API_docs/types/BusinessIntro.md @@ -0,0 +1,21 @@ +--- +title: BusinessIntro +description: constructors and methods of type BusinessIntro +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BusinessIntro +[Back to types index](index.html) + + + +### Possible values (constructors): + +[businessIntro](/API_docs/constructors/businessIntro.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/BusinessLocation.md b/docs/API_docs/types/BusinessLocation.md new file mode 100644 index 0000000000..e76dab19a7 --- /dev/null +++ b/docs/API_docs/types/BusinessLocation.md @@ -0,0 +1,21 @@ +--- +title: BusinessLocation +description: constructors and methods of type BusinessLocation +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BusinessLocation +[Back to types index](index.html) + + + +### Possible values (constructors): + +[businessLocation](/API_docs/constructors/businessLocation.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/BusinessRecipients.md b/docs/API_docs/types/BusinessRecipients.md new file mode 100644 index 0000000000..87933ac001 --- /dev/null +++ b/docs/API_docs/types/BusinessRecipients.md @@ -0,0 +1,21 @@ +--- +title: BusinessRecipients +description: constructors and methods of type BusinessRecipients +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BusinessRecipients +[Back to types index](index.html) + + + +### Possible values (constructors): + +[businessRecipients](/API_docs/constructors/businessRecipients.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/BusinessWeeklyOpen.md b/docs/API_docs/types/BusinessWeeklyOpen.md new file mode 100644 index 0000000000..fb9212224a --- /dev/null +++ b/docs/API_docs/types/BusinessWeeklyOpen.md @@ -0,0 +1,21 @@ +--- +title: BusinessWeeklyOpen +description: constructors and methods of type BusinessWeeklyOpen +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BusinessWeeklyOpen +[Back to types index](index.html) + + + +### Possible values (constructors): + +[businessWeeklyOpen](/API_docs/constructors/businessWeeklyOpen.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/BusinessWorkHours.md b/docs/API_docs/types/BusinessWorkHours.md new file mode 100644 index 0000000000..49cdf3cdb6 --- /dev/null +++ b/docs/API_docs/types/BusinessWorkHours.md @@ -0,0 +1,21 @@ +--- +title: BusinessWorkHours +description: constructors and methods of type BusinessWorkHours +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: BusinessWorkHours +[Back to types index](index.html) + + + +### Possible values (constructors): + +[businessWorkHours](/API_docs/constructors/businessWorkHours.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/CdnConfig.md b/docs/API_docs/types/CdnConfig.md new file mode 100644 index 0000000000..e710e2760d --- /dev/null +++ b/docs/API_docs/types/CdnConfig.md @@ -0,0 +1,23 @@ +--- +title: CdnConfig +description: constructors and methods of type CdnConfig +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: CdnConfig +[Back to types index](index.html) + + + +### Possible values (constructors): + +[cdnConfig](/API_docs/constructors/cdnConfig.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->help->getCdnConfig](/API_docs/methods/help.getCdnConfig.html) + + + diff --git a/docs/API_docs/types/CdnPublicKey.md b/docs/API_docs/types/CdnPublicKey.md new file mode 100644 index 0000000000..e418be0ba8 --- /dev/null +++ b/docs/API_docs/types/CdnPublicKey.md @@ -0,0 +1,21 @@ +--- +title: CdnPublicKey +description: constructors and methods of type CdnPublicKey +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: CdnPublicKey +[Back to types index](index.html) + + + +### Possible values (constructors): + +[cdnPublicKey](/API_docs/constructors/cdnPublicKey.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ChannelAdminLogEvent.md b/docs/API_docs/types/ChannelAdminLogEvent.md new file mode 100644 index 0000000000..22398a477c --- /dev/null +++ b/docs/API_docs/types/ChannelAdminLogEvent.md @@ -0,0 +1,21 @@ +--- +title: ChannelAdminLogEvent +description: constructors and methods of type ChannelAdminLogEvent +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ChannelAdminLogEvent +[Back to types index](index.html) + + + +### Possible values (constructors): + +[channelAdminLogEvent](/API_docs/constructors/channelAdminLogEvent.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ChannelAdminLogEventAction.md b/docs/API_docs/types/ChannelAdminLogEventAction.md new file mode 100644 index 0000000000..267286345e --- /dev/null +++ b/docs/API_docs/types/ChannelAdminLogEventAction.md @@ -0,0 +1,115 @@ +--- +title: ChannelAdminLogEventAction +description: constructors and methods of type ChannelAdminLogEventAction +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ChannelAdminLogEventAction +[Back to types index](index.html) + + + +### Possible values (constructors): + +[channelAdminLogEventActionChangeTitle](/API_docs/constructors/channelAdminLogEventActionChangeTitle.html) + +[channelAdminLogEventActionChangeAbout](/API_docs/constructors/channelAdminLogEventActionChangeAbout.html) + +[channelAdminLogEventActionChangeUsername](/API_docs/constructors/channelAdminLogEventActionChangeUsername.html) + +[channelAdminLogEventActionChangePhoto](/API_docs/constructors/channelAdminLogEventActionChangePhoto.html) + +[channelAdminLogEventActionToggleInvites](/API_docs/constructors/channelAdminLogEventActionToggleInvites.html) + +[channelAdminLogEventActionToggleSignatures](/API_docs/constructors/channelAdminLogEventActionToggleSignatures.html) + +[channelAdminLogEventActionUpdatePinned](/API_docs/constructors/channelAdminLogEventActionUpdatePinned.html) + +[channelAdminLogEventActionEditMessage](/API_docs/constructors/channelAdminLogEventActionEditMessage.html) + +[channelAdminLogEventActionDeleteMessage](/API_docs/constructors/channelAdminLogEventActionDeleteMessage.html) + +[channelAdminLogEventActionParticipantJoin](/API_docs/constructors/channelAdminLogEventActionParticipantJoin.html) + +[channelAdminLogEventActionParticipantLeave](/API_docs/constructors/channelAdminLogEventActionParticipantLeave.html) + +[channelAdminLogEventActionParticipantInvite](/API_docs/constructors/channelAdminLogEventActionParticipantInvite.html) + +[channelAdminLogEventActionParticipantToggleBan](/API_docs/constructors/channelAdminLogEventActionParticipantToggleBan.html) + +[channelAdminLogEventActionParticipantToggleAdmin](/API_docs/constructors/channelAdminLogEventActionParticipantToggleAdmin.html) + +[channelAdminLogEventActionChangeStickerSet](/API_docs/constructors/channelAdminLogEventActionChangeStickerSet.html) + +[channelAdminLogEventActionTogglePreHistoryHidden](/API_docs/constructors/channelAdminLogEventActionTogglePreHistoryHidden.html) + +[channelAdminLogEventActionDefaultBannedRights](/API_docs/constructors/channelAdminLogEventActionDefaultBannedRights.html) + +[channelAdminLogEventActionStopPoll](/API_docs/constructors/channelAdminLogEventActionStopPoll.html) + +[channelAdminLogEventActionChangeLinkedChat](/API_docs/constructors/channelAdminLogEventActionChangeLinkedChat.html) + +[channelAdminLogEventActionChangeLocation](/API_docs/constructors/channelAdminLogEventActionChangeLocation.html) + +[channelAdminLogEventActionToggleSlowMode](/API_docs/constructors/channelAdminLogEventActionToggleSlowMode.html) + +[channelAdminLogEventActionStartGroupCall](/API_docs/constructors/channelAdminLogEventActionStartGroupCall.html) + +[channelAdminLogEventActionDiscardGroupCall](/API_docs/constructors/channelAdminLogEventActionDiscardGroupCall.html) + +[channelAdminLogEventActionParticipantMute](/API_docs/constructors/channelAdminLogEventActionParticipantMute.html) + +[channelAdminLogEventActionParticipantUnmute](/API_docs/constructors/channelAdminLogEventActionParticipantUnmute.html) + +[channelAdminLogEventActionToggleGroupCallSetting](/API_docs/constructors/channelAdminLogEventActionToggleGroupCallSetting.html) + +[channelAdminLogEventActionParticipantJoinByInvite](/API_docs/constructors/channelAdminLogEventActionParticipantJoinByInvite.html) + +[channelAdminLogEventActionExportedInviteDelete](/API_docs/constructors/channelAdminLogEventActionExportedInviteDelete.html) + +[channelAdminLogEventActionExportedInviteRevoke](/API_docs/constructors/channelAdminLogEventActionExportedInviteRevoke.html) + +[channelAdminLogEventActionExportedInviteEdit](/API_docs/constructors/channelAdminLogEventActionExportedInviteEdit.html) + +[channelAdminLogEventActionParticipantVolume](/API_docs/constructors/channelAdminLogEventActionParticipantVolume.html) + +[channelAdminLogEventActionChangeHistoryTTL](/API_docs/constructors/channelAdminLogEventActionChangeHistoryTTL.html) + +[channelAdminLogEventActionParticipantJoinByRequest](/API_docs/constructors/channelAdminLogEventActionParticipantJoinByRequest.html) + +[channelAdminLogEventActionToggleNoForwards](/API_docs/constructors/channelAdminLogEventActionToggleNoForwards.html) + +[channelAdminLogEventActionSendMessage](/API_docs/constructors/channelAdminLogEventActionSendMessage.html) + +[channelAdminLogEventActionChangeAvailableReactions](/API_docs/constructors/channelAdminLogEventActionChangeAvailableReactions.html) + +[channelAdminLogEventActionChangeUsernames](/API_docs/constructors/channelAdminLogEventActionChangeUsernames.html) + +[channelAdminLogEventActionToggleForum](/API_docs/constructors/channelAdminLogEventActionToggleForum.html) + +[channelAdminLogEventActionCreateTopic](/API_docs/constructors/channelAdminLogEventActionCreateTopic.html) + +[channelAdminLogEventActionEditTopic](/API_docs/constructors/channelAdminLogEventActionEditTopic.html) + +[channelAdminLogEventActionDeleteTopic](/API_docs/constructors/channelAdminLogEventActionDeleteTopic.html) + +[channelAdminLogEventActionPinTopic](/API_docs/constructors/channelAdminLogEventActionPinTopic.html) + +[channelAdminLogEventActionToggleAntiSpam](/API_docs/constructors/channelAdminLogEventActionToggleAntiSpam.html) + +[channelAdminLogEventActionChangePeerColor](/API_docs/constructors/channelAdminLogEventActionChangePeerColor.html) + +[channelAdminLogEventActionChangeProfilePeerColor](/API_docs/constructors/channelAdminLogEventActionChangeProfilePeerColor.html) + +[channelAdminLogEventActionChangeWallpaper](/API_docs/constructors/channelAdminLogEventActionChangeWallpaper.html) + +[channelAdminLogEventActionChangeEmojiStatus](/API_docs/constructors/channelAdminLogEventActionChangeEmojiStatus.html) + +[channelAdminLogEventActionChangeEmojiStickerSet](/API_docs/constructors/channelAdminLogEventActionChangeEmojiStickerSet.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ChannelAdminLogEventsFilter.md b/docs/API_docs/types/ChannelAdminLogEventsFilter.md new file mode 100644 index 0000000000..5055a183b1 --- /dev/null +++ b/docs/API_docs/types/ChannelAdminLogEventsFilter.md @@ -0,0 +1,21 @@ +--- +title: ChannelAdminLogEventsFilter +description: constructors and methods of type ChannelAdminLogEventsFilter +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ChannelAdminLogEventsFilter +[Back to types index](index.html) + + + +### Possible values (constructors): + +[channelAdminLogEventsFilter](/API_docs/constructors/channelAdminLogEventsFilter.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ChannelLocation.md b/docs/API_docs/types/ChannelLocation.md new file mode 100644 index 0000000000..82f9471986 --- /dev/null +++ b/docs/API_docs/types/ChannelLocation.md @@ -0,0 +1,23 @@ +--- +title: ChannelLocation +description: constructors and methods of type ChannelLocation +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ChannelLocation +[Back to types index](index.html) + + + +### Possible values (constructors): + +[channelLocationEmpty](/API_docs/constructors/channelLocationEmpty.html) + +[channelLocation](/API_docs/constructors/channelLocation.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ChannelMessagesFilter.md b/docs/API_docs/types/ChannelMessagesFilter.md new file mode 100644 index 0000000000..37b8d4dbec --- /dev/null +++ b/docs/API_docs/types/ChannelMessagesFilter.md @@ -0,0 +1,23 @@ +--- +title: ChannelMessagesFilter +description: constructors and methods of type ChannelMessagesFilter +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ChannelMessagesFilter +[Back to types index](index.html) + + + +### Possible values (constructors): + +[channelMessagesFilterEmpty](/API_docs/constructors/channelMessagesFilterEmpty.html) + +[channelMessagesFilter](/API_docs/constructors/channelMessagesFilter.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ChannelParticipant.md b/docs/API_docs/types/ChannelParticipant.md new file mode 100644 index 0000000000..8d2ca6aa54 --- /dev/null +++ b/docs/API_docs/types/ChannelParticipant.md @@ -0,0 +1,31 @@ +--- +title: ChannelParticipant +description: constructors and methods of type ChannelParticipant +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ChannelParticipant +[Back to types index](index.html) + + + +### Possible values (constructors): + +[channelParticipant](/API_docs/constructors/channelParticipant.html) + +[channelParticipantSelf](/API_docs/constructors/channelParticipantSelf.html) + +[channelParticipantCreator](/API_docs/constructors/channelParticipantCreator.html) + +[channelParticipantAdmin](/API_docs/constructors/channelParticipantAdmin.html) + +[channelParticipantBanned](/API_docs/constructors/channelParticipantBanned.html) + +[channelParticipantLeft](/API_docs/constructors/channelParticipantLeft.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ChannelParticipantsFilter.md b/docs/API_docs/types/ChannelParticipantsFilter.md new file mode 100644 index 0000000000..58db4fb25f --- /dev/null +++ b/docs/API_docs/types/ChannelParticipantsFilter.md @@ -0,0 +1,35 @@ +--- +title: ChannelParticipantsFilter +description: constructors and methods of type ChannelParticipantsFilter +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ChannelParticipantsFilter +[Back to types index](index.html) + + + +### Possible values (constructors): + +[channelParticipantsRecent](/API_docs/constructors/channelParticipantsRecent.html) + +[channelParticipantsAdmins](/API_docs/constructors/channelParticipantsAdmins.html) + +[channelParticipantsKicked](/API_docs/constructors/channelParticipantsKicked.html) + +[channelParticipantsBots](/API_docs/constructors/channelParticipantsBots.html) + +[channelParticipantsBanned](/API_docs/constructors/channelParticipantsBanned.html) + +[channelParticipantsSearch](/API_docs/constructors/channelParticipantsSearch.html) + +[channelParticipantsContacts](/API_docs/constructors/channelParticipantsContacts.html) + +[channelParticipantsMentions](/API_docs/constructors/channelParticipantsMentions.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Chat.md b/docs/API_docs/types/Chat.md new file mode 100644 index 0000000000..6544129580 --- /dev/null +++ b/docs/API_docs/types/Chat.md @@ -0,0 +1,64 @@ +--- +title: Chat +description: constructors and methods of type Chat +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Chat +[Back to types index](index.html) + +You can directly provide the [Update](Update.html) or [Message](Message.html) object here, MadelineProto will automatically extract the destination chat id. + +The following syntaxes can also be used: + +```php +$Chat = '@username'; // Username + +$Chat = $update; // Update objects received in the event handler + +$Chat = 'me'; // The currently logged-in user + +$Chat = 44700; // bot API id (users) +$Chat = -492772765; // bot API id (chats) +$Chat = -10038575794; // bot API id (channels) + +$Chat = 'https://t.me/danogentili'; // t.me URLs +$Chat = 'https://t.me/joinchat/asfln1-21fa_'; // t.me invite links + +``` + +You can also provide one of the following objects, instead, MadelineProto will handle conversion automatically: + +- [Chat](Chat.html) +- [User](User.html) +- [InputPeer](InputPeer.html) +- [InputDialogPeer](InputDialogPeer.html) +- [InputNotifyPeer](InputNotifyPeer.html) +- [InputUser](InputUser.html) +- [InputChannel](InputChannel.html) +- [Peer](Peer.html) +- [DialogPeer](DialogPeer.html) +- [NotifyPeer](NotifyPeer.html) +- [Chat](Chat.html) + + + + +### Possible values (constructors): + +[chatEmpty](/API_docs/constructors/chatEmpty.html) + +[chat](/API_docs/constructors/chat.html) + +[chatForbidden](/API_docs/constructors/chatForbidden.html) + +[channel](/API_docs/constructors/channel.html) + +[channelForbidden](/API_docs/constructors/channelForbidden.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ChatAdminRights.md b/docs/API_docs/types/ChatAdminRights.md new file mode 100644 index 0000000000..ea4d3cbdd3 --- /dev/null +++ b/docs/API_docs/types/ChatAdminRights.md @@ -0,0 +1,21 @@ +--- +title: ChatAdminRights +description: constructors and methods of type ChatAdminRights +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ChatAdminRights +[Back to types index](index.html) + + + +### Possible values (constructors): + +[chatAdminRights](/API_docs/constructors/chatAdminRights.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ChatAdminWithInvites.md b/docs/API_docs/types/ChatAdminWithInvites.md new file mode 100644 index 0000000000..b3e690b105 --- /dev/null +++ b/docs/API_docs/types/ChatAdminWithInvites.md @@ -0,0 +1,21 @@ +--- +title: ChatAdminWithInvites +description: constructors and methods of type ChatAdminWithInvites +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ChatAdminWithInvites +[Back to types index](index.html) + + + +### Possible values (constructors): + +[chatAdminWithInvites](/API_docs/constructors/chatAdminWithInvites.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ChatBannedRights.md b/docs/API_docs/types/ChatBannedRights.md new file mode 100644 index 0000000000..df4d889a28 --- /dev/null +++ b/docs/API_docs/types/ChatBannedRights.md @@ -0,0 +1,21 @@ +--- +title: ChatBannedRights +description: constructors and methods of type ChatBannedRights +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ChatBannedRights +[Back to types index](index.html) + + + +### Possible values (constructors): + +[chatBannedRights](/API_docs/constructors/chatBannedRights.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ChatFull.md b/docs/API_docs/types/ChatFull.md new file mode 100644 index 0000000000..a387e04cfa --- /dev/null +++ b/docs/API_docs/types/ChatFull.md @@ -0,0 +1,23 @@ +--- +title: ChatFull +description: constructors and methods of type ChatFull +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ChatFull +[Back to types index](index.html) + + + +### Possible values (constructors): + +[chatFull](/API_docs/constructors/chatFull.html) + +[channelFull](/API_docs/constructors/channelFull.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ChatInvite.md b/docs/API_docs/types/ChatInvite.md new file mode 100644 index 0000000000..bea384c4b0 --- /dev/null +++ b/docs/API_docs/types/ChatInvite.md @@ -0,0 +1,27 @@ +--- +title: ChatInvite +description: constructors and methods of type ChatInvite +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ChatInvite +[Back to types index](index.html) + + + +### Possible values (constructors): + +[chatInviteAlready](/API_docs/constructors/chatInviteAlready.html) + +[chatInvite](/API_docs/constructors/chatInvite.html) + +[chatInvitePeek](/API_docs/constructors/chatInvitePeek.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->checkChatInvite](/API_docs/methods/messages.checkChatInvite.html) + + + diff --git a/docs/API_docs/types/ChatInviteImporter.md b/docs/API_docs/types/ChatInviteImporter.md new file mode 100644 index 0000000000..e7696a6ec8 --- /dev/null +++ b/docs/API_docs/types/ChatInviteImporter.md @@ -0,0 +1,21 @@ +--- +title: ChatInviteImporter +description: constructors and methods of type ChatInviteImporter +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ChatInviteImporter +[Back to types index](index.html) + + + +### Possible values (constructors): + +[chatInviteImporter](/API_docs/constructors/chatInviteImporter.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ChatOnlines.md b/docs/API_docs/types/ChatOnlines.md new file mode 100644 index 0000000000..1d682c4e19 --- /dev/null +++ b/docs/API_docs/types/ChatOnlines.md @@ -0,0 +1,23 @@ +--- +title: ChatOnlines +description: constructors and methods of type ChatOnlines +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ChatOnlines +[Back to types index](index.html) + + + +### Possible values (constructors): + +[chatOnlines](/API_docs/constructors/chatOnlines.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getOnlines](/API_docs/methods/messages.getOnlines.html) + + + diff --git a/docs/API_docs/types/ChatParticipant.md b/docs/API_docs/types/ChatParticipant.md new file mode 100644 index 0000000000..bd0dd5a5ec --- /dev/null +++ b/docs/API_docs/types/ChatParticipant.md @@ -0,0 +1,25 @@ +--- +title: ChatParticipant +description: constructors and methods of type ChatParticipant +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ChatParticipant +[Back to types index](index.html) + + + +### Possible values (constructors): + +[chatParticipant](/API_docs/constructors/chatParticipant.html) + +[chatParticipantCreator](/API_docs/constructors/chatParticipantCreator.html) + +[chatParticipantAdmin](/API_docs/constructors/chatParticipantAdmin.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ChatParticipants.md b/docs/API_docs/types/ChatParticipants.md new file mode 100644 index 0000000000..d70236bbe1 --- /dev/null +++ b/docs/API_docs/types/ChatParticipants.md @@ -0,0 +1,23 @@ +--- +title: ChatParticipants +description: constructors and methods of type ChatParticipants +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ChatParticipants +[Back to types index](index.html) + + + +### Possible values (constructors): + +[chatParticipantsForbidden](/API_docs/constructors/chatParticipantsForbidden.html) + +[chatParticipants](/API_docs/constructors/chatParticipants.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ChatPhoto.md b/docs/API_docs/types/ChatPhoto.md new file mode 100644 index 0000000000..834d86e06f --- /dev/null +++ b/docs/API_docs/types/ChatPhoto.md @@ -0,0 +1,23 @@ +--- +title: ChatPhoto +description: constructors and methods of type ChatPhoto +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ChatPhoto +[Back to types index](index.html) + + + +### Possible values (constructors): + +[chatPhotoEmpty](/API_docs/constructors/chatPhotoEmpty.html) + +[chatPhoto](/API_docs/constructors/chatPhoto.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ChatReactions.md b/docs/API_docs/types/ChatReactions.md new file mode 100644 index 0000000000..24769cafd2 --- /dev/null +++ b/docs/API_docs/types/ChatReactions.md @@ -0,0 +1,25 @@ +--- +title: ChatReactions +description: constructors and methods of type ChatReactions +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ChatReactions +[Back to types index](index.html) + + + +### Possible values (constructors): + +[chatReactionsNone](/API_docs/constructors/chatReactionsNone.html) + +[chatReactionsAll](/API_docs/constructors/chatReactionsAll.html) + +[chatReactionsSome](/API_docs/constructors/chatReactionsSome.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/CodeSettings.md b/docs/API_docs/types/CodeSettings.md new file mode 100644 index 0000000000..4d1c33eadc --- /dev/null +++ b/docs/API_docs/types/CodeSettings.md @@ -0,0 +1,21 @@ +--- +title: CodeSettings +description: constructors and methods of type CodeSettings +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: CodeSettings +[Back to types index](index.html) + + + +### Possible values (constructors): + +[codeSettings](/API_docs/constructors/codeSettings.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Config.md b/docs/API_docs/types/Config.md new file mode 100644 index 0000000000..7788229a0a --- /dev/null +++ b/docs/API_docs/types/Config.md @@ -0,0 +1,23 @@ +--- +title: Config +description: constructors and methods of type Config +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Config +[Back to types index](index.html) + + + +### Possible values (constructors): + +[config](/API_docs/constructors/config.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->help->getConfig](/API_docs/methods/help.getConfig.html) + + + diff --git a/docs/API_docs/types/ConnectedBot.md b/docs/API_docs/types/ConnectedBot.md new file mode 100644 index 0000000000..c70dd09221 --- /dev/null +++ b/docs/API_docs/types/ConnectedBot.md @@ -0,0 +1,21 @@ +--- +title: ConnectedBot +description: constructors and methods of type ConnectedBot +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ConnectedBot +[Back to types index](index.html) + + + +### Possible values (constructors): + +[connectedBot](/API_docs/constructors/connectedBot.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Contact.md b/docs/API_docs/types/Contact.md new file mode 100644 index 0000000000..ba68b9c437 --- /dev/null +++ b/docs/API_docs/types/Contact.md @@ -0,0 +1,21 @@ +--- +title: Contact +description: constructors and methods of type Contact +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Contact +[Back to types index](index.html) + + + +### Possible values (constructors): + +[contact](/API_docs/constructors/contact.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ContactBirthday.md b/docs/API_docs/types/ContactBirthday.md new file mode 100644 index 0000000000..b51374585a --- /dev/null +++ b/docs/API_docs/types/ContactBirthday.md @@ -0,0 +1,21 @@ +--- +title: ContactBirthday +description: constructors and methods of type ContactBirthday +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ContactBirthday +[Back to types index](index.html) + + + +### Possible values (constructors): + +[contactBirthday](/API_docs/constructors/contactBirthday.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ContactStatus.md b/docs/API_docs/types/ContactStatus.md new file mode 100644 index 0000000000..eb23963c76 --- /dev/null +++ b/docs/API_docs/types/ContactStatus.md @@ -0,0 +1,23 @@ +--- +title: ContactStatus +description: constructors and methods of type ContactStatus +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ContactStatus +[Back to types index](index.html) + + + +### Possible values (constructors): + +[contactStatus](/API_docs/constructors/contactStatus.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->contacts->getStatuses](/API_docs/methods/contacts.getStatuses.html) + + + diff --git a/docs/API_docs/types/DataJSON.md b/docs/API_docs/types/DataJSON.md new file mode 100644 index 0000000000..b7fca5c01a --- /dev/null +++ b/docs/API_docs/types/DataJSON.md @@ -0,0 +1,10 @@ +--- +title: DataJSON +description: Any json-encodable data +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: DataJSON +[Back to constructor index](index.html) + +Any json-encodable data. diff --git a/docs/API_docs/types/DcOption.md b/docs/API_docs/types/DcOption.md new file mode 100644 index 0000000000..f572409e7c --- /dev/null +++ b/docs/API_docs/types/DcOption.md @@ -0,0 +1,21 @@ +--- +title: DcOption +description: constructors and methods of type DcOption +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: DcOption +[Back to types index](index.html) + + + +### Possible values (constructors): + +[dcOption](/API_docs/constructors/dcOption.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/DecryptedMessage.md b/docs/API_docs/types/DecryptedMessage.md new file mode 100644 index 0000000000..c5c4365e57 --- /dev/null +++ b/docs/API_docs/types/DecryptedMessage.md @@ -0,0 +1,31 @@ +--- +title: DecryptedMessage +description: constructors and methods of type DecryptedMessage +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: DecryptedMessage +[Back to types index](index.html) + + + +### Possible values (constructors): + +[decryptedMessage\_8](/API_docs/constructors/decryptedMessage_8.html) + +[decryptedMessageService\_8](/API_docs/constructors/decryptedMessageService_8.html) + +[decryptedMessage\_17](/API_docs/constructors/decryptedMessage_17.html) + +[decryptedMessageService\_17](/API_docs/constructors/decryptedMessageService_17.html) + +[decryptedMessage\_45](/API_docs/constructors/decryptedMessage_45.html) + +[decryptedMessage\_73](/API_docs/constructors/decryptedMessage_73.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/DecryptedMessageAction.md b/docs/API_docs/types/DecryptedMessageAction.md new file mode 100644 index 0000000000..801dbc9ef2 --- /dev/null +++ b/docs/API_docs/types/DecryptedMessageAction.md @@ -0,0 +1,45 @@ +--- +title: DecryptedMessageAction +description: constructors and methods of type DecryptedMessageAction +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: DecryptedMessageAction +[Back to types index](index.html) + + + +### Possible values (constructors): + +[decryptedMessageActionSetMessageTTL\_8](/API_docs/constructors/decryptedMessageActionSetMessageTTL_8.html) + +[decryptedMessageActionReadMessages\_8](/API_docs/constructors/decryptedMessageActionReadMessages_8.html) + +[decryptedMessageActionDeleteMessages\_8](/API_docs/constructors/decryptedMessageActionDeleteMessages_8.html) + +[decryptedMessageActionScreenshotMessages\_8](/API_docs/constructors/decryptedMessageActionScreenshotMessages_8.html) + +[decryptedMessageActionFlushHistory\_8](/API_docs/constructors/decryptedMessageActionFlushHistory_8.html) + +[decryptedMessageActionResend\_17](/API_docs/constructors/decryptedMessageActionResend_17.html) + +[decryptedMessageActionNotifyLayer\_17](/API_docs/constructors/decryptedMessageActionNotifyLayer_17.html) + +[decryptedMessageActionTyping\_17](/API_docs/constructors/decryptedMessageActionTyping_17.html) + +[decryptedMessageActionRequestKey\_20](/API_docs/constructors/decryptedMessageActionRequestKey_20.html) + +[decryptedMessageActionAcceptKey\_20](/API_docs/constructors/decryptedMessageActionAcceptKey_20.html) + +[decryptedMessageActionAbortKey\_20](/API_docs/constructors/decryptedMessageActionAbortKey_20.html) + +[decryptedMessageActionCommitKey\_20](/API_docs/constructors/decryptedMessageActionCommitKey_20.html) + +[decryptedMessageActionNoop\_20](/API_docs/constructors/decryptedMessageActionNoop_20.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/DecryptedMessageLayer.md b/docs/API_docs/types/DecryptedMessageLayer.md new file mode 100644 index 0000000000..30d24a9ef9 --- /dev/null +++ b/docs/API_docs/types/DecryptedMessageLayer.md @@ -0,0 +1,21 @@ +--- +title: DecryptedMessageLayer +description: constructors and methods of type DecryptedMessageLayer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: DecryptedMessageLayer +[Back to types index](index.html) + + + +### Possible values (constructors): + +[decryptedMessageLayer\_17](/API_docs/constructors/decryptedMessageLayer_17.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/DecryptedMessageMedia.md b/docs/API_docs/types/DecryptedMessageMedia.md new file mode 100644 index 0000000000..9193bb193b --- /dev/null +++ b/docs/API_docs/types/DecryptedMessageMedia.md @@ -0,0 +1,51 @@ +--- +title: DecryptedMessageMedia +description: constructors and methods of type DecryptedMessageMedia +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: DecryptedMessageMedia +[Back to types index](index.html) + + + +### Possible values (constructors): + +[decryptedMessageMediaEmpty\_8](/API_docs/constructors/decryptedMessageMediaEmpty_8.html) + +[decryptedMessageMediaPhoto\_8](/API_docs/constructors/decryptedMessageMediaPhoto_8.html) + +[decryptedMessageMediaVideo\_8](/API_docs/constructors/decryptedMessageMediaVideo_8.html) + +[decryptedMessageMediaGeoPoint\_8](/API_docs/constructors/decryptedMessageMediaGeoPoint_8.html) + +[decryptedMessageMediaContact\_8](/API_docs/constructors/decryptedMessageMediaContact_8.html) + +[decryptedMessageMediaDocument\_8](/API_docs/constructors/decryptedMessageMediaDocument_8.html) + +[decryptedMessageMediaAudio\_8](/API_docs/constructors/decryptedMessageMediaAudio_8.html) + +[decryptedMessageMediaVideo\_17](/API_docs/constructors/decryptedMessageMediaVideo_17.html) + +[decryptedMessageMediaAudio\_17](/API_docs/constructors/decryptedMessageMediaAudio_17.html) + +[decryptedMessageMediaExternalDocument\_23](/API_docs/constructors/decryptedMessageMediaExternalDocument_23.html) + +[decryptedMessageMediaPhoto\_45](/API_docs/constructors/decryptedMessageMediaPhoto_45.html) + +[decryptedMessageMediaVideo\_45](/API_docs/constructors/decryptedMessageMediaVideo_45.html) + +[decryptedMessageMediaDocument\_45](/API_docs/constructors/decryptedMessageMediaDocument_45.html) + +[decryptedMessageMediaVenue\_45](/API_docs/constructors/decryptedMessageMediaVenue_45.html) + +[decryptedMessageMediaWebPage\_45](/API_docs/constructors/decryptedMessageMediaWebPage_45.html) + +[decryptedMessageMediaDocument\_143](/API_docs/constructors/decryptedMessageMediaDocument_143.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/DefaultHistoryTTL.md b/docs/API_docs/types/DefaultHistoryTTL.md new file mode 100644 index 0000000000..94907317cb --- /dev/null +++ b/docs/API_docs/types/DefaultHistoryTTL.md @@ -0,0 +1,23 @@ +--- +title: DefaultHistoryTTL +description: constructors and methods of type DefaultHistoryTTL +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: DefaultHistoryTTL +[Back to types index](index.html) + + + +### Possible values (constructors): + +[defaultHistoryTTL](/API_docs/constructors/defaultHistoryTTL.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getDefaultHistoryTTL](/API_docs/methods/messages.getDefaultHistoryTTL.html) + + + diff --git a/docs/API_docs/types/Dialog.md b/docs/API_docs/types/Dialog.md new file mode 100644 index 0000000000..e1ddb6fa5b --- /dev/null +++ b/docs/API_docs/types/Dialog.md @@ -0,0 +1,23 @@ +--- +title: Dialog +description: constructors and methods of type Dialog +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Dialog +[Back to types index](index.html) + + + +### Possible values (constructors): + +[dialog](/API_docs/constructors/dialog.html) + +[dialogFolder](/API_docs/constructors/dialogFolder.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/DialogFilter.md b/docs/API_docs/types/DialogFilter.md new file mode 100644 index 0000000000..3e765722a2 --- /dev/null +++ b/docs/API_docs/types/DialogFilter.md @@ -0,0 +1,25 @@ +--- +title: DialogFilter +description: constructors and methods of type DialogFilter +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: DialogFilter +[Back to types index](index.html) + + + +### Possible values (constructors): + +[dialogFilter](/API_docs/constructors/dialogFilter.html) + +[dialogFilterDefault](/API_docs/constructors/dialogFilterDefault.html) + +[dialogFilterChatlist](/API_docs/constructors/dialogFilterChatlist.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/DialogFilterSuggested.md b/docs/API_docs/types/DialogFilterSuggested.md new file mode 100644 index 0000000000..85c839bba6 --- /dev/null +++ b/docs/API_docs/types/DialogFilterSuggested.md @@ -0,0 +1,23 @@ +--- +title: DialogFilterSuggested +description: constructors and methods of type DialogFilterSuggested +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: DialogFilterSuggested +[Back to types index](index.html) + + + +### Possible values (constructors): + +[dialogFilterSuggested](/API_docs/constructors/dialogFilterSuggested.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getSuggestedDialogFilters](/API_docs/methods/messages.getSuggestedDialogFilters.html) + + + diff --git a/docs/API_docs/types/DialogPeer.md b/docs/API_docs/types/DialogPeer.md new file mode 100644 index 0000000000..0c0e9a7935 --- /dev/null +++ b/docs/API_docs/types/DialogPeer.md @@ -0,0 +1,25 @@ +--- +title: DialogPeer +description: constructors and methods of type DialogPeer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: DialogPeer +[Back to types index](index.html) + + + +### Possible values (constructors): + +[dialogPeer](/API_docs/constructors/dialogPeer.html) + +[dialogPeerFolder](/API_docs/constructors/dialogPeerFolder.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getDialogUnreadMarks](/API_docs/methods/messages.getDialogUnreadMarks.html) + + + diff --git a/docs/API_docs/types/Document.md b/docs/API_docs/types/Document.md new file mode 100644 index 0000000000..3b4c27c38a --- /dev/null +++ b/docs/API_docs/types/Document.md @@ -0,0 +1,31 @@ +--- +title: Document +description: constructors and methods of type Document +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Document +[Back to types index](index.html) + + + +### Possible values (constructors): + +[documentEmpty](/API_docs/constructors/documentEmpty.html) + +[document](/API_docs/constructors/document.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->uploadTheme](/API_docs/methods/account.uploadTheme.html) + +[$MadelineProto->account->uploadRingtone](/API_docs/methods/account.uploadRingtone.html) + +[$MadelineProto->messages->getDocumentByHash](/API_docs/methods/messages.getDocumentByHash.html) + +[$MadelineProto->messages->getCustomEmojiDocuments](/API_docs/methods/messages.getCustomEmojiDocuments.html) + + + diff --git a/docs/API_docs/types/DocumentAttribute.md b/docs/API_docs/types/DocumentAttribute.md new file mode 100644 index 0000000000..a63c36ac2a --- /dev/null +++ b/docs/API_docs/types/DocumentAttribute.md @@ -0,0 +1,47 @@ +--- +title: DocumentAttribute +description: constructors and methods of type DocumentAttribute +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: DocumentAttribute +[Back to types index](index.html) + + + +### Possible values (constructors): + +[documentAttributeImageSize](/API_docs/constructors/documentAttributeImageSize.html) + +[documentAttributeAnimated](/API_docs/constructors/documentAttributeAnimated.html) + +[documentAttributeSticker](/API_docs/constructors/documentAttributeSticker.html) + +[documentAttributeVideo](/API_docs/constructors/documentAttributeVideo.html) + +[documentAttributeAudio](/API_docs/constructors/documentAttributeAudio.html) + +[documentAttributeFilename](/API_docs/constructors/documentAttributeFilename.html) + +[documentAttributeHasStickers](/API_docs/constructors/documentAttributeHasStickers.html) + +[documentAttributeCustomEmoji](/API_docs/constructors/documentAttributeCustomEmoji.html) + +[documentAttributeSticker\_23](/API_docs/constructors/documentAttributeSticker_23.html) + +[documentAttributeVideo\_23](/API_docs/constructors/documentAttributeVideo_23.html) + +[documentAttributeAudio\_23](/API_docs/constructors/documentAttributeAudio_23.html) + +[documentAttributeSticker\_45](/API_docs/constructors/documentAttributeSticker_45.html) + +[documentAttributeAudio\_45](/API_docs/constructors/documentAttributeAudio_45.html) + +[documentAttributeVideo\_66](/API_docs/constructors/documentAttributeVideo_66.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/DraftMessage.md b/docs/API_docs/types/DraftMessage.md new file mode 100644 index 0000000000..98cc6a49f6 --- /dev/null +++ b/docs/API_docs/types/DraftMessage.md @@ -0,0 +1,23 @@ +--- +title: DraftMessage +description: constructors and methods of type DraftMessage +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: DraftMessage +[Back to types index](index.html) + + + +### Possible values (constructors): + +[draftMessageEmpty](/API_docs/constructors/draftMessageEmpty.html) + +[draftMessage](/API_docs/constructors/draftMessage.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/EmailVerification.md b/docs/API_docs/types/EmailVerification.md new file mode 100644 index 0000000000..f20b90a369 --- /dev/null +++ b/docs/API_docs/types/EmailVerification.md @@ -0,0 +1,25 @@ +--- +title: EmailVerification +description: constructors and methods of type EmailVerification +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: EmailVerification +[Back to types index](index.html) + + + +### Possible values (constructors): + +[emailVerificationCode](/API_docs/constructors/emailVerificationCode.html) + +[emailVerificationGoogle](/API_docs/constructors/emailVerificationGoogle.html) + +[emailVerificationApple](/API_docs/constructors/emailVerificationApple.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/EmailVerifyPurpose.md b/docs/API_docs/types/EmailVerifyPurpose.md new file mode 100644 index 0000000000..581bbc9640 --- /dev/null +++ b/docs/API_docs/types/EmailVerifyPurpose.md @@ -0,0 +1,25 @@ +--- +title: EmailVerifyPurpose +description: constructors and methods of type EmailVerifyPurpose +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: EmailVerifyPurpose +[Back to types index](index.html) + + + +### Possible values (constructors): + +[emailVerifyPurposeLoginSetup](/API_docs/constructors/emailVerifyPurposeLoginSetup.html) + +[emailVerifyPurposeLoginChange](/API_docs/constructors/emailVerifyPurposeLoginChange.html) + +[emailVerifyPurposePassport](/API_docs/constructors/emailVerifyPurposePassport.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/EmojiGroup.md b/docs/API_docs/types/EmojiGroup.md new file mode 100644 index 0000000000..3ba53f5ea6 --- /dev/null +++ b/docs/API_docs/types/EmojiGroup.md @@ -0,0 +1,25 @@ +--- +title: EmojiGroup +description: constructors and methods of type EmojiGroup +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: EmojiGroup +[Back to types index](index.html) + + + +### Possible values (constructors): + +[emojiGroup](/API_docs/constructors/emojiGroup.html) + +[emojiGroupGreeting](/API_docs/constructors/emojiGroupGreeting.html) + +[emojiGroupPremium](/API_docs/constructors/emojiGroupPremium.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/EmojiKeyword.md b/docs/API_docs/types/EmojiKeyword.md new file mode 100644 index 0000000000..fe5bcd64e2 --- /dev/null +++ b/docs/API_docs/types/EmojiKeyword.md @@ -0,0 +1,23 @@ +--- +title: EmojiKeyword +description: constructors and methods of type EmojiKeyword +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: EmojiKeyword +[Back to types index](index.html) + + + +### Possible values (constructors): + +[emojiKeyword](/API_docs/constructors/emojiKeyword.html) + +[emojiKeywordDeleted](/API_docs/constructors/emojiKeywordDeleted.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/EmojiKeywordsDifference.md b/docs/API_docs/types/EmojiKeywordsDifference.md new file mode 100644 index 0000000000..f0a0dc5bb6 --- /dev/null +++ b/docs/API_docs/types/EmojiKeywordsDifference.md @@ -0,0 +1,25 @@ +--- +title: EmojiKeywordsDifference +description: constructors and methods of type EmojiKeywordsDifference +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: EmojiKeywordsDifference +[Back to types index](index.html) + + + +### Possible values (constructors): + +[emojiKeywordsDifference](/API_docs/constructors/emojiKeywordsDifference.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getEmojiKeywords](/API_docs/methods/messages.getEmojiKeywords.html) + +[$MadelineProto->messages->getEmojiKeywordsDifference](/API_docs/methods/messages.getEmojiKeywordsDifference.html) + + + diff --git a/docs/API_docs/types/EmojiLanguage.md b/docs/API_docs/types/EmojiLanguage.md new file mode 100644 index 0000000000..9458c06056 --- /dev/null +++ b/docs/API_docs/types/EmojiLanguage.md @@ -0,0 +1,23 @@ +--- +title: EmojiLanguage +description: constructors and methods of type EmojiLanguage +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: EmojiLanguage +[Back to types index](index.html) + + + +### Possible values (constructors): + +[emojiLanguage](/API_docs/constructors/emojiLanguage.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getEmojiKeywordsLanguages](/API_docs/methods/messages.getEmojiKeywordsLanguages.html) + + + diff --git a/docs/API_docs/types/EmojiList.md b/docs/API_docs/types/EmojiList.md new file mode 100644 index 0000000000..154023a82b --- /dev/null +++ b/docs/API_docs/types/EmojiList.md @@ -0,0 +1,33 @@ +--- +title: EmojiList +description: constructors and methods of type EmojiList +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: EmojiList +[Back to types index](index.html) + + + +### Possible values (constructors): + +[emojiListNotModified](/API_docs/constructors/emojiListNotModified.html) + +[emojiList](/API_docs/constructors/emojiList.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getDefaultProfilePhotoEmojis](/API_docs/methods/account.getDefaultProfilePhotoEmojis.html) + +[$MadelineProto->account->getDefaultGroupPhotoEmojis](/API_docs/methods/account.getDefaultGroupPhotoEmojis.html) + +[$MadelineProto->account->getDefaultBackgroundEmojis](/API_docs/methods/account.getDefaultBackgroundEmojis.html) + +[$MadelineProto->account->getChannelRestrictedStatusEmojis](/API_docs/methods/account.getChannelRestrictedStatusEmojis.html) + +[$MadelineProto->messages->searchCustomEmoji](/API_docs/methods/messages.searchCustomEmoji.html) + + + diff --git a/docs/API_docs/types/EmojiStatus.md b/docs/API_docs/types/EmojiStatus.md new file mode 100644 index 0000000000..433abb8b1a --- /dev/null +++ b/docs/API_docs/types/EmojiStatus.md @@ -0,0 +1,25 @@ +--- +title: EmojiStatus +description: constructors and methods of type EmojiStatus +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: EmojiStatus +[Back to types index](index.html) + + + +### Possible values (constructors): + +[emojiStatusEmpty](/API_docs/constructors/emojiStatusEmpty.html) + +[emojiStatus](/API_docs/constructors/emojiStatus.html) + +[emojiStatusUntil](/API_docs/constructors/emojiStatusUntil.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/EmojiURL.md b/docs/API_docs/types/EmojiURL.md new file mode 100644 index 0000000000..6b95de772c --- /dev/null +++ b/docs/API_docs/types/EmojiURL.md @@ -0,0 +1,23 @@ +--- +title: EmojiURL +description: constructors and methods of type EmojiURL +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: EmojiURL +[Back to types index](index.html) + + + +### Possible values (constructors): + +[emojiURL](/API_docs/constructors/emojiURL.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getEmojiURL](/API_docs/methods/messages.getEmojiURL.html) + + + diff --git a/docs/API_docs/types/EncryptedChat.md b/docs/API_docs/types/EncryptedChat.md new file mode 100644 index 0000000000..120695d61b --- /dev/null +++ b/docs/API_docs/types/EncryptedChat.md @@ -0,0 +1,33 @@ +--- +title: EncryptedChat +description: constructors and methods of type EncryptedChat +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: EncryptedChat +[Back to types index](index.html) + + + +### Possible values (constructors): + +[encryptedChatEmpty](/API_docs/constructors/encryptedChatEmpty.html) + +[encryptedChatWaiting](/API_docs/constructors/encryptedChatWaiting.html) + +[encryptedChatRequested](/API_docs/constructors/encryptedChatRequested.html) + +[encryptedChat](/API_docs/constructors/encryptedChat.html) + +[encryptedChatDiscarded](/API_docs/constructors/encryptedChatDiscarded.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->requestEncryption](/API_docs/methods/messages.requestEncryption.html) + +[$MadelineProto->messages->acceptEncryption](/API_docs/methods/messages.acceptEncryption.html) + + + diff --git a/docs/API_docs/types/EncryptedFile.md b/docs/API_docs/types/EncryptedFile.md new file mode 100644 index 0000000000..8e7957a0a7 --- /dev/null +++ b/docs/API_docs/types/EncryptedFile.md @@ -0,0 +1,25 @@ +--- +title: EncryptedFile +description: constructors and methods of type EncryptedFile +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: EncryptedFile +[Back to types index](index.html) + + + +### Possible values (constructors): + +[encryptedFileEmpty](/API_docs/constructors/encryptedFileEmpty.html) + +[encryptedFile](/API_docs/constructors/encryptedFile.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->uploadEncryptedFile](/API_docs/methods/messages.uploadEncryptedFile.html) + + + diff --git a/docs/API_docs/types/EncryptedMessage.md b/docs/API_docs/types/EncryptedMessage.md new file mode 100644 index 0000000000..49fc8ae76c --- /dev/null +++ b/docs/API_docs/types/EncryptedMessage.md @@ -0,0 +1,23 @@ +--- +title: EncryptedMessage +description: constructors and methods of type EncryptedMessage +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: EncryptedMessage +[Back to types index](index.html) + + + +### Possible values (constructors): + +[encryptedMessage](/API_docs/constructors/encryptedMessage.html) + +[encryptedMessageService](/API_docs/constructors/encryptedMessageService.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Error.md b/docs/API_docs/types/Error.md new file mode 100644 index 0000000000..2f00003790 --- /dev/null +++ b/docs/API_docs/types/Error.md @@ -0,0 +1,21 @@ +--- +title: Error +description: constructors and methods of type Error +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Error +[Back to types index](index.html) + + + +### Possible values (constructors): + +[error](/API_docs/constructors/error.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ExportedChatInvite.md b/docs/API_docs/types/ExportedChatInvite.md new file mode 100644 index 0000000000..7c0c7f8267 --- /dev/null +++ b/docs/API_docs/types/ExportedChatInvite.md @@ -0,0 +1,25 @@ +--- +title: ExportedChatInvite +description: constructors and methods of type ExportedChatInvite +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ExportedChatInvite +[Back to types index](index.html) + + + +### Possible values (constructors): + +[chatInviteExported](/API_docs/constructors/chatInviteExported.html) + +[chatInvitePublicJoinRequests](/API_docs/constructors/chatInvitePublicJoinRequests.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->exportChatInvite](/API_docs/methods/messages.exportChatInvite.html) + + + diff --git a/docs/API_docs/types/ExportedChatlistInvite.md b/docs/API_docs/types/ExportedChatlistInvite.md new file mode 100644 index 0000000000..0a39acd21d --- /dev/null +++ b/docs/API_docs/types/ExportedChatlistInvite.md @@ -0,0 +1,23 @@ +--- +title: ExportedChatlistInvite +description: constructors and methods of type ExportedChatlistInvite +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ExportedChatlistInvite +[Back to types index](index.html) + + + +### Possible values (constructors): + +[exportedChatlistInvite](/API_docs/constructors/exportedChatlistInvite.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->chatlists->editExportedInvite](/API_docs/methods/chatlists.editExportedInvite.html) + + + diff --git a/docs/API_docs/types/ExportedContactToken.md b/docs/API_docs/types/ExportedContactToken.md new file mode 100644 index 0000000000..f0f6f787a5 --- /dev/null +++ b/docs/API_docs/types/ExportedContactToken.md @@ -0,0 +1,23 @@ +--- +title: ExportedContactToken +description: constructors and methods of type ExportedContactToken +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ExportedContactToken +[Back to types index](index.html) + + + +### Possible values (constructors): + +[exportedContactToken](/API_docs/constructors/exportedContactToken.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->contacts->exportContactToken](/API_docs/methods/contacts.exportContactToken.html) + + + diff --git a/docs/API_docs/types/ExportedMessageLink.md b/docs/API_docs/types/ExportedMessageLink.md new file mode 100644 index 0000000000..d160fcaae4 --- /dev/null +++ b/docs/API_docs/types/ExportedMessageLink.md @@ -0,0 +1,23 @@ +--- +title: ExportedMessageLink +description: constructors and methods of type ExportedMessageLink +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ExportedMessageLink +[Back to types index](index.html) + + + +### Possible values (constructors): + +[exportedMessageLink](/API_docs/constructors/exportedMessageLink.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->channels->exportMessageLink](/API_docs/methods/channels.exportMessageLink.html) + + + diff --git a/docs/API_docs/types/ExportedStoryLink.md b/docs/API_docs/types/ExportedStoryLink.md new file mode 100644 index 0000000000..eaa6810e18 --- /dev/null +++ b/docs/API_docs/types/ExportedStoryLink.md @@ -0,0 +1,23 @@ +--- +title: ExportedStoryLink +description: constructors and methods of type ExportedStoryLink +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ExportedStoryLink +[Back to types index](index.html) + + + +### Possible values (constructors): + +[exportedStoryLink](/API_docs/constructors/exportedStoryLink.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->stories->exportStoryLink](/API_docs/methods/stories.exportStoryLink.html) + + + diff --git a/docs/API_docs/types/FileHash.md b/docs/API_docs/types/FileHash.md new file mode 100644 index 0000000000..77fb65b3f4 --- /dev/null +++ b/docs/API_docs/types/FileHash.md @@ -0,0 +1,27 @@ +--- +title: FileHash +description: constructors and methods of type FileHash +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: FileHash +[Back to types index](index.html) + + + +### Possible values (constructors): + +[fileHash](/API_docs/constructors/fileHash.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->upload->reuploadCdnFile](/API_docs/methods/upload.reuploadCdnFile.html) + +[$MadelineProto->upload->getCdnFileHashes](/API_docs/methods/upload.getCdnFileHashes.html) + +[$MadelineProto->upload->getFileHashes](/API_docs/methods/upload.getFileHashes.html) + + + diff --git a/docs/API_docs/types/FileLocation.md b/docs/API_docs/types/FileLocation.md new file mode 100644 index 0000000000..1b557ac3ac --- /dev/null +++ b/docs/API_docs/types/FileLocation.md @@ -0,0 +1,23 @@ +--- +title: FileLocation +description: constructors and methods of type FileLocation +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: FileLocation +[Back to types index](index.html) + + + +### Possible values (constructors): + +[fileLocationUnavailable\_23](/API_docs/constructors/fileLocationUnavailable_23.html) + +[fileLocation\_23](/API_docs/constructors/fileLocation_23.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Folder.md b/docs/API_docs/types/Folder.md new file mode 100644 index 0000000000..1aefcad60b --- /dev/null +++ b/docs/API_docs/types/Folder.md @@ -0,0 +1,21 @@ +--- +title: Folder +description: constructors and methods of type Folder +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Folder +[Back to types index](index.html) + + + +### Possible values (constructors): + +[folder](/API_docs/constructors/folder.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/FolderPeer.md b/docs/API_docs/types/FolderPeer.md new file mode 100644 index 0000000000..8d22ccec8a --- /dev/null +++ b/docs/API_docs/types/FolderPeer.md @@ -0,0 +1,21 @@ +--- +title: FolderPeer +description: constructors and methods of type FolderPeer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: FolderPeer +[Back to types index](index.html) + + + +### Possible values (constructors): + +[folderPeer](/API_docs/constructors/folderPeer.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ForumTopic.md b/docs/API_docs/types/ForumTopic.md new file mode 100644 index 0000000000..2423162189 --- /dev/null +++ b/docs/API_docs/types/ForumTopic.md @@ -0,0 +1,23 @@ +--- +title: ForumTopic +description: constructors and methods of type ForumTopic +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ForumTopic +[Back to types index](index.html) + + + +### Possible values (constructors): + +[forumTopicDeleted](/API_docs/constructors/forumTopicDeleted.html) + +[forumTopic](/API_docs/constructors/forumTopic.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Game.md b/docs/API_docs/types/Game.md new file mode 100644 index 0000000000..b84d253dd0 --- /dev/null +++ b/docs/API_docs/types/Game.md @@ -0,0 +1,21 @@ +--- +title: Game +description: constructors and methods of type Game +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Game +[Back to types index](index.html) + + + +### Possible values (constructors): + +[game](/API_docs/constructors/game.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/GeoPoint.md b/docs/API_docs/types/GeoPoint.md new file mode 100644 index 0000000000..bd8e527d92 --- /dev/null +++ b/docs/API_docs/types/GeoPoint.md @@ -0,0 +1,23 @@ +--- +title: GeoPoint +description: constructors and methods of type GeoPoint +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: GeoPoint +[Back to types index](index.html) + + + +### Possible values (constructors): + +[geoPointEmpty](/API_docs/constructors/geoPointEmpty.html) + +[geoPoint](/API_docs/constructors/geoPoint.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/GlobalPrivacySettings.md b/docs/API_docs/types/GlobalPrivacySettings.md new file mode 100644 index 0000000000..55cebb5683 --- /dev/null +++ b/docs/API_docs/types/GlobalPrivacySettings.md @@ -0,0 +1,25 @@ +--- +title: GlobalPrivacySettings +description: constructors and methods of type GlobalPrivacySettings +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: GlobalPrivacySettings +[Back to types index](index.html) + + + +### Possible values (constructors): + +[globalPrivacySettings](/API_docs/constructors/globalPrivacySettings.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getGlobalPrivacySettings](/API_docs/methods/account.getGlobalPrivacySettings.html) + +[$MadelineProto->account->setGlobalPrivacySettings](/API_docs/methods/account.setGlobalPrivacySettings.html) + + + diff --git a/docs/API_docs/types/GroupCall.md b/docs/API_docs/types/GroupCall.md new file mode 100644 index 0000000000..c8d61fc7ac --- /dev/null +++ b/docs/API_docs/types/GroupCall.md @@ -0,0 +1,23 @@ +--- +title: GroupCall +description: constructors and methods of type GroupCall +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: GroupCall +[Back to types index](index.html) + + + +### Possible values (constructors): + +[groupCallDiscarded](/API_docs/constructors/groupCallDiscarded.html) + +[groupCall](/API_docs/constructors/groupCall.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/GroupCallParticipant.md b/docs/API_docs/types/GroupCallParticipant.md new file mode 100644 index 0000000000..889d7f464f --- /dev/null +++ b/docs/API_docs/types/GroupCallParticipant.md @@ -0,0 +1,21 @@ +--- +title: GroupCallParticipant +description: constructors and methods of type GroupCallParticipant +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: GroupCallParticipant +[Back to types index](index.html) + + + +### Possible values (constructors): + +[groupCallParticipant](/API_docs/constructors/groupCallParticipant.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/GroupCallParticipantVideo.md b/docs/API_docs/types/GroupCallParticipantVideo.md new file mode 100644 index 0000000000..ae06303280 --- /dev/null +++ b/docs/API_docs/types/GroupCallParticipantVideo.md @@ -0,0 +1,21 @@ +--- +title: GroupCallParticipantVideo +description: constructors and methods of type GroupCallParticipantVideo +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: GroupCallParticipantVideo +[Back to types index](index.html) + + + +### Possible values (constructors): + +[groupCallParticipantVideo](/API_docs/constructors/groupCallParticipantVideo.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/GroupCallParticipantVideoSourceGroup.md b/docs/API_docs/types/GroupCallParticipantVideoSourceGroup.md new file mode 100644 index 0000000000..3413cae030 --- /dev/null +++ b/docs/API_docs/types/GroupCallParticipantVideoSourceGroup.md @@ -0,0 +1,21 @@ +--- +title: GroupCallParticipantVideoSourceGroup +description: constructors and methods of type GroupCallParticipantVideoSourceGroup +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: GroupCallParticipantVideoSourceGroup +[Back to types index](index.html) + + + +### Possible values (constructors): + +[groupCallParticipantVideoSourceGroup](/API_docs/constructors/groupCallParticipantVideoSourceGroup.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/GroupCallStreamChannel.md b/docs/API_docs/types/GroupCallStreamChannel.md new file mode 100644 index 0000000000..726c45fd71 --- /dev/null +++ b/docs/API_docs/types/GroupCallStreamChannel.md @@ -0,0 +1,21 @@ +--- +title: GroupCallStreamChannel +description: constructors and methods of type GroupCallStreamChannel +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: GroupCallStreamChannel +[Back to types index](index.html) + + + +### Possible values (constructors): + +[groupCallStreamChannel](/API_docs/constructors/groupCallStreamChannel.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/HighScore.md b/docs/API_docs/types/HighScore.md new file mode 100644 index 0000000000..e7492bb596 --- /dev/null +++ b/docs/API_docs/types/HighScore.md @@ -0,0 +1,21 @@ +--- +title: HighScore +description: constructors and methods of type HighScore +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: HighScore +[Back to types index](index.html) + + + +### Possible values (constructors): + +[highScore](/API_docs/constructors/highScore.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ImportedContact.md b/docs/API_docs/types/ImportedContact.md new file mode 100644 index 0000000000..901f54b0e1 --- /dev/null +++ b/docs/API_docs/types/ImportedContact.md @@ -0,0 +1,21 @@ +--- +title: ImportedContact +description: constructors and methods of type ImportedContact +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ImportedContact +[Back to types index](index.html) + + + +### Possible values (constructors): + +[importedContact](/API_docs/constructors/importedContact.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InlineBotSwitchPM.md b/docs/API_docs/types/InlineBotSwitchPM.md new file mode 100644 index 0000000000..f734613c5a --- /dev/null +++ b/docs/API_docs/types/InlineBotSwitchPM.md @@ -0,0 +1,21 @@ +--- +title: InlineBotSwitchPM +description: constructors and methods of type InlineBotSwitchPM +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InlineBotSwitchPM +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inlineBotSwitchPM](/API_docs/constructors/inlineBotSwitchPM.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InlineBotWebView.md b/docs/API_docs/types/InlineBotWebView.md new file mode 100644 index 0000000000..13197cd834 --- /dev/null +++ b/docs/API_docs/types/InlineBotWebView.md @@ -0,0 +1,21 @@ +--- +title: InlineBotWebView +description: constructors and methods of type InlineBotWebView +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InlineBotWebView +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inlineBotWebView](/API_docs/constructors/inlineBotWebView.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InlineQueryPeerType.md b/docs/API_docs/types/InlineQueryPeerType.md new file mode 100644 index 0000000000..8285d88022 --- /dev/null +++ b/docs/API_docs/types/InlineQueryPeerType.md @@ -0,0 +1,31 @@ +--- +title: InlineQueryPeerType +description: constructors and methods of type InlineQueryPeerType +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InlineQueryPeerType +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inlineQueryPeerTypeSameBotPM](/API_docs/constructors/inlineQueryPeerTypeSameBotPM.html) + +[inlineQueryPeerTypePM](/API_docs/constructors/inlineQueryPeerTypePM.html) + +[inlineQueryPeerTypeChat](/API_docs/constructors/inlineQueryPeerTypeChat.html) + +[inlineQueryPeerTypeMegagroup](/API_docs/constructors/inlineQueryPeerTypeMegagroup.html) + +[inlineQueryPeerTypeBroadcast](/API_docs/constructors/inlineQueryPeerTypeBroadcast.html) + +[inlineQueryPeerTypeBotPM](/API_docs/constructors/inlineQueryPeerTypeBotPM.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputAppEvent.md b/docs/API_docs/types/InputAppEvent.md new file mode 100644 index 0000000000..648c14bacd --- /dev/null +++ b/docs/API_docs/types/InputAppEvent.md @@ -0,0 +1,21 @@ +--- +title: InputAppEvent +description: constructors and methods of type InputAppEvent +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputAppEvent +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputAppEvent](/API_docs/constructors/inputAppEvent.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputBotApp.md b/docs/API_docs/types/InputBotApp.md new file mode 100644 index 0000000000..530a4070ce --- /dev/null +++ b/docs/API_docs/types/InputBotApp.md @@ -0,0 +1,23 @@ +--- +title: InputBotApp +description: constructors and methods of type InputBotApp +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputBotApp +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputBotAppID](/API_docs/constructors/inputBotAppID.html) + +[inputBotAppShortName](/API_docs/constructors/inputBotAppShortName.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputBotInlineMessage.md b/docs/API_docs/types/InputBotInlineMessage.md new file mode 100644 index 0000000000..f9e430f8aa --- /dev/null +++ b/docs/API_docs/types/InputBotInlineMessage.md @@ -0,0 +1,35 @@ +--- +title: InputBotInlineMessage +description: constructors and methods of type InputBotInlineMessage +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputBotInlineMessage +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputBotInlineMessageMediaAuto](/API_docs/constructors/inputBotInlineMessageMediaAuto.html) + +[inputBotInlineMessageText](/API_docs/constructors/inputBotInlineMessageText.html) + +[inputBotInlineMessageMediaGeo](/API_docs/constructors/inputBotInlineMessageMediaGeo.html) + +[inputBotInlineMessageMediaVenue](/API_docs/constructors/inputBotInlineMessageMediaVenue.html) + +[inputBotInlineMessageMediaContact](/API_docs/constructors/inputBotInlineMessageMediaContact.html) + +[inputBotInlineMessageGame](/API_docs/constructors/inputBotInlineMessageGame.html) + +[inputBotInlineMessageMediaInvoice](/API_docs/constructors/inputBotInlineMessageMediaInvoice.html) + +[inputBotInlineMessageMediaWebPage](/API_docs/constructors/inputBotInlineMessageMediaWebPage.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputBotInlineMessageID.md b/docs/API_docs/types/InputBotInlineMessageID.md new file mode 100644 index 0000000000..403200b154 --- /dev/null +++ b/docs/API_docs/types/InputBotInlineMessageID.md @@ -0,0 +1,23 @@ +--- +title: InputBotInlineMessageID +description: constructors and methods of type InputBotInlineMessageID +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputBotInlineMessageID +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputBotInlineMessageID](/API_docs/constructors/inputBotInlineMessageID.html) + +[inputBotInlineMessageID64](/API_docs/constructors/inputBotInlineMessageID64.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputBotInlineResult.md b/docs/API_docs/types/InputBotInlineResult.md new file mode 100644 index 0000000000..3607c97918 --- /dev/null +++ b/docs/API_docs/types/InputBotInlineResult.md @@ -0,0 +1,27 @@ +--- +title: InputBotInlineResult +description: constructors and methods of type InputBotInlineResult +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputBotInlineResult +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputBotInlineResult](/API_docs/constructors/inputBotInlineResult.html) + +[inputBotInlineResultPhoto](/API_docs/constructors/inputBotInlineResultPhoto.html) + +[inputBotInlineResultDocument](/API_docs/constructors/inputBotInlineResultDocument.html) + +[inputBotInlineResultGame](/API_docs/constructors/inputBotInlineResultGame.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputBusinessAwayMessage.md b/docs/API_docs/types/InputBusinessAwayMessage.md new file mode 100644 index 0000000000..a934a525f8 --- /dev/null +++ b/docs/API_docs/types/InputBusinessAwayMessage.md @@ -0,0 +1,21 @@ +--- +title: InputBusinessAwayMessage +description: constructors and methods of type InputBusinessAwayMessage +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputBusinessAwayMessage +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputBusinessAwayMessage](/API_docs/constructors/inputBusinessAwayMessage.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputBusinessBotRecipients.md b/docs/API_docs/types/InputBusinessBotRecipients.md new file mode 100644 index 0000000000..73821621d5 --- /dev/null +++ b/docs/API_docs/types/InputBusinessBotRecipients.md @@ -0,0 +1,21 @@ +--- +title: InputBusinessBotRecipients +description: constructors and methods of type InputBusinessBotRecipients +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputBusinessBotRecipients +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputBusinessBotRecipients](/API_docs/constructors/inputBusinessBotRecipients.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputBusinessChatLink.md b/docs/API_docs/types/InputBusinessChatLink.md new file mode 100644 index 0000000000..8834af6481 --- /dev/null +++ b/docs/API_docs/types/InputBusinessChatLink.md @@ -0,0 +1,21 @@ +--- +title: InputBusinessChatLink +description: constructors and methods of type InputBusinessChatLink +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputBusinessChatLink +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputBusinessChatLink](/API_docs/constructors/inputBusinessChatLink.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputBusinessGreetingMessage.md b/docs/API_docs/types/InputBusinessGreetingMessage.md new file mode 100644 index 0000000000..3cfa55ce28 --- /dev/null +++ b/docs/API_docs/types/InputBusinessGreetingMessage.md @@ -0,0 +1,21 @@ +--- +title: InputBusinessGreetingMessage +description: constructors and methods of type InputBusinessGreetingMessage +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputBusinessGreetingMessage +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputBusinessGreetingMessage](/API_docs/constructors/inputBusinessGreetingMessage.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputBusinessIntro.md b/docs/API_docs/types/InputBusinessIntro.md new file mode 100644 index 0000000000..1f3cdd9445 --- /dev/null +++ b/docs/API_docs/types/InputBusinessIntro.md @@ -0,0 +1,21 @@ +--- +title: InputBusinessIntro +description: constructors and methods of type InputBusinessIntro +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputBusinessIntro +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputBusinessIntro](/API_docs/constructors/inputBusinessIntro.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputBusinessRecipients.md b/docs/API_docs/types/InputBusinessRecipients.md new file mode 100644 index 0000000000..ad7572d4fa --- /dev/null +++ b/docs/API_docs/types/InputBusinessRecipients.md @@ -0,0 +1,21 @@ +--- +title: InputBusinessRecipients +description: constructors and methods of type InputBusinessRecipients +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputBusinessRecipients +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputBusinessRecipients](/API_docs/constructors/inputBusinessRecipients.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputChannel.md b/docs/API_docs/types/InputChannel.md new file mode 100644 index 0000000000..4771388ae1 --- /dev/null +++ b/docs/API_docs/types/InputChannel.md @@ -0,0 +1,60 @@ +--- +title: InputChannel +description: constructors and methods of type InputChannel +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputChannel +[Back to types index](index.html) + +You can directly provide the [Update](Update.html) or [Message](Message.html) object here, MadelineProto will automatically extract the destination chat id. + +The following syntaxes can also be used: + +```php +$InputChannel = '@username'; // Username + +$InputChannel = $update; // Update objects received in the event handler + +$InputChannel = 'me'; // The currently logged-in user + +$InputChannel = 44700; // bot API id (users) +$InputChannel = -492772765; // bot API id (chats) +$InputChannel = -10038575794; // bot API id (channels) + +$InputChannel = 'https://t.me/danogentili'; // t.me URLs +$InputChannel = 'https://t.me/joinchat/asfln1-21fa_'; // t.me invite links + +``` + +You can also provide one of the following objects, instead, MadelineProto will handle conversion automatically: + +- [Chat](Chat.html) +- [User](User.html) +- [InputPeer](InputPeer.html) +- [InputDialogPeer](InputDialogPeer.html) +- [InputNotifyPeer](InputNotifyPeer.html) +- [InputUser](InputUser.html) +- [InputChannel](InputChannel.html) +- [Peer](Peer.html) +- [DialogPeer](DialogPeer.html) +- [NotifyPeer](NotifyPeer.html) +- [Chat](Chat.html) + + + + +### Possible values (constructors): + +[inputChannelEmpty](/API_docs/constructors/inputChannelEmpty.html) + +[inputChannel](/API_docs/constructors/inputChannel.html) + +[inputChannelFromMessage](/API_docs/constructors/inputChannelFromMessage.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputChatPhoto.md b/docs/API_docs/types/InputChatPhoto.md new file mode 100644 index 0000000000..f98a248cfe --- /dev/null +++ b/docs/API_docs/types/InputChatPhoto.md @@ -0,0 +1,25 @@ +--- +title: InputChatPhoto +description: constructors and methods of type InputChatPhoto +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputChatPhoto +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputChatPhotoEmpty](/API_docs/constructors/inputChatPhotoEmpty.html) + +[inputChatUploadedPhoto](/API_docs/constructors/inputChatUploadedPhoto.html) + +[inputChatPhoto](/API_docs/constructors/inputChatPhoto.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputChatlist.md b/docs/API_docs/types/InputChatlist.md new file mode 100644 index 0000000000..631f2fbae1 --- /dev/null +++ b/docs/API_docs/types/InputChatlist.md @@ -0,0 +1,21 @@ +--- +title: InputChatlist +description: constructors and methods of type InputChatlist +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputChatlist +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputChatlistDialogFilter](/API_docs/constructors/inputChatlistDialogFilter.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputCheckPasswordSRP.md b/docs/API_docs/types/InputCheckPasswordSRP.md new file mode 100644 index 0000000000..b1e345951c --- /dev/null +++ b/docs/API_docs/types/InputCheckPasswordSRP.md @@ -0,0 +1,24 @@ +--- +title: InputCheckPasswordSRP +description: constructors and methods of type InputCheckPasswordSRP +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputCheckPasswordSRP +[Back to types index](index.html) + +You can also directly provide a password as a string. + + +### Possible values (constructors): + +[inputCheckPasswordEmpty](/API_docs/constructors/inputCheckPasswordEmpty.html) + +[inputCheckPasswordSRP](/API_docs/constructors/inputCheckPasswordSRP.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputClientProxy.md b/docs/API_docs/types/InputClientProxy.md new file mode 100644 index 0000000000..96efd47f5d --- /dev/null +++ b/docs/API_docs/types/InputClientProxy.md @@ -0,0 +1,21 @@ +--- +title: InputClientProxy +description: constructors and methods of type InputClientProxy +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputClientProxy +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputClientProxy](/API_docs/constructors/inputClientProxy.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputCollectible.md b/docs/API_docs/types/InputCollectible.md new file mode 100644 index 0000000000..fd712dde7b --- /dev/null +++ b/docs/API_docs/types/InputCollectible.md @@ -0,0 +1,23 @@ +--- +title: InputCollectible +description: constructors and methods of type InputCollectible +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputCollectible +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputCollectibleUsername](/API_docs/constructors/inputCollectibleUsername.html) + +[inputCollectiblePhone](/API_docs/constructors/inputCollectiblePhone.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputContact.md b/docs/API_docs/types/InputContact.md new file mode 100644 index 0000000000..47f83d66ce --- /dev/null +++ b/docs/API_docs/types/InputContact.md @@ -0,0 +1,21 @@ +--- +title: InputContact +description: constructors and methods of type InputContact +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputContact +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputPhoneContact](/API_docs/constructors/inputPhoneContact.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputDialogPeer.md b/docs/API_docs/types/InputDialogPeer.md new file mode 100644 index 0000000000..dfdaa31af8 --- /dev/null +++ b/docs/API_docs/types/InputDialogPeer.md @@ -0,0 +1,23 @@ +--- +title: InputDialogPeer +description: constructors and methods of type InputDialogPeer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputDialogPeer +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputDialogPeer](/API_docs/constructors/inputDialogPeer.html) + +[inputDialogPeerFolder](/API_docs/constructors/inputDialogPeerFolder.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputDocument.md b/docs/API_docs/types/InputDocument.md new file mode 100644 index 0000000000..17216eb0cb --- /dev/null +++ b/docs/API_docs/types/InputDocument.md @@ -0,0 +1,24 @@ +--- +title: InputDocument +description: constructors and methods of type InputDocument +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputDocument +[Back to types index](index.html) + +You can also provide a [MessageMedia](MessageMedia.html), [Message](Message.html), [Update](Update.html), [Document](Document.html) here, MadelineProto will automatically convert it to the right type. + + +### Possible values (constructors): + +[inputDocumentEmpty](/API_docs/constructors/inputDocumentEmpty.html) + +[inputDocument](/API_docs/constructors/inputDocument.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputEncryptedChat.md b/docs/API_docs/types/InputEncryptedChat.md new file mode 100644 index 0000000000..ffb13f7254 --- /dev/null +++ b/docs/API_docs/types/InputEncryptedChat.md @@ -0,0 +1,29 @@ +--- +title: InputEncryptedChat +description: constructors and methods of type InputEncryptedChat +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputEncryptedChat +[Back to types index](index.html) + +You can directly provide the [Update](Update.html) or [EncryptedMessage](EncryptedMessage.html) object here, MadelineProto will automatically extract the destination chat id. + +The following syntax can also be used: + +```php +$InputEncryptedChat = -147286699; // Numeric chat id returned by requestSecretChat, can be positive or negative +``` + + + +### Possible values (constructors): + +[inputEncryptedChat](/API_docs/constructors/inputEncryptedChat.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputEncryptedFile.md b/docs/API_docs/types/InputEncryptedFile.md new file mode 100644 index 0000000000..3d72b43f93 --- /dev/null +++ b/docs/API_docs/types/InputEncryptedFile.md @@ -0,0 +1,35 @@ +--- +title: InputEncryptedFile +description: constructors and methods of type InputEncryptedFile +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputEncryptedFile +[Back to types index](index.html) + +The following syntax can also be used: + +```php +$InputEncryptedFile = 'filename.mp4'; // The file path can also be used +$InputEncryptedFile = 'https://google.com'; // A URL can also be used +``` + +You can also use async streams, HTTP response objects, and [much more](https://docs.madelineproto.xyz/docs/FILES.html#downloading-files)! + + +### Possible values (constructors): + +[inputEncryptedFileEmpty](/API_docs/constructors/inputEncryptedFileEmpty.html) + +[inputEncryptedFileUploaded](/API_docs/constructors/inputEncryptedFileUploaded.html) + +[inputEncryptedFile](/API_docs/constructors/inputEncryptedFile.html) + +[inputEncryptedFileBigUploaded](/API_docs/constructors/inputEncryptedFileBigUploaded.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputFile.md b/docs/API_docs/types/InputFile.md new file mode 100644 index 0000000000..3b8bd0eaea --- /dev/null +++ b/docs/API_docs/types/InputFile.md @@ -0,0 +1,31 @@ +--- +title: InputFile +description: constructors and methods of type InputFile +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputFile +[Back to types index](index.html) + +The following syntax can also be used: + +```php +$InputFile = 'filename.mp4'; // The file path can also be used +$InputFile = 'https://google.com'; // A URL can also be used +``` + +You can also use async streams, HTTP response objects, and [much more](https://docs.madelineproto.xyz/docs/FILES.html#downloading-files)! + + +### Possible values (constructors): + +[inputFile](/API_docs/constructors/inputFile.html) + +[inputFileBig](/API_docs/constructors/inputFileBig.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputFileLocation.md b/docs/API_docs/types/InputFileLocation.md new file mode 100644 index 0000000000..899f35071b --- /dev/null +++ b/docs/API_docs/types/InputFileLocation.md @@ -0,0 +1,39 @@ +--- +title: InputFileLocation +description: constructors and methods of type InputFileLocation +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputFileLocation +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputFileLocation](/API_docs/constructors/inputFileLocation.html) + +[inputEncryptedFileLocation](/API_docs/constructors/inputEncryptedFileLocation.html) + +[inputDocumentFileLocation](/API_docs/constructors/inputDocumentFileLocation.html) + +[inputSecureFileLocation](/API_docs/constructors/inputSecureFileLocation.html) + +[inputTakeoutFileLocation](/API_docs/constructors/inputTakeoutFileLocation.html) + +[inputPhotoFileLocation](/API_docs/constructors/inputPhotoFileLocation.html) + +[inputPhotoLegacyFileLocation](/API_docs/constructors/inputPhotoLegacyFileLocation.html) + +[inputPeerPhotoFileLocation](/API_docs/constructors/inputPeerPhotoFileLocation.html) + +[inputStickerSetThumb](/API_docs/constructors/inputStickerSetThumb.html) + +[inputGroupCallStream](/API_docs/constructors/inputGroupCallStream.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputFolderPeer.md b/docs/API_docs/types/InputFolderPeer.md new file mode 100644 index 0000000000..41b3b61167 --- /dev/null +++ b/docs/API_docs/types/InputFolderPeer.md @@ -0,0 +1,21 @@ +--- +title: InputFolderPeer +description: constructors and methods of type InputFolderPeer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputFolderPeer +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputFolderPeer](/API_docs/constructors/inputFolderPeer.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputGame.md b/docs/API_docs/types/InputGame.md new file mode 100644 index 0000000000..df15386c91 --- /dev/null +++ b/docs/API_docs/types/InputGame.md @@ -0,0 +1,23 @@ +--- +title: InputGame +description: constructors and methods of type InputGame +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputGame +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputGameID](/API_docs/constructors/inputGameID.html) + +[inputGameShortName](/API_docs/constructors/inputGameShortName.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputGeoPoint.md b/docs/API_docs/types/InputGeoPoint.md new file mode 100644 index 0000000000..6945629c5c --- /dev/null +++ b/docs/API_docs/types/InputGeoPoint.md @@ -0,0 +1,23 @@ +--- +title: InputGeoPoint +description: constructors and methods of type InputGeoPoint +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputGeoPoint +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputGeoPointEmpty](/API_docs/constructors/inputGeoPointEmpty.html) + +[inputGeoPoint](/API_docs/constructors/inputGeoPoint.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputGroupCall.md b/docs/API_docs/types/InputGroupCall.md new file mode 100644 index 0000000000..a1a9afe88c --- /dev/null +++ b/docs/API_docs/types/InputGroupCall.md @@ -0,0 +1,21 @@ +--- +title: InputGroupCall +description: constructors and methods of type InputGroupCall +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputGroupCall +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputGroupCall](/API_docs/constructors/inputGroupCall.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputInvoice.md b/docs/API_docs/types/InputInvoice.md new file mode 100644 index 0000000000..f173705383 --- /dev/null +++ b/docs/API_docs/types/InputInvoice.md @@ -0,0 +1,25 @@ +--- +title: InputInvoice +description: constructors and methods of type InputInvoice +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputInvoice +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputInvoiceMessage](/API_docs/constructors/inputInvoiceMessage.html) + +[inputInvoiceSlug](/API_docs/constructors/inputInvoiceSlug.html) + +[inputInvoicePremiumGiftCode](/API_docs/constructors/inputInvoicePremiumGiftCode.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputMedia.md b/docs/API_docs/types/InputMedia.md new file mode 100644 index 0000000000..2c02b7f9ef --- /dev/null +++ b/docs/API_docs/types/InputMedia.md @@ -0,0 +1,54 @@ +--- +title: InputMedia +description: constructors and methods of type InputMedia +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputMedia +[Back to types index](index.html) + +You can also provide a [MessageMedia](MessageMedia.html), [Message](Message.html), [Update](Update.html), [Document](Document.html), [Photo](Photo.html), [InputDocument](InputDocument.html), [InputPhoto](InputPhoto.html) here, MadelineProto will automatically convert it to the right type. + + +### Possible values (constructors): + +[inputMediaEmpty](/API_docs/constructors/inputMediaEmpty.html) + +[inputMediaUploadedPhoto](/API_docs/constructors/inputMediaUploadedPhoto.html) + +[inputMediaPhoto](/API_docs/constructors/inputMediaPhoto.html) + +[inputMediaGeoPoint](/API_docs/constructors/inputMediaGeoPoint.html) + +[inputMediaContact](/API_docs/constructors/inputMediaContact.html) + +[inputMediaUploadedDocument](/API_docs/constructors/inputMediaUploadedDocument.html) + +[inputMediaDocument](/API_docs/constructors/inputMediaDocument.html) + +[inputMediaVenue](/API_docs/constructors/inputMediaVenue.html) + +[inputMediaPhotoExternal](/API_docs/constructors/inputMediaPhotoExternal.html) + +[inputMediaDocumentExternal](/API_docs/constructors/inputMediaDocumentExternal.html) + +[inputMediaGame](/API_docs/constructors/inputMediaGame.html) + +[inputMediaInvoice](/API_docs/constructors/inputMediaInvoice.html) + +[inputMediaGeoLive](/API_docs/constructors/inputMediaGeoLive.html) + +[inputMediaPoll](/API_docs/constructors/inputMediaPoll.html) + +[inputMediaDice](/API_docs/constructors/inputMediaDice.html) + +[inputMediaStory](/API_docs/constructors/inputMediaStory.html) + +[inputMediaWebPage](/API_docs/constructors/inputMediaWebPage.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputMessage.md b/docs/API_docs/types/InputMessage.md new file mode 100644 index 0000000000..0f60bbd41e --- /dev/null +++ b/docs/API_docs/types/InputMessage.md @@ -0,0 +1,34 @@ +--- +title: InputMessage +description: constructors and methods of type InputMessage +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputMessage +[Back to types index](index.html) + +The following syntax can also be used: + +```php +$InputMessage = 142; // Numeric message ID +``` + + + + +### Possible values (constructors): + +[inputMessageID](/API_docs/constructors/inputMessageID.html) + +[inputMessageReplyTo](/API_docs/constructors/inputMessageReplyTo.html) + +[inputMessagePinned](/API_docs/constructors/inputMessagePinned.html) + +[inputMessageCallbackQuery](/API_docs/constructors/inputMessageCallbackQuery.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputNotifyPeer.md b/docs/API_docs/types/InputNotifyPeer.md new file mode 100644 index 0000000000..c944410c04 --- /dev/null +++ b/docs/API_docs/types/InputNotifyPeer.md @@ -0,0 +1,29 @@ +--- +title: InputNotifyPeer +description: constructors and methods of type InputNotifyPeer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputNotifyPeer +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputNotifyPeer](/API_docs/constructors/inputNotifyPeer.html) + +[inputNotifyUsers](/API_docs/constructors/inputNotifyUsers.html) + +[inputNotifyChats](/API_docs/constructors/inputNotifyChats.html) + +[inputNotifyBroadcasts](/API_docs/constructors/inputNotifyBroadcasts.html) + +[inputNotifyForumTopic](/API_docs/constructors/inputNotifyForumTopic.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputPaymentCredentials.md b/docs/API_docs/types/InputPaymentCredentials.md new file mode 100644 index 0000000000..69ad28611f --- /dev/null +++ b/docs/API_docs/types/InputPaymentCredentials.md @@ -0,0 +1,27 @@ +--- +title: InputPaymentCredentials +description: constructors and methods of type InputPaymentCredentials +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputPaymentCredentials +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputPaymentCredentialsSaved](/API_docs/constructors/inputPaymentCredentialsSaved.html) + +[inputPaymentCredentials](/API_docs/constructors/inputPaymentCredentials.html) + +[inputPaymentCredentialsApplePay](/API_docs/constructors/inputPaymentCredentialsApplePay.html) + +[inputPaymentCredentialsGooglePay](/API_docs/constructors/inputPaymentCredentialsGooglePay.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputPeer.md b/docs/API_docs/types/InputPeer.md new file mode 100644 index 0000000000..5019c8e6a1 --- /dev/null +++ b/docs/API_docs/types/InputPeer.md @@ -0,0 +1,68 @@ +--- +title: InputPeer +description: constructors and methods of type InputPeer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputPeer +[Back to types index](index.html) + +You can directly provide the [Update](Update.html) or [Message](Message.html) object here, MadelineProto will automatically extract the destination chat id. + +The following syntaxes can also be used: + +```php +$InputPeer = '@username'; // Username + +$InputPeer = $update; // Update objects received in the event handler + +$InputPeer = 'me'; // The currently logged-in user + +$InputPeer = 44700; // bot API id (users) +$InputPeer = -492772765; // bot API id (chats) +$InputPeer = -10038575794; // bot API id (channels) + +$InputPeer = 'https://t.me/danogentili'; // t.me URLs +$InputPeer = 'https://t.me/joinchat/asfln1-21fa_'; // t.me invite links + +``` + +You can also provide one of the following objects, instead, MadelineProto will handle conversion automatically: + +- [Chat](Chat.html) +- [User](User.html) +- [InputPeer](InputPeer.html) +- [InputDialogPeer](InputDialogPeer.html) +- [InputNotifyPeer](InputNotifyPeer.html) +- [InputUser](InputUser.html) +- [InputChannel](InputChannel.html) +- [Peer](Peer.html) +- [DialogPeer](DialogPeer.html) +- [NotifyPeer](NotifyPeer.html) +- [Chat](Chat.html) + + + + +### Possible values (constructors): + +[inputPeerEmpty](/API_docs/constructors/inputPeerEmpty.html) + +[inputPeerSelf](/API_docs/constructors/inputPeerSelf.html) + +[inputPeerChat](/API_docs/constructors/inputPeerChat.html) + +[inputPeerUser](/API_docs/constructors/inputPeerUser.html) + +[inputPeerChannel](/API_docs/constructors/inputPeerChannel.html) + +[inputPeerUserFromMessage](/API_docs/constructors/inputPeerUserFromMessage.html) + +[inputPeerChannelFromMessage](/API_docs/constructors/inputPeerChannelFromMessage.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputPeerNotifySettings.md b/docs/API_docs/types/InputPeerNotifySettings.md new file mode 100644 index 0000000000..62849f88b6 --- /dev/null +++ b/docs/API_docs/types/InputPeerNotifySettings.md @@ -0,0 +1,21 @@ +--- +title: InputPeerNotifySettings +description: constructors and methods of type InputPeerNotifySettings +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputPeerNotifySettings +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputPeerNotifySettings](/API_docs/constructors/inputPeerNotifySettings.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputPhoneCall.md b/docs/API_docs/types/InputPhoneCall.md new file mode 100644 index 0000000000..c91c22273a --- /dev/null +++ b/docs/API_docs/types/InputPhoneCall.md @@ -0,0 +1,21 @@ +--- +title: InputPhoneCall +description: constructors and methods of type InputPhoneCall +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputPhoneCall +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputPhoneCall](/API_docs/constructors/inputPhoneCall.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputPhoto.md b/docs/API_docs/types/InputPhoto.md new file mode 100644 index 0000000000..6989516843 --- /dev/null +++ b/docs/API_docs/types/InputPhoto.md @@ -0,0 +1,24 @@ +--- +title: InputPhoto +description: constructors and methods of type InputPhoto +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputPhoto +[Back to types index](index.html) + +You can also provide a [MessageMedia](MessageMedia.html), [Message](Message.html), [Update](Update.html), [Photo](Photo.html) here, MadelineProto will automatically convert it to the right type. + + +### Possible values (constructors): + +[inputPhotoEmpty](/API_docs/constructors/inputPhotoEmpty.html) + +[inputPhoto](/API_docs/constructors/inputPhoto.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputPrivacyKey.md b/docs/API_docs/types/InputPrivacyKey.md new file mode 100644 index 0000000000..f9b5906673 --- /dev/null +++ b/docs/API_docs/types/InputPrivacyKey.md @@ -0,0 +1,41 @@ +--- +title: InputPrivacyKey +description: constructors and methods of type InputPrivacyKey +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputPrivacyKey +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputPrivacyKeyStatusTimestamp](/API_docs/constructors/inputPrivacyKeyStatusTimestamp.html) + +[inputPrivacyKeyChatInvite](/API_docs/constructors/inputPrivacyKeyChatInvite.html) + +[inputPrivacyKeyPhoneCall](/API_docs/constructors/inputPrivacyKeyPhoneCall.html) + +[inputPrivacyKeyPhoneP2P](/API_docs/constructors/inputPrivacyKeyPhoneP2P.html) + +[inputPrivacyKeyForwards](/API_docs/constructors/inputPrivacyKeyForwards.html) + +[inputPrivacyKeyProfilePhoto](/API_docs/constructors/inputPrivacyKeyProfilePhoto.html) + +[inputPrivacyKeyPhoneNumber](/API_docs/constructors/inputPrivacyKeyPhoneNumber.html) + +[inputPrivacyKeyAddedByPhone](/API_docs/constructors/inputPrivacyKeyAddedByPhone.html) + +[inputPrivacyKeyVoiceMessages](/API_docs/constructors/inputPrivacyKeyVoiceMessages.html) + +[inputPrivacyKeyAbout](/API_docs/constructors/inputPrivacyKeyAbout.html) + +[inputPrivacyKeyBirthday](/API_docs/constructors/inputPrivacyKeyBirthday.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputPrivacyRule.md b/docs/API_docs/types/InputPrivacyRule.md new file mode 100644 index 0000000000..11fd86da2a --- /dev/null +++ b/docs/API_docs/types/InputPrivacyRule.md @@ -0,0 +1,39 @@ +--- +title: InputPrivacyRule +description: constructors and methods of type InputPrivacyRule +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputPrivacyRule +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputPrivacyValueAllowContacts](/API_docs/constructors/inputPrivacyValueAllowContacts.html) + +[inputPrivacyValueAllowAll](/API_docs/constructors/inputPrivacyValueAllowAll.html) + +[inputPrivacyValueAllowUsers](/API_docs/constructors/inputPrivacyValueAllowUsers.html) + +[inputPrivacyValueDisallowContacts](/API_docs/constructors/inputPrivacyValueDisallowContacts.html) + +[inputPrivacyValueDisallowAll](/API_docs/constructors/inputPrivacyValueDisallowAll.html) + +[inputPrivacyValueDisallowUsers](/API_docs/constructors/inputPrivacyValueDisallowUsers.html) + +[inputPrivacyValueAllowChatParticipants](/API_docs/constructors/inputPrivacyValueAllowChatParticipants.html) + +[inputPrivacyValueDisallowChatParticipants](/API_docs/constructors/inputPrivacyValueDisallowChatParticipants.html) + +[inputPrivacyValueAllowCloseFriends](/API_docs/constructors/inputPrivacyValueAllowCloseFriends.html) + +[inputPrivacyValueAllowPremium](/API_docs/constructors/inputPrivacyValueAllowPremium.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputQuickReplyShortcut.md b/docs/API_docs/types/InputQuickReplyShortcut.md new file mode 100644 index 0000000000..3b972f13a3 --- /dev/null +++ b/docs/API_docs/types/InputQuickReplyShortcut.md @@ -0,0 +1,23 @@ +--- +title: InputQuickReplyShortcut +description: constructors and methods of type InputQuickReplyShortcut +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputQuickReplyShortcut +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputQuickReplyShortcut](/API_docs/constructors/inputQuickReplyShortcut.html) + +[inputQuickReplyShortcutId](/API_docs/constructors/inputQuickReplyShortcutId.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputReplyTo.md b/docs/API_docs/types/InputReplyTo.md new file mode 100644 index 0000000000..4faa223287 --- /dev/null +++ b/docs/API_docs/types/InputReplyTo.md @@ -0,0 +1,23 @@ +--- +title: InputReplyTo +description: constructors and methods of type InputReplyTo +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputReplyTo +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputReplyToMessage](/API_docs/constructors/inputReplyToMessage.html) + +[inputReplyToStory](/API_docs/constructors/inputReplyToStory.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputSecureFile.md b/docs/API_docs/types/InputSecureFile.md new file mode 100644 index 0000000000..714ca88d48 --- /dev/null +++ b/docs/API_docs/types/InputSecureFile.md @@ -0,0 +1,23 @@ +--- +title: InputSecureFile +description: constructors and methods of type InputSecureFile +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputSecureFile +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputSecureFileUploaded](/API_docs/constructors/inputSecureFileUploaded.html) + +[inputSecureFile](/API_docs/constructors/inputSecureFile.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputSecureValue.md b/docs/API_docs/types/InputSecureValue.md new file mode 100644 index 0000000000..538cdffe39 --- /dev/null +++ b/docs/API_docs/types/InputSecureValue.md @@ -0,0 +1,21 @@ +--- +title: InputSecureValue +description: constructors and methods of type InputSecureValue +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputSecureValue +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputSecureValue](/API_docs/constructors/inputSecureValue.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputSingleMedia.md b/docs/API_docs/types/InputSingleMedia.md new file mode 100644 index 0000000000..f07db3dfb1 --- /dev/null +++ b/docs/API_docs/types/InputSingleMedia.md @@ -0,0 +1,21 @@ +--- +title: InputSingleMedia +description: constructors and methods of type InputSingleMedia +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputSingleMedia +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputSingleMedia](/API_docs/constructors/inputSingleMedia.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputStickerSet.md b/docs/API_docs/types/InputStickerSet.md new file mode 100644 index 0000000000..5d571b2479 --- /dev/null +++ b/docs/API_docs/types/InputStickerSet.md @@ -0,0 +1,41 @@ +--- +title: InputStickerSet +description: constructors and methods of type InputStickerSet +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputStickerSet +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputStickerSetEmpty](/API_docs/constructors/inputStickerSetEmpty.html) + +[inputStickerSetID](/API_docs/constructors/inputStickerSetID.html) + +[inputStickerSetShortName](/API_docs/constructors/inputStickerSetShortName.html) + +[inputStickerSetAnimatedEmoji](/API_docs/constructors/inputStickerSetAnimatedEmoji.html) + +[inputStickerSetDice](/API_docs/constructors/inputStickerSetDice.html) + +[inputStickerSetAnimatedEmojiAnimations](/API_docs/constructors/inputStickerSetAnimatedEmojiAnimations.html) + +[inputStickerSetPremiumGifts](/API_docs/constructors/inputStickerSetPremiumGifts.html) + +[inputStickerSetEmojiGenericAnimations](/API_docs/constructors/inputStickerSetEmojiGenericAnimations.html) + +[inputStickerSetEmojiDefaultStatuses](/API_docs/constructors/inputStickerSetEmojiDefaultStatuses.html) + +[inputStickerSetEmojiDefaultTopicIcons](/API_docs/constructors/inputStickerSetEmojiDefaultTopicIcons.html) + +[inputStickerSetEmojiChannelDefaultStatuses](/API_docs/constructors/inputStickerSetEmojiChannelDefaultStatuses.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputStickerSetItem.md b/docs/API_docs/types/InputStickerSetItem.md new file mode 100644 index 0000000000..d4583d3e7a --- /dev/null +++ b/docs/API_docs/types/InputStickerSetItem.md @@ -0,0 +1,21 @@ +--- +title: InputStickerSetItem +description: constructors and methods of type InputStickerSetItem +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputStickerSetItem +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputStickerSetItem](/API_docs/constructors/inputStickerSetItem.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputStickeredMedia.md b/docs/API_docs/types/InputStickeredMedia.md new file mode 100644 index 0000000000..b4943ae488 --- /dev/null +++ b/docs/API_docs/types/InputStickeredMedia.md @@ -0,0 +1,23 @@ +--- +title: InputStickeredMedia +description: constructors and methods of type InputStickeredMedia +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputStickeredMedia +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputStickeredMediaPhoto](/API_docs/constructors/inputStickeredMediaPhoto.html) + +[inputStickeredMediaDocument](/API_docs/constructors/inputStickeredMediaDocument.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputStorePaymentPurpose.md b/docs/API_docs/types/InputStorePaymentPurpose.md new file mode 100644 index 0000000000..15f80c3bbd --- /dev/null +++ b/docs/API_docs/types/InputStorePaymentPurpose.md @@ -0,0 +1,27 @@ +--- +title: InputStorePaymentPurpose +description: constructors and methods of type InputStorePaymentPurpose +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputStorePaymentPurpose +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputStorePaymentPremiumSubscription](/API_docs/constructors/inputStorePaymentPremiumSubscription.html) + +[inputStorePaymentGiftPremium](/API_docs/constructors/inputStorePaymentGiftPremium.html) + +[inputStorePaymentPremiumGiftCode](/API_docs/constructors/inputStorePaymentPremiumGiftCode.html) + +[inputStorePaymentPremiumGiveaway](/API_docs/constructors/inputStorePaymentPremiumGiveaway.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputTheme.md b/docs/API_docs/types/InputTheme.md new file mode 100644 index 0000000000..dfd01f9430 --- /dev/null +++ b/docs/API_docs/types/InputTheme.md @@ -0,0 +1,23 @@ +--- +title: InputTheme +description: constructors and methods of type InputTheme +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputTheme +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputTheme](/API_docs/constructors/inputTheme.html) + +[inputThemeSlug](/API_docs/constructors/inputThemeSlug.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputThemeSettings.md b/docs/API_docs/types/InputThemeSettings.md new file mode 100644 index 0000000000..daeeb2454b --- /dev/null +++ b/docs/API_docs/types/InputThemeSettings.md @@ -0,0 +1,21 @@ +--- +title: InputThemeSettings +description: constructors and methods of type InputThemeSettings +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputThemeSettings +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputThemeSettings](/API_docs/constructors/inputThemeSettings.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputUser.md b/docs/API_docs/types/InputUser.md new file mode 100644 index 0000000000..734d3e2905 --- /dev/null +++ b/docs/API_docs/types/InputUser.md @@ -0,0 +1,62 @@ +--- +title: InputUser +description: constructors and methods of type InputUser +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputUser +[Back to types index](index.html) + +You can directly provide the [Update](Update.html) or [Message](Message.html) object here, MadelineProto will automatically extract the destination chat id. + +The following syntaxes can also be used: + +```php +$InputUser = '@username'; // Username + +$InputUser = $update; // Update objects received in the event handler + +$InputUser = 'me'; // The currently logged-in user + +$InputUser = 44700; // bot API id (users) +$InputUser = -492772765; // bot API id (chats) +$InputUser = -10038575794; // bot API id (channels) + +$InputUser = 'https://t.me/danogentili'; // t.me URLs +$InputUser = 'https://t.me/joinchat/asfln1-21fa_'; // t.me invite links + +``` + +You can also provide one of the following objects, instead, MadelineProto will handle conversion automatically: + +- [Chat](Chat.html) +- [User](User.html) +- [InputPeer](InputPeer.html) +- [InputDialogPeer](InputDialogPeer.html) +- [InputNotifyPeer](InputNotifyPeer.html) +- [InputUser](InputUser.html) +- [InputChannel](InputChannel.html) +- [Peer](Peer.html) +- [DialogPeer](DialogPeer.html) +- [NotifyPeer](NotifyPeer.html) +- [Chat](Chat.html) + + + + +### Possible values (constructors): + +[inputUserEmpty](/API_docs/constructors/inputUserEmpty.html) + +[inputUserSelf](/API_docs/constructors/inputUserSelf.html) + +[inputUser](/API_docs/constructors/inputUser.html) + +[inputUserFromMessage](/API_docs/constructors/inputUserFromMessage.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputWallPaper.md b/docs/API_docs/types/InputWallPaper.md new file mode 100644 index 0000000000..32bb1a2fe5 --- /dev/null +++ b/docs/API_docs/types/InputWallPaper.md @@ -0,0 +1,25 @@ +--- +title: InputWallPaper +description: constructors and methods of type InputWallPaper +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputWallPaper +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputWallPaper](/API_docs/constructors/inputWallPaper.html) + +[inputWallPaperSlug](/API_docs/constructors/inputWallPaperSlug.html) + +[inputWallPaperNoFile](/API_docs/constructors/inputWallPaperNoFile.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputWebDocument.md b/docs/API_docs/types/InputWebDocument.md new file mode 100644 index 0000000000..4434254980 --- /dev/null +++ b/docs/API_docs/types/InputWebDocument.md @@ -0,0 +1,21 @@ +--- +title: InputWebDocument +description: constructors and methods of type InputWebDocument +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputWebDocument +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputWebDocument](/API_docs/constructors/inputWebDocument.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/InputWebFileLocation.md b/docs/API_docs/types/InputWebFileLocation.md new file mode 100644 index 0000000000..a89011485e --- /dev/null +++ b/docs/API_docs/types/InputWebFileLocation.md @@ -0,0 +1,25 @@ +--- +title: InputWebFileLocation +description: constructors and methods of type InputWebFileLocation +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: InputWebFileLocation +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputWebFileLocation](/API_docs/constructors/inputWebFileLocation.html) + +[inputWebFileGeoPointLocation](/API_docs/constructors/inputWebFileGeoPointLocation.html) + +[inputWebFileAudioAlbumThumbLocation](/API_docs/constructors/inputWebFileAudioAlbumThumbLocation.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Invoice.md b/docs/API_docs/types/Invoice.md new file mode 100644 index 0000000000..6317bd6573 --- /dev/null +++ b/docs/API_docs/types/Invoice.md @@ -0,0 +1,21 @@ +--- +title: Invoice +description: constructors and methods of type Invoice +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Invoice +[Back to types index](index.html) + + + +### Possible values (constructors): + +[invoice](/API_docs/constructors/invoice.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/JSONObjectValue.md b/docs/API_docs/types/JSONObjectValue.md new file mode 100644 index 0000000000..a223c5189b --- /dev/null +++ b/docs/API_docs/types/JSONObjectValue.md @@ -0,0 +1,21 @@ +--- +title: JSONObjectValue +description: constructors and methods of type JSONObjectValue +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: JSONObjectValue +[Back to types index](index.html) + + + +### Possible values (constructors): + +[jsonObjectValue](/API_docs/constructors/jsonObjectValue.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/JSONValue.md b/docs/API_docs/types/JSONValue.md new file mode 100644 index 0000000000..23b4c152d1 --- /dev/null +++ b/docs/API_docs/types/JSONValue.md @@ -0,0 +1,31 @@ +--- +title: JSONValue +description: constructors and methods of type JSONValue +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: JSONValue +[Back to types index](index.html) + + + +### Possible values (constructors): + +[jsonNull](/API_docs/constructors/jsonNull.html) + +[jsonBool](/API_docs/constructors/jsonBool.html) + +[jsonNumber](/API_docs/constructors/jsonNumber.html) + +[jsonString](/API_docs/constructors/jsonString.html) + +[jsonArray](/API_docs/constructors/jsonArray.html) + +[jsonObject](/API_docs/constructors/jsonObject.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/KeyboardButton.md b/docs/API_docs/types/KeyboardButton.md new file mode 100644 index 0000000000..23439a518f --- /dev/null +++ b/docs/API_docs/types/KeyboardButton.md @@ -0,0 +1,74 @@ +--- +title: KeyboardButton +description: constructors and methods of type KeyboardButton +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: KeyboardButton +[Back to types index](index.html) + +Clicking these buttons: + +To click these buttons simply run the `click` method: + +```php +$result = $KeyboardButton->click(); +``` + +`$result` can be one of the following: + + +* A string - If the button is a keyboardButtonUrl + +* [Updates](Updates.html) - If the button is a keyboardButton, the message will be sent to the chat, in reply to the message with the keyboard + +* [messages.BotCallbackAnswer](messages.BotCallbackAnswer.html) - If the button is a keyboardButtonCallback or a keyboardButtonGame the button will be pressed and the result will be returned + +* `false` - If the button is an unsupported button, like keyboardButtonRequestPhone, keyboardButtonRequestGeoLocation, keyboardButtonSwitchInlinekeyboardButtonBuy; you will have to parse data from these buttons manually + + +You can also access the properties of the constructor as a normal array, for example `$button['name']` + + +### Possible values (constructors): + +[keyboardButton](/API_docs/constructors/keyboardButton.html) + +[keyboardButtonUrl](/API_docs/constructors/keyboardButtonUrl.html) + +[keyboardButtonCallback](/API_docs/constructors/keyboardButtonCallback.html) + +[keyboardButtonRequestPhone](/API_docs/constructors/keyboardButtonRequestPhone.html) + +[keyboardButtonRequestGeoLocation](/API_docs/constructors/keyboardButtonRequestGeoLocation.html) + +[keyboardButtonSwitchInline](/API_docs/constructors/keyboardButtonSwitchInline.html) + +[keyboardButtonGame](/API_docs/constructors/keyboardButtonGame.html) + +[keyboardButtonBuy](/API_docs/constructors/keyboardButtonBuy.html) + +[keyboardButtonUrlAuth](/API_docs/constructors/keyboardButtonUrlAuth.html) + +[inputKeyboardButtonUrlAuth](/API_docs/constructors/inputKeyboardButtonUrlAuth.html) + +[keyboardButtonRequestPoll](/API_docs/constructors/keyboardButtonRequestPoll.html) + +[inputKeyboardButtonUserProfile](/API_docs/constructors/inputKeyboardButtonUserProfile.html) + +[keyboardButtonUserProfile](/API_docs/constructors/keyboardButtonUserProfile.html) + +[keyboardButtonWebView](/API_docs/constructors/keyboardButtonWebView.html) + +[keyboardButtonSimpleWebView](/API_docs/constructors/keyboardButtonSimpleWebView.html) + +[keyboardButtonRequestPeer](/API_docs/constructors/keyboardButtonRequestPeer.html) + +[inputKeyboardButtonRequestPeer](/API_docs/constructors/inputKeyboardButtonRequestPeer.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/KeyboardButtonRow.md b/docs/API_docs/types/KeyboardButtonRow.md new file mode 100644 index 0000000000..b5a324af29 --- /dev/null +++ b/docs/API_docs/types/KeyboardButtonRow.md @@ -0,0 +1,21 @@ +--- +title: KeyboardButtonRow +description: constructors and methods of type KeyboardButtonRow +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: KeyboardButtonRow +[Back to types index](index.html) + + + +### Possible values (constructors): + +[keyboardButtonRow](/API_docs/constructors/keyboardButtonRow.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/LabeledPrice.md b/docs/API_docs/types/LabeledPrice.md new file mode 100644 index 0000000000..97a9eb3b8c --- /dev/null +++ b/docs/API_docs/types/LabeledPrice.md @@ -0,0 +1,21 @@ +--- +title: LabeledPrice +description: constructors and methods of type LabeledPrice +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: LabeledPrice +[Back to types index](index.html) + + + +### Possible values (constructors): + +[labeledPrice](/API_docs/constructors/labeledPrice.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/LangPackDifference.md b/docs/API_docs/types/LangPackDifference.md new file mode 100644 index 0000000000..56781f15d7 --- /dev/null +++ b/docs/API_docs/types/LangPackDifference.md @@ -0,0 +1,25 @@ +--- +title: LangPackDifference +description: constructors and methods of type LangPackDifference +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: LangPackDifference +[Back to types index](index.html) + + + +### Possible values (constructors): + +[langPackDifference](/API_docs/constructors/langPackDifference.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->langpack->getLangPack](/API_docs/methods/langpack.getLangPack.html) + +[$MadelineProto->langpack->getDifference](/API_docs/methods/langpack.getDifference.html) + + + diff --git a/docs/API_docs/types/LangPackLanguage.md b/docs/API_docs/types/LangPackLanguage.md new file mode 100644 index 0000000000..087010aa7a --- /dev/null +++ b/docs/API_docs/types/LangPackLanguage.md @@ -0,0 +1,25 @@ +--- +title: LangPackLanguage +description: constructors and methods of type LangPackLanguage +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: LangPackLanguage +[Back to types index](index.html) + + + +### Possible values (constructors): + +[langPackLanguage](/API_docs/constructors/langPackLanguage.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->langpack->getLanguages](/API_docs/methods/langpack.getLanguages.html) + +[$MadelineProto->langpack->getLanguage](/API_docs/methods/langpack.getLanguage.html) + + + diff --git a/docs/API_docs/types/LangPackString.md b/docs/API_docs/types/LangPackString.md new file mode 100644 index 0000000000..899d2e639a --- /dev/null +++ b/docs/API_docs/types/LangPackString.md @@ -0,0 +1,27 @@ +--- +title: LangPackString +description: constructors and methods of type LangPackString +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: LangPackString +[Back to types index](index.html) + + + +### Possible values (constructors): + +[langPackString](/API_docs/constructors/langPackString.html) + +[langPackStringPluralized](/API_docs/constructors/langPackStringPluralized.html) + +[langPackStringDeleted](/API_docs/constructors/langPackStringDeleted.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->langpack->getStrings](/API_docs/methods/langpack.getStrings.html) + + + diff --git a/docs/API_docs/types/MaskCoords.md b/docs/API_docs/types/MaskCoords.md new file mode 100644 index 0000000000..de26bcb5bb --- /dev/null +++ b/docs/API_docs/types/MaskCoords.md @@ -0,0 +1,21 @@ +--- +title: MaskCoords +description: constructors and methods of type MaskCoords +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: MaskCoords +[Back to types index](index.html) + + + +### Possible values (constructors): + +[maskCoords](/API_docs/constructors/maskCoords.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/MediaArea.md b/docs/API_docs/types/MediaArea.md new file mode 100644 index 0000000000..780e7fd725 --- /dev/null +++ b/docs/API_docs/types/MediaArea.md @@ -0,0 +1,31 @@ +--- +title: MediaArea +description: constructors and methods of type MediaArea +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: MediaArea +[Back to types index](index.html) + + + +### Possible values (constructors): + +[mediaAreaVenue](/API_docs/constructors/mediaAreaVenue.html) + +[inputMediaAreaVenue](/API_docs/constructors/inputMediaAreaVenue.html) + +[mediaAreaGeoPoint](/API_docs/constructors/mediaAreaGeoPoint.html) + +[mediaAreaSuggestedReaction](/API_docs/constructors/mediaAreaSuggestedReaction.html) + +[mediaAreaChannelPost](/API_docs/constructors/mediaAreaChannelPost.html) + +[inputMediaAreaChannelPost](/API_docs/constructors/inputMediaAreaChannelPost.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/MediaAreaCoordinates.md b/docs/API_docs/types/MediaAreaCoordinates.md new file mode 100644 index 0000000000..2480df8369 --- /dev/null +++ b/docs/API_docs/types/MediaAreaCoordinates.md @@ -0,0 +1,21 @@ +--- +title: MediaAreaCoordinates +description: constructors and methods of type MediaAreaCoordinates +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: MediaAreaCoordinates +[Back to types index](index.html) + + + +### Possible values (constructors): + +[mediaAreaCoordinates](/API_docs/constructors/mediaAreaCoordinates.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Message.md b/docs/API_docs/types/Message.md new file mode 100644 index 0000000000..3bb7bebe45 --- /dev/null +++ b/docs/API_docs/types/Message.md @@ -0,0 +1,25 @@ +--- +title: Message +description: constructors and methods of type Message +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Message +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messageEmpty](/API_docs/constructors/messageEmpty.html) + +[message](/API_docs/constructors/message.html) + +[messageService](/API_docs/constructors/messageService.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/MessageAction.md b/docs/API_docs/types/MessageAction.md new file mode 100644 index 0000000000..efe80b1a27 --- /dev/null +++ b/docs/API_docs/types/MessageAction.md @@ -0,0 +1,105 @@ +--- +title: MessageAction +description: constructors and methods of type MessageAction +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: MessageAction +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messageActionEmpty](/API_docs/constructors/messageActionEmpty.html) + +[messageActionChatCreate](/API_docs/constructors/messageActionChatCreate.html) + +[messageActionChatEditTitle](/API_docs/constructors/messageActionChatEditTitle.html) + +[messageActionChatEditPhoto](/API_docs/constructors/messageActionChatEditPhoto.html) + +[messageActionChatDeletePhoto](/API_docs/constructors/messageActionChatDeletePhoto.html) + +[messageActionChatAddUser](/API_docs/constructors/messageActionChatAddUser.html) + +[messageActionChatDeleteUser](/API_docs/constructors/messageActionChatDeleteUser.html) + +[messageActionChatJoinedByLink](/API_docs/constructors/messageActionChatJoinedByLink.html) + +[messageActionChannelCreate](/API_docs/constructors/messageActionChannelCreate.html) + +[messageActionChatMigrateTo](/API_docs/constructors/messageActionChatMigrateTo.html) + +[messageActionChannelMigrateFrom](/API_docs/constructors/messageActionChannelMigrateFrom.html) + +[messageActionPinMessage](/API_docs/constructors/messageActionPinMessage.html) + +[messageActionHistoryClear](/API_docs/constructors/messageActionHistoryClear.html) + +[messageActionGameScore](/API_docs/constructors/messageActionGameScore.html) + +[messageActionPaymentSentMe](/API_docs/constructors/messageActionPaymentSentMe.html) + +[messageActionPaymentSent](/API_docs/constructors/messageActionPaymentSent.html) + +[messageActionPhoneCall](/API_docs/constructors/messageActionPhoneCall.html) + +[messageActionScreenshotTaken](/API_docs/constructors/messageActionScreenshotTaken.html) + +[messageActionCustomAction](/API_docs/constructors/messageActionCustomAction.html) + +[messageActionBotAllowed](/API_docs/constructors/messageActionBotAllowed.html) + +[messageActionSecureValuesSentMe](/API_docs/constructors/messageActionSecureValuesSentMe.html) + +[messageActionSecureValuesSent](/API_docs/constructors/messageActionSecureValuesSent.html) + +[messageActionContactSignUp](/API_docs/constructors/messageActionContactSignUp.html) + +[messageActionGeoProximityReached](/API_docs/constructors/messageActionGeoProximityReached.html) + +[messageActionGroupCall](/API_docs/constructors/messageActionGroupCall.html) + +[messageActionInviteToGroupCall](/API_docs/constructors/messageActionInviteToGroupCall.html) + +[messageActionSetMessagesTTL](/API_docs/constructors/messageActionSetMessagesTTL.html) + +[messageActionGroupCallScheduled](/API_docs/constructors/messageActionGroupCallScheduled.html) + +[messageActionSetChatTheme](/API_docs/constructors/messageActionSetChatTheme.html) + +[messageActionChatJoinedByRequest](/API_docs/constructors/messageActionChatJoinedByRequest.html) + +[messageActionWebViewDataSentMe](/API_docs/constructors/messageActionWebViewDataSentMe.html) + +[messageActionWebViewDataSent](/API_docs/constructors/messageActionWebViewDataSent.html) + +[messageActionGiftPremium](/API_docs/constructors/messageActionGiftPremium.html) + +[messageActionTopicCreate](/API_docs/constructors/messageActionTopicCreate.html) + +[messageActionTopicEdit](/API_docs/constructors/messageActionTopicEdit.html) + +[messageActionSuggestProfilePhoto](/API_docs/constructors/messageActionSuggestProfilePhoto.html) + +[messageActionRequestedPeer](/API_docs/constructors/messageActionRequestedPeer.html) + +[messageActionSetChatWallPaper](/API_docs/constructors/messageActionSetChatWallPaper.html) + +[messageActionGiftCode](/API_docs/constructors/messageActionGiftCode.html) + +[messageActionGiveawayLaunch](/API_docs/constructors/messageActionGiveawayLaunch.html) + +[messageActionGiveawayResults](/API_docs/constructors/messageActionGiveawayResults.html) + +[messageActionBoostApply](/API_docs/constructors/messageActionBoostApply.html) + +[messageActionRequestedPeerSentMe](/API_docs/constructors/messageActionRequestedPeerSentMe.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/MessageEntity.md b/docs/API_docs/types/MessageEntity.md new file mode 100644 index 0000000000..f3598987a7 --- /dev/null +++ b/docs/API_docs/types/MessageEntity.md @@ -0,0 +1,61 @@ +--- +title: MessageEntity +description: constructors and methods of type MessageEntity +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: MessageEntity +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messageEntityUnknown](/API_docs/constructors/messageEntityUnknown.html) + +[messageEntityMention](/API_docs/constructors/messageEntityMention.html) + +[messageEntityHashtag](/API_docs/constructors/messageEntityHashtag.html) + +[messageEntityBotCommand](/API_docs/constructors/messageEntityBotCommand.html) + +[messageEntityUrl](/API_docs/constructors/messageEntityUrl.html) + +[messageEntityEmail](/API_docs/constructors/messageEntityEmail.html) + +[messageEntityBold](/API_docs/constructors/messageEntityBold.html) + +[messageEntityItalic](/API_docs/constructors/messageEntityItalic.html) + +[messageEntityCode](/API_docs/constructors/messageEntityCode.html) + +[messageEntityPre](/API_docs/constructors/messageEntityPre.html) + +[messageEntityTextUrl](/API_docs/constructors/messageEntityTextUrl.html) + +[messageEntityMentionName](/API_docs/constructors/messageEntityMentionName.html) + +[inputMessageEntityMentionName](/API_docs/constructors/inputMessageEntityMentionName.html) + +[messageEntityPhone](/API_docs/constructors/messageEntityPhone.html) + +[messageEntityCashtag](/API_docs/constructors/messageEntityCashtag.html) + +[messageEntityUnderline](/API_docs/constructors/messageEntityUnderline.html) + +[messageEntityStrike](/API_docs/constructors/messageEntityStrike.html) + +[messageEntityBankCard](/API_docs/constructors/messageEntityBankCard.html) + +[messageEntitySpoiler](/API_docs/constructors/messageEntitySpoiler.html) + +[messageEntityCustomEmoji](/API_docs/constructors/messageEntityCustomEmoji.html) + +[messageEntityBlockquote](/API_docs/constructors/messageEntityBlockquote.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/MessageExtendedMedia.md b/docs/API_docs/types/MessageExtendedMedia.md new file mode 100644 index 0000000000..095151d1db --- /dev/null +++ b/docs/API_docs/types/MessageExtendedMedia.md @@ -0,0 +1,23 @@ +--- +title: MessageExtendedMedia +description: constructors and methods of type MessageExtendedMedia +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: MessageExtendedMedia +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messageExtendedMediaPreview](/API_docs/constructors/messageExtendedMediaPreview.html) + +[messageExtendedMedia](/API_docs/constructors/messageExtendedMedia.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/MessageFwdHeader.md b/docs/API_docs/types/MessageFwdHeader.md new file mode 100644 index 0000000000..0c8d0c7b97 --- /dev/null +++ b/docs/API_docs/types/MessageFwdHeader.md @@ -0,0 +1,21 @@ +--- +title: MessageFwdHeader +description: constructors and methods of type MessageFwdHeader +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: MessageFwdHeader +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messageFwdHeader](/API_docs/constructors/messageFwdHeader.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/MessageMedia.md b/docs/API_docs/types/MessageMedia.md new file mode 100644 index 0000000000..aa2d22d28e --- /dev/null +++ b/docs/API_docs/types/MessageMedia.md @@ -0,0 +1,57 @@ +--- +title: MessageMedia +description: constructors and methods of type MessageMedia +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: MessageMedia +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messageMediaEmpty](/API_docs/constructors/messageMediaEmpty.html) + +[messageMediaPhoto](/API_docs/constructors/messageMediaPhoto.html) + +[messageMediaGeo](/API_docs/constructors/messageMediaGeo.html) + +[messageMediaContact](/API_docs/constructors/messageMediaContact.html) + +[messageMediaUnsupported](/API_docs/constructors/messageMediaUnsupported.html) + +[messageMediaDocument](/API_docs/constructors/messageMediaDocument.html) + +[messageMediaWebPage](/API_docs/constructors/messageMediaWebPage.html) + +[messageMediaVenue](/API_docs/constructors/messageMediaVenue.html) + +[messageMediaGame](/API_docs/constructors/messageMediaGame.html) + +[messageMediaInvoice](/API_docs/constructors/messageMediaInvoice.html) + +[messageMediaGeoLive](/API_docs/constructors/messageMediaGeoLive.html) + +[messageMediaPoll](/API_docs/constructors/messageMediaPoll.html) + +[messageMediaDice](/API_docs/constructors/messageMediaDice.html) + +[messageMediaStory](/API_docs/constructors/messageMediaStory.html) + +[messageMediaGiveaway](/API_docs/constructors/messageMediaGiveaway.html) + +[messageMediaGiveawayResults](/API_docs/constructors/messageMediaGiveawayResults.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getWebPagePreview](/API_docs/methods/messages.getWebPagePreview.html) + +[$MadelineProto->messages->uploadMedia](/API_docs/methods/messages.uploadMedia.html) + +[$MadelineProto->messages->uploadImportedMedia](/API_docs/methods/messages.uploadImportedMedia.html) + + + diff --git a/docs/API_docs/types/MessagePeerReaction.md b/docs/API_docs/types/MessagePeerReaction.md new file mode 100644 index 0000000000..cdc03bda64 --- /dev/null +++ b/docs/API_docs/types/MessagePeerReaction.md @@ -0,0 +1,21 @@ +--- +title: MessagePeerReaction +description: constructors and methods of type MessagePeerReaction +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: MessagePeerReaction +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messagePeerReaction](/API_docs/constructors/messagePeerReaction.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/MessagePeerVote.md b/docs/API_docs/types/MessagePeerVote.md new file mode 100644 index 0000000000..cbde075970 --- /dev/null +++ b/docs/API_docs/types/MessagePeerVote.md @@ -0,0 +1,25 @@ +--- +title: MessagePeerVote +description: constructors and methods of type MessagePeerVote +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: MessagePeerVote +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messagePeerVote](/API_docs/constructors/messagePeerVote.html) + +[messagePeerVoteInputOption](/API_docs/constructors/messagePeerVoteInputOption.html) + +[messagePeerVoteMultiple](/API_docs/constructors/messagePeerVoteMultiple.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/MessageRange.md b/docs/API_docs/types/MessageRange.md new file mode 100644 index 0000000000..b3fac216eb --- /dev/null +++ b/docs/API_docs/types/MessageRange.md @@ -0,0 +1,23 @@ +--- +title: MessageRange +description: constructors and methods of type MessageRange +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: MessageRange +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messageRange](/API_docs/constructors/messageRange.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getSplitRanges](/API_docs/methods/messages.getSplitRanges.html) + + + diff --git a/docs/API_docs/types/MessageReactions.md b/docs/API_docs/types/MessageReactions.md new file mode 100644 index 0000000000..b6f60beab8 --- /dev/null +++ b/docs/API_docs/types/MessageReactions.md @@ -0,0 +1,21 @@ +--- +title: MessageReactions +description: constructors and methods of type MessageReactions +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: MessageReactions +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messageReactions](/API_docs/constructors/messageReactions.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/MessageReplies.md b/docs/API_docs/types/MessageReplies.md new file mode 100644 index 0000000000..b3107c4f52 --- /dev/null +++ b/docs/API_docs/types/MessageReplies.md @@ -0,0 +1,21 @@ +--- +title: MessageReplies +description: constructors and methods of type MessageReplies +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: MessageReplies +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messageReplies](/API_docs/constructors/messageReplies.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/MessageReplyHeader.md b/docs/API_docs/types/MessageReplyHeader.md new file mode 100644 index 0000000000..2c49c01d1c --- /dev/null +++ b/docs/API_docs/types/MessageReplyHeader.md @@ -0,0 +1,23 @@ +--- +title: MessageReplyHeader +description: constructors and methods of type MessageReplyHeader +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: MessageReplyHeader +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messageReplyHeader](/API_docs/constructors/messageReplyHeader.html) + +[messageReplyStoryHeader](/API_docs/constructors/messageReplyStoryHeader.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/MessageViews.md b/docs/API_docs/types/MessageViews.md new file mode 100644 index 0000000000..8ec2ede0d0 --- /dev/null +++ b/docs/API_docs/types/MessageViews.md @@ -0,0 +1,21 @@ +--- +title: MessageViews +description: constructors and methods of type MessageViews +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: MessageViews +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messageViews](/API_docs/constructors/messageViews.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/MessagesFilter.md b/docs/API_docs/types/MessagesFilter.md new file mode 100644 index 0000000000..f80ec1ed5a --- /dev/null +++ b/docs/API_docs/types/MessagesFilter.md @@ -0,0 +1,53 @@ +--- +title: MessagesFilter +description: constructors and methods of type MessagesFilter +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: MessagesFilter +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputMessagesFilterEmpty](/API_docs/constructors/inputMessagesFilterEmpty.html) + +[inputMessagesFilterPhotos](/API_docs/constructors/inputMessagesFilterPhotos.html) + +[inputMessagesFilterVideo](/API_docs/constructors/inputMessagesFilterVideo.html) + +[inputMessagesFilterPhotoVideo](/API_docs/constructors/inputMessagesFilterPhotoVideo.html) + +[inputMessagesFilterDocument](/API_docs/constructors/inputMessagesFilterDocument.html) + +[inputMessagesFilterUrl](/API_docs/constructors/inputMessagesFilterUrl.html) + +[inputMessagesFilterGif](/API_docs/constructors/inputMessagesFilterGif.html) + +[inputMessagesFilterVoice](/API_docs/constructors/inputMessagesFilterVoice.html) + +[inputMessagesFilterMusic](/API_docs/constructors/inputMessagesFilterMusic.html) + +[inputMessagesFilterChatPhotos](/API_docs/constructors/inputMessagesFilterChatPhotos.html) + +[inputMessagesFilterPhoneCalls](/API_docs/constructors/inputMessagesFilterPhoneCalls.html) + +[inputMessagesFilterRoundVoice](/API_docs/constructors/inputMessagesFilterRoundVoice.html) + +[inputMessagesFilterRoundVideo](/API_docs/constructors/inputMessagesFilterRoundVideo.html) + +[inputMessagesFilterMyMentions](/API_docs/constructors/inputMessagesFilterMyMentions.html) + +[inputMessagesFilterGeo](/API_docs/constructors/inputMessagesFilterGeo.html) + +[inputMessagesFilterContacts](/API_docs/constructors/inputMessagesFilterContacts.html) + +[inputMessagesFilterPinned](/API_docs/constructors/inputMessagesFilterPinned.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/MissingInvitee.md b/docs/API_docs/types/MissingInvitee.md new file mode 100644 index 0000000000..0ae2e2f35d --- /dev/null +++ b/docs/API_docs/types/MissingInvitee.md @@ -0,0 +1,21 @@ +--- +title: MissingInvitee +description: constructors and methods of type MissingInvitee +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: MissingInvitee +[Back to types index](index.html) + + + +### Possible values (constructors): + +[missingInvitee](/API_docs/constructors/missingInvitee.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/MyBoost.md b/docs/API_docs/types/MyBoost.md new file mode 100644 index 0000000000..6c34252dbd --- /dev/null +++ b/docs/API_docs/types/MyBoost.md @@ -0,0 +1,21 @@ +--- +title: MyBoost +description: constructors and methods of type MyBoost +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: MyBoost +[Back to types index](index.html) + + + +### Possible values (constructors): + +[myBoost](/API_docs/constructors/myBoost.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/NearestDc.md b/docs/API_docs/types/NearestDc.md new file mode 100644 index 0000000000..24c9b48923 --- /dev/null +++ b/docs/API_docs/types/NearestDc.md @@ -0,0 +1,23 @@ +--- +title: NearestDc +description: constructors and methods of type NearestDc +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: NearestDc +[Back to types index](index.html) + + + +### Possible values (constructors): + +[nearestDc](/API_docs/constructors/nearestDc.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->help->getNearestDc](/API_docs/methods/help.getNearestDc.html) + + + diff --git a/docs/API_docs/types/NotificationSound.md b/docs/API_docs/types/NotificationSound.md new file mode 100644 index 0000000000..5ba047d6f8 --- /dev/null +++ b/docs/API_docs/types/NotificationSound.md @@ -0,0 +1,27 @@ +--- +title: NotificationSound +description: constructors and methods of type NotificationSound +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: NotificationSound +[Back to types index](index.html) + + + +### Possible values (constructors): + +[notificationSoundDefault](/API_docs/constructors/notificationSoundDefault.html) + +[notificationSoundNone](/API_docs/constructors/notificationSoundNone.html) + +[notificationSoundLocal](/API_docs/constructors/notificationSoundLocal.html) + +[notificationSoundRingtone](/API_docs/constructors/notificationSoundRingtone.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/NotifyPeer.md b/docs/API_docs/types/NotifyPeer.md new file mode 100644 index 0000000000..584d1da69f --- /dev/null +++ b/docs/API_docs/types/NotifyPeer.md @@ -0,0 +1,29 @@ +--- +title: NotifyPeer +description: constructors and methods of type NotifyPeer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: NotifyPeer +[Back to types index](index.html) + + + +### Possible values (constructors): + +[notifyPeer](/API_docs/constructors/notifyPeer.html) + +[notifyUsers](/API_docs/constructors/notifyUsers.html) + +[notifyChats](/API_docs/constructors/notifyChats.html) + +[notifyBroadcasts](/API_docs/constructors/notifyBroadcasts.html) + +[notifyForumTopic](/API_docs/constructors/notifyForumTopic.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Null.md b/docs/API_docs/types/Null.md new file mode 100644 index 0000000000..36030e677d --- /dev/null +++ b/docs/API_docs/types/Null.md @@ -0,0 +1,21 @@ +--- +title: Null +description: constructors and methods of type Null +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Null +[Back to types index](index.html) + + + +### Possible values (constructors): + +[null](/API_docs/constructors/null.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/OutboxReadDate.md b/docs/API_docs/types/OutboxReadDate.md new file mode 100644 index 0000000000..e7f74b9734 --- /dev/null +++ b/docs/API_docs/types/OutboxReadDate.md @@ -0,0 +1,23 @@ +--- +title: OutboxReadDate +description: constructors and methods of type OutboxReadDate +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: OutboxReadDate +[Back to types index](index.html) + + + +### Possible values (constructors): + +[outboxReadDate](/API_docs/constructors/outboxReadDate.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getOutboxReadDate](/API_docs/methods/messages.getOutboxReadDate.html) + + + diff --git a/docs/API_docs/types/Page.md b/docs/API_docs/types/Page.md new file mode 100644 index 0000000000..edda7f9d37 --- /dev/null +++ b/docs/API_docs/types/Page.md @@ -0,0 +1,21 @@ +--- +title: Page +description: constructors and methods of type Page +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Page +[Back to types index](index.html) + + + +### Possible values (constructors): + +[page](/API_docs/constructors/page.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PageBlock.md b/docs/API_docs/types/PageBlock.md new file mode 100644 index 0000000000..a7dfb12904 --- /dev/null +++ b/docs/API_docs/types/PageBlock.md @@ -0,0 +1,77 @@ +--- +title: PageBlock +description: constructors and methods of type PageBlock +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PageBlock +[Back to types index](index.html) + + + +### Possible values (constructors): + +[pageBlockUnsupported](/API_docs/constructors/pageBlockUnsupported.html) + +[pageBlockTitle](/API_docs/constructors/pageBlockTitle.html) + +[pageBlockSubtitle](/API_docs/constructors/pageBlockSubtitle.html) + +[pageBlockAuthorDate](/API_docs/constructors/pageBlockAuthorDate.html) + +[pageBlockHeader](/API_docs/constructors/pageBlockHeader.html) + +[pageBlockSubheader](/API_docs/constructors/pageBlockSubheader.html) + +[pageBlockParagraph](/API_docs/constructors/pageBlockParagraph.html) + +[pageBlockPreformatted](/API_docs/constructors/pageBlockPreformatted.html) + +[pageBlockFooter](/API_docs/constructors/pageBlockFooter.html) + +[pageBlockDivider](/API_docs/constructors/pageBlockDivider.html) + +[pageBlockAnchor](/API_docs/constructors/pageBlockAnchor.html) + +[pageBlockList](/API_docs/constructors/pageBlockList.html) + +[pageBlockBlockquote](/API_docs/constructors/pageBlockBlockquote.html) + +[pageBlockPullquote](/API_docs/constructors/pageBlockPullquote.html) + +[pageBlockPhoto](/API_docs/constructors/pageBlockPhoto.html) + +[pageBlockVideo](/API_docs/constructors/pageBlockVideo.html) + +[pageBlockCover](/API_docs/constructors/pageBlockCover.html) + +[pageBlockEmbed](/API_docs/constructors/pageBlockEmbed.html) + +[pageBlockEmbedPost](/API_docs/constructors/pageBlockEmbedPost.html) + +[pageBlockCollage](/API_docs/constructors/pageBlockCollage.html) + +[pageBlockSlideshow](/API_docs/constructors/pageBlockSlideshow.html) + +[pageBlockChannel](/API_docs/constructors/pageBlockChannel.html) + +[pageBlockAudio](/API_docs/constructors/pageBlockAudio.html) + +[pageBlockKicker](/API_docs/constructors/pageBlockKicker.html) + +[pageBlockTable](/API_docs/constructors/pageBlockTable.html) + +[pageBlockOrderedList](/API_docs/constructors/pageBlockOrderedList.html) + +[pageBlockDetails](/API_docs/constructors/pageBlockDetails.html) + +[pageBlockRelatedArticles](/API_docs/constructors/pageBlockRelatedArticles.html) + +[pageBlockMap](/API_docs/constructors/pageBlockMap.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PageCaption.md b/docs/API_docs/types/PageCaption.md new file mode 100644 index 0000000000..d3092e6239 --- /dev/null +++ b/docs/API_docs/types/PageCaption.md @@ -0,0 +1,21 @@ +--- +title: PageCaption +description: constructors and methods of type PageCaption +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PageCaption +[Back to types index](index.html) + + + +### Possible values (constructors): + +[pageCaption](/API_docs/constructors/pageCaption.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PageListItem.md b/docs/API_docs/types/PageListItem.md new file mode 100644 index 0000000000..f7570903fa --- /dev/null +++ b/docs/API_docs/types/PageListItem.md @@ -0,0 +1,23 @@ +--- +title: PageListItem +description: constructors and methods of type PageListItem +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PageListItem +[Back to types index](index.html) + + + +### Possible values (constructors): + +[pageListItemText](/API_docs/constructors/pageListItemText.html) + +[pageListItemBlocks](/API_docs/constructors/pageListItemBlocks.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PageListOrderedItem.md b/docs/API_docs/types/PageListOrderedItem.md new file mode 100644 index 0000000000..a8c7e01a1d --- /dev/null +++ b/docs/API_docs/types/PageListOrderedItem.md @@ -0,0 +1,23 @@ +--- +title: PageListOrderedItem +description: constructors and methods of type PageListOrderedItem +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PageListOrderedItem +[Back to types index](index.html) + + + +### Possible values (constructors): + +[pageListOrderedItemText](/API_docs/constructors/pageListOrderedItemText.html) + +[pageListOrderedItemBlocks](/API_docs/constructors/pageListOrderedItemBlocks.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PageRelatedArticle.md b/docs/API_docs/types/PageRelatedArticle.md new file mode 100644 index 0000000000..f5d470a791 --- /dev/null +++ b/docs/API_docs/types/PageRelatedArticle.md @@ -0,0 +1,21 @@ +--- +title: PageRelatedArticle +description: constructors and methods of type PageRelatedArticle +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PageRelatedArticle +[Back to types index](index.html) + + + +### Possible values (constructors): + +[pageRelatedArticle](/API_docs/constructors/pageRelatedArticle.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PageTableCell.md b/docs/API_docs/types/PageTableCell.md new file mode 100644 index 0000000000..b6b9bc64dc --- /dev/null +++ b/docs/API_docs/types/PageTableCell.md @@ -0,0 +1,21 @@ +--- +title: PageTableCell +description: constructors and methods of type PageTableCell +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PageTableCell +[Back to types index](index.html) + + + +### Possible values (constructors): + +[pageTableCell](/API_docs/constructors/pageTableCell.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PageTableRow.md b/docs/API_docs/types/PageTableRow.md new file mode 100644 index 0000000000..a0c31fc6d7 --- /dev/null +++ b/docs/API_docs/types/PageTableRow.md @@ -0,0 +1,21 @@ +--- +title: PageTableRow +description: constructors and methods of type PageTableRow +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PageTableRow +[Back to types index](index.html) + + + +### Possible values (constructors): + +[pageTableRow](/API_docs/constructors/pageTableRow.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PasswordKdfAlgo.md b/docs/API_docs/types/PasswordKdfAlgo.md new file mode 100644 index 0000000000..6642551ac3 --- /dev/null +++ b/docs/API_docs/types/PasswordKdfAlgo.md @@ -0,0 +1,23 @@ +--- +title: PasswordKdfAlgo +description: constructors and methods of type PasswordKdfAlgo +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PasswordKdfAlgo +[Back to types index](index.html) + + + +### Possible values (constructors): + +[passwordKdfAlgoUnknown](/API_docs/constructors/passwordKdfAlgoUnknown.html) + +[passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow](/API_docs/constructors/passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PaymentCharge.md b/docs/API_docs/types/PaymentCharge.md new file mode 100644 index 0000000000..5e566e22b7 --- /dev/null +++ b/docs/API_docs/types/PaymentCharge.md @@ -0,0 +1,21 @@ +--- +title: PaymentCharge +description: constructors and methods of type PaymentCharge +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PaymentCharge +[Back to types index](index.html) + + + +### Possible values (constructors): + +[paymentCharge](/API_docs/constructors/paymentCharge.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PaymentFormMethod.md b/docs/API_docs/types/PaymentFormMethod.md new file mode 100644 index 0000000000..c9b93455b9 --- /dev/null +++ b/docs/API_docs/types/PaymentFormMethod.md @@ -0,0 +1,21 @@ +--- +title: PaymentFormMethod +description: constructors and methods of type PaymentFormMethod +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PaymentFormMethod +[Back to types index](index.html) + + + +### Possible values (constructors): + +[paymentFormMethod](/API_docs/constructors/paymentFormMethod.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PaymentRequestedInfo.md b/docs/API_docs/types/PaymentRequestedInfo.md new file mode 100644 index 0000000000..5ee9add3cc --- /dev/null +++ b/docs/API_docs/types/PaymentRequestedInfo.md @@ -0,0 +1,21 @@ +--- +title: PaymentRequestedInfo +description: constructors and methods of type PaymentRequestedInfo +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PaymentRequestedInfo +[Back to types index](index.html) + + + +### Possible values (constructors): + +[paymentRequestedInfo](/API_docs/constructors/paymentRequestedInfo.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PaymentSavedCredentials.md b/docs/API_docs/types/PaymentSavedCredentials.md new file mode 100644 index 0000000000..355e9cfdd8 --- /dev/null +++ b/docs/API_docs/types/PaymentSavedCredentials.md @@ -0,0 +1,21 @@ +--- +title: PaymentSavedCredentials +description: constructors and methods of type PaymentSavedCredentials +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PaymentSavedCredentials +[Back to types index](index.html) + + + +### Possible values (constructors): + +[paymentSavedCredentialsCard](/API_docs/constructors/paymentSavedCredentialsCard.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Peer.md b/docs/API_docs/types/Peer.md new file mode 100644 index 0000000000..cc2b97ed93 --- /dev/null +++ b/docs/API_docs/types/Peer.md @@ -0,0 +1,62 @@ +--- +title: Peer +description: constructors and methods of type Peer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Peer +[Back to types index](index.html) + +You can directly provide the [Update](Update.html) or [Message](Message.html) object here, MadelineProto will automatically extract the destination chat id. + +The following syntaxes can also be used: + +```php +$Peer = '@username'; // Username + +$Peer = $update; // Update objects received in the event handler + +$Peer = 'me'; // The currently logged-in user + +$Peer = 44700; // bot API id (users) +$Peer = -492772765; // bot API id (chats) +$Peer = -10038575794; // bot API id (channels) + +$Peer = 'https://t.me/danogentili'; // t.me URLs +$Peer = 'https://t.me/joinchat/asfln1-21fa_'; // t.me invite links + +``` + +You can also provide one of the following objects, instead, MadelineProto will handle conversion automatically: + +- [Chat](Chat.html) +- [User](User.html) +- [InputPeer](InputPeer.html) +- [InputDialogPeer](InputDialogPeer.html) +- [InputNotifyPeer](InputNotifyPeer.html) +- [InputUser](InputUser.html) +- [InputChannel](InputChannel.html) +- [Peer](Peer.html) +- [DialogPeer](DialogPeer.html) +- [NotifyPeer](NotifyPeer.html) +- [Chat](Chat.html) + + + + +### Possible values (constructors): + +[peerUser](/API_docs/constructors/peerUser.html) + +[peerChat](/API_docs/constructors/peerChat.html) + +[peerChannel](/API_docs/constructors/peerChannel.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->chatlists->getLeaveChatlistSuggestions](/API_docs/methods/chatlists.getLeaveChatlistSuggestions.html) + + + diff --git a/docs/API_docs/types/PeerBlocked.md b/docs/API_docs/types/PeerBlocked.md new file mode 100644 index 0000000000..ac2b7948a3 --- /dev/null +++ b/docs/API_docs/types/PeerBlocked.md @@ -0,0 +1,21 @@ +--- +title: PeerBlocked +description: constructors and methods of type PeerBlocked +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PeerBlocked +[Back to types index](index.html) + + + +### Possible values (constructors): + +[peerBlocked](/API_docs/constructors/peerBlocked.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PeerColor.md b/docs/API_docs/types/PeerColor.md new file mode 100644 index 0000000000..aaec69f6f2 --- /dev/null +++ b/docs/API_docs/types/PeerColor.md @@ -0,0 +1,21 @@ +--- +title: PeerColor +description: constructors and methods of type PeerColor +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PeerColor +[Back to types index](index.html) + + + +### Possible values (constructors): + +[peerColor](/API_docs/constructors/peerColor.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PeerLocated.md b/docs/API_docs/types/PeerLocated.md new file mode 100644 index 0000000000..8aaf69aa2b --- /dev/null +++ b/docs/API_docs/types/PeerLocated.md @@ -0,0 +1,23 @@ +--- +title: PeerLocated +description: constructors and methods of type PeerLocated +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PeerLocated +[Back to types index](index.html) + + + +### Possible values (constructors): + +[peerLocated](/API_docs/constructors/peerLocated.html) + +[peerSelfLocated](/API_docs/constructors/peerSelfLocated.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PeerNotifySettings.md b/docs/API_docs/types/PeerNotifySettings.md new file mode 100644 index 0000000000..a7fcf4a932 --- /dev/null +++ b/docs/API_docs/types/PeerNotifySettings.md @@ -0,0 +1,23 @@ +--- +title: PeerNotifySettings +description: constructors and methods of type PeerNotifySettings +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PeerNotifySettings +[Back to types index](index.html) + + + +### Possible values (constructors): + +[peerNotifySettings](/API_docs/constructors/peerNotifySettings.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getNotifySettings](/API_docs/methods/account.getNotifySettings.html) + + + diff --git a/docs/API_docs/types/PeerSettings.md b/docs/API_docs/types/PeerSettings.md new file mode 100644 index 0000000000..6d4bc645b7 --- /dev/null +++ b/docs/API_docs/types/PeerSettings.md @@ -0,0 +1,21 @@ +--- +title: PeerSettings +description: constructors and methods of type PeerSettings +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PeerSettings +[Back to types index](index.html) + + + +### Possible values (constructors): + +[peerSettings](/API_docs/constructors/peerSettings.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PeerStories.md b/docs/API_docs/types/PeerStories.md new file mode 100644 index 0000000000..2e84b6d0f5 --- /dev/null +++ b/docs/API_docs/types/PeerStories.md @@ -0,0 +1,21 @@ +--- +title: PeerStories +description: constructors and methods of type PeerStories +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PeerStories +[Back to types index](index.html) + + + +### Possible values (constructors): + +[peerStories](/API_docs/constructors/peerStories.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PhoneCall.md b/docs/API_docs/types/PhoneCall.md new file mode 100644 index 0000000000..019942b6f9 --- /dev/null +++ b/docs/API_docs/types/PhoneCall.md @@ -0,0 +1,31 @@ +--- +title: PhoneCall +description: constructors and methods of type PhoneCall +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PhoneCall +[Back to types index](index.html) + +See [here »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/VoIP.html) for the full documentation! + +### Possible values (constructors): + +[phoneCallEmpty](/API_docs/constructors/phoneCallEmpty.html) + +[phoneCallWaiting](/API_docs/constructors/phoneCallWaiting.html) + +[phoneCallRequested](/API_docs/constructors/phoneCallRequested.html) + +[phoneCallAccepted](/API_docs/constructors/phoneCallAccepted.html) + +[phoneCall](/API_docs/constructors/phoneCall.html) + +[phoneCallDiscarded](/API_docs/constructors/phoneCallDiscarded.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PhoneCallDiscardReason.md b/docs/API_docs/types/PhoneCallDiscardReason.md new file mode 100644 index 0000000000..af0dc47626 --- /dev/null +++ b/docs/API_docs/types/PhoneCallDiscardReason.md @@ -0,0 +1,27 @@ +--- +title: PhoneCallDiscardReason +description: constructors and methods of type PhoneCallDiscardReason +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PhoneCallDiscardReason +[Back to types index](index.html) + + + +### Possible values (constructors): + +[phoneCallDiscardReasonMissed](/API_docs/constructors/phoneCallDiscardReasonMissed.html) + +[phoneCallDiscardReasonDisconnect](/API_docs/constructors/phoneCallDiscardReasonDisconnect.html) + +[phoneCallDiscardReasonHangup](/API_docs/constructors/phoneCallDiscardReasonHangup.html) + +[phoneCallDiscardReasonBusy](/API_docs/constructors/phoneCallDiscardReasonBusy.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PhoneCallProtocol.md b/docs/API_docs/types/PhoneCallProtocol.md new file mode 100644 index 0000000000..24fb705a4d --- /dev/null +++ b/docs/API_docs/types/PhoneCallProtocol.md @@ -0,0 +1,21 @@ +--- +title: PhoneCallProtocol +description: constructors and methods of type PhoneCallProtocol +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PhoneCallProtocol +[Back to types index](index.html) + + + +### Possible values (constructors): + +[phoneCallProtocol](/API_docs/constructors/phoneCallProtocol.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PhoneConnection.md b/docs/API_docs/types/PhoneConnection.md new file mode 100644 index 0000000000..bb6d0dd7d5 --- /dev/null +++ b/docs/API_docs/types/PhoneConnection.md @@ -0,0 +1,23 @@ +--- +title: PhoneConnection +description: constructors and methods of type PhoneConnection +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PhoneConnection +[Back to types index](index.html) + + + +### Possible values (constructors): + +[phoneConnection](/API_docs/constructors/phoneConnection.html) + +[phoneConnectionWebrtc](/API_docs/constructors/phoneConnectionWebrtc.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Photo.md b/docs/API_docs/types/Photo.md new file mode 100644 index 0000000000..871d1dc6c9 --- /dev/null +++ b/docs/API_docs/types/Photo.md @@ -0,0 +1,23 @@ +--- +title: Photo +description: constructors and methods of type Photo +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Photo +[Back to types index](index.html) + + + +### Possible values (constructors): + +[photoEmpty](/API_docs/constructors/photoEmpty.html) + +[photo](/API_docs/constructors/photo.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PhotoSize.md b/docs/API_docs/types/PhotoSize.md new file mode 100644 index 0000000000..93a7509a78 --- /dev/null +++ b/docs/API_docs/types/PhotoSize.md @@ -0,0 +1,35 @@ +--- +title: PhotoSize +description: constructors and methods of type PhotoSize +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PhotoSize +[Back to types index](index.html) + + + +### Possible values (constructors): + +[photoSizeEmpty](/API_docs/constructors/photoSizeEmpty.html) + +[photoSize](/API_docs/constructors/photoSize.html) + +[photoCachedSize](/API_docs/constructors/photoCachedSize.html) + +[photoStrippedSize](/API_docs/constructors/photoStrippedSize.html) + +[photoSizeProgressive](/API_docs/constructors/photoSizeProgressive.html) + +[photoPathSize](/API_docs/constructors/photoPathSize.html) + +[photoSize\_23](/API_docs/constructors/photoSize_23.html) + +[photoCachedSize\_23](/API_docs/constructors/photoCachedSize_23.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Poll.md b/docs/API_docs/types/Poll.md new file mode 100644 index 0000000000..affb2c65d1 --- /dev/null +++ b/docs/API_docs/types/Poll.md @@ -0,0 +1,21 @@ +--- +title: Poll +description: constructors and methods of type Poll +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Poll +[Back to types index](index.html) + + + +### Possible values (constructors): + +[poll](/API_docs/constructors/poll.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PollAnswer.md b/docs/API_docs/types/PollAnswer.md new file mode 100644 index 0000000000..4c4cc57fcf --- /dev/null +++ b/docs/API_docs/types/PollAnswer.md @@ -0,0 +1,21 @@ +--- +title: PollAnswer +description: constructors and methods of type PollAnswer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PollAnswer +[Back to types index](index.html) + + + +### Possible values (constructors): + +[pollAnswer](/API_docs/constructors/pollAnswer.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PollAnswerVoters.md b/docs/API_docs/types/PollAnswerVoters.md new file mode 100644 index 0000000000..a2f79bc16b --- /dev/null +++ b/docs/API_docs/types/PollAnswerVoters.md @@ -0,0 +1,21 @@ +--- +title: PollAnswerVoters +description: constructors and methods of type PollAnswerVoters +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PollAnswerVoters +[Back to types index](index.html) + + + +### Possible values (constructors): + +[pollAnswerVoters](/API_docs/constructors/pollAnswerVoters.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PollResults.md b/docs/API_docs/types/PollResults.md new file mode 100644 index 0000000000..5314170a6d --- /dev/null +++ b/docs/API_docs/types/PollResults.md @@ -0,0 +1,21 @@ +--- +title: PollResults +description: constructors and methods of type PollResults +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PollResults +[Back to types index](index.html) + + + +### Possible values (constructors): + +[pollResults](/API_docs/constructors/pollResults.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PopularContact.md b/docs/API_docs/types/PopularContact.md new file mode 100644 index 0000000000..ded9a8812c --- /dev/null +++ b/docs/API_docs/types/PopularContact.md @@ -0,0 +1,21 @@ +--- +title: PopularContact +description: constructors and methods of type PopularContact +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PopularContact +[Back to types index](index.html) + + + +### Possible values (constructors): + +[popularContact](/API_docs/constructors/popularContact.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PostAddress.md b/docs/API_docs/types/PostAddress.md new file mode 100644 index 0000000000..f97111fd8a --- /dev/null +++ b/docs/API_docs/types/PostAddress.md @@ -0,0 +1,21 @@ +--- +title: PostAddress +description: constructors and methods of type PostAddress +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PostAddress +[Back to types index](index.html) + + + +### Possible values (constructors): + +[postAddress](/API_docs/constructors/postAddress.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PostInteractionCounters.md b/docs/API_docs/types/PostInteractionCounters.md new file mode 100644 index 0000000000..26371336d0 --- /dev/null +++ b/docs/API_docs/types/PostInteractionCounters.md @@ -0,0 +1,23 @@ +--- +title: PostInteractionCounters +description: constructors and methods of type PostInteractionCounters +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PostInteractionCounters +[Back to types index](index.html) + + + +### Possible values (constructors): + +[postInteractionCountersMessage](/API_docs/constructors/postInteractionCountersMessage.html) + +[postInteractionCountersStory](/API_docs/constructors/postInteractionCountersStory.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PremiumGiftCodeOption.md b/docs/API_docs/types/PremiumGiftCodeOption.md new file mode 100644 index 0000000000..796d3ecd32 --- /dev/null +++ b/docs/API_docs/types/PremiumGiftCodeOption.md @@ -0,0 +1,23 @@ +--- +title: PremiumGiftCodeOption +description: constructors and methods of type PremiumGiftCodeOption +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PremiumGiftCodeOption +[Back to types index](index.html) + + + +### Possible values (constructors): + +[premiumGiftCodeOption](/API_docs/constructors/premiumGiftCodeOption.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->payments->getPremiumGiftCodeOptions](/API_docs/methods/payments.getPremiumGiftCodeOptions.html) + + + diff --git a/docs/API_docs/types/PremiumGiftOption.md b/docs/API_docs/types/PremiumGiftOption.md new file mode 100644 index 0000000000..6408bc827e --- /dev/null +++ b/docs/API_docs/types/PremiumGiftOption.md @@ -0,0 +1,21 @@ +--- +title: PremiumGiftOption +description: constructors and methods of type PremiumGiftOption +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PremiumGiftOption +[Back to types index](index.html) + + + +### Possible values (constructors): + +[premiumGiftOption](/API_docs/constructors/premiumGiftOption.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PremiumSubscriptionOption.md b/docs/API_docs/types/PremiumSubscriptionOption.md new file mode 100644 index 0000000000..8acb06ff46 --- /dev/null +++ b/docs/API_docs/types/PremiumSubscriptionOption.md @@ -0,0 +1,21 @@ +--- +title: PremiumSubscriptionOption +description: constructors and methods of type PremiumSubscriptionOption +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PremiumSubscriptionOption +[Back to types index](index.html) + + + +### Possible values (constructors): + +[premiumSubscriptionOption](/API_docs/constructors/premiumSubscriptionOption.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PrepaidGiveaway.md b/docs/API_docs/types/PrepaidGiveaway.md new file mode 100644 index 0000000000..2fd641ae7d --- /dev/null +++ b/docs/API_docs/types/PrepaidGiveaway.md @@ -0,0 +1,21 @@ +--- +title: PrepaidGiveaway +description: constructors and methods of type PrepaidGiveaway +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PrepaidGiveaway +[Back to types index](index.html) + + + +### Possible values (constructors): + +[prepaidGiveaway](/API_docs/constructors/prepaidGiveaway.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PrivacyKey.md b/docs/API_docs/types/PrivacyKey.md new file mode 100644 index 0000000000..9f0a2167be --- /dev/null +++ b/docs/API_docs/types/PrivacyKey.md @@ -0,0 +1,41 @@ +--- +title: PrivacyKey +description: constructors and methods of type PrivacyKey +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PrivacyKey +[Back to types index](index.html) + + + +### Possible values (constructors): + +[privacyKeyStatusTimestamp](/API_docs/constructors/privacyKeyStatusTimestamp.html) + +[privacyKeyChatInvite](/API_docs/constructors/privacyKeyChatInvite.html) + +[privacyKeyPhoneCall](/API_docs/constructors/privacyKeyPhoneCall.html) + +[privacyKeyPhoneP2P](/API_docs/constructors/privacyKeyPhoneP2P.html) + +[privacyKeyForwards](/API_docs/constructors/privacyKeyForwards.html) + +[privacyKeyProfilePhoto](/API_docs/constructors/privacyKeyProfilePhoto.html) + +[privacyKeyPhoneNumber](/API_docs/constructors/privacyKeyPhoneNumber.html) + +[privacyKeyAddedByPhone](/API_docs/constructors/privacyKeyAddedByPhone.html) + +[privacyKeyVoiceMessages](/API_docs/constructors/privacyKeyVoiceMessages.html) + +[privacyKeyAbout](/API_docs/constructors/privacyKeyAbout.html) + +[privacyKeyBirthday](/API_docs/constructors/privacyKeyBirthday.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PrivacyRule.md b/docs/API_docs/types/PrivacyRule.md new file mode 100644 index 0000000000..968e66a551 --- /dev/null +++ b/docs/API_docs/types/PrivacyRule.md @@ -0,0 +1,39 @@ +--- +title: PrivacyRule +description: constructors and methods of type PrivacyRule +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PrivacyRule +[Back to types index](index.html) + + + +### Possible values (constructors): + +[privacyValueAllowContacts](/API_docs/constructors/privacyValueAllowContacts.html) + +[privacyValueAllowAll](/API_docs/constructors/privacyValueAllowAll.html) + +[privacyValueAllowUsers](/API_docs/constructors/privacyValueAllowUsers.html) + +[privacyValueDisallowContacts](/API_docs/constructors/privacyValueDisallowContacts.html) + +[privacyValueDisallowAll](/API_docs/constructors/privacyValueDisallowAll.html) + +[privacyValueDisallowUsers](/API_docs/constructors/privacyValueDisallowUsers.html) + +[privacyValueAllowChatParticipants](/API_docs/constructors/privacyValueAllowChatParticipants.html) + +[privacyValueDisallowChatParticipants](/API_docs/constructors/privacyValueDisallowChatParticipants.html) + +[privacyValueAllowCloseFriends](/API_docs/constructors/privacyValueAllowCloseFriends.html) + +[privacyValueAllowPremium](/API_docs/constructors/privacyValueAllowPremium.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/PublicForward.md b/docs/API_docs/types/PublicForward.md new file mode 100644 index 0000000000..17aeb75941 --- /dev/null +++ b/docs/API_docs/types/PublicForward.md @@ -0,0 +1,23 @@ +--- +title: PublicForward +description: constructors and methods of type PublicForward +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: PublicForward +[Back to types index](index.html) + + + +### Possible values (constructors): + +[publicForwardMessage](/API_docs/constructors/publicForwardMessage.html) + +[publicForwardStory](/API_docs/constructors/publicForwardStory.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/QuickReply.md b/docs/API_docs/types/QuickReply.md new file mode 100644 index 0000000000..ccb6a5d394 --- /dev/null +++ b/docs/API_docs/types/QuickReply.md @@ -0,0 +1,21 @@ +--- +title: QuickReply +description: constructors and methods of type QuickReply +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: QuickReply +[Back to types index](index.html) + + + +### Possible values (constructors): + +[quickReply](/API_docs/constructors/quickReply.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Reaction.md b/docs/API_docs/types/Reaction.md new file mode 100644 index 0000000000..0bfa61cabf --- /dev/null +++ b/docs/API_docs/types/Reaction.md @@ -0,0 +1,25 @@ +--- +title: Reaction +description: constructors and methods of type Reaction +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Reaction +[Back to types index](index.html) + + + +### Possible values (constructors): + +[reactionEmpty](/API_docs/constructors/reactionEmpty.html) + +[reactionEmoji](/API_docs/constructors/reactionEmoji.html) + +[reactionCustomEmoji](/API_docs/constructors/reactionCustomEmoji.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ReactionCount.md b/docs/API_docs/types/ReactionCount.md new file mode 100644 index 0000000000..c450bd5f63 --- /dev/null +++ b/docs/API_docs/types/ReactionCount.md @@ -0,0 +1,21 @@ +--- +title: ReactionCount +description: constructors and methods of type ReactionCount +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ReactionCount +[Back to types index](index.html) + + + +### Possible values (constructors): + +[reactionCount](/API_docs/constructors/reactionCount.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ReactionNotificationsFrom.md b/docs/API_docs/types/ReactionNotificationsFrom.md new file mode 100644 index 0000000000..0c3b01de92 --- /dev/null +++ b/docs/API_docs/types/ReactionNotificationsFrom.md @@ -0,0 +1,23 @@ +--- +title: ReactionNotificationsFrom +description: constructors and methods of type ReactionNotificationsFrom +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ReactionNotificationsFrom +[Back to types index](index.html) + + + +### Possible values (constructors): + +[reactionNotificationsFromContacts](/API_docs/constructors/reactionNotificationsFromContacts.html) + +[reactionNotificationsFromAll](/API_docs/constructors/reactionNotificationsFromAll.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ReactionsNotifySettings.md b/docs/API_docs/types/ReactionsNotifySettings.md new file mode 100644 index 0000000000..dd805f0357 --- /dev/null +++ b/docs/API_docs/types/ReactionsNotifySettings.md @@ -0,0 +1,25 @@ +--- +title: ReactionsNotifySettings +description: constructors and methods of type ReactionsNotifySettings +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ReactionsNotifySettings +[Back to types index](index.html) + + + +### Possible values (constructors): + +[reactionsNotifySettings](/API_docs/constructors/reactionsNotifySettings.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getReactionsNotifySettings](/API_docs/methods/account.getReactionsNotifySettings.html) + +[$MadelineProto->account->setReactionsNotifySettings](/API_docs/methods/account.setReactionsNotifySettings.html) + + + diff --git a/docs/API_docs/types/ReadParticipantDate.md b/docs/API_docs/types/ReadParticipantDate.md new file mode 100644 index 0000000000..15485e9d7a --- /dev/null +++ b/docs/API_docs/types/ReadParticipantDate.md @@ -0,0 +1,23 @@ +--- +title: ReadParticipantDate +description: constructors and methods of type ReadParticipantDate +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ReadParticipantDate +[Back to types index](index.html) + + + +### Possible values (constructors): + +[readParticipantDate](/API_docs/constructors/readParticipantDate.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getMessageReadParticipants](/API_docs/methods/messages.getMessageReadParticipants.html) + + + diff --git a/docs/API_docs/types/ReceivedNotifyMessage.md b/docs/API_docs/types/ReceivedNotifyMessage.md new file mode 100644 index 0000000000..ee4878d46c --- /dev/null +++ b/docs/API_docs/types/ReceivedNotifyMessage.md @@ -0,0 +1,23 @@ +--- +title: ReceivedNotifyMessage +description: constructors and methods of type ReceivedNotifyMessage +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ReceivedNotifyMessage +[Back to types index](index.html) + + + +### Possible values (constructors): + +[receivedNotifyMessage](/API_docs/constructors/receivedNotifyMessage.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->receivedMessages](/API_docs/methods/messages.receivedMessages.html) + + + diff --git a/docs/API_docs/types/RecentMeUrl.md b/docs/API_docs/types/RecentMeUrl.md new file mode 100644 index 0000000000..354e5beab3 --- /dev/null +++ b/docs/API_docs/types/RecentMeUrl.md @@ -0,0 +1,29 @@ +--- +title: RecentMeUrl +description: constructors and methods of type RecentMeUrl +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: RecentMeUrl +[Back to types index](index.html) + + + +### Possible values (constructors): + +[recentMeUrlUnknown](/API_docs/constructors/recentMeUrlUnknown.html) + +[recentMeUrlUser](/API_docs/constructors/recentMeUrlUser.html) + +[recentMeUrlChat](/API_docs/constructors/recentMeUrlChat.html) + +[recentMeUrlChatInvite](/API_docs/constructors/recentMeUrlChatInvite.html) + +[recentMeUrlStickerSet](/API_docs/constructors/recentMeUrlStickerSet.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ReplyMarkup.md b/docs/API_docs/types/ReplyMarkup.md new file mode 100644 index 0000000000..43d55a6079 --- /dev/null +++ b/docs/API_docs/types/ReplyMarkup.md @@ -0,0 +1,33 @@ +--- +title: ReplyMarkup +description: constructors and methods of type ReplyMarkup +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ReplyMarkup +[Back to types index](index.html) + +For simplicity, you can also provide a bot API markup object, one of: +- [bot API InlineKeyboardMarkup](https://core.telegram.org/bots/api#inlinekeyboardmarkup) +- [bot API ReplyKeyboardMarkup](https://core.telegram.org/bots/api#replykeyboardmarkup) +- [bot API ReplyKeyboardRemove](https://core.telegram.org/bots/api#replykeyboardremove) +- [bot API ForceReply](https://core.telegram.org/bots/api#forcereply) + + + +### Possible values (constructors): + +[replyKeyboardHide](/API_docs/constructors/replyKeyboardHide.html) + +[replyKeyboardForceReply](/API_docs/constructors/replyKeyboardForceReply.html) + +[replyKeyboardMarkup](/API_docs/constructors/replyKeyboardMarkup.html) + +[replyInlineMarkup](/API_docs/constructors/replyInlineMarkup.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ReportReason.md b/docs/API_docs/types/ReportReason.md new file mode 100644 index 0000000000..39a0b51a45 --- /dev/null +++ b/docs/API_docs/types/ReportReason.md @@ -0,0 +1,39 @@ +--- +title: ReportReason +description: constructors and methods of type ReportReason +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ReportReason +[Back to types index](index.html) + + + +### Possible values (constructors): + +[inputReportReasonSpam](/API_docs/constructors/inputReportReasonSpam.html) + +[inputReportReasonViolence](/API_docs/constructors/inputReportReasonViolence.html) + +[inputReportReasonPornography](/API_docs/constructors/inputReportReasonPornography.html) + +[inputReportReasonChildAbuse](/API_docs/constructors/inputReportReasonChildAbuse.html) + +[inputReportReasonOther](/API_docs/constructors/inputReportReasonOther.html) + +[inputReportReasonCopyright](/API_docs/constructors/inputReportReasonCopyright.html) + +[inputReportReasonGeoIrrelevant](/API_docs/constructors/inputReportReasonGeoIrrelevant.html) + +[inputReportReasonFake](/API_docs/constructors/inputReportReasonFake.html) + +[inputReportReasonIllegalDrugs](/API_docs/constructors/inputReportReasonIllegalDrugs.html) + +[inputReportReasonPersonalDetails](/API_docs/constructors/inputReportReasonPersonalDetails.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/RequestPeerType.md b/docs/API_docs/types/RequestPeerType.md new file mode 100644 index 0000000000..6dcd2a3b7f --- /dev/null +++ b/docs/API_docs/types/RequestPeerType.md @@ -0,0 +1,25 @@ +--- +title: RequestPeerType +description: constructors and methods of type RequestPeerType +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: RequestPeerType +[Back to types index](index.html) + + + +### Possible values (constructors): + +[requestPeerTypeUser](/API_docs/constructors/requestPeerTypeUser.html) + +[requestPeerTypeChat](/API_docs/constructors/requestPeerTypeChat.html) + +[requestPeerTypeBroadcast](/API_docs/constructors/requestPeerTypeBroadcast.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/RequestedPeer.md b/docs/API_docs/types/RequestedPeer.md new file mode 100644 index 0000000000..f8e749ee19 --- /dev/null +++ b/docs/API_docs/types/RequestedPeer.md @@ -0,0 +1,25 @@ +--- +title: RequestedPeer +description: constructors and methods of type RequestedPeer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: RequestedPeer +[Back to types index](index.html) + + + +### Possible values (constructors): + +[requestedPeerUser](/API_docs/constructors/requestedPeerUser.html) + +[requestedPeerChat](/API_docs/constructors/requestedPeerChat.html) + +[requestedPeerChannel](/API_docs/constructors/requestedPeerChannel.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/RestrictionReason.md b/docs/API_docs/types/RestrictionReason.md new file mode 100644 index 0000000000..3716f86da7 --- /dev/null +++ b/docs/API_docs/types/RestrictionReason.md @@ -0,0 +1,21 @@ +--- +title: RestrictionReason +description: constructors and methods of type RestrictionReason +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: RestrictionReason +[Back to types index](index.html) + + + +### Possible values (constructors): + +[restrictionReason](/API_docs/constructors/restrictionReason.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/RichText.md b/docs/API_docs/types/RichText.md new file mode 100644 index 0000000000..b62a2d975f --- /dev/null +++ b/docs/API_docs/types/RichText.md @@ -0,0 +1,51 @@ +--- +title: RichText +description: constructors and methods of type RichText +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: RichText +[Back to types index](index.html) + + + +### Possible values (constructors): + +[textEmpty](/API_docs/constructors/textEmpty.html) + +[textPlain](/API_docs/constructors/textPlain.html) + +[textBold](/API_docs/constructors/textBold.html) + +[textItalic](/API_docs/constructors/textItalic.html) + +[textUnderline](/API_docs/constructors/textUnderline.html) + +[textStrike](/API_docs/constructors/textStrike.html) + +[textFixed](/API_docs/constructors/textFixed.html) + +[textUrl](/API_docs/constructors/textUrl.html) + +[textEmail](/API_docs/constructors/textEmail.html) + +[textConcat](/API_docs/constructors/textConcat.html) + +[textSubscript](/API_docs/constructors/textSubscript.html) + +[textSuperscript](/API_docs/constructors/textSuperscript.html) + +[textMarked](/API_docs/constructors/textMarked.html) + +[textPhone](/API_docs/constructors/textPhone.html) + +[textImage](/API_docs/constructors/textImage.html) + +[textAnchor](/API_docs/constructors/textAnchor.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/SavedContact.md b/docs/API_docs/types/SavedContact.md new file mode 100644 index 0000000000..7a5c32ae8b --- /dev/null +++ b/docs/API_docs/types/SavedContact.md @@ -0,0 +1,23 @@ +--- +title: SavedContact +description: constructors and methods of type SavedContact +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SavedContact +[Back to types index](index.html) + + + +### Possible values (constructors): + +[savedPhoneContact](/API_docs/constructors/savedPhoneContact.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->contacts->getSaved](/API_docs/methods/contacts.getSaved.html) + + + diff --git a/docs/API_docs/types/SavedDialog.md b/docs/API_docs/types/SavedDialog.md new file mode 100644 index 0000000000..927a7ae6fa --- /dev/null +++ b/docs/API_docs/types/SavedDialog.md @@ -0,0 +1,21 @@ +--- +title: SavedDialog +description: constructors and methods of type SavedDialog +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SavedDialog +[Back to types index](index.html) + + + +### Possible values (constructors): + +[savedDialog](/API_docs/constructors/savedDialog.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/SavedReactionTag.md b/docs/API_docs/types/SavedReactionTag.md new file mode 100644 index 0000000000..2971f87100 --- /dev/null +++ b/docs/API_docs/types/SavedReactionTag.md @@ -0,0 +1,21 @@ +--- +title: SavedReactionTag +description: constructors and methods of type SavedReactionTag +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SavedReactionTag +[Back to types index](index.html) + + + +### Possible values (constructors): + +[savedReactionTag](/API_docs/constructors/savedReactionTag.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/SearchResultsCalendarPeriod.md b/docs/API_docs/types/SearchResultsCalendarPeriod.md new file mode 100644 index 0000000000..b0716aef00 --- /dev/null +++ b/docs/API_docs/types/SearchResultsCalendarPeriod.md @@ -0,0 +1,21 @@ +--- +title: SearchResultsCalendarPeriod +description: constructors and methods of type SearchResultsCalendarPeriod +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SearchResultsCalendarPeriod +[Back to types index](index.html) + + + +### Possible values (constructors): + +[searchResultsCalendarPeriod](/API_docs/constructors/searchResultsCalendarPeriod.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/SearchResultsPosition.md b/docs/API_docs/types/SearchResultsPosition.md new file mode 100644 index 0000000000..e05806ceab --- /dev/null +++ b/docs/API_docs/types/SearchResultsPosition.md @@ -0,0 +1,21 @@ +--- +title: SearchResultsPosition +description: constructors and methods of type SearchResultsPosition +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SearchResultsPosition +[Back to types index](index.html) + + + +### Possible values (constructors): + +[searchResultPosition](/API_docs/constructors/searchResultPosition.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/SecureCredentialsEncrypted.md b/docs/API_docs/types/SecureCredentialsEncrypted.md new file mode 100644 index 0000000000..5d0120102c --- /dev/null +++ b/docs/API_docs/types/SecureCredentialsEncrypted.md @@ -0,0 +1,21 @@ +--- +title: SecureCredentialsEncrypted +description: constructors and methods of type SecureCredentialsEncrypted +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SecureCredentialsEncrypted +[Back to types index](index.html) + + + +### Possible values (constructors): + +[secureCredentialsEncrypted](/API_docs/constructors/secureCredentialsEncrypted.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/SecureData.md b/docs/API_docs/types/SecureData.md new file mode 100644 index 0000000000..4daf0facdc --- /dev/null +++ b/docs/API_docs/types/SecureData.md @@ -0,0 +1,21 @@ +--- +title: SecureData +description: constructors and methods of type SecureData +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SecureData +[Back to types index](index.html) + + + +### Possible values (constructors): + +[secureData](/API_docs/constructors/secureData.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/SecureFile.md b/docs/API_docs/types/SecureFile.md new file mode 100644 index 0000000000..836f1ca6b2 --- /dev/null +++ b/docs/API_docs/types/SecureFile.md @@ -0,0 +1,23 @@ +--- +title: SecureFile +description: constructors and methods of type SecureFile +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SecureFile +[Back to types index](index.html) + + + +### Possible values (constructors): + +[secureFileEmpty](/API_docs/constructors/secureFileEmpty.html) + +[secureFile](/API_docs/constructors/secureFile.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/SecurePasswordKdfAlgo.md b/docs/API_docs/types/SecurePasswordKdfAlgo.md new file mode 100644 index 0000000000..507e9b0349 --- /dev/null +++ b/docs/API_docs/types/SecurePasswordKdfAlgo.md @@ -0,0 +1,25 @@ +--- +title: SecurePasswordKdfAlgo +description: constructors and methods of type SecurePasswordKdfAlgo +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SecurePasswordKdfAlgo +[Back to types index](index.html) + + + +### Possible values (constructors): + +[securePasswordKdfAlgoUnknown](/API_docs/constructors/securePasswordKdfAlgoUnknown.html) + +[securePasswordKdfAlgoPBKDF2HMACSHA512iter100000](/API_docs/constructors/securePasswordKdfAlgoPBKDF2HMACSHA512iter100000.html) + +[securePasswordKdfAlgoSHA512](/API_docs/constructors/securePasswordKdfAlgoSHA512.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/SecurePlainData.md b/docs/API_docs/types/SecurePlainData.md new file mode 100644 index 0000000000..27bf7ed907 --- /dev/null +++ b/docs/API_docs/types/SecurePlainData.md @@ -0,0 +1,23 @@ +--- +title: SecurePlainData +description: constructors and methods of type SecurePlainData +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SecurePlainData +[Back to types index](index.html) + + + +### Possible values (constructors): + +[securePlainPhone](/API_docs/constructors/securePlainPhone.html) + +[securePlainEmail](/API_docs/constructors/securePlainEmail.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/SecureRequiredType.md b/docs/API_docs/types/SecureRequiredType.md new file mode 100644 index 0000000000..9d6a0ca18f --- /dev/null +++ b/docs/API_docs/types/SecureRequiredType.md @@ -0,0 +1,23 @@ +--- +title: SecureRequiredType +description: constructors and methods of type SecureRequiredType +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SecureRequiredType +[Back to types index](index.html) + + + +### Possible values (constructors): + +[secureRequiredType](/API_docs/constructors/secureRequiredType.html) + +[secureRequiredTypeOneOf](/API_docs/constructors/secureRequiredTypeOneOf.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/SecureSecretSettings.md b/docs/API_docs/types/SecureSecretSettings.md new file mode 100644 index 0000000000..b1becd8bb3 --- /dev/null +++ b/docs/API_docs/types/SecureSecretSettings.md @@ -0,0 +1,21 @@ +--- +title: SecureSecretSettings +description: constructors and methods of type SecureSecretSettings +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SecureSecretSettings +[Back to types index](index.html) + + + +### Possible values (constructors): + +[secureSecretSettings](/API_docs/constructors/secureSecretSettings.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/SecureValue.md b/docs/API_docs/types/SecureValue.md new file mode 100644 index 0000000000..b4520b91e9 --- /dev/null +++ b/docs/API_docs/types/SecureValue.md @@ -0,0 +1,27 @@ +--- +title: SecureValue +description: constructors and methods of type SecureValue +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SecureValue +[Back to types index](index.html) + + + +### Possible values (constructors): + +[secureValue](/API_docs/constructors/secureValue.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getAllSecureValues](/API_docs/methods/account.getAllSecureValues.html) + +[$MadelineProto->account->getSecureValue](/API_docs/methods/account.getSecureValue.html) + +[$MadelineProto->account->saveSecureValue](/API_docs/methods/account.saveSecureValue.html) + + + diff --git a/docs/API_docs/types/SecureValueError.md b/docs/API_docs/types/SecureValueError.md new file mode 100644 index 0000000000..4500f40328 --- /dev/null +++ b/docs/API_docs/types/SecureValueError.md @@ -0,0 +1,37 @@ +--- +title: SecureValueError +description: constructors and methods of type SecureValueError +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SecureValueError +[Back to types index](index.html) + + + +### Possible values (constructors): + +[secureValueErrorData](/API_docs/constructors/secureValueErrorData.html) + +[secureValueErrorFrontSide](/API_docs/constructors/secureValueErrorFrontSide.html) + +[secureValueErrorReverseSide](/API_docs/constructors/secureValueErrorReverseSide.html) + +[secureValueErrorSelfie](/API_docs/constructors/secureValueErrorSelfie.html) + +[secureValueErrorFile](/API_docs/constructors/secureValueErrorFile.html) + +[secureValueErrorFiles](/API_docs/constructors/secureValueErrorFiles.html) + +[secureValueError](/API_docs/constructors/secureValueError.html) + +[secureValueErrorTranslationFile](/API_docs/constructors/secureValueErrorTranslationFile.html) + +[secureValueErrorTranslationFiles](/API_docs/constructors/secureValueErrorTranslationFiles.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/SecureValueHash.md b/docs/API_docs/types/SecureValueHash.md new file mode 100644 index 0000000000..224f1f1243 --- /dev/null +++ b/docs/API_docs/types/SecureValueHash.md @@ -0,0 +1,21 @@ +--- +title: SecureValueHash +description: constructors and methods of type SecureValueHash +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SecureValueHash +[Back to types index](index.html) + + + +### Possible values (constructors): + +[secureValueHash](/API_docs/constructors/secureValueHash.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/SecureValueType.md b/docs/API_docs/types/SecureValueType.md new file mode 100644 index 0000000000..5f2e7a7037 --- /dev/null +++ b/docs/API_docs/types/SecureValueType.md @@ -0,0 +1,45 @@ +--- +title: SecureValueType +description: constructors and methods of type SecureValueType +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SecureValueType +[Back to types index](index.html) + + + +### Possible values (constructors): + +[secureValueTypePersonalDetails](/API_docs/constructors/secureValueTypePersonalDetails.html) + +[secureValueTypePassport](/API_docs/constructors/secureValueTypePassport.html) + +[secureValueTypeDriverLicense](/API_docs/constructors/secureValueTypeDriverLicense.html) + +[secureValueTypeIdentityCard](/API_docs/constructors/secureValueTypeIdentityCard.html) + +[secureValueTypeInternalPassport](/API_docs/constructors/secureValueTypeInternalPassport.html) + +[secureValueTypeAddress](/API_docs/constructors/secureValueTypeAddress.html) + +[secureValueTypeUtilityBill](/API_docs/constructors/secureValueTypeUtilityBill.html) + +[secureValueTypeBankStatement](/API_docs/constructors/secureValueTypeBankStatement.html) + +[secureValueTypeRentalAgreement](/API_docs/constructors/secureValueTypeRentalAgreement.html) + +[secureValueTypePassportRegistration](/API_docs/constructors/secureValueTypePassportRegistration.html) + +[secureValueTypeTemporaryRegistration](/API_docs/constructors/secureValueTypeTemporaryRegistration.html) + +[secureValueTypePhone](/API_docs/constructors/secureValueTypePhone.html) + +[secureValueTypeEmail](/API_docs/constructors/secureValueTypeEmail.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/SendAsPeer.md b/docs/API_docs/types/SendAsPeer.md new file mode 100644 index 0000000000..de77b859b3 --- /dev/null +++ b/docs/API_docs/types/SendAsPeer.md @@ -0,0 +1,21 @@ +--- +title: SendAsPeer +description: constructors and methods of type SendAsPeer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SendAsPeer +[Back to types index](index.html) + + + +### Possible values (constructors): + +[sendAsPeer](/API_docs/constructors/sendAsPeer.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/SendMessageAction.md b/docs/API_docs/types/SendMessageAction.md new file mode 100644 index 0000000000..e9e7a39c82 --- /dev/null +++ b/docs/API_docs/types/SendMessageAction.md @@ -0,0 +1,65 @@ +--- +title: SendMessageAction +description: constructors and methods of type SendMessageAction +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SendMessageAction +[Back to types index](index.html) + + + +### Possible values (constructors): + +[sendMessageTypingAction](/API_docs/constructors/sendMessageTypingAction.html) + +[sendMessageCancelAction](/API_docs/constructors/sendMessageCancelAction.html) + +[sendMessageRecordVideoAction](/API_docs/constructors/sendMessageRecordVideoAction.html) + +[sendMessageUploadVideoAction](/API_docs/constructors/sendMessageUploadVideoAction.html) + +[sendMessageRecordAudioAction](/API_docs/constructors/sendMessageRecordAudioAction.html) + +[sendMessageUploadAudioAction](/API_docs/constructors/sendMessageUploadAudioAction.html) + +[sendMessageUploadPhotoAction](/API_docs/constructors/sendMessageUploadPhotoAction.html) + +[sendMessageUploadDocumentAction](/API_docs/constructors/sendMessageUploadDocumentAction.html) + +[sendMessageGeoLocationAction](/API_docs/constructors/sendMessageGeoLocationAction.html) + +[sendMessageChooseContactAction](/API_docs/constructors/sendMessageChooseContactAction.html) + +[sendMessageGamePlayAction](/API_docs/constructors/sendMessageGamePlayAction.html) + +[sendMessageRecordRoundAction](/API_docs/constructors/sendMessageRecordRoundAction.html) + +[sendMessageUploadRoundAction](/API_docs/constructors/sendMessageUploadRoundAction.html) + +[speakingInGroupCallAction](/API_docs/constructors/speakingInGroupCallAction.html) + +[sendMessageHistoryImportAction](/API_docs/constructors/sendMessageHistoryImportAction.html) + +[sendMessageChooseStickerAction](/API_docs/constructors/sendMessageChooseStickerAction.html) + +[sendMessageEmojiInteraction](/API_docs/constructors/sendMessageEmojiInteraction.html) + +[sendMessageEmojiInteractionSeen](/API_docs/constructors/sendMessageEmojiInteractionSeen.html) + +[sendMessageUploadVideoAction\_17](/API_docs/constructors/sendMessageUploadVideoAction_17.html) + +[sendMessageUploadAudioAction\_17](/API_docs/constructors/sendMessageUploadAudioAction_17.html) + +[sendMessageUploadPhotoAction\_17](/API_docs/constructors/sendMessageUploadPhotoAction_17.html) + +[sendMessageUploadDocumentAction\_17](/API_docs/constructors/sendMessageUploadDocumentAction_17.html) + +[sendMessageUploadRoundAction\_66](/API_docs/constructors/sendMessageUploadRoundAction_66.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/ShippingOption.md b/docs/API_docs/types/ShippingOption.md new file mode 100644 index 0000000000..899f65cf9c --- /dev/null +++ b/docs/API_docs/types/ShippingOption.md @@ -0,0 +1,21 @@ +--- +title: ShippingOption +description: constructors and methods of type ShippingOption +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ShippingOption +[Back to types index](index.html) + + + +### Possible values (constructors): + +[shippingOption](/API_docs/constructors/shippingOption.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/SimpleWebViewResult.md b/docs/API_docs/types/SimpleWebViewResult.md new file mode 100644 index 0000000000..7cd54a3fdc --- /dev/null +++ b/docs/API_docs/types/SimpleWebViewResult.md @@ -0,0 +1,23 @@ +--- +title: SimpleWebViewResult +description: constructors and methods of type SimpleWebViewResult +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SimpleWebViewResult +[Back to types index](index.html) + + + +### Possible values (constructors): + +[simpleWebViewResultUrl](/API_docs/constructors/simpleWebViewResultUrl.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->requestSimpleWebView](/API_docs/methods/messages.requestSimpleWebView.html) + + + diff --git a/docs/API_docs/types/SmsJob.md b/docs/API_docs/types/SmsJob.md new file mode 100644 index 0000000000..9dbb61815e --- /dev/null +++ b/docs/API_docs/types/SmsJob.md @@ -0,0 +1,23 @@ +--- +title: SmsJob +description: constructors and methods of type SmsJob +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SmsJob +[Back to types index](index.html) + + + +### Possible values (constructors): + +[smsJob](/API_docs/constructors/smsJob.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->smsjobs->getSmsJob](/API_docs/methods/smsjobs.getSmsJob.html) + + + diff --git a/docs/API_docs/types/SponsoredMessage.md b/docs/API_docs/types/SponsoredMessage.md new file mode 100644 index 0000000000..2f90cf62a8 --- /dev/null +++ b/docs/API_docs/types/SponsoredMessage.md @@ -0,0 +1,21 @@ +--- +title: SponsoredMessage +description: constructors and methods of type SponsoredMessage +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SponsoredMessage +[Back to types index](index.html) + + + +### Possible values (constructors): + +[sponsoredMessage](/API_docs/constructors/sponsoredMessage.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/SponsoredMessageReportOption.md b/docs/API_docs/types/SponsoredMessageReportOption.md new file mode 100644 index 0000000000..8109d7d53b --- /dev/null +++ b/docs/API_docs/types/SponsoredMessageReportOption.md @@ -0,0 +1,21 @@ +--- +title: SponsoredMessageReportOption +description: constructors and methods of type SponsoredMessageReportOption +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: SponsoredMessageReportOption +[Back to types index](index.html) + + + +### Possible values (constructors): + +[sponsoredMessageReportOption](/API_docs/constructors/sponsoredMessageReportOption.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/StatsAbsValueAndPrev.md b/docs/API_docs/types/StatsAbsValueAndPrev.md new file mode 100644 index 0000000000..4a1b3d3b85 --- /dev/null +++ b/docs/API_docs/types/StatsAbsValueAndPrev.md @@ -0,0 +1,21 @@ +--- +title: StatsAbsValueAndPrev +description: constructors and methods of type StatsAbsValueAndPrev +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: StatsAbsValueAndPrev +[Back to types index](index.html) + + + +### Possible values (constructors): + +[statsAbsValueAndPrev](/API_docs/constructors/statsAbsValueAndPrev.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/StatsDateRangeDays.md b/docs/API_docs/types/StatsDateRangeDays.md new file mode 100644 index 0000000000..0fe45ce563 --- /dev/null +++ b/docs/API_docs/types/StatsDateRangeDays.md @@ -0,0 +1,21 @@ +--- +title: StatsDateRangeDays +description: constructors and methods of type StatsDateRangeDays +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: StatsDateRangeDays +[Back to types index](index.html) + + + +### Possible values (constructors): + +[statsDateRangeDays](/API_docs/constructors/statsDateRangeDays.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/StatsGraph.md b/docs/API_docs/types/StatsGraph.md new file mode 100644 index 0000000000..05dd606527 --- /dev/null +++ b/docs/API_docs/types/StatsGraph.md @@ -0,0 +1,27 @@ +--- +title: StatsGraph +description: constructors and methods of type StatsGraph +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: StatsGraph +[Back to types index](index.html) + + + +### Possible values (constructors): + +[statsGraphAsync](/API_docs/constructors/statsGraphAsync.html) + +[statsGraphError](/API_docs/constructors/statsGraphError.html) + +[statsGraph](/API_docs/constructors/statsGraph.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->stats->loadAsyncGraph](/API_docs/methods/stats.loadAsyncGraph.html) + + + diff --git a/docs/API_docs/types/StatsGroupTopAdmin.md b/docs/API_docs/types/StatsGroupTopAdmin.md new file mode 100644 index 0000000000..ee81be1be0 --- /dev/null +++ b/docs/API_docs/types/StatsGroupTopAdmin.md @@ -0,0 +1,21 @@ +--- +title: StatsGroupTopAdmin +description: constructors and methods of type StatsGroupTopAdmin +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: StatsGroupTopAdmin +[Back to types index](index.html) + + + +### Possible values (constructors): + +[statsGroupTopAdmin](/API_docs/constructors/statsGroupTopAdmin.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/StatsGroupTopInviter.md b/docs/API_docs/types/StatsGroupTopInviter.md new file mode 100644 index 0000000000..d52b8d3ca5 --- /dev/null +++ b/docs/API_docs/types/StatsGroupTopInviter.md @@ -0,0 +1,21 @@ +--- +title: StatsGroupTopInviter +description: constructors and methods of type StatsGroupTopInviter +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: StatsGroupTopInviter +[Back to types index](index.html) + + + +### Possible values (constructors): + +[statsGroupTopInviter](/API_docs/constructors/statsGroupTopInviter.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/StatsGroupTopPoster.md b/docs/API_docs/types/StatsGroupTopPoster.md new file mode 100644 index 0000000000..4f765aff9b --- /dev/null +++ b/docs/API_docs/types/StatsGroupTopPoster.md @@ -0,0 +1,21 @@ +--- +title: StatsGroupTopPoster +description: constructors and methods of type StatsGroupTopPoster +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: StatsGroupTopPoster +[Back to types index](index.html) + + + +### Possible values (constructors): + +[statsGroupTopPoster](/API_docs/constructors/statsGroupTopPoster.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/StatsPercentValue.md b/docs/API_docs/types/StatsPercentValue.md new file mode 100644 index 0000000000..79cfd9dd84 --- /dev/null +++ b/docs/API_docs/types/StatsPercentValue.md @@ -0,0 +1,21 @@ +--- +title: StatsPercentValue +description: constructors and methods of type StatsPercentValue +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: StatsPercentValue +[Back to types index](index.html) + + + +### Possible values (constructors): + +[statsPercentValue](/API_docs/constructors/statsPercentValue.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/StatsURL.md b/docs/API_docs/types/StatsURL.md new file mode 100644 index 0000000000..e3863b3acf --- /dev/null +++ b/docs/API_docs/types/StatsURL.md @@ -0,0 +1,21 @@ +--- +title: StatsURL +description: constructors and methods of type StatsURL +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: StatsURL +[Back to types index](index.html) + + + +### Possible values (constructors): + +[statsURL](/API_docs/constructors/statsURL.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/StickerKeyword.md b/docs/API_docs/types/StickerKeyword.md new file mode 100644 index 0000000000..a34f6ea09c --- /dev/null +++ b/docs/API_docs/types/StickerKeyword.md @@ -0,0 +1,21 @@ +--- +title: StickerKeyword +description: constructors and methods of type StickerKeyword +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: StickerKeyword +[Back to types index](index.html) + + + +### Possible values (constructors): + +[stickerKeyword](/API_docs/constructors/stickerKeyword.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/StickerPack.md b/docs/API_docs/types/StickerPack.md new file mode 100644 index 0000000000..a42fb66a7f --- /dev/null +++ b/docs/API_docs/types/StickerPack.md @@ -0,0 +1,21 @@ +--- +title: StickerPack +description: constructors and methods of type StickerPack +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: StickerPack +[Back to types index](index.html) + + + +### Possible values (constructors): + +[stickerPack](/API_docs/constructors/stickerPack.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/StickerSet.md b/docs/API_docs/types/StickerSet.md new file mode 100644 index 0000000000..99b9dc93cc --- /dev/null +++ b/docs/API_docs/types/StickerSet.md @@ -0,0 +1,21 @@ +--- +title: StickerSet +description: constructors and methods of type StickerSet +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: StickerSet +[Back to types index](index.html) + + + +### Possible values (constructors): + +[stickerSet](/API_docs/constructors/stickerSet.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/StickerSetCovered.md b/docs/API_docs/types/StickerSetCovered.md new file mode 100644 index 0000000000..7e3a8eb97c --- /dev/null +++ b/docs/API_docs/types/StickerSetCovered.md @@ -0,0 +1,29 @@ +--- +title: StickerSetCovered +description: constructors and methods of type StickerSetCovered +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: StickerSetCovered +[Back to types index](index.html) + + + +### Possible values (constructors): + +[stickerSetCovered](/API_docs/constructors/stickerSetCovered.html) + +[stickerSetMultiCovered](/API_docs/constructors/stickerSetMultiCovered.html) + +[stickerSetFullCovered](/API_docs/constructors/stickerSetFullCovered.html) + +[stickerSetNoCovered](/API_docs/constructors/stickerSetNoCovered.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getAttachedStickers](/API_docs/methods/messages.getAttachedStickers.html) + + + diff --git a/docs/API_docs/types/StoriesStealthMode.md b/docs/API_docs/types/StoriesStealthMode.md new file mode 100644 index 0000000000..7540be6418 --- /dev/null +++ b/docs/API_docs/types/StoriesStealthMode.md @@ -0,0 +1,21 @@ +--- +title: StoriesStealthMode +description: constructors and methods of type StoriesStealthMode +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: StoriesStealthMode +[Back to types index](index.html) + + + +### Possible values (constructors): + +[storiesStealthMode](/API_docs/constructors/storiesStealthMode.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/StoryFwdHeader.md b/docs/API_docs/types/StoryFwdHeader.md new file mode 100644 index 0000000000..39e3af5437 --- /dev/null +++ b/docs/API_docs/types/StoryFwdHeader.md @@ -0,0 +1,21 @@ +--- +title: StoryFwdHeader +description: constructors and methods of type StoryFwdHeader +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: StoryFwdHeader +[Back to types index](index.html) + + + +### Possible values (constructors): + +[storyFwdHeader](/API_docs/constructors/storyFwdHeader.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/StoryItem.md b/docs/API_docs/types/StoryItem.md new file mode 100644 index 0000000000..8dc835a6c9 --- /dev/null +++ b/docs/API_docs/types/StoryItem.md @@ -0,0 +1,25 @@ +--- +title: StoryItem +description: constructors and methods of type StoryItem +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: StoryItem +[Back to types index](index.html) + + + +### Possible values (constructors): + +[storyItemDeleted](/API_docs/constructors/storyItemDeleted.html) + +[storyItemSkipped](/API_docs/constructors/storyItemSkipped.html) + +[storyItem](/API_docs/constructors/storyItem.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/StoryReaction.md b/docs/API_docs/types/StoryReaction.md new file mode 100644 index 0000000000..3bc0265fce --- /dev/null +++ b/docs/API_docs/types/StoryReaction.md @@ -0,0 +1,25 @@ +--- +title: StoryReaction +description: constructors and methods of type StoryReaction +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: StoryReaction +[Back to types index](index.html) + + + +### Possible values (constructors): + +[storyReaction](/API_docs/constructors/storyReaction.html) + +[storyReactionPublicForward](/API_docs/constructors/storyReactionPublicForward.html) + +[storyReactionPublicRepost](/API_docs/constructors/storyReactionPublicRepost.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/StoryView.md b/docs/API_docs/types/StoryView.md new file mode 100644 index 0000000000..f6e131624c --- /dev/null +++ b/docs/API_docs/types/StoryView.md @@ -0,0 +1,25 @@ +--- +title: StoryView +description: constructors and methods of type StoryView +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: StoryView +[Back to types index](index.html) + + + +### Possible values (constructors): + +[storyView](/API_docs/constructors/storyView.html) + +[storyViewPublicForward](/API_docs/constructors/storyViewPublicForward.html) + +[storyViewPublicRepost](/API_docs/constructors/storyViewPublicRepost.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/StoryViews.md b/docs/API_docs/types/StoryViews.md new file mode 100644 index 0000000000..80d4c7196f --- /dev/null +++ b/docs/API_docs/types/StoryViews.md @@ -0,0 +1,21 @@ +--- +title: StoryViews +description: constructors and methods of type StoryViews +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: StoryViews +[Back to types index](index.html) + + + +### Possible values (constructors): + +[storyViews](/API_docs/constructors/storyViews.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/TextWithEntities.md b/docs/API_docs/types/TextWithEntities.md new file mode 100644 index 0000000000..5efa20e2bc --- /dev/null +++ b/docs/API_docs/types/TextWithEntities.md @@ -0,0 +1,21 @@ +--- +title: TextWithEntities +description: constructors and methods of type TextWithEntities +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: TextWithEntities +[Back to types index](index.html) + + + +### Possible values (constructors): + +[textWithEntities](/API_docs/constructors/textWithEntities.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Theme.md b/docs/API_docs/types/Theme.md new file mode 100644 index 0000000000..d50a06775a --- /dev/null +++ b/docs/API_docs/types/Theme.md @@ -0,0 +1,27 @@ +--- +title: Theme +description: constructors and methods of type Theme +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Theme +[Back to types index](index.html) + + + +### Possible values (constructors): + +[theme](/API_docs/constructors/theme.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->createTheme](/API_docs/methods/account.createTheme.html) + +[$MadelineProto->account->updateTheme](/API_docs/methods/account.updateTheme.html) + +[$MadelineProto->account->getTheme](/API_docs/methods/account.getTheme.html) + + + diff --git a/docs/API_docs/types/ThemeSettings.md b/docs/API_docs/types/ThemeSettings.md new file mode 100644 index 0000000000..9346846a4d --- /dev/null +++ b/docs/API_docs/types/ThemeSettings.md @@ -0,0 +1,21 @@ +--- +title: ThemeSettings +description: constructors and methods of type ThemeSettings +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: ThemeSettings +[Back to types index](index.html) + + + +### Possible values (constructors): + +[themeSettings](/API_docs/constructors/themeSettings.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Timezone.md b/docs/API_docs/types/Timezone.md new file mode 100644 index 0000000000..4d38381e9a --- /dev/null +++ b/docs/API_docs/types/Timezone.md @@ -0,0 +1,21 @@ +--- +title: Timezone +description: constructors and methods of type Timezone +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Timezone +[Back to types index](index.html) + + + +### Possible values (constructors): + +[timezone](/API_docs/constructors/timezone.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/TopPeer.md b/docs/API_docs/types/TopPeer.md new file mode 100644 index 0000000000..4c855dad14 --- /dev/null +++ b/docs/API_docs/types/TopPeer.md @@ -0,0 +1,21 @@ +--- +title: TopPeer +description: constructors and methods of type TopPeer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: TopPeer +[Back to types index](index.html) + + + +### Possible values (constructors): + +[topPeer](/API_docs/constructors/topPeer.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/TopPeerCategory.md b/docs/API_docs/types/TopPeerCategory.md new file mode 100644 index 0000000000..f9b7b14f34 --- /dev/null +++ b/docs/API_docs/types/TopPeerCategory.md @@ -0,0 +1,35 @@ +--- +title: TopPeerCategory +description: constructors and methods of type TopPeerCategory +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: TopPeerCategory +[Back to types index](index.html) + + + +### Possible values (constructors): + +[topPeerCategoryBotsPM](/API_docs/constructors/topPeerCategoryBotsPM.html) + +[topPeerCategoryBotsInline](/API_docs/constructors/topPeerCategoryBotsInline.html) + +[topPeerCategoryCorrespondents](/API_docs/constructors/topPeerCategoryCorrespondents.html) + +[topPeerCategoryGroups](/API_docs/constructors/topPeerCategoryGroups.html) + +[topPeerCategoryChannels](/API_docs/constructors/topPeerCategoryChannels.html) + +[topPeerCategoryPhoneCalls](/API_docs/constructors/topPeerCategoryPhoneCalls.html) + +[topPeerCategoryForwardUsers](/API_docs/constructors/topPeerCategoryForwardUsers.html) + +[topPeerCategoryForwardChats](/API_docs/constructors/topPeerCategoryForwardChats.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/TopPeerCategoryPeers.md b/docs/API_docs/types/TopPeerCategoryPeers.md new file mode 100644 index 0000000000..01e8f34e1c --- /dev/null +++ b/docs/API_docs/types/TopPeerCategoryPeers.md @@ -0,0 +1,21 @@ +--- +title: TopPeerCategoryPeers +description: constructors and methods of type TopPeerCategoryPeers +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: TopPeerCategoryPeers +[Back to types index](index.html) + + + +### Possible values (constructors): + +[topPeerCategoryPeers](/API_docs/constructors/topPeerCategoryPeers.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/True.md b/docs/API_docs/types/True.md new file mode 100644 index 0000000000..5776f59229 --- /dev/null +++ b/docs/API_docs/types/True.md @@ -0,0 +1,21 @@ +--- +title: True +description: constructors and methods of type True +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: True +[Back to types index](index.html) + + + +### Possible values (constructors): + +[true](/API_docs/constructors/true.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Update.md b/docs/API_docs/types/Update.md new file mode 100644 index 0000000000..6ae6470835 --- /dev/null +++ b/docs/API_docs/types/Update.md @@ -0,0 +1,289 @@ +--- +title: Update +description: constructors and methods of type Update +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Update +[Back to types index](index.html) + + + +### Possible values (constructors): + +[updateNewMessage](/API_docs/constructors/updateNewMessage.html) + +[updateMessageID](/API_docs/constructors/updateMessageID.html) + +[updateDeleteMessages](/API_docs/constructors/updateDeleteMessages.html) + +[updateUserTyping](/API_docs/constructors/updateUserTyping.html) + +[updateChatUserTyping](/API_docs/constructors/updateChatUserTyping.html) + +[updateChatParticipants](/API_docs/constructors/updateChatParticipants.html) + +[updateUserStatus](/API_docs/constructors/updateUserStatus.html) + +[updateUserName](/API_docs/constructors/updateUserName.html) + +[updateNewAuthorization](/API_docs/constructors/updateNewAuthorization.html) + +[updateNewEncryptedMessage](/API_docs/constructors/updateNewEncryptedMessage.html) + +[updateEncryptedChatTyping](/API_docs/constructors/updateEncryptedChatTyping.html) + +[updateEncryption](/API_docs/constructors/updateEncryption.html) + +[updateEncryptedMessagesRead](/API_docs/constructors/updateEncryptedMessagesRead.html) + +[updateChatParticipantAdd](/API_docs/constructors/updateChatParticipantAdd.html) + +[updateChatParticipantDelete](/API_docs/constructors/updateChatParticipantDelete.html) + +[updateDcOptions](/API_docs/constructors/updateDcOptions.html) + +[updateNotifySettings](/API_docs/constructors/updateNotifySettings.html) + +[updateServiceNotification](/API_docs/constructors/updateServiceNotification.html) + +[updatePrivacy](/API_docs/constructors/updatePrivacy.html) + +[updateUserPhone](/API_docs/constructors/updateUserPhone.html) + +[updateReadHistoryInbox](/API_docs/constructors/updateReadHistoryInbox.html) + +[updateReadHistoryOutbox](/API_docs/constructors/updateReadHistoryOutbox.html) + +[updateWebPage](/API_docs/constructors/updateWebPage.html) + +[updateReadMessagesContents](/API_docs/constructors/updateReadMessagesContents.html) + +[updateChannelTooLong](/API_docs/constructors/updateChannelTooLong.html) + +[updateChannel](/API_docs/constructors/updateChannel.html) + +[updateNewChannelMessage](/API_docs/constructors/updateNewChannelMessage.html) + +[updateReadChannelInbox](/API_docs/constructors/updateReadChannelInbox.html) + +[updateDeleteChannelMessages](/API_docs/constructors/updateDeleteChannelMessages.html) + +[updateChannelMessageViews](/API_docs/constructors/updateChannelMessageViews.html) + +[updateChatParticipantAdmin](/API_docs/constructors/updateChatParticipantAdmin.html) + +[updateNewStickerSet](/API_docs/constructors/updateNewStickerSet.html) + +[updateStickerSetsOrder](/API_docs/constructors/updateStickerSetsOrder.html) + +[updateStickerSets](/API_docs/constructors/updateStickerSets.html) + +[updateSavedGifs](/API_docs/constructors/updateSavedGifs.html) + +[updateBotInlineQuery](/API_docs/constructors/updateBotInlineQuery.html) + +[updateBotInlineSend](/API_docs/constructors/updateBotInlineSend.html) + +[updateEditChannelMessage](/API_docs/constructors/updateEditChannelMessage.html) + +[updateBotCallbackQuery](/API_docs/constructors/updateBotCallbackQuery.html) + +[updateEditMessage](/API_docs/constructors/updateEditMessage.html) + +[updateInlineBotCallbackQuery](/API_docs/constructors/updateInlineBotCallbackQuery.html) + +[updateReadChannelOutbox](/API_docs/constructors/updateReadChannelOutbox.html) + +[updateDraftMessage](/API_docs/constructors/updateDraftMessage.html) + +[updateReadFeaturedStickers](/API_docs/constructors/updateReadFeaturedStickers.html) + +[updateRecentStickers](/API_docs/constructors/updateRecentStickers.html) + +[updateConfig](/API_docs/constructors/updateConfig.html) + +[updatePtsChanged](/API_docs/constructors/updatePtsChanged.html) + +[updateChannelWebPage](/API_docs/constructors/updateChannelWebPage.html) + +[updateDialogPinned](/API_docs/constructors/updateDialogPinned.html) + +[updatePinnedDialogs](/API_docs/constructors/updatePinnedDialogs.html) + +[updateBotWebhookJSON](/API_docs/constructors/updateBotWebhookJSON.html) + +[updateBotWebhookJSONQuery](/API_docs/constructors/updateBotWebhookJSONQuery.html) + +[updateBotShippingQuery](/API_docs/constructors/updateBotShippingQuery.html) + +[updateBotPrecheckoutQuery](/API_docs/constructors/updateBotPrecheckoutQuery.html) + +[updatePhoneCall](/API_docs/constructors/updatePhoneCall.html) + +[updateLangPackTooLong](/API_docs/constructors/updateLangPackTooLong.html) + +[updateLangPack](/API_docs/constructors/updateLangPack.html) + +[updateFavedStickers](/API_docs/constructors/updateFavedStickers.html) + +[updateChannelReadMessagesContents](/API_docs/constructors/updateChannelReadMessagesContents.html) + +[updateContactsReset](/API_docs/constructors/updateContactsReset.html) + +[updateChannelAvailableMessages](/API_docs/constructors/updateChannelAvailableMessages.html) + +[updateDialogUnreadMark](/API_docs/constructors/updateDialogUnreadMark.html) + +[updateMessagePoll](/API_docs/constructors/updateMessagePoll.html) + +[updateChatDefaultBannedRights](/API_docs/constructors/updateChatDefaultBannedRights.html) + +[updateFolderPeers](/API_docs/constructors/updateFolderPeers.html) + +[updatePeerSettings](/API_docs/constructors/updatePeerSettings.html) + +[updatePeerLocated](/API_docs/constructors/updatePeerLocated.html) + +[updateNewScheduledMessage](/API_docs/constructors/updateNewScheduledMessage.html) + +[updateDeleteScheduledMessages](/API_docs/constructors/updateDeleteScheduledMessages.html) + +[updateTheme](/API_docs/constructors/updateTheme.html) + +[updateGeoLiveViewed](/API_docs/constructors/updateGeoLiveViewed.html) + +[updateLoginToken](/API_docs/constructors/updateLoginToken.html) + +[updateMessagePollVote](/API_docs/constructors/updateMessagePollVote.html) + +[updateDialogFilter](/API_docs/constructors/updateDialogFilter.html) + +[updateDialogFilterOrder](/API_docs/constructors/updateDialogFilterOrder.html) + +[updateDialogFilters](/API_docs/constructors/updateDialogFilters.html) + +[updatePhoneCallSignalingData](/API_docs/constructors/updatePhoneCallSignalingData.html) + +[updateChannelMessageForwards](/API_docs/constructors/updateChannelMessageForwards.html) + +[updateReadChannelDiscussionInbox](/API_docs/constructors/updateReadChannelDiscussionInbox.html) + +[updateReadChannelDiscussionOutbox](/API_docs/constructors/updateReadChannelDiscussionOutbox.html) + +[updatePeerBlocked](/API_docs/constructors/updatePeerBlocked.html) + +[updateChannelUserTyping](/API_docs/constructors/updateChannelUserTyping.html) + +[updatePinnedMessages](/API_docs/constructors/updatePinnedMessages.html) + +[updatePinnedChannelMessages](/API_docs/constructors/updatePinnedChannelMessages.html) + +[updateChat](/API_docs/constructors/updateChat.html) + +[updateGroupCallParticipants](/API_docs/constructors/updateGroupCallParticipants.html) + +[updateGroupCall](/API_docs/constructors/updateGroupCall.html) + +[updatePeerHistoryTTL](/API_docs/constructors/updatePeerHistoryTTL.html) + +[updateChatParticipant](/API_docs/constructors/updateChatParticipant.html) + +[updateChannelParticipant](/API_docs/constructors/updateChannelParticipant.html) + +[updateBotStopped](/API_docs/constructors/updateBotStopped.html) + +[updateGroupCallConnection](/API_docs/constructors/updateGroupCallConnection.html) + +[updateBotCommands](/API_docs/constructors/updateBotCommands.html) + +[updatePendingJoinRequests](/API_docs/constructors/updatePendingJoinRequests.html) + +[updateBotChatInviteRequester](/API_docs/constructors/updateBotChatInviteRequester.html) + +[updateMessageReactions](/API_docs/constructors/updateMessageReactions.html) + +[updateAttachMenuBots](/API_docs/constructors/updateAttachMenuBots.html) + +[updateWebViewResultSent](/API_docs/constructors/updateWebViewResultSent.html) + +[updateBotMenuButton](/API_docs/constructors/updateBotMenuButton.html) + +[updateSavedRingtones](/API_docs/constructors/updateSavedRingtones.html) + +[updateTranscribedAudio](/API_docs/constructors/updateTranscribedAudio.html) + +[updateReadFeaturedEmojiStickers](/API_docs/constructors/updateReadFeaturedEmojiStickers.html) + +[updateUserEmojiStatus](/API_docs/constructors/updateUserEmojiStatus.html) + +[updateRecentEmojiStatuses](/API_docs/constructors/updateRecentEmojiStatuses.html) + +[updateRecentReactions](/API_docs/constructors/updateRecentReactions.html) + +[updateMoveStickerSetToTop](/API_docs/constructors/updateMoveStickerSetToTop.html) + +[updateMessageExtendedMedia](/API_docs/constructors/updateMessageExtendedMedia.html) + +[updateChannelPinnedTopic](/API_docs/constructors/updateChannelPinnedTopic.html) + +[updateChannelPinnedTopics](/API_docs/constructors/updateChannelPinnedTopics.html) + +[updateUser](/API_docs/constructors/updateUser.html) + +[updateAutoSaveSettings](/API_docs/constructors/updateAutoSaveSettings.html) + +[updateStory](/API_docs/constructors/updateStory.html) + +[updateReadStories](/API_docs/constructors/updateReadStories.html) + +[updateStoryID](/API_docs/constructors/updateStoryID.html) + +[updateStoriesStealthMode](/API_docs/constructors/updateStoriesStealthMode.html) + +[updateSentStoryReaction](/API_docs/constructors/updateSentStoryReaction.html) + +[updateBotChatBoost](/API_docs/constructors/updateBotChatBoost.html) + +[updateChannelViewForumAsMessages](/API_docs/constructors/updateChannelViewForumAsMessages.html) + +[updatePeerWallpaper](/API_docs/constructors/updatePeerWallpaper.html) + +[updateBotMessageReaction](/API_docs/constructors/updateBotMessageReaction.html) + +[updateBotMessageReactions](/API_docs/constructors/updateBotMessageReactions.html) + +[updateSavedDialogPinned](/API_docs/constructors/updateSavedDialogPinned.html) + +[updatePinnedSavedDialogs](/API_docs/constructors/updatePinnedSavedDialogs.html) + +[updateSavedReactionTags](/API_docs/constructors/updateSavedReactionTags.html) + +[updateSmsJob](/API_docs/constructors/updateSmsJob.html) + +[updateQuickReplies](/API_docs/constructors/updateQuickReplies.html) + +[updateNewQuickReply](/API_docs/constructors/updateNewQuickReply.html) + +[updateDeleteQuickReply](/API_docs/constructors/updateDeleteQuickReply.html) + +[updateQuickReplyMessage](/API_docs/constructors/updateQuickReplyMessage.html) + +[updateDeleteQuickReplyMessages](/API_docs/constructors/updateDeleteQuickReplyMessages.html) + +[updateBotBusinessConnect](/API_docs/constructors/updateBotBusinessConnect.html) + +[updateBotNewBusinessMessage](/API_docs/constructors/updateBotNewBusinessMessage.html) + +[updateBotEditBusinessMessage](/API_docs/constructors/updateBotEditBusinessMessage.html) + +[updateBotDeleteBusinessMessage](/API_docs/constructors/updateBotDeleteBusinessMessage.html) + +[updateNewStoryReaction](/API_docs/constructors/updateNewStoryReaction.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Updates.md b/docs/API_docs/types/Updates.md new file mode 100644 index 0000000000..52f7b63251 --- /dev/null +++ b/docs/API_docs/types/Updates.md @@ -0,0 +1,248 @@ +--- +title: Updates +description: constructors and methods of type Updates +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Updates +[Back to types index](index.html) + +You can use the following methods to extract information from this constructor: + +```php +// Extract an array of Update constructors +$vector_of_update = $MadelineProto->extractUpdates($Updates); + +// Extract an updateNewMessage, updateNewChannelMessage, updateEditMessage, updateEditChannelMessage constructor +$message_update = $MadelineProto->extractMessageUpdate($Updates); + +// Extract a message constructor +$message = $MadelineProto->extractMessage($Updates); + +// Extract a message ID +$message = $MadelineProto->extractMessageId($Updates); +``` + + +### Possible values (constructors): + +[updatesTooLong](/API_docs/constructors/updatesTooLong.html) + +[updateShortMessage](/API_docs/constructors/updateShortMessage.html) + +[updateShortChatMessage](/API_docs/constructors/updateShortChatMessage.html) + +[updateShort](/API_docs/constructors/updateShort.html) + +[updatesCombined](/API_docs/constructors/updatesCombined.html) + +[updates](/API_docs/constructors/updates.html) + +[updateShortSentMessage](/API_docs/constructors/updateShortSentMessage.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getNotifyExceptions](/API_docs/methods/account.getNotifyExceptions.html) + +[$MadelineProto->account->updateConnectedBot](/API_docs/methods/account.updateConnectedBot.html) + +[$MadelineProto->account->getBotBusinessConnection](/API_docs/methods/account.getBotBusinessConnection.html) + +[$MadelineProto->contacts->deleteContacts](/API_docs/methods/contacts.deleteContacts.html) + +[$MadelineProto->contacts->addContact](/API_docs/methods/contacts.addContact.html) + +[$MadelineProto->contacts->acceptContact](/API_docs/methods/contacts.acceptContact.html) + +[$MadelineProto->contacts->getLocated](/API_docs/methods/contacts.getLocated.html) + +[$MadelineProto->contacts->blockFromReplies](/API_docs/methods/contacts.blockFromReplies.html) + +[$MadelineProto->messages->sendMessage](/API_docs/methods/messages.sendMessage.html) + +[$MadelineProto->messages->sendMedia](/API_docs/methods/messages.sendMedia.html) + +[$MadelineProto->messages->forwardMessages](/API_docs/methods/messages.forwardMessages.html) + +[$MadelineProto->messages->editChatTitle](/API_docs/methods/messages.editChatTitle.html) + +[$MadelineProto->messages->editChatPhoto](/API_docs/methods/messages.editChatPhoto.html) + +[$MadelineProto->messages->deleteChatUser](/API_docs/methods/messages.deleteChatUser.html) + +[$MadelineProto->messages->importChatInvite](/API_docs/methods/messages.importChatInvite.html) + +[$MadelineProto->messages->startBot](/API_docs/methods/messages.startBot.html) + +[$MadelineProto->messages->migrateChat](/API_docs/methods/messages.migrateChat.html) + +[$MadelineProto->messages->sendInlineBotResult](/API_docs/methods/messages.sendInlineBotResult.html) + +[$MadelineProto->messages->editMessage](/API_docs/methods/messages.editMessage.html) + +[$MadelineProto->messages->getAllDrafts](/API_docs/methods/messages.getAllDrafts.html) + +[$MadelineProto->messages->setGameScore](/API_docs/methods/messages.setGameScore.html) + +[$MadelineProto->messages->sendScreenshotNotification](/API_docs/methods/messages.sendScreenshotNotification.html) + +[$MadelineProto->messages->sendMultiMedia](/API_docs/methods/messages.sendMultiMedia.html) + +[$MadelineProto->messages->updatePinnedMessage](/API_docs/methods/messages.updatePinnedMessage.html) + +[$MadelineProto->messages->sendVote](/API_docs/methods/messages.sendVote.html) + +[$MadelineProto->messages->getPollResults](/API_docs/methods/messages.getPollResults.html) + +[$MadelineProto->messages->editChatDefaultBannedRights](/API_docs/methods/messages.editChatDefaultBannedRights.html) + +[$MadelineProto->messages->sendScheduledMessages](/API_docs/methods/messages.sendScheduledMessages.html) + +[$MadelineProto->messages->deleteScheduledMessages](/API_docs/methods/messages.deleteScheduledMessages.html) + +[$MadelineProto->messages->setHistoryTTL](/API_docs/methods/messages.setHistoryTTL.html) + +[$MadelineProto->messages->setChatTheme](/API_docs/methods/messages.setChatTheme.html) + +[$MadelineProto->messages->hideChatJoinRequest](/API_docs/methods/messages.hideChatJoinRequest.html) + +[$MadelineProto->messages->hideAllChatJoinRequests](/API_docs/methods/messages.hideAllChatJoinRequests.html) + +[$MadelineProto->messages->toggleNoForwards](/API_docs/methods/messages.toggleNoForwards.html) + +[$MadelineProto->messages->sendReaction](/API_docs/methods/messages.sendReaction.html) + +[$MadelineProto->messages->getMessagesReactions](/API_docs/methods/messages.getMessagesReactions.html) + +[$MadelineProto->messages->setChatAvailableReactions](/API_docs/methods/messages.setChatAvailableReactions.html) + +[$MadelineProto->messages->sendWebViewData](/API_docs/methods/messages.sendWebViewData.html) + +[$MadelineProto->messages->getExtendedMedia](/API_docs/methods/messages.getExtendedMedia.html) + +[$MadelineProto->messages->sendBotRequestedPeer](/API_docs/methods/messages.sendBotRequestedPeer.html) + +[$MadelineProto->messages->setChatWallPaper](/API_docs/methods/messages.setChatWallPaper.html) + +[$MadelineProto->messages->sendQuickReplyMessages](/API_docs/methods/messages.sendQuickReplyMessages.html) + +[$MadelineProto->messages->deleteQuickReplyMessages](/API_docs/methods/messages.deleteQuickReplyMessages.html) + +[$MadelineProto->channels->createChannel](/API_docs/methods/channels.createChannel.html) + +[$MadelineProto->channels->editAdmin](/API_docs/methods/channels.editAdmin.html) + +[$MadelineProto->channels->editTitle](/API_docs/methods/channels.editTitle.html) + +[$MadelineProto->channels->editPhoto](/API_docs/methods/channels.editPhoto.html) + +[$MadelineProto->channels->joinChannel](/API_docs/methods/channels.joinChannel.html) + +[$MadelineProto->channels->leaveChannel](/API_docs/methods/channels.leaveChannel.html) + +[$MadelineProto->channels->deleteChannel](/API_docs/methods/channels.deleteChannel.html) + +[$MadelineProto->channels->toggleSignatures](/API_docs/methods/channels.toggleSignatures.html) + +[$MadelineProto->channels->editBanned](/API_docs/methods/channels.editBanned.html) + +[$MadelineProto->channels->deleteHistory](/API_docs/methods/channels.deleteHistory.html) + +[$MadelineProto->channels->togglePreHistoryHidden](/API_docs/methods/channels.togglePreHistoryHidden.html) + +[$MadelineProto->channels->editCreator](/API_docs/methods/channels.editCreator.html) + +[$MadelineProto->channels->toggleSlowMode](/API_docs/methods/channels.toggleSlowMode.html) + +[$MadelineProto->channels->convertToGigagroup](/API_docs/methods/channels.convertToGigagroup.html) + +[$MadelineProto->channels->toggleJoinToSend](/API_docs/methods/channels.toggleJoinToSend.html) + +[$MadelineProto->channels->toggleJoinRequest](/API_docs/methods/channels.toggleJoinRequest.html) + +[$MadelineProto->channels->toggleForum](/API_docs/methods/channels.toggleForum.html) + +[$MadelineProto->channels->createForumTopic](/API_docs/methods/channels.createForumTopic.html) + +[$MadelineProto->channels->editForumTopic](/API_docs/methods/channels.editForumTopic.html) + +[$MadelineProto->channels->updatePinnedForumTopic](/API_docs/methods/channels.updatePinnedForumTopic.html) + +[$MadelineProto->channels->reorderPinnedForumTopics](/API_docs/methods/channels.reorderPinnedForumTopics.html) + +[$MadelineProto->channels->toggleAntiSpam](/API_docs/methods/channels.toggleAntiSpam.html) + +[$MadelineProto->channels->toggleParticipantsHidden](/API_docs/methods/channels.toggleParticipantsHidden.html) + +[$MadelineProto->channels->updateColor](/API_docs/methods/channels.updateColor.html) + +[$MadelineProto->channels->toggleViewForumAsMessages](/API_docs/methods/channels.toggleViewForumAsMessages.html) + +[$MadelineProto->channels->updateEmojiStatus](/API_docs/methods/channels.updateEmojiStatus.html) + +[$MadelineProto->channels->setBoostsToUnblockRestrictions](/API_docs/methods/channels.setBoostsToUnblockRestrictions.html) + +[$MadelineProto->channels->restrictSponsoredMessages](/API_docs/methods/channels.restrictSponsoredMessages.html) + +[$MadelineProto->bots->allowSendMessage](/API_docs/methods/bots.allowSendMessage.html) + +[$MadelineProto->payments->assignAppStoreTransaction](/API_docs/methods/payments.assignAppStoreTransaction.html) + +[$MadelineProto->payments->assignPlayMarketTransaction](/API_docs/methods/payments.assignPlayMarketTransaction.html) + +[$MadelineProto->payments->applyGiftCode](/API_docs/methods/payments.applyGiftCode.html) + +[$MadelineProto->payments->launchPrepaidGiveaway](/API_docs/methods/payments.launchPrepaidGiveaway.html) + +[$MadelineProto->phone->discardCall](/API_docs/methods/phone.discardCall.html) + +[$MadelineProto->phone->setCallRating](/API_docs/methods/phone.setCallRating.html) + +[$MadelineProto->phone->createGroupCall](/API_docs/methods/phone.createGroupCall.html) + +[$MadelineProto->phone->joinGroupCall](/API_docs/methods/phone.joinGroupCall.html) + +[$MadelineProto->phone->leaveGroupCall](/API_docs/methods/phone.leaveGroupCall.html) + +[$MadelineProto->phone->inviteToGroupCall](/API_docs/methods/phone.inviteToGroupCall.html) + +[$MadelineProto->phone->discardGroupCall](/API_docs/methods/phone.discardGroupCall.html) + +[$MadelineProto->phone->toggleGroupCallSettings](/API_docs/methods/phone.toggleGroupCallSettings.html) + +[$MadelineProto->phone->toggleGroupCallRecord](/API_docs/methods/phone.toggleGroupCallRecord.html) + +[$MadelineProto->phone->editGroupCallParticipant](/API_docs/methods/phone.editGroupCallParticipant.html) + +[$MadelineProto->phone->editGroupCallTitle](/API_docs/methods/phone.editGroupCallTitle.html) + +[$MadelineProto->phone->toggleGroupCallStartSubscription](/API_docs/methods/phone.toggleGroupCallStartSubscription.html) + +[$MadelineProto->phone->startScheduledGroupCall](/API_docs/methods/phone.startScheduledGroupCall.html) + +[$MadelineProto->phone->joinGroupCallPresentation](/API_docs/methods/phone.joinGroupCallPresentation.html) + +[$MadelineProto->phone->leaveGroupCallPresentation](/API_docs/methods/phone.leaveGroupCallPresentation.html) + +[$MadelineProto->folders->editPeerFolders](/API_docs/methods/folders.editPeerFolders.html) + +[$MadelineProto->chatlists->joinChatlistInvite](/API_docs/methods/chatlists.joinChatlistInvite.html) + +[$MadelineProto->chatlists->joinChatlistUpdates](/API_docs/methods/chatlists.joinChatlistUpdates.html) + +[$MadelineProto->chatlists->leaveChatlist](/API_docs/methods/chatlists.leaveChatlist.html) + +[$MadelineProto->stories->sendStory](/API_docs/methods/stories.sendStory.html) + +[$MadelineProto->stories->editStory](/API_docs/methods/stories.editStory.html) + +[$MadelineProto->stories->activateStealthMode](/API_docs/methods/stories.activateStealthMode.html) + +[$MadelineProto->stories->sendReaction](/API_docs/methods/stories.sendReaction.html) + +[$MadelineProto->stories->getAllReadPeerStories](/API_docs/methods/stories.getAllReadPeerStories.html) + + + diff --git a/docs/API_docs/types/UrlAuthResult.md b/docs/API_docs/types/UrlAuthResult.md new file mode 100644 index 0000000000..5ef271fc6f --- /dev/null +++ b/docs/API_docs/types/UrlAuthResult.md @@ -0,0 +1,29 @@ +--- +title: UrlAuthResult +description: constructors and methods of type UrlAuthResult +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: UrlAuthResult +[Back to types index](index.html) + + + +### Possible values (constructors): + +[urlAuthResultRequest](/API_docs/constructors/urlAuthResultRequest.html) + +[urlAuthResultAccepted](/API_docs/constructors/urlAuthResultAccepted.html) + +[urlAuthResultDefault](/API_docs/constructors/urlAuthResultDefault.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->requestUrlAuth](/API_docs/methods/messages.requestUrlAuth.html) + +[$MadelineProto->messages->acceptUrlAuth](/API_docs/methods/messages.acceptUrlAuth.html) + + + diff --git a/docs/API_docs/types/User.md b/docs/API_docs/types/User.md new file mode 100644 index 0000000000..5ea52ace19 --- /dev/null +++ b/docs/API_docs/types/User.md @@ -0,0 +1,68 @@ +--- +title: User +description: constructors and methods of type User +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: User +[Back to types index](index.html) + +You can directly provide the [Update](Update.html) or [Message](Message.html) object here, MadelineProto will automatically extract the destination chat id. + +The following syntaxes can also be used: + +```php +$User = '@username'; // Username + +$User = $update; // Update objects received in the event handler + +$User = 'me'; // The currently logged-in user + +$User = 44700; // bot API id (users) +$User = -492772765; // bot API id (chats) +$User = -10038575794; // bot API id (channels) + +$User = 'https://t.me/danogentili'; // t.me URLs +$User = 'https://t.me/joinchat/asfln1-21fa_'; // t.me invite links + +``` + +You can also provide one of the following objects, instead, MadelineProto will handle conversion automatically: + +- [Chat](Chat.html) +- [User](User.html) +- [InputPeer](InputPeer.html) +- [InputDialogPeer](InputDialogPeer.html) +- [InputNotifyPeer](InputNotifyPeer.html) +- [InputUser](InputUser.html) +- [InputChannel](InputChannel.html) +- [Peer](Peer.html) +- [DialogPeer](DialogPeer.html) +- [NotifyPeer](NotifyPeer.html) +- [Chat](Chat.html) + + + + +### Possible values (constructors): + +[userEmpty](/API_docs/constructors/userEmpty.html) + +[user](/API_docs/constructors/user.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->updateProfile](/API_docs/methods/account.updateProfile.html) + +[$MadelineProto->account->updateUsername](/API_docs/methods/account.updateUsername.html) + +[$MadelineProto->account->changePhone](/API_docs/methods/account.changePhone.html) + +[$MadelineProto->users->getUsers](/API_docs/methods/users.getUsers.html) + +[$MadelineProto->contacts->importContactToken](/API_docs/methods/contacts.importContactToken.html) + + + diff --git a/docs/API_docs/types/UserFull.md b/docs/API_docs/types/UserFull.md new file mode 100644 index 0000000000..94126af727 --- /dev/null +++ b/docs/API_docs/types/UserFull.md @@ -0,0 +1,21 @@ +--- +title: UserFull +description: constructors and methods of type UserFull +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: UserFull +[Back to types index](index.html) + + + +### Possible values (constructors): + +[userFull](/API_docs/constructors/userFull.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/UserProfilePhoto.md b/docs/API_docs/types/UserProfilePhoto.md new file mode 100644 index 0000000000..d40125225d --- /dev/null +++ b/docs/API_docs/types/UserProfilePhoto.md @@ -0,0 +1,23 @@ +--- +title: UserProfilePhoto +description: constructors and methods of type UserProfilePhoto +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: UserProfilePhoto +[Back to types index](index.html) + + + +### Possible values (constructors): + +[userProfilePhotoEmpty](/API_docs/constructors/userProfilePhotoEmpty.html) + +[userProfilePhoto](/API_docs/constructors/userProfilePhoto.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/UserStatus.md b/docs/API_docs/types/UserStatus.md new file mode 100644 index 0000000000..4e60c1cb3d --- /dev/null +++ b/docs/API_docs/types/UserStatus.md @@ -0,0 +1,31 @@ +--- +title: UserStatus +description: constructors and methods of type UserStatus +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: UserStatus +[Back to types index](index.html) + + + +### Possible values (constructors): + +[userStatusEmpty](/API_docs/constructors/userStatusEmpty.html) + +[userStatusOnline](/API_docs/constructors/userStatusOnline.html) + +[userStatusOffline](/API_docs/constructors/userStatusOffline.html) + +[userStatusRecently](/API_docs/constructors/userStatusRecently.html) + +[userStatusLastWeek](/API_docs/constructors/userStatusLastWeek.html) + +[userStatusLastMonth](/API_docs/constructors/userStatusLastMonth.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/Username.md b/docs/API_docs/types/Username.md new file mode 100644 index 0000000000..888312c12e --- /dev/null +++ b/docs/API_docs/types/Username.md @@ -0,0 +1,21 @@ +--- +title: Username +description: constructors and methods of type Username +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: Username +[Back to types index](index.html) + + + +### Possible values (constructors): + +[username](/API_docs/constructors/username.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/VideoSize.md b/docs/API_docs/types/VideoSize.md new file mode 100644 index 0000000000..7fa106ae9f --- /dev/null +++ b/docs/API_docs/types/VideoSize.md @@ -0,0 +1,25 @@ +--- +title: VideoSize +description: constructors and methods of type VideoSize +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: VideoSize +[Back to types index](index.html) + + + +### Possible values (constructors): + +[videoSize](/API_docs/constructors/videoSize.html) + +[videoSizeEmojiMarkup](/API_docs/constructors/videoSizeEmojiMarkup.html) + +[videoSizeStickerMarkup](/API_docs/constructors/videoSizeStickerMarkup.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/WallPaper.md b/docs/API_docs/types/WallPaper.md new file mode 100644 index 0000000000..3608089c5f --- /dev/null +++ b/docs/API_docs/types/WallPaper.md @@ -0,0 +1,29 @@ +--- +title: WallPaper +description: constructors and methods of type WallPaper +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: WallPaper +[Back to types index](index.html) + + + +### Possible values (constructors): + +[wallPaper](/API_docs/constructors/wallPaper.html) + +[wallPaperNoFile](/API_docs/constructors/wallPaperNoFile.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getWallPaper](/API_docs/methods/account.getWallPaper.html) + +[$MadelineProto->account->uploadWallPaper](/API_docs/methods/account.uploadWallPaper.html) + +[$MadelineProto->account->getMultiWallPapers](/API_docs/methods/account.getMultiWallPapers.html) + + + diff --git a/docs/API_docs/types/WallPaperSettings.md b/docs/API_docs/types/WallPaperSettings.md new file mode 100644 index 0000000000..3e08eb00cd --- /dev/null +++ b/docs/API_docs/types/WallPaperSettings.md @@ -0,0 +1,21 @@ +--- +title: WallPaperSettings +description: constructors and methods of type WallPaperSettings +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: WallPaperSettings +[Back to types index](index.html) + + + +### Possible values (constructors): + +[wallPaperSettings](/API_docs/constructors/wallPaperSettings.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/WebAuthorization.md b/docs/API_docs/types/WebAuthorization.md new file mode 100644 index 0000000000..83add1c76f --- /dev/null +++ b/docs/API_docs/types/WebAuthorization.md @@ -0,0 +1,21 @@ +--- +title: WebAuthorization +description: constructors and methods of type WebAuthorization +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: WebAuthorization +[Back to types index](index.html) + + + +### Possible values (constructors): + +[webAuthorization](/API_docs/constructors/webAuthorization.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/WebDocument.md b/docs/API_docs/types/WebDocument.md new file mode 100644 index 0000000000..44fc533899 --- /dev/null +++ b/docs/API_docs/types/WebDocument.md @@ -0,0 +1,23 @@ +--- +title: WebDocument +description: constructors and methods of type WebDocument +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: WebDocument +[Back to types index](index.html) + + + +### Possible values (constructors): + +[webDocument](/API_docs/constructors/webDocument.html) + +[webDocumentNoProxy](/API_docs/constructors/webDocumentNoProxy.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/WebPage.md b/docs/API_docs/types/WebPage.md new file mode 100644 index 0000000000..d16f78caae --- /dev/null +++ b/docs/API_docs/types/WebPage.md @@ -0,0 +1,27 @@ +--- +title: WebPage +description: constructors and methods of type WebPage +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: WebPage +[Back to types index](index.html) + + + +### Possible values (constructors): + +[webPageEmpty](/API_docs/constructors/webPageEmpty.html) + +[webPagePending](/API_docs/constructors/webPagePending.html) + +[webPage](/API_docs/constructors/webPage.html) + +[webPageNotModified](/API_docs/constructors/webPageNotModified.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/WebPageAttribute.md b/docs/API_docs/types/WebPageAttribute.md new file mode 100644 index 0000000000..739aff13bb --- /dev/null +++ b/docs/API_docs/types/WebPageAttribute.md @@ -0,0 +1,25 @@ +--- +title: WebPageAttribute +description: constructors and methods of type WebPageAttribute +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: WebPageAttribute +[Back to types index](index.html) + + + +### Possible values (constructors): + +[webPageAttributeTheme](/API_docs/constructors/webPageAttributeTheme.html) + +[webPageAttributeStory](/API_docs/constructors/webPageAttributeStory.html) + +[webPageAttributeStickerSet](/API_docs/constructors/webPageAttributeStickerSet.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/WebViewMessageSent.md b/docs/API_docs/types/WebViewMessageSent.md new file mode 100644 index 0000000000..497c20d1a8 --- /dev/null +++ b/docs/API_docs/types/WebViewMessageSent.md @@ -0,0 +1,23 @@ +--- +title: WebViewMessageSent +description: constructors and methods of type WebViewMessageSent +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: WebViewMessageSent +[Back to types index](index.html) + + + +### Possible values (constructors): + +[webViewMessageSent](/API_docs/constructors/webViewMessageSent.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->sendWebViewResultMessage](/API_docs/methods/messages.sendWebViewResultMessage.html) + + + diff --git a/docs/API_docs/types/WebViewResult.md b/docs/API_docs/types/WebViewResult.md new file mode 100644 index 0000000000..595c3e2b96 --- /dev/null +++ b/docs/API_docs/types/WebViewResult.md @@ -0,0 +1,23 @@ +--- +title: WebViewResult +description: constructors and methods of type WebViewResult +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: WebViewResult +[Back to types index](index.html) + + + +### Possible values (constructors): + +[webViewResultUrl](/API_docs/constructors/webViewResultUrl.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->requestWebView](/API_docs/methods/messages.requestWebView.html) + + + diff --git a/docs/API_docs/types/X.md b/docs/API_docs/types/X.md new file mode 100644 index 0000000000..2f8bed5f2d --- /dev/null +++ b/docs/API_docs/types/X.md @@ -0,0 +1,35 @@ +--- +title: X +description: constructors and methods of type X +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Type: X +[Back to types index](index.html) + + + +### Possible values (constructors): + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->invokeAfterMsg](/API_docs/methods/invokeAfterMsg.html) + +[$MadelineProto->invokeAfterMsgs](/API_docs/methods/invokeAfterMsgs.html) + +[$MadelineProto->initConnection](/API_docs/methods/initConnection.html) + +[$MadelineProto->invokeWithLayer](/API_docs/methods/invokeWithLayer.html) + +[$MadelineProto->invokeWithoutUpdates](/API_docs/methods/invokeWithoutUpdates.html) + +[$MadelineProto->invokeWithMessagesRange](/API_docs/methods/invokeWithMessagesRange.html) + +[$MadelineProto->invokeWithTakeout](/API_docs/methods/invokeWithTakeout.html) + +[$MadelineProto->invokeWithBusinessConnection](/API_docs/methods/invokeWithBusinessConnection.html) + + + diff --git a/docs/API_docs/types/account.AuthorizationForm.md b/docs/API_docs/types/account.AuthorizationForm.md new file mode 100644 index 0000000000..14dffa3dd4 --- /dev/null +++ b/docs/API_docs/types/account.AuthorizationForm.md @@ -0,0 +1,24 @@ +--- +title: account.AuthorizationForm +description: constructors and methods of type account.AuthorizationForm +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_AuthorizationForm.html +--- +# Type: account.AuthorizationForm +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.authorizationForm](/API_docs/constructors/account.authorizationForm.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getAuthorizationForm](/API_docs/methods/account.getAuthorizationForm.html) + + + diff --git a/docs/API_docs/types/account.Authorizations.md b/docs/API_docs/types/account.Authorizations.md new file mode 100644 index 0000000000..b803e7c5f9 --- /dev/null +++ b/docs/API_docs/types/account.Authorizations.md @@ -0,0 +1,24 @@ +--- +title: account.Authorizations +description: constructors and methods of type account.Authorizations +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_Authorizations.html +--- +# Type: account.Authorizations +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.authorizations](/API_docs/constructors/account.authorizations.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getAuthorizations](/API_docs/methods/account.getAuthorizations.html) + + + diff --git a/docs/API_docs/types/account.AutoDownloadSettings.md b/docs/API_docs/types/account.AutoDownloadSettings.md new file mode 100644 index 0000000000..1ffadead2c --- /dev/null +++ b/docs/API_docs/types/account.AutoDownloadSettings.md @@ -0,0 +1,24 @@ +--- +title: account.AutoDownloadSettings +description: constructors and methods of type account.AutoDownloadSettings +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_AutoDownloadSettings.html +--- +# Type: account.AutoDownloadSettings +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.autoDownloadSettings](/API_docs/constructors/account.autoDownloadSettings.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getAutoDownloadSettings](/API_docs/methods/account.getAutoDownloadSettings.html) + + + diff --git a/docs/API_docs/types/account.AutoSaveSettings.md b/docs/API_docs/types/account.AutoSaveSettings.md new file mode 100644 index 0000000000..ef048ae82c --- /dev/null +++ b/docs/API_docs/types/account.AutoSaveSettings.md @@ -0,0 +1,24 @@ +--- +title: account.AutoSaveSettings +description: constructors and methods of type account.AutoSaveSettings +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_AutoSaveSettings.html +--- +# Type: account.AutoSaveSettings +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.autoSaveSettings](/API_docs/constructors/account.autoSaveSettings.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getAutoSaveSettings](/API_docs/methods/account.getAutoSaveSettings.html) + + + diff --git a/docs/API_docs/types/account.BusinessChatLinks.md b/docs/API_docs/types/account.BusinessChatLinks.md new file mode 100644 index 0000000000..653c8fb8e0 --- /dev/null +++ b/docs/API_docs/types/account.BusinessChatLinks.md @@ -0,0 +1,24 @@ +--- +title: account.BusinessChatLinks +description: constructors and methods of type account.BusinessChatLinks +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_BusinessChatLinks.html +--- +# Type: account.BusinessChatLinks +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.businessChatLinks](/API_docs/constructors/account.businessChatLinks.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getBusinessChatLinks](/API_docs/methods/account.getBusinessChatLinks.html) + + + diff --git a/docs/API_docs/types/account.ConnectedBots.md b/docs/API_docs/types/account.ConnectedBots.md new file mode 100644 index 0000000000..b05f763e47 --- /dev/null +++ b/docs/API_docs/types/account.ConnectedBots.md @@ -0,0 +1,24 @@ +--- +title: account.ConnectedBots +description: constructors and methods of type account.ConnectedBots +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_ConnectedBots.html +--- +# Type: account.ConnectedBots +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.connectedBots](/API_docs/constructors/account.connectedBots.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getConnectedBots](/API_docs/methods/account.getConnectedBots.html) + + + diff --git a/docs/API_docs/types/account.ContentSettings.md b/docs/API_docs/types/account.ContentSettings.md new file mode 100644 index 0000000000..c8c11f3080 --- /dev/null +++ b/docs/API_docs/types/account.ContentSettings.md @@ -0,0 +1,24 @@ +--- +title: account.ContentSettings +description: constructors and methods of type account.ContentSettings +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_ContentSettings.html +--- +# Type: account.ContentSettings +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.contentSettings](/API_docs/constructors/account.contentSettings.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getContentSettings](/API_docs/methods/account.getContentSettings.html) + + + diff --git a/docs/API_docs/types/account.EmailVerified.md b/docs/API_docs/types/account.EmailVerified.md new file mode 100644 index 0000000000..f1704d1f06 --- /dev/null +++ b/docs/API_docs/types/account.EmailVerified.md @@ -0,0 +1,26 @@ +--- +title: account.EmailVerified +description: constructors and methods of type account.EmailVerified +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_EmailVerified.html +--- +# Type: account.EmailVerified +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.emailVerified](/API_docs/constructors/account.emailVerified.html) + +[account.emailVerifiedLogin](/API_docs/constructors/account.emailVerifiedLogin.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->verifyEmail](/API_docs/methods/account.verifyEmail.html) + + + diff --git a/docs/API_docs/types/account.EmojiStatuses.md b/docs/API_docs/types/account.EmojiStatuses.md new file mode 100644 index 0000000000..166738cee8 --- /dev/null +++ b/docs/API_docs/types/account.EmojiStatuses.md @@ -0,0 +1,30 @@ +--- +title: account.EmojiStatuses +description: constructors and methods of type account.EmojiStatuses +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_EmojiStatuses.html +--- +# Type: account.EmojiStatuses +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.emojiStatusesNotModified](/API_docs/constructors/account.emojiStatusesNotModified.html) + +[account.emojiStatuses](/API_docs/constructors/account.emojiStatuses.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getDefaultEmojiStatuses](/API_docs/methods/account.getDefaultEmojiStatuses.html) + +[$MadelineProto->account->getRecentEmojiStatuses](/API_docs/methods/account.getRecentEmojiStatuses.html) + +[$MadelineProto->account->getChannelDefaultEmojiStatuses](/API_docs/methods/account.getChannelDefaultEmojiStatuses.html) + + + diff --git a/docs/API_docs/types/account.Password.md b/docs/API_docs/types/account.Password.md new file mode 100644 index 0000000000..ef50f5c78f --- /dev/null +++ b/docs/API_docs/types/account.Password.md @@ -0,0 +1,24 @@ +--- +title: account.Password +description: constructors and methods of type account.Password +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_Password.html +--- +# Type: account.Password +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.password](/API_docs/constructors/account.password.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getPassword](/API_docs/methods/account.getPassword.html) + + + diff --git a/docs/API_docs/types/account.PasswordInputSettings.md b/docs/API_docs/types/account.PasswordInputSettings.md new file mode 100644 index 0000000000..412545af59 --- /dev/null +++ b/docs/API_docs/types/account.PasswordInputSettings.md @@ -0,0 +1,22 @@ +--- +title: account.PasswordInputSettings +description: constructors and methods of type account.PasswordInputSettings +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_PasswordInputSettings.html +--- +# Type: account.PasswordInputSettings +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.passwordInputSettings](/API_docs/constructors/account.passwordInputSettings.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/account.PasswordSettings.md b/docs/API_docs/types/account.PasswordSettings.md new file mode 100644 index 0000000000..f1585ed61c --- /dev/null +++ b/docs/API_docs/types/account.PasswordSettings.md @@ -0,0 +1,24 @@ +--- +title: account.PasswordSettings +description: constructors and methods of type account.PasswordSettings +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_PasswordSettings.html +--- +# Type: account.PasswordSettings +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.passwordSettings](/API_docs/constructors/account.passwordSettings.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getPasswordSettings](/API_docs/methods/account.getPasswordSettings.html) + + + diff --git a/docs/API_docs/types/account.PrivacyRules.md b/docs/API_docs/types/account.PrivacyRules.md new file mode 100644 index 0000000000..88d5381810 --- /dev/null +++ b/docs/API_docs/types/account.PrivacyRules.md @@ -0,0 +1,26 @@ +--- +title: account.PrivacyRules +description: constructors and methods of type account.PrivacyRules +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_PrivacyRules.html +--- +# Type: account.PrivacyRules +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.privacyRules](/API_docs/constructors/account.privacyRules.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getPrivacy](/API_docs/methods/account.getPrivacy.html) + +[$MadelineProto->account->setPrivacy](/API_docs/methods/account.setPrivacy.html) + + + diff --git a/docs/API_docs/types/account.ResetPasswordResult.md b/docs/API_docs/types/account.ResetPasswordResult.md new file mode 100644 index 0000000000..1f2c2474a5 --- /dev/null +++ b/docs/API_docs/types/account.ResetPasswordResult.md @@ -0,0 +1,28 @@ +--- +title: account.ResetPasswordResult +description: constructors and methods of type account.ResetPasswordResult +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_ResetPasswordResult.html +--- +# Type: account.ResetPasswordResult +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.resetPasswordFailedWait](/API_docs/constructors/account.resetPasswordFailedWait.html) + +[account.resetPasswordRequestedWait](/API_docs/constructors/account.resetPasswordRequestedWait.html) + +[account.resetPasswordOk](/API_docs/constructors/account.resetPasswordOk.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->resetPassword](/API_docs/methods/account.resetPassword.html) + + + diff --git a/docs/API_docs/types/account.ResolvedBusinessChatLinks.md b/docs/API_docs/types/account.ResolvedBusinessChatLinks.md new file mode 100644 index 0000000000..4aad95fe1d --- /dev/null +++ b/docs/API_docs/types/account.ResolvedBusinessChatLinks.md @@ -0,0 +1,24 @@ +--- +title: account.ResolvedBusinessChatLinks +description: constructors and methods of type account.ResolvedBusinessChatLinks +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_ResolvedBusinessChatLinks.html +--- +# Type: account.ResolvedBusinessChatLinks +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.resolvedBusinessChatLinks](/API_docs/constructors/account.resolvedBusinessChatLinks.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->resolveBusinessChatLink](/API_docs/methods/account.resolveBusinessChatLink.html) + + + diff --git a/docs/API_docs/types/account.SavedRingtone.md b/docs/API_docs/types/account.SavedRingtone.md new file mode 100644 index 0000000000..6ebfa419be --- /dev/null +++ b/docs/API_docs/types/account.SavedRingtone.md @@ -0,0 +1,26 @@ +--- +title: account.SavedRingtone +description: constructors and methods of type account.SavedRingtone +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_SavedRingtone.html +--- +# Type: account.SavedRingtone +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.savedRingtone](/API_docs/constructors/account.savedRingtone.html) + +[account.savedRingtoneConverted](/API_docs/constructors/account.savedRingtoneConverted.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->saveRingtone](/API_docs/methods/account.saveRingtone.html) + + + diff --git a/docs/API_docs/types/account.SavedRingtones.md b/docs/API_docs/types/account.SavedRingtones.md new file mode 100644 index 0000000000..c76a13cdce --- /dev/null +++ b/docs/API_docs/types/account.SavedRingtones.md @@ -0,0 +1,26 @@ +--- +title: account.SavedRingtones +description: constructors and methods of type account.SavedRingtones +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_SavedRingtones.html +--- +# Type: account.SavedRingtones +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.savedRingtonesNotModified](/API_docs/constructors/account.savedRingtonesNotModified.html) + +[account.savedRingtones](/API_docs/constructors/account.savedRingtones.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getSavedRingtones](/API_docs/methods/account.getSavedRingtones.html) + + + diff --git a/docs/API_docs/types/account.SentEmailCode.md b/docs/API_docs/types/account.SentEmailCode.md new file mode 100644 index 0000000000..e590ad5e6b --- /dev/null +++ b/docs/API_docs/types/account.SentEmailCode.md @@ -0,0 +1,24 @@ +--- +title: account.SentEmailCode +description: constructors and methods of type account.SentEmailCode +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_SentEmailCode.html +--- +# Type: account.SentEmailCode +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.sentEmailCode](/API_docs/constructors/account.sentEmailCode.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->sendVerifyEmailCode](/API_docs/methods/account.sendVerifyEmailCode.html) + + + diff --git a/docs/API_docs/types/account.Takeout.md b/docs/API_docs/types/account.Takeout.md new file mode 100644 index 0000000000..b538050ec0 --- /dev/null +++ b/docs/API_docs/types/account.Takeout.md @@ -0,0 +1,24 @@ +--- +title: account.Takeout +description: constructors and methods of type account.Takeout +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_Takeout.html +--- +# Type: account.Takeout +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.takeout](/API_docs/constructors/account.takeout.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->initTakeoutSession](/API_docs/methods/account.initTakeoutSession.html) + + + diff --git a/docs/API_docs/types/account.Themes.md b/docs/API_docs/types/account.Themes.md new file mode 100644 index 0000000000..a3ebfc1c1f --- /dev/null +++ b/docs/API_docs/types/account.Themes.md @@ -0,0 +1,28 @@ +--- +title: account.Themes +description: constructors and methods of type account.Themes +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_Themes.html +--- +# Type: account.Themes +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.themesNotModified](/API_docs/constructors/account.themesNotModified.html) + +[account.themes](/API_docs/constructors/account.themes.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getThemes](/API_docs/methods/account.getThemes.html) + +[$MadelineProto->account->getChatThemes](/API_docs/methods/account.getChatThemes.html) + + + diff --git a/docs/API_docs/types/account.TmpPassword.md b/docs/API_docs/types/account.TmpPassword.md new file mode 100644 index 0000000000..0c17c97c0f --- /dev/null +++ b/docs/API_docs/types/account.TmpPassword.md @@ -0,0 +1,24 @@ +--- +title: account.TmpPassword +description: constructors and methods of type account.TmpPassword +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_TmpPassword.html +--- +# Type: account.TmpPassword +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.tmpPassword](/API_docs/constructors/account.tmpPassword.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getTmpPassword](/API_docs/methods/account.getTmpPassword.html) + + + diff --git a/docs/API_docs/types/account.WallPapers.md b/docs/API_docs/types/account.WallPapers.md new file mode 100644 index 0000000000..120222e108 --- /dev/null +++ b/docs/API_docs/types/account.WallPapers.md @@ -0,0 +1,26 @@ +--- +title: account.WallPapers +description: constructors and methods of type account.WallPapers +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_WallPapers.html +--- +# Type: account.WallPapers +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.wallPapersNotModified](/API_docs/constructors/account.wallPapersNotModified.html) + +[account.wallPapers](/API_docs/constructors/account.wallPapers.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getWallPapers](/API_docs/methods/account.getWallPapers.html) + + + diff --git a/docs/API_docs/types/account.WebAuthorizations.md b/docs/API_docs/types/account.WebAuthorizations.md new file mode 100644 index 0000000000..dfb4a1d708 --- /dev/null +++ b/docs/API_docs/types/account.WebAuthorizations.md @@ -0,0 +1,24 @@ +--- +title: account.WebAuthorizations +description: constructors and methods of type account.WebAuthorizations +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/account_WebAuthorizations.html +--- +# Type: account.WebAuthorizations +[Back to types index](index.html) + + + +### Possible values (constructors): + +[account.webAuthorizations](/API_docs/constructors/account.webAuthorizations.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->account->getWebAuthorizations](/API_docs/methods/account.getWebAuthorizations.html) + + + diff --git a/docs/API_docs/types/auth.Authorization.md b/docs/API_docs/types/auth.Authorization.md new file mode 100644 index 0000000000..464cf4692c --- /dev/null +++ b/docs/API_docs/types/auth.Authorization.md @@ -0,0 +1,38 @@ +--- +title: auth.Authorization +description: constructors and methods of type auth.Authorization +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/auth_Authorization.html +--- +# Type: auth.Authorization +[Back to types index](index.html) + + + +### Possible values (constructors): + +[auth.authorization](/API_docs/constructors/auth.authorization.html) + +[auth.authorizationSignUpRequired](/API_docs/constructors/auth.authorizationSignUpRequired.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->auth->signUp](/API_docs/methods/auth.signUp.html) + +[$MadelineProto->auth->signIn](/API_docs/methods/auth.signIn.html) + +[$MadelineProto->auth->importAuthorization](/API_docs/methods/auth.importAuthorization.html) + +[$MadelineProto->auth->importBotAuthorization](/API_docs/methods/auth.importBotAuthorization.html) + +[$MadelineProto->auth->checkPassword](/API_docs/methods/auth.checkPassword.html) + +[$MadelineProto->auth->recoverPassword](/API_docs/methods/auth.recoverPassword.html) + +[$MadelineProto->auth->importWebTokenAuthorization](/API_docs/methods/auth.importWebTokenAuthorization.html) + + + diff --git a/docs/API_docs/types/auth.CodeType.md b/docs/API_docs/types/auth.CodeType.md new file mode 100644 index 0000000000..2fc47b6a21 --- /dev/null +++ b/docs/API_docs/types/auth.CodeType.md @@ -0,0 +1,30 @@ +--- +title: auth.CodeType +description: constructors and methods of type auth.CodeType +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/auth_CodeType.html +--- +# Type: auth.CodeType +[Back to types index](index.html) + + + +### Possible values (constructors): + +[auth.codeTypeSms](/API_docs/constructors/auth.codeTypeSms.html) + +[auth.codeTypeCall](/API_docs/constructors/auth.codeTypeCall.html) + +[auth.codeTypeFlashCall](/API_docs/constructors/auth.codeTypeFlashCall.html) + +[auth.codeTypeMissedCall](/API_docs/constructors/auth.codeTypeMissedCall.html) + +[auth.codeTypeFragmentSms](/API_docs/constructors/auth.codeTypeFragmentSms.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/auth.ExportedAuthorization.md b/docs/API_docs/types/auth.ExportedAuthorization.md new file mode 100644 index 0000000000..3cba26b6ad --- /dev/null +++ b/docs/API_docs/types/auth.ExportedAuthorization.md @@ -0,0 +1,24 @@ +--- +title: auth.ExportedAuthorization +description: constructors and methods of type auth.ExportedAuthorization +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/auth_ExportedAuthorization.html +--- +# Type: auth.ExportedAuthorization +[Back to types index](index.html) + + + +### Possible values (constructors): + +[auth.exportedAuthorization](/API_docs/constructors/auth.exportedAuthorization.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->auth->exportAuthorization](/API_docs/methods/auth.exportAuthorization.html) + + + diff --git a/docs/API_docs/types/auth.LoggedOut.md b/docs/API_docs/types/auth.LoggedOut.md new file mode 100644 index 0000000000..2b43f77508 --- /dev/null +++ b/docs/API_docs/types/auth.LoggedOut.md @@ -0,0 +1,24 @@ +--- +title: auth.LoggedOut +description: constructors and methods of type auth.LoggedOut +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/auth_LoggedOut.html +--- +# Type: auth.LoggedOut +[Back to types index](index.html) + + + +### Possible values (constructors): + +[auth.loggedOut](/API_docs/constructors/auth.loggedOut.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->auth->logOut](/API_docs/methods/auth.logOut.html) + + + diff --git a/docs/API_docs/types/auth.LoginToken.md b/docs/API_docs/types/auth.LoginToken.md new file mode 100644 index 0000000000..04a7de626f --- /dev/null +++ b/docs/API_docs/types/auth.LoginToken.md @@ -0,0 +1,30 @@ +--- +title: auth.LoginToken +description: constructors and methods of type auth.LoginToken +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/auth_LoginToken.html +--- +# Type: auth.LoginToken +[Back to types index](index.html) + + + +### Possible values (constructors): + +[auth.loginToken](/API_docs/constructors/auth.loginToken.html) + +[auth.loginTokenMigrateTo](/API_docs/constructors/auth.loginTokenMigrateTo.html) + +[auth.loginTokenSuccess](/API_docs/constructors/auth.loginTokenSuccess.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->auth->exportLoginToken](/API_docs/methods/auth.exportLoginToken.html) + +[$MadelineProto->auth->importLoginToken](/API_docs/methods/auth.importLoginToken.html) + + + diff --git a/docs/API_docs/types/auth.PasswordRecovery.md b/docs/API_docs/types/auth.PasswordRecovery.md new file mode 100644 index 0000000000..824a93ed7f --- /dev/null +++ b/docs/API_docs/types/auth.PasswordRecovery.md @@ -0,0 +1,24 @@ +--- +title: auth.PasswordRecovery +description: constructors and methods of type auth.PasswordRecovery +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/auth_PasswordRecovery.html +--- +# Type: auth.PasswordRecovery +[Back to types index](index.html) + + + +### Possible values (constructors): + +[auth.passwordRecovery](/API_docs/constructors/auth.passwordRecovery.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->auth->requestPasswordRecovery](/API_docs/methods/auth.requestPasswordRecovery.html) + + + diff --git a/docs/API_docs/types/auth.SentCode.md b/docs/API_docs/types/auth.SentCode.md new file mode 100644 index 0000000000..b5fcff84f3 --- /dev/null +++ b/docs/API_docs/types/auth.SentCode.md @@ -0,0 +1,36 @@ +--- +title: auth.SentCode +description: constructors and methods of type auth.SentCode +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/auth_SentCode.html +--- +# Type: auth.SentCode +[Back to types index](index.html) + + + +### Possible values (constructors): + +[auth.sentCode](/API_docs/constructors/auth.sentCode.html) + +[auth.sentCodeSuccess](/API_docs/constructors/auth.sentCodeSuccess.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->auth->sendCode](/API_docs/methods/auth.sendCode.html) + +[$MadelineProto->auth->resendCode](/API_docs/methods/auth.resendCode.html) + +[$MadelineProto->auth->resetLoginEmail](/API_docs/methods/auth.resetLoginEmail.html) + +[$MadelineProto->account->sendChangePhoneCode](/API_docs/methods/account.sendChangePhoneCode.html) + +[$MadelineProto->account->sendConfirmPhoneCode](/API_docs/methods/account.sendConfirmPhoneCode.html) + +[$MadelineProto->account->sendVerifyPhoneCode](/API_docs/methods/account.sendVerifyPhoneCode.html) + + + diff --git a/docs/API_docs/types/auth.SentCodeType.md b/docs/API_docs/types/auth.SentCodeType.md new file mode 100644 index 0000000000..e421173221 --- /dev/null +++ b/docs/API_docs/types/auth.SentCodeType.md @@ -0,0 +1,42 @@ +--- +title: auth.SentCodeType +description: constructors and methods of type auth.SentCodeType +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/auth_SentCodeType.html +--- +# Type: auth.SentCodeType +[Back to types index](index.html) + + + +### Possible values (constructors): + +[auth.sentCodeTypeApp](/API_docs/constructors/auth.sentCodeTypeApp.html) + +[auth.sentCodeTypeSms](/API_docs/constructors/auth.sentCodeTypeSms.html) + +[auth.sentCodeTypeCall](/API_docs/constructors/auth.sentCodeTypeCall.html) + +[auth.sentCodeTypeFlashCall](/API_docs/constructors/auth.sentCodeTypeFlashCall.html) + +[auth.sentCodeTypeMissedCall](/API_docs/constructors/auth.sentCodeTypeMissedCall.html) + +[auth.sentCodeTypeEmailCode](/API_docs/constructors/auth.sentCodeTypeEmailCode.html) + +[auth.sentCodeTypeSetUpEmailRequired](/API_docs/constructors/auth.sentCodeTypeSetUpEmailRequired.html) + +[auth.sentCodeTypeFragmentSms](/API_docs/constructors/auth.sentCodeTypeFragmentSms.html) + +[auth.sentCodeTypeFirebaseSms](/API_docs/constructors/auth.sentCodeTypeFirebaseSms.html) + +[auth.sentCodeTypeSmsWord](/API_docs/constructors/auth.sentCodeTypeSmsWord.html) + +[auth.sentCodeTypeSmsPhrase](/API_docs/constructors/auth.sentCodeTypeSmsPhrase.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/bots.BotInfo.md b/docs/API_docs/types/bots.BotInfo.md new file mode 100644 index 0000000000..b60e554ed4 --- /dev/null +++ b/docs/API_docs/types/bots.BotInfo.md @@ -0,0 +1,24 @@ +--- +title: bots.BotInfo +description: constructors and methods of type bots.BotInfo +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/bots_BotInfo.html +--- +# Type: bots.BotInfo +[Back to types index](index.html) + + + +### Possible values (constructors): + +[bots.botInfo](/API_docs/constructors/bots.botInfo.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->bots->getBotInfo](/API_docs/methods/bots.getBotInfo.html) + + + diff --git a/docs/API_docs/types/bytes.md b/docs/API_docs/types/bytes.md new file mode 100644 index 0000000000..ff1d00fbe5 --- /dev/null +++ b/docs/API_docs/types/bytes.md @@ -0,0 +1,13 @@ +--- +title: bytes +description: A string of variable length +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: bytes +[Back to constructor index](index.html) + +```php +$bytes = "simple string of bytes"; +``` + diff --git a/docs/API_docs/types/channels.AdminLogResults.md b/docs/API_docs/types/channels.AdminLogResults.md new file mode 100644 index 0000000000..19cd1d71ae --- /dev/null +++ b/docs/API_docs/types/channels.AdminLogResults.md @@ -0,0 +1,24 @@ +--- +title: channels.AdminLogResults +description: constructors and methods of type channels.AdminLogResults +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/channels_AdminLogResults.html +--- +# Type: channels.AdminLogResults +[Back to types index](index.html) + + + +### Possible values (constructors): + +[channels.adminLogResults](/API_docs/constructors/channels.adminLogResults.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->channels->getAdminLog](/API_docs/methods/channels.getAdminLog.html) + + + diff --git a/docs/API_docs/types/channels.ChannelParticipant.md b/docs/API_docs/types/channels.ChannelParticipant.md new file mode 100644 index 0000000000..86a384419d --- /dev/null +++ b/docs/API_docs/types/channels.ChannelParticipant.md @@ -0,0 +1,24 @@ +--- +title: channels.ChannelParticipant +description: constructors and methods of type channels.ChannelParticipant +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/channels_ChannelParticipant.html +--- +# Type: channels.ChannelParticipant +[Back to types index](index.html) + + + +### Possible values (constructors): + +[channels.channelParticipant](/API_docs/constructors/channels.channelParticipant.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->channels->getParticipant](/API_docs/methods/channels.getParticipant.html) + + + diff --git a/docs/API_docs/types/channels.ChannelParticipants.md b/docs/API_docs/types/channels.ChannelParticipants.md new file mode 100644 index 0000000000..ebd77652e4 --- /dev/null +++ b/docs/API_docs/types/channels.ChannelParticipants.md @@ -0,0 +1,26 @@ +--- +title: channels.ChannelParticipants +description: constructors and methods of type channels.ChannelParticipants +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/channels_ChannelParticipants.html +--- +# Type: channels.ChannelParticipants +[Back to types index](index.html) + + + +### Possible values (constructors): + +[channels.channelParticipants](/API_docs/constructors/channels.channelParticipants.html) + +[channels.channelParticipantsNotModified](/API_docs/constructors/channels.channelParticipantsNotModified.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->channels->getParticipants](/API_docs/methods/channels.getParticipants.html) + + + diff --git a/docs/API_docs/types/channels.SendAsPeers.md b/docs/API_docs/types/channels.SendAsPeers.md new file mode 100644 index 0000000000..47585d0b34 --- /dev/null +++ b/docs/API_docs/types/channels.SendAsPeers.md @@ -0,0 +1,24 @@ +--- +title: channels.SendAsPeers +description: constructors and methods of type channels.SendAsPeers +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/channels_SendAsPeers.html +--- +# Type: channels.SendAsPeers +[Back to types index](index.html) + + + +### Possible values (constructors): + +[channels.sendAsPeers](/API_docs/constructors/channels.sendAsPeers.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->channels->getSendAs](/API_docs/methods/channels.getSendAs.html) + + + diff --git a/docs/API_docs/types/channels.SponsoredMessageReportResult.md b/docs/API_docs/types/channels.SponsoredMessageReportResult.md new file mode 100644 index 0000000000..e9169be7af --- /dev/null +++ b/docs/API_docs/types/channels.SponsoredMessageReportResult.md @@ -0,0 +1,28 @@ +--- +title: channels.SponsoredMessageReportResult +description: constructors and methods of type channels.SponsoredMessageReportResult +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/channels_SponsoredMessageReportResult.html +--- +# Type: channels.SponsoredMessageReportResult +[Back to types index](index.html) + + + +### Possible values (constructors): + +[channels.sponsoredMessageReportResultChooseOption](/API_docs/constructors/channels.sponsoredMessageReportResultChooseOption.html) + +[channels.sponsoredMessageReportResultAdsHidden](/API_docs/constructors/channels.sponsoredMessageReportResultAdsHidden.html) + +[channels.sponsoredMessageReportResultReported](/API_docs/constructors/channels.sponsoredMessageReportResultReported.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->channels->reportSponsoredMessage](/API_docs/methods/channels.reportSponsoredMessage.html) + + + diff --git a/docs/API_docs/types/chatlists.ChatlistInvite.md b/docs/API_docs/types/chatlists.ChatlistInvite.md new file mode 100644 index 0000000000..b829c96b38 --- /dev/null +++ b/docs/API_docs/types/chatlists.ChatlistInvite.md @@ -0,0 +1,26 @@ +--- +title: chatlists.ChatlistInvite +description: constructors and methods of type chatlists.ChatlistInvite +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/chatlists_ChatlistInvite.html +--- +# Type: chatlists.ChatlistInvite +[Back to types index](index.html) + + + +### Possible values (constructors): + +[chatlists.chatlistInviteAlready](/API_docs/constructors/chatlists.chatlistInviteAlready.html) + +[chatlists.chatlistInvite](/API_docs/constructors/chatlists.chatlistInvite.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->chatlists->checkChatlistInvite](/API_docs/methods/chatlists.checkChatlistInvite.html) + + + diff --git a/docs/API_docs/types/chatlists.ChatlistUpdates.md b/docs/API_docs/types/chatlists.ChatlistUpdates.md new file mode 100644 index 0000000000..677fab0d92 --- /dev/null +++ b/docs/API_docs/types/chatlists.ChatlistUpdates.md @@ -0,0 +1,24 @@ +--- +title: chatlists.ChatlistUpdates +description: constructors and methods of type chatlists.ChatlistUpdates +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/chatlists_ChatlistUpdates.html +--- +# Type: chatlists.ChatlistUpdates +[Back to types index](index.html) + + + +### Possible values (constructors): + +[chatlists.chatlistUpdates](/API_docs/constructors/chatlists.chatlistUpdates.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->chatlists->getChatlistUpdates](/API_docs/methods/chatlists.getChatlistUpdates.html) + + + diff --git a/docs/API_docs/types/chatlists.ExportedChatlistInvite.md b/docs/API_docs/types/chatlists.ExportedChatlistInvite.md new file mode 100644 index 0000000000..2936c7f33c --- /dev/null +++ b/docs/API_docs/types/chatlists.ExportedChatlistInvite.md @@ -0,0 +1,24 @@ +--- +title: chatlists.ExportedChatlistInvite +description: constructors and methods of type chatlists.ExportedChatlistInvite +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/chatlists_ExportedChatlistInvite.html +--- +# Type: chatlists.ExportedChatlistInvite +[Back to types index](index.html) + + + +### Possible values (constructors): + +[chatlists.exportedChatlistInvite](/API_docs/constructors/chatlists.exportedChatlistInvite.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->chatlists->exportChatlistInvite](/API_docs/methods/chatlists.exportChatlistInvite.html) + + + diff --git a/docs/API_docs/types/chatlists.ExportedInvites.md b/docs/API_docs/types/chatlists.ExportedInvites.md new file mode 100644 index 0000000000..612c401619 --- /dev/null +++ b/docs/API_docs/types/chatlists.ExportedInvites.md @@ -0,0 +1,24 @@ +--- +title: chatlists.ExportedInvites +description: constructors and methods of type chatlists.ExportedInvites +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/chatlists_ExportedInvites.html +--- +# Type: chatlists.ExportedInvites +[Back to types index](index.html) + + + +### Possible values (constructors): + +[chatlists.exportedInvites](/API_docs/constructors/chatlists.exportedInvites.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->chatlists->getExportedInvites](/API_docs/methods/chatlists.getExportedInvites.html) + + + diff --git a/docs/API_docs/types/contacts.Blocked.md b/docs/API_docs/types/contacts.Blocked.md new file mode 100644 index 0000000000..7483b714e3 --- /dev/null +++ b/docs/API_docs/types/contacts.Blocked.md @@ -0,0 +1,26 @@ +--- +title: contacts.Blocked +description: constructors and methods of type contacts.Blocked +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/contacts_Blocked.html +--- +# Type: contacts.Blocked +[Back to types index](index.html) + + + +### Possible values (constructors): + +[contacts.blocked](/API_docs/constructors/contacts.blocked.html) + +[contacts.blockedSlice](/API_docs/constructors/contacts.blockedSlice.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->contacts->getBlocked](/API_docs/methods/contacts.getBlocked.html) + + + diff --git a/docs/API_docs/types/contacts.ContactBirthdays.md b/docs/API_docs/types/contacts.ContactBirthdays.md new file mode 100644 index 0000000000..f345effb7f --- /dev/null +++ b/docs/API_docs/types/contacts.ContactBirthdays.md @@ -0,0 +1,24 @@ +--- +title: contacts.ContactBirthdays +description: constructors and methods of type contacts.ContactBirthdays +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/contacts_ContactBirthdays.html +--- +# Type: contacts.ContactBirthdays +[Back to types index](index.html) + + + +### Possible values (constructors): + +[contacts.contactBirthdays](/API_docs/constructors/contacts.contactBirthdays.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->contacts->getBirthdays](/API_docs/methods/contacts.getBirthdays.html) + + + diff --git a/docs/API_docs/types/contacts.Contacts.md b/docs/API_docs/types/contacts.Contacts.md new file mode 100644 index 0000000000..afef840053 --- /dev/null +++ b/docs/API_docs/types/contacts.Contacts.md @@ -0,0 +1,26 @@ +--- +title: contacts.Contacts +description: constructors and methods of type contacts.Contacts +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/contacts_Contacts.html +--- +# Type: contacts.Contacts +[Back to types index](index.html) + + + +### Possible values (constructors): + +[contacts.contactsNotModified](/API_docs/constructors/contacts.contactsNotModified.html) + +[contacts.contacts](/API_docs/constructors/contacts.contacts.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->contacts->getContacts](/API_docs/methods/contacts.getContacts.html) + + + diff --git a/docs/API_docs/types/contacts.Found.md b/docs/API_docs/types/contacts.Found.md new file mode 100644 index 0000000000..a78e235064 --- /dev/null +++ b/docs/API_docs/types/contacts.Found.md @@ -0,0 +1,24 @@ +--- +title: contacts.Found +description: constructors and methods of type contacts.Found +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/contacts_Found.html +--- +# Type: contacts.Found +[Back to types index](index.html) + + + +### Possible values (constructors): + +[contacts.found](/API_docs/constructors/contacts.found.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->contacts->search](/API_docs/methods/contacts.search.html) + + + diff --git a/docs/API_docs/types/contacts.ImportedContacts.md b/docs/API_docs/types/contacts.ImportedContacts.md new file mode 100644 index 0000000000..a9710a5ffc --- /dev/null +++ b/docs/API_docs/types/contacts.ImportedContacts.md @@ -0,0 +1,24 @@ +--- +title: contacts.ImportedContacts +description: constructors and methods of type contacts.ImportedContacts +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/contacts_ImportedContacts.html +--- +# Type: contacts.ImportedContacts +[Back to types index](index.html) + + + +### Possible values (constructors): + +[contacts.importedContacts](/API_docs/constructors/contacts.importedContacts.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->contacts->importContacts](/API_docs/methods/contacts.importContacts.html) + + + diff --git a/docs/API_docs/types/contacts.ResolvedPeer.md b/docs/API_docs/types/contacts.ResolvedPeer.md new file mode 100644 index 0000000000..f6dc482b26 --- /dev/null +++ b/docs/API_docs/types/contacts.ResolvedPeer.md @@ -0,0 +1,26 @@ +--- +title: contacts.ResolvedPeer +description: constructors and methods of type contacts.ResolvedPeer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/contacts_ResolvedPeer.html +--- +# Type: contacts.ResolvedPeer +[Back to types index](index.html) + + + +### Possible values (constructors): + +[contacts.resolvedPeer](/API_docs/constructors/contacts.resolvedPeer.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->contacts->resolveUsername](/API_docs/methods/contacts.resolveUsername.html) + +[$MadelineProto->contacts->resolvePhone](/API_docs/methods/contacts.resolvePhone.html) + + + diff --git a/docs/API_docs/types/contacts.TopPeers.md b/docs/API_docs/types/contacts.TopPeers.md new file mode 100644 index 0000000000..6776aa84d6 --- /dev/null +++ b/docs/API_docs/types/contacts.TopPeers.md @@ -0,0 +1,28 @@ +--- +title: contacts.TopPeers +description: constructors and methods of type contacts.TopPeers +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/contacts_TopPeers.html +--- +# Type: contacts.TopPeers +[Back to types index](index.html) + + + +### Possible values (constructors): + +[contacts.topPeersNotModified](/API_docs/constructors/contacts.topPeersNotModified.html) + +[contacts.topPeers](/API_docs/constructors/contacts.topPeers.html) + +[contacts.topPeersDisabled](/API_docs/constructors/contacts.topPeersDisabled.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->contacts->getTopPeers](/API_docs/methods/contacts.getTopPeers.html) + + + diff --git a/docs/API_docs/types/double.md b/docs/API_docs/types/double.md new file mode 100644 index 0000000000..6a0545ce05 --- /dev/null +++ b/docs/API_docs/types/double.md @@ -0,0 +1,10 @@ +--- +title: double +description: A double precision floating point number +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: double +[Back to constructor index](index.html) + +A double precision floating point number, single precision can also be used (float). diff --git a/docs/API_docs/types/fragment.CollectibleInfo.md b/docs/API_docs/types/fragment.CollectibleInfo.md new file mode 100644 index 0000000000..30da4fc66e --- /dev/null +++ b/docs/API_docs/types/fragment.CollectibleInfo.md @@ -0,0 +1,24 @@ +--- +title: fragment.CollectibleInfo +description: constructors and methods of type fragment.CollectibleInfo +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/fragment_CollectibleInfo.html +--- +# Type: fragment.CollectibleInfo +[Back to types index](index.html) + + + +### Possible values (constructors): + +[fragment.collectibleInfo](/API_docs/constructors/fragment.collectibleInfo.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->fragment->getCollectibleInfo](/API_docs/methods/fragment.getCollectibleInfo.html) + + + diff --git a/docs/API_docs/types/help.AppConfig.md b/docs/API_docs/types/help.AppConfig.md new file mode 100644 index 0000000000..c5d45fc04b --- /dev/null +++ b/docs/API_docs/types/help.AppConfig.md @@ -0,0 +1,26 @@ +--- +title: help.AppConfig +description: constructors and methods of type help.AppConfig +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_AppConfig.html +--- +# Type: help.AppConfig +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.appConfigNotModified](/API_docs/constructors/help.appConfigNotModified.html) + +[help.appConfig](/API_docs/constructors/help.appConfig.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->help->getAppConfig](/API_docs/methods/help.getAppConfig.html) + + + diff --git a/docs/API_docs/types/help.AppUpdate.md b/docs/API_docs/types/help.AppUpdate.md new file mode 100644 index 0000000000..6af587eeaf --- /dev/null +++ b/docs/API_docs/types/help.AppUpdate.md @@ -0,0 +1,26 @@ +--- +title: help.AppUpdate +description: constructors and methods of type help.AppUpdate +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_AppUpdate.html +--- +# Type: help.AppUpdate +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.appUpdate](/API_docs/constructors/help.appUpdate.html) + +[help.noAppUpdate](/API_docs/constructors/help.noAppUpdate.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->help->getAppUpdate](/API_docs/methods/help.getAppUpdate.html) + + + diff --git a/docs/API_docs/types/help.CountriesList.md b/docs/API_docs/types/help.CountriesList.md new file mode 100644 index 0000000000..deb4967cfd --- /dev/null +++ b/docs/API_docs/types/help.CountriesList.md @@ -0,0 +1,26 @@ +--- +title: help.CountriesList +description: constructors and methods of type help.CountriesList +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_CountriesList.html +--- +# Type: help.CountriesList +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.countriesListNotModified](/API_docs/constructors/help.countriesListNotModified.html) + +[help.countriesList](/API_docs/constructors/help.countriesList.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->help->getCountriesList](/API_docs/methods/help.getCountriesList.html) + + + diff --git a/docs/API_docs/types/help.Country.md b/docs/API_docs/types/help.Country.md new file mode 100644 index 0000000000..e3f061f499 --- /dev/null +++ b/docs/API_docs/types/help.Country.md @@ -0,0 +1,22 @@ +--- +title: help.Country +description: constructors and methods of type help.Country +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_Country.html +--- +# Type: help.Country +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.country](/API_docs/constructors/help.country.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/help.CountryCode.md b/docs/API_docs/types/help.CountryCode.md new file mode 100644 index 0000000000..7aa91b8a13 --- /dev/null +++ b/docs/API_docs/types/help.CountryCode.md @@ -0,0 +1,22 @@ +--- +title: help.CountryCode +description: constructors and methods of type help.CountryCode +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_CountryCode.html +--- +# Type: help.CountryCode +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.countryCode](/API_docs/constructors/help.countryCode.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/help.DeepLinkInfo.md b/docs/API_docs/types/help.DeepLinkInfo.md new file mode 100644 index 0000000000..ec3dccae6c --- /dev/null +++ b/docs/API_docs/types/help.DeepLinkInfo.md @@ -0,0 +1,26 @@ +--- +title: help.DeepLinkInfo +description: constructors and methods of type help.DeepLinkInfo +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_DeepLinkInfo.html +--- +# Type: help.DeepLinkInfo +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.deepLinkInfoEmpty](/API_docs/constructors/help.deepLinkInfoEmpty.html) + +[help.deepLinkInfo](/API_docs/constructors/help.deepLinkInfo.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->help->getDeepLinkInfo](/API_docs/methods/help.getDeepLinkInfo.html) + + + diff --git a/docs/API_docs/types/help.InviteText.md b/docs/API_docs/types/help.InviteText.md new file mode 100644 index 0000000000..51b57bf89b --- /dev/null +++ b/docs/API_docs/types/help.InviteText.md @@ -0,0 +1,24 @@ +--- +title: help.InviteText +description: constructors and methods of type help.InviteText +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_InviteText.html +--- +# Type: help.InviteText +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.inviteText](/API_docs/constructors/help.inviteText.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->help->getInviteText](/API_docs/methods/help.getInviteText.html) + + + diff --git a/docs/API_docs/types/help.PassportConfig.md b/docs/API_docs/types/help.PassportConfig.md new file mode 100644 index 0000000000..09bcefb5fe --- /dev/null +++ b/docs/API_docs/types/help.PassportConfig.md @@ -0,0 +1,26 @@ +--- +title: help.PassportConfig +description: constructors and methods of type help.PassportConfig +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_PassportConfig.html +--- +# Type: help.PassportConfig +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.passportConfigNotModified](/API_docs/constructors/help.passportConfigNotModified.html) + +[help.passportConfig](/API_docs/constructors/help.passportConfig.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->help->getPassportConfig](/API_docs/methods/help.getPassportConfig.html) + + + diff --git a/docs/API_docs/types/help.PeerColorOption.md b/docs/API_docs/types/help.PeerColorOption.md new file mode 100644 index 0000000000..8b2425e41a --- /dev/null +++ b/docs/API_docs/types/help.PeerColorOption.md @@ -0,0 +1,22 @@ +--- +title: help.PeerColorOption +description: constructors and methods of type help.PeerColorOption +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_PeerColorOption.html +--- +# Type: help.PeerColorOption +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.peerColorOption](/API_docs/constructors/help.peerColorOption.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/help.PeerColorSet.md b/docs/API_docs/types/help.PeerColorSet.md new file mode 100644 index 0000000000..7aeca87dbd --- /dev/null +++ b/docs/API_docs/types/help.PeerColorSet.md @@ -0,0 +1,24 @@ +--- +title: help.PeerColorSet +description: constructors and methods of type help.PeerColorSet +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_PeerColorSet.html +--- +# Type: help.PeerColorSet +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.peerColorSet](/API_docs/constructors/help.peerColorSet.html) + +[help.peerColorProfileSet](/API_docs/constructors/help.peerColorProfileSet.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/help.PeerColors.md b/docs/API_docs/types/help.PeerColors.md new file mode 100644 index 0000000000..d7c20f58c5 --- /dev/null +++ b/docs/API_docs/types/help.PeerColors.md @@ -0,0 +1,28 @@ +--- +title: help.PeerColors +description: constructors and methods of type help.PeerColors +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_PeerColors.html +--- +# Type: help.PeerColors +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.peerColorsNotModified](/API_docs/constructors/help.peerColorsNotModified.html) + +[help.peerColors](/API_docs/constructors/help.peerColors.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->help->getPeerColors](/API_docs/methods/help.getPeerColors.html) + +[$MadelineProto->help->getPeerProfileColors](/API_docs/methods/help.getPeerProfileColors.html) + + + diff --git a/docs/API_docs/types/help.PremiumPromo.md b/docs/API_docs/types/help.PremiumPromo.md new file mode 100644 index 0000000000..bffcb48e2d --- /dev/null +++ b/docs/API_docs/types/help.PremiumPromo.md @@ -0,0 +1,24 @@ +--- +title: help.PremiumPromo +description: constructors and methods of type help.PremiumPromo +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_PremiumPromo.html +--- +# Type: help.PremiumPromo +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.premiumPromo](/API_docs/constructors/help.premiumPromo.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->help->getPremiumPromo](/API_docs/methods/help.getPremiumPromo.html) + + + diff --git a/docs/API_docs/types/help.PromoData.md b/docs/API_docs/types/help.PromoData.md new file mode 100644 index 0000000000..ada56a3cda --- /dev/null +++ b/docs/API_docs/types/help.PromoData.md @@ -0,0 +1,26 @@ +--- +title: help.PromoData +description: constructors and methods of type help.PromoData +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_PromoData.html +--- +# Type: help.PromoData +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.promoDataEmpty](/API_docs/constructors/help.promoDataEmpty.html) + +[help.promoData](/API_docs/constructors/help.promoData.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->help->getPromoData](/API_docs/methods/help.getPromoData.html) + + + diff --git a/docs/API_docs/types/help.RecentMeUrls.md b/docs/API_docs/types/help.RecentMeUrls.md new file mode 100644 index 0000000000..43b41a544f --- /dev/null +++ b/docs/API_docs/types/help.RecentMeUrls.md @@ -0,0 +1,24 @@ +--- +title: help.RecentMeUrls +description: constructors and methods of type help.RecentMeUrls +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_RecentMeUrls.html +--- +# Type: help.RecentMeUrls +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.recentMeUrls](/API_docs/constructors/help.recentMeUrls.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->help->getRecentMeUrls](/API_docs/methods/help.getRecentMeUrls.html) + + + diff --git a/docs/API_docs/types/help.Support.md b/docs/API_docs/types/help.Support.md new file mode 100644 index 0000000000..571541bd4b --- /dev/null +++ b/docs/API_docs/types/help.Support.md @@ -0,0 +1,24 @@ +--- +title: help.Support +description: constructors and methods of type help.Support +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_Support.html +--- +# Type: help.Support +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.support](/API_docs/constructors/help.support.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->help->getSupport](/API_docs/methods/help.getSupport.html) + + + diff --git a/docs/API_docs/types/help.SupportName.md b/docs/API_docs/types/help.SupportName.md new file mode 100644 index 0000000000..6f01f6624d --- /dev/null +++ b/docs/API_docs/types/help.SupportName.md @@ -0,0 +1,24 @@ +--- +title: help.SupportName +description: constructors and methods of type help.SupportName +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_SupportName.html +--- +# Type: help.SupportName +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.supportName](/API_docs/constructors/help.supportName.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->help->getSupportName](/API_docs/methods/help.getSupportName.html) + + + diff --git a/docs/API_docs/types/help.TermsOfService.md b/docs/API_docs/types/help.TermsOfService.md new file mode 100644 index 0000000000..e405069823 --- /dev/null +++ b/docs/API_docs/types/help.TermsOfService.md @@ -0,0 +1,22 @@ +--- +title: help.TermsOfService +description: constructors and methods of type help.TermsOfService +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_TermsOfService.html +--- +# Type: help.TermsOfService +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.termsOfService](/API_docs/constructors/help.termsOfService.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/help.TermsOfServiceUpdate.md b/docs/API_docs/types/help.TermsOfServiceUpdate.md new file mode 100644 index 0000000000..4bff0dfa06 --- /dev/null +++ b/docs/API_docs/types/help.TermsOfServiceUpdate.md @@ -0,0 +1,26 @@ +--- +title: help.TermsOfServiceUpdate +description: constructors and methods of type help.TermsOfServiceUpdate +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_TermsOfServiceUpdate.html +--- +# Type: help.TermsOfServiceUpdate +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.termsOfServiceUpdateEmpty](/API_docs/constructors/help.termsOfServiceUpdateEmpty.html) + +[help.termsOfServiceUpdate](/API_docs/constructors/help.termsOfServiceUpdate.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->help->getTermsOfServiceUpdate](/API_docs/methods/help.getTermsOfServiceUpdate.html) + + + diff --git a/docs/API_docs/types/help.TimezonesList.md b/docs/API_docs/types/help.TimezonesList.md new file mode 100644 index 0000000000..c5e2ed418f --- /dev/null +++ b/docs/API_docs/types/help.TimezonesList.md @@ -0,0 +1,26 @@ +--- +title: help.TimezonesList +description: constructors and methods of type help.TimezonesList +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_TimezonesList.html +--- +# Type: help.TimezonesList +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.timezonesListNotModified](/API_docs/constructors/help.timezonesListNotModified.html) + +[help.timezonesList](/API_docs/constructors/help.timezonesList.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->help->getTimezonesList](/API_docs/methods/help.getTimezonesList.html) + + + diff --git a/docs/API_docs/types/help.UserInfo.md b/docs/API_docs/types/help.UserInfo.md new file mode 100644 index 0000000000..51906a5714 --- /dev/null +++ b/docs/API_docs/types/help.UserInfo.md @@ -0,0 +1,28 @@ +--- +title: help.UserInfo +description: constructors and methods of type help.UserInfo +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/help_UserInfo.html +--- +# Type: help.UserInfo +[Back to types index](index.html) + + + +### Possible values (constructors): + +[help.userInfoEmpty](/API_docs/constructors/help.userInfoEmpty.html) + +[help.userInfo](/API_docs/constructors/help.userInfo.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->help->getUserInfo](/API_docs/methods/help.getUserInfo.html) + +[$MadelineProto->help->editUserInfo](/API_docs/methods/help.editUserInfo.html) + + + diff --git a/docs/API_docs/types/index.md b/docs/API_docs/types/index.md new file mode 100644 index 0000000000..1ddf8cb271 --- /dev/null +++ b/docs/API_docs/types/index.md @@ -0,0 +1,999 @@ +--- +title: Types +description: List of types +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Types +[Back to API documentation index](..) + +[AccountDaysTTL](/API_docs/types/AccountDaysTTL.html) + +[AppWebViewResult](/API_docs/types/AppWebViewResult.html) + +[AttachMenuBot](/API_docs/types/AttachMenuBot.html) + +[AttachMenuBotIcon](/API_docs/types/AttachMenuBotIcon.html) + +[AttachMenuBotIconColor](/API_docs/types/AttachMenuBotIconColor.html) + +[AttachMenuBots](/API_docs/types/AttachMenuBots.html) + +[AttachMenuBotsBot](/API_docs/types/AttachMenuBotsBot.html) + +[AttachMenuPeerType](/API_docs/types/AttachMenuPeerType.html) + +[Authorization](/API_docs/types/Authorization.html) + +[AutoDownloadSettings](/API_docs/types/AutoDownloadSettings.html) + +[AutoSaveException](/API_docs/types/AutoSaveException.html) + +[AutoSaveSettings](/API_docs/types/AutoSaveSettings.html) + +[AvailableReaction](/API_docs/types/AvailableReaction.html) + +[BankCardOpenUrl](/API_docs/types/BankCardOpenUrl.html) + +[BaseTheme](/API_docs/types/BaseTheme.html) + +[Birthday](/API_docs/types/Birthday.html) + +[Bool](/API_docs/types/Bool.html) + +[Boost](/API_docs/types/Boost.html) + +[BotApp](/API_docs/types/BotApp.html) + +[BotBusinessConnection](/API_docs/types/BotBusinessConnection.html) + +[BotCommand](/API_docs/types/BotCommand.html) + +[BotCommandScope](/API_docs/types/BotCommandScope.html) + +[BotInfo](/API_docs/types/BotInfo.html) + +[BotInlineMessage](/API_docs/types/BotInlineMessage.html) + +[BotInlineResult](/API_docs/types/BotInlineResult.html) + +[BotMenuButton](/API_docs/types/BotMenuButton.html) + +[BroadcastRevenueBalances](/API_docs/types/BroadcastRevenueBalances.html) + +[BroadcastRevenueTransaction](/API_docs/types/BroadcastRevenueTransaction.html) + +[BusinessAwayMessage](/API_docs/types/BusinessAwayMessage.html) + +[BusinessAwayMessageSchedule](/API_docs/types/BusinessAwayMessageSchedule.html) + +[BusinessBotRecipients](/API_docs/types/BusinessBotRecipients.html) + +[BusinessChatLink](/API_docs/types/BusinessChatLink.html) + +[BusinessGreetingMessage](/API_docs/types/BusinessGreetingMessage.html) + +[BusinessIntro](/API_docs/types/BusinessIntro.html) + +[BusinessLocation](/API_docs/types/BusinessLocation.html) + +[BusinessRecipients](/API_docs/types/BusinessRecipients.html) + +[BusinessWeeklyOpen](/API_docs/types/BusinessWeeklyOpen.html) + +[BusinessWorkHours](/API_docs/types/BusinessWorkHours.html) + +[CdnConfig](/API_docs/types/CdnConfig.html) + +[CdnPublicKey](/API_docs/types/CdnPublicKey.html) + +[ChannelAdminLogEvent](/API_docs/types/ChannelAdminLogEvent.html) + +[ChannelAdminLogEventAction](/API_docs/types/ChannelAdminLogEventAction.html) + +[ChannelAdminLogEventsFilter](/API_docs/types/ChannelAdminLogEventsFilter.html) + +[ChannelLocation](/API_docs/types/ChannelLocation.html) + +[ChannelMessagesFilter](/API_docs/types/ChannelMessagesFilter.html) + +[ChannelParticipant](/API_docs/types/ChannelParticipant.html) + +[ChannelParticipantsFilter](/API_docs/types/ChannelParticipantsFilter.html) + +[Chat](/API_docs/types/Chat.html) + +[ChatAdminRights](/API_docs/types/ChatAdminRights.html) + +[ChatAdminWithInvites](/API_docs/types/ChatAdminWithInvites.html) + +[ChatBannedRights](/API_docs/types/ChatBannedRights.html) + +[ChatFull](/API_docs/types/ChatFull.html) + +[ChatInvite](/API_docs/types/ChatInvite.html) + +[ChatInviteImporter](/API_docs/types/ChatInviteImporter.html) + +[ChatOnlines](/API_docs/types/ChatOnlines.html) + +[ChatParticipant](/API_docs/types/ChatParticipant.html) + +[ChatParticipants](/API_docs/types/ChatParticipants.html) + +[ChatPhoto](/API_docs/types/ChatPhoto.html) + +[ChatReactions](/API_docs/types/ChatReactions.html) + +[CodeSettings](/API_docs/types/CodeSettings.html) + +[Config](/API_docs/types/Config.html) + +[ConnectedBot](/API_docs/types/ConnectedBot.html) + +[Contact](/API_docs/types/Contact.html) + +[ContactBirthday](/API_docs/types/ContactBirthday.html) + +[ContactStatus](/API_docs/types/ContactStatus.html) + +[DataJSON](/API_docs/types/DataJSON.html) + +[DcOption](/API_docs/types/DcOption.html) + +[DecryptedMessage](/API_docs/types/DecryptedMessage.html) + +[DecryptedMessageAction](/API_docs/types/DecryptedMessageAction.html) + +[DecryptedMessageLayer](/API_docs/types/DecryptedMessageLayer.html) + +[DecryptedMessageMedia](/API_docs/types/DecryptedMessageMedia.html) + +[DefaultHistoryTTL](/API_docs/types/DefaultHistoryTTL.html) + +[Dialog](/API_docs/types/Dialog.html) + +[DialogFilter](/API_docs/types/DialogFilter.html) + +[DialogFilterSuggested](/API_docs/types/DialogFilterSuggested.html) + +[DialogPeer](/API_docs/types/DialogPeer.html) + +[Document](/API_docs/types/Document.html) + +[DocumentAttribute](/API_docs/types/DocumentAttribute.html) + +[DraftMessage](/API_docs/types/DraftMessage.html) + +[EmailVerification](/API_docs/types/EmailVerification.html) + +[EmailVerifyPurpose](/API_docs/types/EmailVerifyPurpose.html) + +[EmojiGroup](/API_docs/types/EmojiGroup.html) + +[EmojiKeyword](/API_docs/types/EmojiKeyword.html) + +[EmojiKeywordsDifference](/API_docs/types/EmojiKeywordsDifference.html) + +[EmojiLanguage](/API_docs/types/EmojiLanguage.html) + +[EmojiList](/API_docs/types/EmojiList.html) + +[EmojiStatus](/API_docs/types/EmojiStatus.html) + +[EmojiURL](/API_docs/types/EmojiURL.html) + +[EncryptedChat](/API_docs/types/EncryptedChat.html) + +[EncryptedFile](/API_docs/types/EncryptedFile.html) + +[EncryptedMessage](/API_docs/types/EncryptedMessage.html) + +[Error](/API_docs/types/Error.html) + +[ExportedChatInvite](/API_docs/types/ExportedChatInvite.html) + +[ExportedChatlistInvite](/API_docs/types/ExportedChatlistInvite.html) + +[ExportedContactToken](/API_docs/types/ExportedContactToken.html) + +[ExportedMessageLink](/API_docs/types/ExportedMessageLink.html) + +[ExportedStoryLink](/API_docs/types/ExportedStoryLink.html) + +[FileHash](/API_docs/types/FileHash.html) + +[FileLocation](/API_docs/types/FileLocation.html) + +[Folder](/API_docs/types/Folder.html) + +[FolderPeer](/API_docs/types/FolderPeer.html) + +[ForumTopic](/API_docs/types/ForumTopic.html) + +[Game](/API_docs/types/Game.html) + +[GeoPoint](/API_docs/types/GeoPoint.html) + +[GlobalPrivacySettings](/API_docs/types/GlobalPrivacySettings.html) + +[GroupCall](/API_docs/types/GroupCall.html) + +[GroupCallParticipant](/API_docs/types/GroupCallParticipant.html) + +[GroupCallParticipantVideo](/API_docs/types/GroupCallParticipantVideo.html) + +[GroupCallParticipantVideoSourceGroup](/API_docs/types/GroupCallParticipantVideoSourceGroup.html) + +[GroupCallStreamChannel](/API_docs/types/GroupCallStreamChannel.html) + +[HighScore](/API_docs/types/HighScore.html) + +[ImportedContact](/API_docs/types/ImportedContact.html) + +[InlineBotSwitchPM](/API_docs/types/InlineBotSwitchPM.html) + +[InlineBotWebView](/API_docs/types/InlineBotWebView.html) + +[InlineQueryPeerType](/API_docs/types/InlineQueryPeerType.html) + +[InputAppEvent](/API_docs/types/InputAppEvent.html) + +[InputBotApp](/API_docs/types/InputBotApp.html) + +[InputBotInlineMessage](/API_docs/types/InputBotInlineMessage.html) + +[InputBotInlineMessageID](/API_docs/types/InputBotInlineMessageID.html) + +[InputBotInlineResult](/API_docs/types/InputBotInlineResult.html) + +[InputBusinessAwayMessage](/API_docs/types/InputBusinessAwayMessage.html) + +[InputBusinessBotRecipients](/API_docs/types/InputBusinessBotRecipients.html) + +[InputBusinessChatLink](/API_docs/types/InputBusinessChatLink.html) + +[InputBusinessGreetingMessage](/API_docs/types/InputBusinessGreetingMessage.html) + +[InputBusinessIntro](/API_docs/types/InputBusinessIntro.html) + +[InputBusinessRecipients](/API_docs/types/InputBusinessRecipients.html) + +[InputChannel](/API_docs/types/InputChannel.html) + +[InputChatPhoto](/API_docs/types/InputChatPhoto.html) + +[InputChatlist](/API_docs/types/InputChatlist.html) + +[InputCheckPasswordSRP](/API_docs/types/InputCheckPasswordSRP.html) + +[InputClientProxy](/API_docs/types/InputClientProxy.html) + +[InputCollectible](/API_docs/types/InputCollectible.html) + +[InputContact](/API_docs/types/InputContact.html) + +[InputDialogPeer](/API_docs/types/InputDialogPeer.html) + +[InputDocument](/API_docs/types/InputDocument.html) + +[InputEncryptedChat](/API_docs/types/InputEncryptedChat.html) + +[InputEncryptedFile](/API_docs/types/InputEncryptedFile.html) + +[InputFile](/API_docs/types/InputFile.html) + +[InputFileLocation](/API_docs/types/InputFileLocation.html) + +[InputFolderPeer](/API_docs/types/InputFolderPeer.html) + +[InputGame](/API_docs/types/InputGame.html) + +[InputGeoPoint](/API_docs/types/InputGeoPoint.html) + +[InputGroupCall](/API_docs/types/InputGroupCall.html) + +[InputInvoice](/API_docs/types/InputInvoice.html) + +[InputMedia](/API_docs/types/InputMedia.html) + +[InputMessage](/API_docs/types/InputMessage.html) + +[InputNotifyPeer](/API_docs/types/InputNotifyPeer.html) + +[InputPaymentCredentials](/API_docs/types/InputPaymentCredentials.html) + +[InputPeer](/API_docs/types/InputPeer.html) + +[InputPeerNotifySettings](/API_docs/types/InputPeerNotifySettings.html) + +[InputPhoneCall](/API_docs/types/InputPhoneCall.html) + +[InputPhoto](/API_docs/types/InputPhoto.html) + +[InputPrivacyKey](/API_docs/types/InputPrivacyKey.html) + +[InputPrivacyRule](/API_docs/types/InputPrivacyRule.html) + +[InputQuickReplyShortcut](/API_docs/types/InputQuickReplyShortcut.html) + +[InputReplyTo](/API_docs/types/InputReplyTo.html) + +[InputSecureFile](/API_docs/types/InputSecureFile.html) + +[InputSecureValue](/API_docs/types/InputSecureValue.html) + +[InputSingleMedia](/API_docs/types/InputSingleMedia.html) + +[InputStickerSet](/API_docs/types/InputStickerSet.html) + +[InputStickerSetItem](/API_docs/types/InputStickerSetItem.html) + +[InputStickeredMedia](/API_docs/types/InputStickeredMedia.html) + +[InputStorePaymentPurpose](/API_docs/types/InputStorePaymentPurpose.html) + +[InputTheme](/API_docs/types/InputTheme.html) + +[InputThemeSettings](/API_docs/types/InputThemeSettings.html) + +[InputUser](/API_docs/types/InputUser.html) + +[InputWallPaper](/API_docs/types/InputWallPaper.html) + +[InputWebDocument](/API_docs/types/InputWebDocument.html) + +[InputWebFileLocation](/API_docs/types/InputWebFileLocation.html) + +[Invoice](/API_docs/types/Invoice.html) + +[JSONObjectValue](/API_docs/types/JSONObjectValue.html) + +[JSONValue](/API_docs/types/JSONValue.html) + +[KeyboardButton](/API_docs/types/KeyboardButton.html) + +[KeyboardButtonRow](/API_docs/types/KeyboardButtonRow.html) + +[LabeledPrice](/API_docs/types/LabeledPrice.html) + +[LangPackDifference](/API_docs/types/LangPackDifference.html) + +[LangPackLanguage](/API_docs/types/LangPackLanguage.html) + +[LangPackString](/API_docs/types/LangPackString.html) + +[MaskCoords](/API_docs/types/MaskCoords.html) + +[MediaArea](/API_docs/types/MediaArea.html) + +[MediaAreaCoordinates](/API_docs/types/MediaAreaCoordinates.html) + +[Message](/API_docs/types/Message.html) + +[MessageAction](/API_docs/types/MessageAction.html) + +[MessageEntity](/API_docs/types/MessageEntity.html) + +[MessageExtendedMedia](/API_docs/types/MessageExtendedMedia.html) + +[MessageFwdHeader](/API_docs/types/MessageFwdHeader.html) + +[MessageMedia](/API_docs/types/MessageMedia.html) + +[MessagePeerReaction](/API_docs/types/MessagePeerReaction.html) + +[MessagePeerVote](/API_docs/types/MessagePeerVote.html) + +[MessageRange](/API_docs/types/MessageRange.html) + +[MessageReactions](/API_docs/types/MessageReactions.html) + +[MessageReplies](/API_docs/types/MessageReplies.html) + +[MessageReplyHeader](/API_docs/types/MessageReplyHeader.html) + +[MessageViews](/API_docs/types/MessageViews.html) + +[MessagesFilter](/API_docs/types/MessagesFilter.html) + +[MissingInvitee](/API_docs/types/MissingInvitee.html) + +[MyBoost](/API_docs/types/MyBoost.html) + +[NearestDc](/API_docs/types/NearestDc.html) + +[NotificationSound](/API_docs/types/NotificationSound.html) + +[NotifyPeer](/API_docs/types/NotifyPeer.html) + +[Null](/API_docs/types/Null.html) + +[OutboxReadDate](/API_docs/types/OutboxReadDate.html) + +[Page](/API_docs/types/Page.html) + +[PageBlock](/API_docs/types/PageBlock.html) + +[PageCaption](/API_docs/types/PageCaption.html) + +[PageListItem](/API_docs/types/PageListItem.html) + +[PageListOrderedItem](/API_docs/types/PageListOrderedItem.html) + +[PageRelatedArticle](/API_docs/types/PageRelatedArticle.html) + +[PageTableCell](/API_docs/types/PageTableCell.html) + +[PageTableRow](/API_docs/types/PageTableRow.html) + +[PasswordKdfAlgo](/API_docs/types/PasswordKdfAlgo.html) + +[PaymentCharge](/API_docs/types/PaymentCharge.html) + +[PaymentFormMethod](/API_docs/types/PaymentFormMethod.html) + +[PaymentRequestedInfo](/API_docs/types/PaymentRequestedInfo.html) + +[PaymentSavedCredentials](/API_docs/types/PaymentSavedCredentials.html) + +[Peer](/API_docs/types/Peer.html) + +[PeerBlocked](/API_docs/types/PeerBlocked.html) + +[PeerColor](/API_docs/types/PeerColor.html) + +[PeerLocated](/API_docs/types/PeerLocated.html) + +[PeerNotifySettings](/API_docs/types/PeerNotifySettings.html) + +[PeerSettings](/API_docs/types/PeerSettings.html) + +[PeerStories](/API_docs/types/PeerStories.html) + +[PhoneCall](/API_docs/types/PhoneCall.html) + +[PhoneCallDiscardReason](/API_docs/types/PhoneCallDiscardReason.html) + +[PhoneCallProtocol](/API_docs/types/PhoneCallProtocol.html) + +[PhoneConnection](/API_docs/types/PhoneConnection.html) + +[Photo](/API_docs/types/Photo.html) + +[PhotoSize](/API_docs/types/PhotoSize.html) + +[Poll](/API_docs/types/Poll.html) + +[PollAnswer](/API_docs/types/PollAnswer.html) + +[PollAnswerVoters](/API_docs/types/PollAnswerVoters.html) + +[PollResults](/API_docs/types/PollResults.html) + +[PopularContact](/API_docs/types/PopularContact.html) + +[PostAddress](/API_docs/types/PostAddress.html) + +[PostInteractionCounters](/API_docs/types/PostInteractionCounters.html) + +[PremiumGiftCodeOption](/API_docs/types/PremiumGiftCodeOption.html) + +[PremiumGiftOption](/API_docs/types/PremiumGiftOption.html) + +[PremiumSubscriptionOption](/API_docs/types/PremiumSubscriptionOption.html) + +[PrepaidGiveaway](/API_docs/types/PrepaidGiveaway.html) + +[PrivacyKey](/API_docs/types/PrivacyKey.html) + +[PrivacyRule](/API_docs/types/PrivacyRule.html) + +[PublicForward](/API_docs/types/PublicForward.html) + +[QuickReply](/API_docs/types/QuickReply.html) + +[Reaction](/API_docs/types/Reaction.html) + +[ReactionCount](/API_docs/types/ReactionCount.html) + +[ReactionNotificationsFrom](/API_docs/types/ReactionNotificationsFrom.html) + +[ReactionsNotifySettings](/API_docs/types/ReactionsNotifySettings.html) + +[ReadParticipantDate](/API_docs/types/ReadParticipantDate.html) + +[ReceivedNotifyMessage](/API_docs/types/ReceivedNotifyMessage.html) + +[RecentMeUrl](/API_docs/types/RecentMeUrl.html) + +[ReplyMarkup](/API_docs/types/ReplyMarkup.html) + +[ReportReason](/API_docs/types/ReportReason.html) + +[RequestPeerType](/API_docs/types/RequestPeerType.html) + +[RequestedPeer](/API_docs/types/RequestedPeer.html) + +[RestrictionReason](/API_docs/types/RestrictionReason.html) + +[RichText](/API_docs/types/RichText.html) + +[SavedContact](/API_docs/types/SavedContact.html) + +[SavedDialog](/API_docs/types/SavedDialog.html) + +[SavedReactionTag](/API_docs/types/SavedReactionTag.html) + +[SearchResultsCalendarPeriod](/API_docs/types/SearchResultsCalendarPeriod.html) + +[SearchResultsPosition](/API_docs/types/SearchResultsPosition.html) + +[SecureCredentialsEncrypted](/API_docs/types/SecureCredentialsEncrypted.html) + +[SecureData](/API_docs/types/SecureData.html) + +[SecureFile](/API_docs/types/SecureFile.html) + +[SecurePasswordKdfAlgo](/API_docs/types/SecurePasswordKdfAlgo.html) + +[SecurePlainData](/API_docs/types/SecurePlainData.html) + +[SecureRequiredType](/API_docs/types/SecureRequiredType.html) + +[SecureSecretSettings](/API_docs/types/SecureSecretSettings.html) + +[SecureValue](/API_docs/types/SecureValue.html) + +[SecureValueError](/API_docs/types/SecureValueError.html) + +[SecureValueHash](/API_docs/types/SecureValueHash.html) + +[SecureValueType](/API_docs/types/SecureValueType.html) + +[SendAsPeer](/API_docs/types/SendAsPeer.html) + +[SendMessageAction](/API_docs/types/SendMessageAction.html) + +[ShippingOption](/API_docs/types/ShippingOption.html) + +[SimpleWebViewResult](/API_docs/types/SimpleWebViewResult.html) + +[SmsJob](/API_docs/types/SmsJob.html) + +[SponsoredMessage](/API_docs/types/SponsoredMessage.html) + +[SponsoredMessageReportOption](/API_docs/types/SponsoredMessageReportOption.html) + +[StatsAbsValueAndPrev](/API_docs/types/StatsAbsValueAndPrev.html) + +[StatsDateRangeDays](/API_docs/types/StatsDateRangeDays.html) + +[StatsGraph](/API_docs/types/StatsGraph.html) + +[StatsGroupTopAdmin](/API_docs/types/StatsGroupTopAdmin.html) + +[StatsGroupTopInviter](/API_docs/types/StatsGroupTopInviter.html) + +[StatsGroupTopPoster](/API_docs/types/StatsGroupTopPoster.html) + +[StatsPercentValue](/API_docs/types/StatsPercentValue.html) + +[StatsURL](/API_docs/types/StatsURL.html) + +[StickerKeyword](/API_docs/types/StickerKeyword.html) + +[StickerPack](/API_docs/types/StickerPack.html) + +[StickerSet](/API_docs/types/StickerSet.html) + +[StickerSetCovered](/API_docs/types/StickerSetCovered.html) + +[StoriesStealthMode](/API_docs/types/StoriesStealthMode.html) + +[StoryFwdHeader](/API_docs/types/StoryFwdHeader.html) + +[StoryItem](/API_docs/types/StoryItem.html) + +[StoryReaction](/API_docs/types/StoryReaction.html) + +[StoryView](/API_docs/types/StoryView.html) + +[StoryViews](/API_docs/types/StoryViews.html) + +[TextWithEntities](/API_docs/types/TextWithEntities.html) + +[Theme](/API_docs/types/Theme.html) + +[ThemeSettings](/API_docs/types/ThemeSettings.html) + +[Timezone](/API_docs/types/Timezone.html) + +[TopPeer](/API_docs/types/TopPeer.html) + +[TopPeerCategory](/API_docs/types/TopPeerCategory.html) + +[TopPeerCategoryPeers](/API_docs/types/TopPeerCategoryPeers.html) + +[True](/API_docs/types/True.html) + +[Update](/API_docs/types/Update.html) + +[Updates](/API_docs/types/Updates.html) + +[UrlAuthResult](/API_docs/types/UrlAuthResult.html) + +[User](/API_docs/types/User.html) + +[UserFull](/API_docs/types/UserFull.html) + +[UserProfilePhoto](/API_docs/types/UserProfilePhoto.html) + +[UserStatus](/API_docs/types/UserStatus.html) + +[Username](/API_docs/types/Username.html) + +[VideoSize](/API_docs/types/VideoSize.html) + +[WallPaper](/API_docs/types/WallPaper.html) + +[WallPaperSettings](/API_docs/types/WallPaperSettings.html) + +[WebAuthorization](/API_docs/types/WebAuthorization.html) + +[WebDocument](/API_docs/types/WebDocument.html) + +[WebPage](/API_docs/types/WebPage.html) + +[WebPageAttribute](/API_docs/types/WebPageAttribute.html) + +[WebViewMessageSent](/API_docs/types/WebViewMessageSent.html) + +[WebViewResult](/API_docs/types/WebViewResult.html) + +[X](/API_docs/types/X.html) + +[account.AuthorizationForm](/API_docs/types/account.AuthorizationForm.html) + +[account.Authorizations](/API_docs/types/account.Authorizations.html) + +[account.AutoDownloadSettings](/API_docs/types/account.AutoDownloadSettings.html) + +[account.AutoSaveSettings](/API_docs/types/account.AutoSaveSettings.html) + +[account.BusinessChatLinks](/API_docs/types/account.BusinessChatLinks.html) + +[account.ConnectedBots](/API_docs/types/account.ConnectedBots.html) + +[account.ContentSettings](/API_docs/types/account.ContentSettings.html) + +[account.EmailVerified](/API_docs/types/account.EmailVerified.html) + +[account.EmojiStatuses](/API_docs/types/account.EmojiStatuses.html) + +[account.Password](/API_docs/types/account.Password.html) + +[account.PasswordInputSettings](/API_docs/types/account.PasswordInputSettings.html) + +[account.PasswordSettings](/API_docs/types/account.PasswordSettings.html) + +[account.PrivacyRules](/API_docs/types/account.PrivacyRules.html) + +[account.ResetPasswordResult](/API_docs/types/account.ResetPasswordResult.html) + +[account.ResolvedBusinessChatLinks](/API_docs/types/account.ResolvedBusinessChatLinks.html) + +[account.SavedRingtone](/API_docs/types/account.SavedRingtone.html) + +[account.SavedRingtones](/API_docs/types/account.SavedRingtones.html) + +[account.SentEmailCode](/API_docs/types/account.SentEmailCode.html) + +[account.Takeout](/API_docs/types/account.Takeout.html) + +[account.Themes](/API_docs/types/account.Themes.html) + +[account.TmpPassword](/API_docs/types/account.TmpPassword.html) + +[account.WallPapers](/API_docs/types/account.WallPapers.html) + +[account.WebAuthorizations](/API_docs/types/account.WebAuthorizations.html) + +[auth.Authorization](/API_docs/types/auth.Authorization.html) + +[auth.CodeType](/API_docs/types/auth.CodeType.html) + +[auth.ExportedAuthorization](/API_docs/types/auth.ExportedAuthorization.html) + +[auth.LoggedOut](/API_docs/types/auth.LoggedOut.html) + +[auth.LoginToken](/API_docs/types/auth.LoginToken.html) + +[auth.PasswordRecovery](/API_docs/types/auth.PasswordRecovery.html) + +[auth.SentCode](/API_docs/types/auth.SentCode.html) + +[auth.SentCodeType](/API_docs/types/auth.SentCodeType.html) + +[bots.BotInfo](/API_docs/types/bots.BotInfo.html) + +[channels.AdminLogResults](/API_docs/types/channels.AdminLogResults.html) + +[channels.ChannelParticipant](/API_docs/types/channels.ChannelParticipant.html) + +[channels.ChannelParticipants](/API_docs/types/channels.ChannelParticipants.html) + +[channels.SendAsPeers](/API_docs/types/channels.SendAsPeers.html) + +[channels.SponsoredMessageReportResult](/API_docs/types/channels.SponsoredMessageReportResult.html) + +[chatlists.ChatlistInvite](/API_docs/types/chatlists.ChatlistInvite.html) + +[chatlists.ChatlistUpdates](/API_docs/types/chatlists.ChatlistUpdates.html) + +[chatlists.ExportedChatlistInvite](/API_docs/types/chatlists.ExportedChatlistInvite.html) + +[chatlists.ExportedInvites](/API_docs/types/chatlists.ExportedInvites.html) + +[contacts.Blocked](/API_docs/types/contacts.Blocked.html) + +[contacts.ContactBirthdays](/API_docs/types/contacts.ContactBirthdays.html) + +[contacts.Contacts](/API_docs/types/contacts.Contacts.html) + +[contacts.Found](/API_docs/types/contacts.Found.html) + +[contacts.ImportedContacts](/API_docs/types/contacts.ImportedContacts.html) + +[contacts.ResolvedPeer](/API_docs/types/contacts.ResolvedPeer.html) + +[contacts.TopPeers](/API_docs/types/contacts.TopPeers.html) + +[fragment.CollectibleInfo](/API_docs/types/fragment.CollectibleInfo.html) + +[help.AppConfig](/API_docs/types/help.AppConfig.html) + +[help.AppUpdate](/API_docs/types/help.AppUpdate.html) + +[help.CountriesList](/API_docs/types/help.CountriesList.html) + +[help.Country](/API_docs/types/help.Country.html) + +[help.CountryCode](/API_docs/types/help.CountryCode.html) + +[help.DeepLinkInfo](/API_docs/types/help.DeepLinkInfo.html) + +[help.InviteText](/API_docs/types/help.InviteText.html) + +[help.PassportConfig](/API_docs/types/help.PassportConfig.html) + +[help.PeerColorOption](/API_docs/types/help.PeerColorOption.html) + +[help.PeerColorSet](/API_docs/types/help.PeerColorSet.html) + +[help.PeerColors](/API_docs/types/help.PeerColors.html) + +[help.PremiumPromo](/API_docs/types/help.PremiumPromo.html) + +[help.PromoData](/API_docs/types/help.PromoData.html) + +[help.RecentMeUrls](/API_docs/types/help.RecentMeUrls.html) + +[help.Support](/API_docs/types/help.Support.html) + +[help.SupportName](/API_docs/types/help.SupportName.html) + +[help.TermsOfService](/API_docs/types/help.TermsOfService.html) + +[help.TermsOfServiceUpdate](/API_docs/types/help.TermsOfServiceUpdate.html) + +[help.TimezonesList](/API_docs/types/help.TimezonesList.html) + +[help.UserInfo](/API_docs/types/help.UserInfo.html) + +[int](/API_docs/types/int.html) + +[long](/API_docs/types/long.html) + +[messages.AffectedFoundMessages](/API_docs/types/messages.AffectedFoundMessages.html) + +[messages.AffectedHistory](/API_docs/types/messages.AffectedHistory.html) + +[messages.AffectedMessages](/API_docs/types/messages.AffectedMessages.html) + +[messages.AllStickers](/API_docs/types/messages.AllStickers.html) + +[messages.ArchivedStickers](/API_docs/types/messages.ArchivedStickers.html) + +[messages.AvailableReactions](/API_docs/types/messages.AvailableReactions.html) + +[messages.BotApp](/API_docs/types/messages.BotApp.html) + +[messages.BotCallbackAnswer](/API_docs/types/messages.BotCallbackAnswer.html) + +[messages.BotResults](/API_docs/types/messages.BotResults.html) + +[messages.ChatAdminsWithInvites](/API_docs/types/messages.ChatAdminsWithInvites.html) + +[messages.ChatFull](/API_docs/types/messages.ChatFull.html) + +[messages.ChatInviteImporters](/API_docs/types/messages.ChatInviteImporters.html) + +[messages.Chats](/API_docs/types/messages.Chats.html) + +[messages.CheckedHistoryImportPeer](/API_docs/types/messages.CheckedHistoryImportPeer.html) + +[messages.DhConfig](/API_docs/types/messages.DhConfig.html) + +[messages.DialogFilters](/API_docs/types/messages.DialogFilters.html) + +[messages.Dialogs](/API_docs/types/messages.Dialogs.html) + +[messages.DiscussionMessage](/API_docs/types/messages.DiscussionMessage.html) + +[messages.EmojiGroups](/API_docs/types/messages.EmojiGroups.html) + +[messages.ExportedChatInvite](/API_docs/types/messages.ExportedChatInvite.html) + +[messages.ExportedChatInvites](/API_docs/types/messages.ExportedChatInvites.html) + +[messages.FavedStickers](/API_docs/types/messages.FavedStickers.html) + +[messages.FeaturedStickers](/API_docs/types/messages.FeaturedStickers.html) + +[messages.ForumTopics](/API_docs/types/messages.ForumTopics.html) + +[messages.FoundStickerSets](/API_docs/types/messages.FoundStickerSets.html) + +[messages.HighScores](/API_docs/types/messages.HighScores.html) + +[messages.HistoryImport](/API_docs/types/messages.HistoryImport.html) + +[messages.HistoryImportParsed](/API_docs/types/messages.HistoryImportParsed.html) + +[messages.InactiveChats](/API_docs/types/messages.InactiveChats.html) + +[messages.InvitedUsers](/API_docs/types/messages.InvitedUsers.html) + +[messages.MessageEditData](/API_docs/types/messages.MessageEditData.html) + +[messages.MessageReactionsList](/API_docs/types/messages.MessageReactionsList.html) + +[messages.MessageViews](/API_docs/types/messages.MessageViews.html) + +[messages.Messages](/API_docs/types/messages.Messages.html) + +[messages.MyStickers](/API_docs/types/messages.MyStickers.html) + +[messages.PeerDialogs](/API_docs/types/messages.PeerDialogs.html) + +[messages.PeerSettings](/API_docs/types/messages.PeerSettings.html) + +[messages.QuickReplies](/API_docs/types/messages.QuickReplies.html) + +[messages.Reactions](/API_docs/types/messages.Reactions.html) + +[messages.RecentStickers](/API_docs/types/messages.RecentStickers.html) + +[messages.SavedDialogs](/API_docs/types/messages.SavedDialogs.html) + +[messages.SavedGifs](/API_docs/types/messages.SavedGifs.html) + +[messages.SavedReactionTags](/API_docs/types/messages.SavedReactionTags.html) + +[messages.SearchCounter](/API_docs/types/messages.SearchCounter.html) + +[messages.SearchResultsCalendar](/API_docs/types/messages.SearchResultsCalendar.html) + +[messages.SearchResultsPositions](/API_docs/types/messages.SearchResultsPositions.html) + +[messages.SentEncryptedMessage](/API_docs/types/messages.SentEncryptedMessage.html) + +[messages.SponsoredMessages](/API_docs/types/messages.SponsoredMessages.html) + +[messages.StickerSet](/API_docs/types/messages.StickerSet.html) + +[messages.StickerSetInstallResult](/API_docs/types/messages.StickerSetInstallResult.html) + +[messages.Stickers](/API_docs/types/messages.Stickers.html) + +[messages.TranscribedAudio](/API_docs/types/messages.TranscribedAudio.html) + +[messages.TranslatedText](/API_docs/types/messages.TranslatedText.html) + +[messages.VotesList](/API_docs/types/messages.VotesList.html) + +[messages.WebPage](/API_docs/types/messages.WebPage.html) + +[payments.BankCardData](/API_docs/types/payments.BankCardData.html) + +[payments.CheckedGiftCode](/API_docs/types/payments.CheckedGiftCode.html) + +[payments.ExportedInvoice](/API_docs/types/payments.ExportedInvoice.html) + +[payments.GiveawayInfo](/API_docs/types/payments.GiveawayInfo.html) + +[payments.PaymentForm](/API_docs/types/payments.PaymentForm.html) + +[payments.PaymentReceipt](/API_docs/types/payments.PaymentReceipt.html) + +[payments.PaymentResult](/API_docs/types/payments.PaymentResult.html) + +[payments.SavedInfo](/API_docs/types/payments.SavedInfo.html) + +[payments.ValidatedRequestedInfo](/API_docs/types/payments.ValidatedRequestedInfo.html) + +[phone.ExportedGroupCallInvite](/API_docs/types/phone.ExportedGroupCallInvite.html) + +[phone.GroupCall](/API_docs/types/phone.GroupCall.html) + +[phone.GroupCallStreamChannels](/API_docs/types/phone.GroupCallStreamChannels.html) + +[phone.GroupCallStreamRtmpUrl](/API_docs/types/phone.GroupCallStreamRtmpUrl.html) + +[phone.GroupParticipants](/API_docs/types/phone.GroupParticipants.html) + +[phone.JoinAsPeers](/API_docs/types/phone.JoinAsPeers.html) + +[phone.PhoneCall](/API_docs/types/phone.PhoneCall.html) + +[photos.Photo](/API_docs/types/photos.Photo.html) + +[photos.Photos](/API_docs/types/photos.Photos.html) + +[premium.BoostsList](/API_docs/types/premium.BoostsList.html) + +[premium.BoostsStatus](/API_docs/types/premium.BoostsStatus.html) + +[premium.MyBoosts](/API_docs/types/premium.MyBoosts.html) + +[smsjobs.EligibilityToJoin](/API_docs/types/smsjobs.EligibilityToJoin.html) + +[smsjobs.Status](/API_docs/types/smsjobs.Status.html) + +[stats.BroadcastRevenueStats](/API_docs/types/stats.BroadcastRevenueStats.html) + +[stats.BroadcastRevenueTransactions](/API_docs/types/stats.BroadcastRevenueTransactions.html) + +[stats.BroadcastRevenueWithdrawalUrl](/API_docs/types/stats.BroadcastRevenueWithdrawalUrl.html) + +[stats.BroadcastStats](/API_docs/types/stats.BroadcastStats.html) + +[stats.MegagroupStats](/API_docs/types/stats.MegagroupStats.html) + +[stats.MessageStats](/API_docs/types/stats.MessageStats.html) + +[stats.PublicForwards](/API_docs/types/stats.PublicForwards.html) + +[stats.StoryStats](/API_docs/types/stats.StoryStats.html) + +[stickers.SuggestedShortName](/API_docs/types/stickers.SuggestedShortName.html) + +[storage.FileType](/API_docs/types/storage.FileType.html) + +[stories.AllStories](/API_docs/types/stories.AllStories.html) + +[stories.PeerStories](/API_docs/types/stories.PeerStories.html) + +[stories.Stories](/API_docs/types/stories.Stories.html) + +[stories.StoryReactionsList](/API_docs/types/stories.StoryReactionsList.html) + +[stories.StoryViews](/API_docs/types/stories.StoryViews.html) + +[stories.StoryViewsList](/API_docs/types/stories.StoryViewsList.html) + +[updates.ChannelDifference](/API_docs/types/updates.ChannelDifference.html) + +[updates.Difference](/API_docs/types/updates.Difference.html) + +[updates.State](/API_docs/types/updates.State.html) + +[upload.CdnFile](/API_docs/types/upload.CdnFile.html) + +[upload.File](/API_docs/types/upload.File.html) + +[upload.WebFile](/API_docs/types/upload.WebFile.html) + +[users.UserFull](/API_docs/types/users.UserFull.html) + diff --git a/docs/API_docs/types/int.md b/docs/API_docs/types/int.md new file mode 100644 index 0000000000..59ad4e6570 --- /dev/null +++ b/docs/API_docs/types/int.md @@ -0,0 +1,10 @@ +--- +title: integer +description: A 32 bit signed integer ranging from -2147483648 to 2147483647 +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: int +[Back to constructor index](index.html) + +A 32 bit signed integer ranging from `-2147483648` to `2147483647`. diff --git a/docs/API_docs/types/int128.md b/docs/API_docs/types/int128.md new file mode 100644 index 0000000000..2f28592d0c --- /dev/null +++ b/docs/API_docs/types/int128.md @@ -0,0 +1,10 @@ +--- +title: int128 +description: A 128 bit signed integer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: int128 +[Back to constructor index](index.html) + +A 128 bit signed integer represented in little-endian base256 (`string`) format. diff --git a/docs/API_docs/types/int256.md b/docs/API_docs/types/int256.md new file mode 100644 index 0000000000..6a67124c18 --- /dev/null +++ b/docs/API_docs/types/int256.md @@ -0,0 +1,10 @@ +--- +title: int256 +description: A 256 bit signed integer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: int256 +[Back to constructor index](index.html) + +A 256 bit signed integer represented in little-endian base256 (`string`) format. diff --git a/docs/API_docs/types/int512.md b/docs/API_docs/types/int512.md new file mode 100644 index 0000000000..756bedce57 --- /dev/null +++ b/docs/API_docs/types/int512.md @@ -0,0 +1,10 @@ +--- +title: int512 +description: A 512 bit signed integer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: int512 +[Back to constructor index](index.html) + +A 512 bit signed integer represented in little-endian base256 (`string`) format. diff --git a/docs/API_docs/types/int53.md b/docs/API_docs/types/int53.md new file mode 100644 index 0000000000..90a1e5ef7c --- /dev/null +++ b/docs/API_docs/types/int53.md @@ -0,0 +1,10 @@ +--- +title: integer +description: A 53 bit signed integer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: int53 +[Back to constructor index](index.html) + +A 53 bit signed integer. diff --git a/docs/API_docs/types/long.md b/docs/API_docs/types/long.md new file mode 100644 index 0000000000..4465a550d2 --- /dev/null +++ b/docs/API_docs/types/long.md @@ -0,0 +1,10 @@ +--- +title: long +description: A 32 bit signed integer ranging from -9223372036854775808 to 9223372036854775807 +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: long +[Back to constructor index](index.html) + +A 64 bit signed integer ranging from `-9223372036854775808` to `9223372036854775807`. diff --git a/docs/API_docs/types/messages.AffectedFoundMessages.md b/docs/API_docs/types/messages.AffectedFoundMessages.md new file mode 100644 index 0000000000..1b723a3314 --- /dev/null +++ b/docs/API_docs/types/messages.AffectedFoundMessages.md @@ -0,0 +1,24 @@ +--- +title: messages.AffectedFoundMessages +description: constructors and methods of type messages.AffectedFoundMessages +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_AffectedFoundMessages.html +--- +# Type: messages.AffectedFoundMessages +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.affectedFoundMessages](/API_docs/constructors/messages.affectedFoundMessages.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->deletePhoneCallHistory](/API_docs/methods/messages.deletePhoneCallHistory.html) + + + diff --git a/docs/API_docs/types/messages.AffectedHistory.md b/docs/API_docs/types/messages.AffectedHistory.md new file mode 100644 index 0000000000..94f0745297 --- /dev/null +++ b/docs/API_docs/types/messages.AffectedHistory.md @@ -0,0 +1,36 @@ +--- +title: messages.AffectedHistory +description: constructors and methods of type messages.AffectedHistory +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_AffectedHistory.html +--- +# Type: messages.AffectedHistory +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.affectedHistory](/API_docs/constructors/messages.affectedHistory.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->deleteHistory](/API_docs/methods/messages.deleteHistory.html) + +[$MadelineProto->messages->readMentions](/API_docs/methods/messages.readMentions.html) + +[$MadelineProto->messages->unpinAllMessages](/API_docs/methods/messages.unpinAllMessages.html) + +[$MadelineProto->messages->readReactions](/API_docs/methods/messages.readReactions.html) + +[$MadelineProto->messages->deleteSavedHistory](/API_docs/methods/messages.deleteSavedHistory.html) + +[$MadelineProto->channels->deleteParticipantHistory](/API_docs/methods/channels.deleteParticipantHistory.html) + +[$MadelineProto->channels->deleteTopicHistory](/API_docs/methods/channels.deleteTopicHistory.html) + + + diff --git a/docs/API_docs/types/messages.AffectedMessages.md b/docs/API_docs/types/messages.AffectedMessages.md new file mode 100644 index 0000000000..daa430c8c3 --- /dev/null +++ b/docs/API_docs/types/messages.AffectedMessages.md @@ -0,0 +1,30 @@ +--- +title: messages.AffectedMessages +description: constructors and methods of type messages.AffectedMessages +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_AffectedMessages.html +--- +# Type: messages.AffectedMessages +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.affectedMessages](/API_docs/constructors/messages.affectedMessages.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->readHistory](/API_docs/methods/messages.readHistory.html) + +[$MadelineProto->messages->deleteMessages](/API_docs/methods/messages.deleteMessages.html) + +[$MadelineProto->messages->readMessageContents](/API_docs/methods/messages.readMessageContents.html) + +[$MadelineProto->channels->deleteMessages](/API_docs/methods/channels.deleteMessages.html) + + + diff --git a/docs/API_docs/types/messages.AllStickers.md b/docs/API_docs/types/messages.AllStickers.md new file mode 100644 index 0000000000..4a3aa3f055 --- /dev/null +++ b/docs/API_docs/types/messages.AllStickers.md @@ -0,0 +1,30 @@ +--- +title: messages.AllStickers +description: constructors and methods of type messages.AllStickers +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_AllStickers.html +--- +# Type: messages.AllStickers +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.allStickersNotModified](/API_docs/constructors/messages.allStickersNotModified.html) + +[messages.allStickers](/API_docs/constructors/messages.allStickers.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getAllStickers](/API_docs/methods/messages.getAllStickers.html) + +[$MadelineProto->messages->getMaskStickers](/API_docs/methods/messages.getMaskStickers.html) + +[$MadelineProto->messages->getEmojiStickers](/API_docs/methods/messages.getEmojiStickers.html) + + + diff --git a/docs/API_docs/types/messages.ArchivedStickers.md b/docs/API_docs/types/messages.ArchivedStickers.md new file mode 100644 index 0000000000..8c4c3e80f2 --- /dev/null +++ b/docs/API_docs/types/messages.ArchivedStickers.md @@ -0,0 +1,24 @@ +--- +title: messages.ArchivedStickers +description: constructors and methods of type messages.ArchivedStickers +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_ArchivedStickers.html +--- +# Type: messages.ArchivedStickers +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.archivedStickers](/API_docs/constructors/messages.archivedStickers.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getArchivedStickers](/API_docs/methods/messages.getArchivedStickers.html) + + + diff --git a/docs/API_docs/types/messages.AvailableReactions.md b/docs/API_docs/types/messages.AvailableReactions.md new file mode 100644 index 0000000000..4336ad5219 --- /dev/null +++ b/docs/API_docs/types/messages.AvailableReactions.md @@ -0,0 +1,26 @@ +--- +title: messages.AvailableReactions +description: constructors and methods of type messages.AvailableReactions +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_AvailableReactions.html +--- +# Type: messages.AvailableReactions +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.availableReactionsNotModified](/API_docs/constructors/messages.availableReactionsNotModified.html) + +[messages.availableReactions](/API_docs/constructors/messages.availableReactions.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getAvailableReactions](/API_docs/methods/messages.getAvailableReactions.html) + + + diff --git a/docs/API_docs/types/messages.BotApp.md b/docs/API_docs/types/messages.BotApp.md new file mode 100644 index 0000000000..1253129584 --- /dev/null +++ b/docs/API_docs/types/messages.BotApp.md @@ -0,0 +1,24 @@ +--- +title: messages.BotApp +description: constructors and methods of type messages.BotApp +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_BotApp.html +--- +# Type: messages.BotApp +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.botApp](/API_docs/constructors/messages.botApp.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getBotApp](/API_docs/methods/messages.getBotApp.html) + + + diff --git a/docs/API_docs/types/messages.BotCallbackAnswer.md b/docs/API_docs/types/messages.BotCallbackAnswer.md new file mode 100644 index 0000000000..5820d3ec53 --- /dev/null +++ b/docs/API_docs/types/messages.BotCallbackAnswer.md @@ -0,0 +1,24 @@ +--- +title: messages.BotCallbackAnswer +description: constructors and methods of type messages.BotCallbackAnswer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_BotCallbackAnswer.html +--- +# Type: messages.BotCallbackAnswer +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.botCallbackAnswer](/API_docs/constructors/messages.botCallbackAnswer.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getBotCallbackAnswer](/API_docs/methods/messages.getBotCallbackAnswer.html) + + + diff --git a/docs/API_docs/types/messages.BotResults.md b/docs/API_docs/types/messages.BotResults.md new file mode 100644 index 0000000000..7b02083072 --- /dev/null +++ b/docs/API_docs/types/messages.BotResults.md @@ -0,0 +1,24 @@ +--- +title: messages.BotResults +description: constructors and methods of type messages.BotResults +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_BotResults.html +--- +# Type: messages.BotResults +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.botResults](/API_docs/constructors/messages.botResults.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getInlineBotResults](/API_docs/methods/messages.getInlineBotResults.html) + + + diff --git a/docs/API_docs/types/messages.ChatAdminsWithInvites.md b/docs/API_docs/types/messages.ChatAdminsWithInvites.md new file mode 100644 index 0000000000..58fe669a6e --- /dev/null +++ b/docs/API_docs/types/messages.ChatAdminsWithInvites.md @@ -0,0 +1,24 @@ +--- +title: messages.ChatAdminsWithInvites +description: constructors and methods of type messages.ChatAdminsWithInvites +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_ChatAdminsWithInvites.html +--- +# Type: messages.ChatAdminsWithInvites +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.chatAdminsWithInvites](/API_docs/constructors/messages.chatAdminsWithInvites.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getAdminsWithInvites](/API_docs/methods/messages.getAdminsWithInvites.html) + + + diff --git a/docs/API_docs/types/messages.ChatFull.md b/docs/API_docs/types/messages.ChatFull.md new file mode 100644 index 0000000000..5bcc26719b --- /dev/null +++ b/docs/API_docs/types/messages.ChatFull.md @@ -0,0 +1,26 @@ +--- +title: messages.ChatFull +description: constructors and methods of type messages.ChatFull +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_ChatFull.html +--- +# Type: messages.ChatFull +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.chatFull](/API_docs/constructors/messages.chatFull.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getFullChat](/API_docs/methods/messages.getFullChat.html) + +[$MadelineProto->channels->getFullChannel](/API_docs/methods/channels.getFullChannel.html) + + + diff --git a/docs/API_docs/types/messages.ChatInviteImporters.md b/docs/API_docs/types/messages.ChatInviteImporters.md new file mode 100644 index 0000000000..cf3243e1a7 --- /dev/null +++ b/docs/API_docs/types/messages.ChatInviteImporters.md @@ -0,0 +1,24 @@ +--- +title: messages.ChatInviteImporters +description: constructors and methods of type messages.ChatInviteImporters +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_ChatInviteImporters.html +--- +# Type: messages.ChatInviteImporters +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.chatInviteImporters](/API_docs/constructors/messages.chatInviteImporters.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getChatInviteImporters](/API_docs/methods/messages.getChatInviteImporters.html) + + + diff --git a/docs/API_docs/types/messages.Chats.md b/docs/API_docs/types/messages.Chats.md new file mode 100644 index 0000000000..4e6ec919cf --- /dev/null +++ b/docs/API_docs/types/messages.Chats.md @@ -0,0 +1,40 @@ +--- +title: messages.Chats +description: constructors and methods of type messages.Chats +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_Chats.html +--- +# Type: messages.Chats +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.chats](/API_docs/constructors/messages.chats.html) + +[messages.chatsSlice](/API_docs/constructors/messages.chatsSlice.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getChats](/API_docs/methods/messages.getChats.html) + +[$MadelineProto->messages->getCommonChats](/API_docs/methods/messages.getCommonChats.html) + +[$MadelineProto->channels->getChannels](/API_docs/methods/channels.getChannels.html) + +[$MadelineProto->channels->getAdminedPublicChannels](/API_docs/methods/channels.getAdminedPublicChannels.html) + +[$MadelineProto->channels->getLeftChannels](/API_docs/methods/channels.getLeftChannels.html) + +[$MadelineProto->channels->getGroupsForDiscussion](/API_docs/methods/channels.getGroupsForDiscussion.html) + +[$MadelineProto->channels->getChannelRecommendations](/API_docs/methods/channels.getChannelRecommendations.html) + +[$MadelineProto->stories->getChatsToSend](/API_docs/methods/stories.getChatsToSend.html) + + + diff --git a/docs/API_docs/types/messages.CheckedHistoryImportPeer.md b/docs/API_docs/types/messages.CheckedHistoryImportPeer.md new file mode 100644 index 0000000000..35554e0389 --- /dev/null +++ b/docs/API_docs/types/messages.CheckedHistoryImportPeer.md @@ -0,0 +1,24 @@ +--- +title: messages.CheckedHistoryImportPeer +description: constructors and methods of type messages.CheckedHistoryImportPeer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_CheckedHistoryImportPeer.html +--- +# Type: messages.CheckedHistoryImportPeer +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.checkedHistoryImportPeer](/API_docs/constructors/messages.checkedHistoryImportPeer.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->checkHistoryImportPeer](/API_docs/methods/messages.checkHistoryImportPeer.html) + + + diff --git a/docs/API_docs/types/messages.DhConfig.md b/docs/API_docs/types/messages.DhConfig.md new file mode 100644 index 0000000000..cec37b6d05 --- /dev/null +++ b/docs/API_docs/types/messages.DhConfig.md @@ -0,0 +1,26 @@ +--- +title: messages.DhConfig +description: constructors and methods of type messages.DhConfig +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_DhConfig.html +--- +# Type: messages.DhConfig +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.dhConfigNotModified](/API_docs/constructors/messages.dhConfigNotModified.html) + +[messages.dhConfig](/API_docs/constructors/messages.dhConfig.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getDhConfig](/API_docs/methods/messages.getDhConfig.html) + + + diff --git a/docs/API_docs/types/messages.DialogFilters.md b/docs/API_docs/types/messages.DialogFilters.md new file mode 100644 index 0000000000..cef9d7c275 --- /dev/null +++ b/docs/API_docs/types/messages.DialogFilters.md @@ -0,0 +1,24 @@ +--- +title: messages.DialogFilters +description: constructors and methods of type messages.DialogFilters +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_DialogFilters.html +--- +# Type: messages.DialogFilters +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.dialogFilters](/API_docs/constructors/messages.dialogFilters.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getDialogFilters](/API_docs/methods/messages.getDialogFilters.html) + + + diff --git a/docs/API_docs/types/messages.Dialogs.md b/docs/API_docs/types/messages.Dialogs.md new file mode 100644 index 0000000000..4fd9ade112 --- /dev/null +++ b/docs/API_docs/types/messages.Dialogs.md @@ -0,0 +1,28 @@ +--- +title: messages.Dialogs +description: constructors and methods of type messages.Dialogs +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_Dialogs.html +--- +# Type: messages.Dialogs +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.dialogs](/API_docs/constructors/messages.dialogs.html) + +[messages.dialogsSlice](/API_docs/constructors/messages.dialogsSlice.html) + +[messages.dialogsNotModified](/API_docs/constructors/messages.dialogsNotModified.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getDialogs](/API_docs/methods/messages.getDialogs.html) + + + diff --git a/docs/API_docs/types/messages.DiscussionMessage.md b/docs/API_docs/types/messages.DiscussionMessage.md new file mode 100644 index 0000000000..d4dbf1b9a1 --- /dev/null +++ b/docs/API_docs/types/messages.DiscussionMessage.md @@ -0,0 +1,24 @@ +--- +title: messages.DiscussionMessage +description: constructors and methods of type messages.DiscussionMessage +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_DiscussionMessage.html +--- +# Type: messages.DiscussionMessage +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.discussionMessage](/API_docs/constructors/messages.discussionMessage.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getDiscussionMessage](/API_docs/methods/messages.getDiscussionMessage.html) + + + diff --git a/docs/API_docs/types/messages.EmojiGroups.md b/docs/API_docs/types/messages.EmojiGroups.md new file mode 100644 index 0000000000..503a3c35b1 --- /dev/null +++ b/docs/API_docs/types/messages.EmojiGroups.md @@ -0,0 +1,32 @@ +--- +title: messages.EmojiGroups +description: constructors and methods of type messages.EmojiGroups +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_EmojiGroups.html +--- +# Type: messages.EmojiGroups +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.emojiGroupsNotModified](/API_docs/constructors/messages.emojiGroupsNotModified.html) + +[messages.emojiGroups](/API_docs/constructors/messages.emojiGroups.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getEmojiGroups](/API_docs/methods/messages.getEmojiGroups.html) + +[$MadelineProto->messages->getEmojiStatusGroups](/API_docs/methods/messages.getEmojiStatusGroups.html) + +[$MadelineProto->messages->getEmojiProfilePhotoGroups](/API_docs/methods/messages.getEmojiProfilePhotoGroups.html) + +[$MadelineProto->messages->getEmojiStickerGroups](/API_docs/methods/messages.getEmojiStickerGroups.html) + + + diff --git a/docs/API_docs/types/messages.ExportedChatInvite.md b/docs/API_docs/types/messages.ExportedChatInvite.md new file mode 100644 index 0000000000..7326ab6c42 --- /dev/null +++ b/docs/API_docs/types/messages.ExportedChatInvite.md @@ -0,0 +1,28 @@ +--- +title: messages.ExportedChatInvite +description: constructors and methods of type messages.ExportedChatInvite +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_ExportedChatInvite.html +--- +# Type: messages.ExportedChatInvite +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.exportedChatInvite](/API_docs/constructors/messages.exportedChatInvite.html) + +[messages.exportedChatInviteReplaced](/API_docs/constructors/messages.exportedChatInviteReplaced.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getExportedChatInvite](/API_docs/methods/messages.getExportedChatInvite.html) + +[$MadelineProto->messages->editExportedChatInvite](/API_docs/methods/messages.editExportedChatInvite.html) + + + diff --git a/docs/API_docs/types/messages.ExportedChatInvites.md b/docs/API_docs/types/messages.ExportedChatInvites.md new file mode 100644 index 0000000000..6b18d45de4 --- /dev/null +++ b/docs/API_docs/types/messages.ExportedChatInvites.md @@ -0,0 +1,24 @@ +--- +title: messages.ExportedChatInvites +description: constructors and methods of type messages.ExportedChatInvites +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_ExportedChatInvites.html +--- +# Type: messages.ExportedChatInvites +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.exportedChatInvites](/API_docs/constructors/messages.exportedChatInvites.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getExportedChatInvites](/API_docs/methods/messages.getExportedChatInvites.html) + + + diff --git a/docs/API_docs/types/messages.FavedStickers.md b/docs/API_docs/types/messages.FavedStickers.md new file mode 100644 index 0000000000..b518b9a3b2 --- /dev/null +++ b/docs/API_docs/types/messages.FavedStickers.md @@ -0,0 +1,26 @@ +--- +title: messages.FavedStickers +description: constructors and methods of type messages.FavedStickers +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_FavedStickers.html +--- +# Type: messages.FavedStickers +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.favedStickersNotModified](/API_docs/constructors/messages.favedStickersNotModified.html) + +[messages.favedStickers](/API_docs/constructors/messages.favedStickers.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getFavedStickers](/API_docs/methods/messages.getFavedStickers.html) + + + diff --git a/docs/API_docs/types/messages.FeaturedStickers.md b/docs/API_docs/types/messages.FeaturedStickers.md new file mode 100644 index 0000000000..97b043bf6c --- /dev/null +++ b/docs/API_docs/types/messages.FeaturedStickers.md @@ -0,0 +1,30 @@ +--- +title: messages.FeaturedStickers +description: constructors and methods of type messages.FeaturedStickers +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_FeaturedStickers.html +--- +# Type: messages.FeaturedStickers +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.featuredStickersNotModified](/API_docs/constructors/messages.featuredStickersNotModified.html) + +[messages.featuredStickers](/API_docs/constructors/messages.featuredStickers.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getFeaturedStickers](/API_docs/methods/messages.getFeaturedStickers.html) + +[$MadelineProto->messages->getOldFeaturedStickers](/API_docs/methods/messages.getOldFeaturedStickers.html) + +[$MadelineProto->messages->getFeaturedEmojiStickers](/API_docs/methods/messages.getFeaturedEmojiStickers.html) + + + diff --git a/docs/API_docs/types/messages.ForumTopics.md b/docs/API_docs/types/messages.ForumTopics.md new file mode 100644 index 0000000000..b443e25021 --- /dev/null +++ b/docs/API_docs/types/messages.ForumTopics.md @@ -0,0 +1,26 @@ +--- +title: messages.ForumTopics +description: constructors and methods of type messages.ForumTopics +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_ForumTopics.html +--- +# Type: messages.ForumTopics +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.forumTopics](/API_docs/constructors/messages.forumTopics.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->channels->getForumTopics](/API_docs/methods/channels.getForumTopics.html) + +[$MadelineProto->channels->getForumTopicsByID](/API_docs/methods/channels.getForumTopicsByID.html) + + + diff --git a/docs/API_docs/types/messages.FoundStickerSets.md b/docs/API_docs/types/messages.FoundStickerSets.md new file mode 100644 index 0000000000..93974149a1 --- /dev/null +++ b/docs/API_docs/types/messages.FoundStickerSets.md @@ -0,0 +1,28 @@ +--- +title: messages.FoundStickerSets +description: constructors and methods of type messages.FoundStickerSets +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_FoundStickerSets.html +--- +# Type: messages.FoundStickerSets +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.foundStickerSetsNotModified](/API_docs/constructors/messages.foundStickerSetsNotModified.html) + +[messages.foundStickerSets](/API_docs/constructors/messages.foundStickerSets.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->searchStickerSets](/API_docs/methods/messages.searchStickerSets.html) + +[$MadelineProto->messages->searchEmojiStickerSets](/API_docs/methods/messages.searchEmojiStickerSets.html) + + + diff --git a/docs/API_docs/types/messages.HighScores.md b/docs/API_docs/types/messages.HighScores.md new file mode 100644 index 0000000000..432ca59ea7 --- /dev/null +++ b/docs/API_docs/types/messages.HighScores.md @@ -0,0 +1,26 @@ +--- +title: messages.HighScores +description: constructors and methods of type messages.HighScores +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_HighScores.html +--- +# Type: messages.HighScores +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.highScores](/API_docs/constructors/messages.highScores.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getGameHighScores](/API_docs/methods/messages.getGameHighScores.html) + +[$MadelineProto->messages->getInlineGameHighScores](/API_docs/methods/messages.getInlineGameHighScores.html) + + + diff --git a/docs/API_docs/types/messages.HistoryImport.md b/docs/API_docs/types/messages.HistoryImport.md new file mode 100644 index 0000000000..d2572f6456 --- /dev/null +++ b/docs/API_docs/types/messages.HistoryImport.md @@ -0,0 +1,24 @@ +--- +title: messages.HistoryImport +description: constructors and methods of type messages.HistoryImport +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_HistoryImport.html +--- +# Type: messages.HistoryImport +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.historyImport](/API_docs/constructors/messages.historyImport.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->initHistoryImport](/API_docs/methods/messages.initHistoryImport.html) + + + diff --git a/docs/API_docs/types/messages.HistoryImportParsed.md b/docs/API_docs/types/messages.HistoryImportParsed.md new file mode 100644 index 0000000000..f2540d08d8 --- /dev/null +++ b/docs/API_docs/types/messages.HistoryImportParsed.md @@ -0,0 +1,24 @@ +--- +title: messages.HistoryImportParsed +description: constructors and methods of type messages.HistoryImportParsed +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_HistoryImportParsed.html +--- +# Type: messages.HistoryImportParsed +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.historyImportParsed](/API_docs/constructors/messages.historyImportParsed.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->checkHistoryImport](/API_docs/methods/messages.checkHistoryImport.html) + + + diff --git a/docs/API_docs/types/messages.InactiveChats.md b/docs/API_docs/types/messages.InactiveChats.md new file mode 100644 index 0000000000..0548818c79 --- /dev/null +++ b/docs/API_docs/types/messages.InactiveChats.md @@ -0,0 +1,24 @@ +--- +title: messages.InactiveChats +description: constructors and methods of type messages.InactiveChats +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_InactiveChats.html +--- +# Type: messages.InactiveChats +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.inactiveChats](/API_docs/constructors/messages.inactiveChats.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->channels->getInactiveChannels](/API_docs/methods/channels.getInactiveChannels.html) + + + diff --git a/docs/API_docs/types/messages.InvitedUsers.md b/docs/API_docs/types/messages.InvitedUsers.md new file mode 100644 index 0000000000..b3e0d6b406 --- /dev/null +++ b/docs/API_docs/types/messages.InvitedUsers.md @@ -0,0 +1,28 @@ +--- +title: messages.InvitedUsers +description: constructors and methods of type messages.InvitedUsers +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_InvitedUsers.html +--- +# Type: messages.InvitedUsers +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.invitedUsers](/API_docs/constructors/messages.invitedUsers.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->addChatUser](/API_docs/methods/messages.addChatUser.html) + +[$MadelineProto->messages->createChat](/API_docs/methods/messages.createChat.html) + +[$MadelineProto->channels->inviteToChannel](/API_docs/methods/channels.inviteToChannel.html) + + + diff --git a/docs/API_docs/types/messages.MessageEditData.md b/docs/API_docs/types/messages.MessageEditData.md new file mode 100644 index 0000000000..969ab40b38 --- /dev/null +++ b/docs/API_docs/types/messages.MessageEditData.md @@ -0,0 +1,24 @@ +--- +title: messages.MessageEditData +description: constructors and methods of type messages.MessageEditData +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_MessageEditData.html +--- +# Type: messages.MessageEditData +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.messageEditData](/API_docs/constructors/messages.messageEditData.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getMessageEditData](/API_docs/methods/messages.getMessageEditData.html) + + + diff --git a/docs/API_docs/types/messages.MessageReactionsList.md b/docs/API_docs/types/messages.MessageReactionsList.md new file mode 100644 index 0000000000..4732a3465a --- /dev/null +++ b/docs/API_docs/types/messages.MessageReactionsList.md @@ -0,0 +1,24 @@ +--- +title: messages.MessageReactionsList +description: constructors and methods of type messages.MessageReactionsList +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_MessageReactionsList.html +--- +# Type: messages.MessageReactionsList +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.messageReactionsList](/API_docs/constructors/messages.messageReactionsList.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getMessageReactionsList](/API_docs/methods/messages.getMessageReactionsList.html) + + + diff --git a/docs/API_docs/types/messages.MessageViews.md b/docs/API_docs/types/messages.MessageViews.md new file mode 100644 index 0000000000..bf0ecb7002 --- /dev/null +++ b/docs/API_docs/types/messages.MessageViews.md @@ -0,0 +1,24 @@ +--- +title: messages.MessageViews +description: constructors and methods of type messages.MessageViews +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_MessageViews.html +--- +# Type: messages.MessageViews +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.messageViews](/API_docs/constructors/messages.messageViews.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getMessagesViews](/API_docs/methods/messages.getMessagesViews.html) + + + diff --git a/docs/API_docs/types/messages.Messages.md b/docs/API_docs/types/messages.Messages.md new file mode 100644 index 0000000000..94bde13ac0 --- /dev/null +++ b/docs/API_docs/types/messages.Messages.md @@ -0,0 +1,56 @@ +--- +title: messages.Messages +description: constructors and methods of type messages.Messages +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_Messages.html +--- +# Type: messages.Messages +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.messages](/API_docs/constructors/messages.messages.html) + +[messages.messagesSlice](/API_docs/constructors/messages.messagesSlice.html) + +[messages.channelMessages](/API_docs/constructors/messages.channelMessages.html) + +[messages.messagesNotModified](/API_docs/constructors/messages.messagesNotModified.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getMessages](/API_docs/methods/messages.getMessages.html) + +[$MadelineProto->messages->getHistory](/API_docs/methods/messages.getHistory.html) + +[$MadelineProto->messages->search](/API_docs/methods/messages.search.html) + +[$MadelineProto->messages->searchGlobal](/API_docs/methods/messages.searchGlobal.html) + +[$MadelineProto->messages->getUnreadMentions](/API_docs/methods/messages.getUnreadMentions.html) + +[$MadelineProto->messages->getRecentLocations](/API_docs/methods/messages.getRecentLocations.html) + +[$MadelineProto->messages->getScheduledHistory](/API_docs/methods/messages.getScheduledHistory.html) + +[$MadelineProto->messages->getScheduledMessages](/API_docs/methods/messages.getScheduledMessages.html) + +[$MadelineProto->messages->getReplies](/API_docs/methods/messages.getReplies.html) + +[$MadelineProto->messages->getUnreadReactions](/API_docs/methods/messages.getUnreadReactions.html) + +[$MadelineProto->messages->searchSentMedia](/API_docs/methods/messages.searchSentMedia.html) + +[$MadelineProto->messages->getSavedHistory](/API_docs/methods/messages.getSavedHistory.html) + +[$MadelineProto->messages->getQuickReplyMessages](/API_docs/methods/messages.getQuickReplyMessages.html) + +[$MadelineProto->channels->getMessages](/API_docs/methods/channels.getMessages.html) + + + diff --git a/docs/API_docs/types/messages.MyStickers.md b/docs/API_docs/types/messages.MyStickers.md new file mode 100644 index 0000000000..737520871f --- /dev/null +++ b/docs/API_docs/types/messages.MyStickers.md @@ -0,0 +1,24 @@ +--- +title: messages.MyStickers +description: constructors and methods of type messages.MyStickers +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_MyStickers.html +--- +# Type: messages.MyStickers +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.myStickers](/API_docs/constructors/messages.myStickers.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getMyStickers](/API_docs/methods/messages.getMyStickers.html) + + + diff --git a/docs/API_docs/types/messages.PeerDialogs.md b/docs/API_docs/types/messages.PeerDialogs.md new file mode 100644 index 0000000000..82df541b46 --- /dev/null +++ b/docs/API_docs/types/messages.PeerDialogs.md @@ -0,0 +1,26 @@ +--- +title: messages.PeerDialogs +description: constructors and methods of type messages.PeerDialogs +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_PeerDialogs.html +--- +# Type: messages.PeerDialogs +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.peerDialogs](/API_docs/constructors/messages.peerDialogs.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getPeerDialogs](/API_docs/methods/messages.getPeerDialogs.html) + +[$MadelineProto->messages->getPinnedDialogs](/API_docs/methods/messages.getPinnedDialogs.html) + + + diff --git a/docs/API_docs/types/messages.PeerSettings.md b/docs/API_docs/types/messages.PeerSettings.md new file mode 100644 index 0000000000..5655fda595 --- /dev/null +++ b/docs/API_docs/types/messages.PeerSettings.md @@ -0,0 +1,24 @@ +--- +title: messages.PeerSettings +description: constructors and methods of type messages.PeerSettings +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_PeerSettings.html +--- +# Type: messages.PeerSettings +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.peerSettings](/API_docs/constructors/messages.peerSettings.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getPeerSettings](/API_docs/methods/messages.getPeerSettings.html) + + + diff --git a/docs/API_docs/types/messages.QuickReplies.md b/docs/API_docs/types/messages.QuickReplies.md new file mode 100644 index 0000000000..251e5354e6 --- /dev/null +++ b/docs/API_docs/types/messages.QuickReplies.md @@ -0,0 +1,26 @@ +--- +title: messages.QuickReplies +description: constructors and methods of type messages.QuickReplies +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_QuickReplies.html +--- +# Type: messages.QuickReplies +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.quickReplies](/API_docs/constructors/messages.quickReplies.html) + +[messages.quickRepliesNotModified](/API_docs/constructors/messages.quickRepliesNotModified.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getQuickReplies](/API_docs/methods/messages.getQuickReplies.html) + + + diff --git a/docs/API_docs/types/messages.Reactions.md b/docs/API_docs/types/messages.Reactions.md new file mode 100644 index 0000000000..4acf487e62 --- /dev/null +++ b/docs/API_docs/types/messages.Reactions.md @@ -0,0 +1,30 @@ +--- +title: messages.Reactions +description: constructors and methods of type messages.Reactions +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_Reactions.html +--- +# Type: messages.Reactions +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.reactionsNotModified](/API_docs/constructors/messages.reactionsNotModified.html) + +[messages.reactions](/API_docs/constructors/messages.reactions.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getTopReactions](/API_docs/methods/messages.getTopReactions.html) + +[$MadelineProto->messages->getRecentReactions](/API_docs/methods/messages.getRecentReactions.html) + +[$MadelineProto->messages->getDefaultTagReactions](/API_docs/methods/messages.getDefaultTagReactions.html) + + + diff --git a/docs/API_docs/types/messages.RecentStickers.md b/docs/API_docs/types/messages.RecentStickers.md new file mode 100644 index 0000000000..fe4f758215 --- /dev/null +++ b/docs/API_docs/types/messages.RecentStickers.md @@ -0,0 +1,26 @@ +--- +title: messages.RecentStickers +description: constructors and methods of type messages.RecentStickers +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_RecentStickers.html +--- +# Type: messages.RecentStickers +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.recentStickersNotModified](/API_docs/constructors/messages.recentStickersNotModified.html) + +[messages.recentStickers](/API_docs/constructors/messages.recentStickers.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getRecentStickers](/API_docs/methods/messages.getRecentStickers.html) + + + diff --git a/docs/API_docs/types/messages.SavedDialogs.md b/docs/API_docs/types/messages.SavedDialogs.md new file mode 100644 index 0000000000..1482bdfcc7 --- /dev/null +++ b/docs/API_docs/types/messages.SavedDialogs.md @@ -0,0 +1,30 @@ +--- +title: messages.SavedDialogs +description: constructors and methods of type messages.SavedDialogs +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_SavedDialogs.html +--- +# Type: messages.SavedDialogs +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.savedDialogs](/API_docs/constructors/messages.savedDialogs.html) + +[messages.savedDialogsSlice](/API_docs/constructors/messages.savedDialogsSlice.html) + +[messages.savedDialogsNotModified](/API_docs/constructors/messages.savedDialogsNotModified.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getSavedDialogs](/API_docs/methods/messages.getSavedDialogs.html) + +[$MadelineProto->messages->getPinnedSavedDialogs](/API_docs/methods/messages.getPinnedSavedDialogs.html) + + + diff --git a/docs/API_docs/types/messages.SavedGifs.md b/docs/API_docs/types/messages.SavedGifs.md new file mode 100644 index 0000000000..463e740d68 --- /dev/null +++ b/docs/API_docs/types/messages.SavedGifs.md @@ -0,0 +1,26 @@ +--- +title: messages.SavedGifs +description: constructors and methods of type messages.SavedGifs +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_SavedGifs.html +--- +# Type: messages.SavedGifs +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.savedGifsNotModified](/API_docs/constructors/messages.savedGifsNotModified.html) + +[messages.savedGifs](/API_docs/constructors/messages.savedGifs.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getSavedGifs](/API_docs/methods/messages.getSavedGifs.html) + + + diff --git a/docs/API_docs/types/messages.SavedReactionTags.md b/docs/API_docs/types/messages.SavedReactionTags.md new file mode 100644 index 0000000000..16b5583502 --- /dev/null +++ b/docs/API_docs/types/messages.SavedReactionTags.md @@ -0,0 +1,26 @@ +--- +title: messages.SavedReactionTags +description: constructors and methods of type messages.SavedReactionTags +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_SavedReactionTags.html +--- +# Type: messages.SavedReactionTags +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.savedReactionTagsNotModified](/API_docs/constructors/messages.savedReactionTagsNotModified.html) + +[messages.savedReactionTags](/API_docs/constructors/messages.savedReactionTags.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getSavedReactionTags](/API_docs/methods/messages.getSavedReactionTags.html) + + + diff --git a/docs/API_docs/types/messages.SearchCounter.md b/docs/API_docs/types/messages.SearchCounter.md new file mode 100644 index 0000000000..a28198d29f --- /dev/null +++ b/docs/API_docs/types/messages.SearchCounter.md @@ -0,0 +1,24 @@ +--- +title: messages.SearchCounter +description: constructors and methods of type messages.SearchCounter +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_SearchCounter.html +--- +# Type: messages.SearchCounter +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.searchCounter](/API_docs/constructors/messages.searchCounter.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getSearchCounters](/API_docs/methods/messages.getSearchCounters.html) + + + diff --git a/docs/API_docs/types/messages.SearchResultsCalendar.md b/docs/API_docs/types/messages.SearchResultsCalendar.md new file mode 100644 index 0000000000..80e18a1b37 --- /dev/null +++ b/docs/API_docs/types/messages.SearchResultsCalendar.md @@ -0,0 +1,24 @@ +--- +title: messages.SearchResultsCalendar +description: constructors and methods of type messages.SearchResultsCalendar +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_SearchResultsCalendar.html +--- +# Type: messages.SearchResultsCalendar +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.searchResultsCalendar](/API_docs/constructors/messages.searchResultsCalendar.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getSearchResultsCalendar](/API_docs/methods/messages.getSearchResultsCalendar.html) + + + diff --git a/docs/API_docs/types/messages.SearchResultsPositions.md b/docs/API_docs/types/messages.SearchResultsPositions.md new file mode 100644 index 0000000000..8f01e467bd --- /dev/null +++ b/docs/API_docs/types/messages.SearchResultsPositions.md @@ -0,0 +1,24 @@ +--- +title: messages.SearchResultsPositions +description: constructors and methods of type messages.SearchResultsPositions +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_SearchResultsPositions.html +--- +# Type: messages.SearchResultsPositions +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.searchResultsPositions](/API_docs/constructors/messages.searchResultsPositions.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getSearchResultsPositions](/API_docs/methods/messages.getSearchResultsPositions.html) + + + diff --git a/docs/API_docs/types/messages.SentEncryptedMessage.md b/docs/API_docs/types/messages.SentEncryptedMessage.md new file mode 100644 index 0000000000..529f53d2a9 --- /dev/null +++ b/docs/API_docs/types/messages.SentEncryptedMessage.md @@ -0,0 +1,30 @@ +--- +title: messages.SentEncryptedMessage +description: constructors and methods of type messages.SentEncryptedMessage +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_SentEncryptedMessage.html +--- +# Type: messages.SentEncryptedMessage +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.sentEncryptedMessage](/API_docs/constructors/messages.sentEncryptedMessage.html) + +[messages.sentEncryptedFile](/API_docs/constructors/messages.sentEncryptedFile.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->sendEncrypted](/API_docs/methods/messages.sendEncrypted.html) + +[$MadelineProto->messages->sendEncryptedFile](/API_docs/methods/messages.sendEncryptedFile.html) + +[$MadelineProto->messages->sendEncryptedService](/API_docs/methods/messages.sendEncryptedService.html) + + + diff --git a/docs/API_docs/types/messages.SponsoredMessages.md b/docs/API_docs/types/messages.SponsoredMessages.md new file mode 100644 index 0000000000..95005efed0 --- /dev/null +++ b/docs/API_docs/types/messages.SponsoredMessages.md @@ -0,0 +1,26 @@ +--- +title: messages.SponsoredMessages +description: constructors and methods of type messages.SponsoredMessages +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_SponsoredMessages.html +--- +# Type: messages.SponsoredMessages +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.sponsoredMessages](/API_docs/constructors/messages.sponsoredMessages.html) + +[messages.sponsoredMessagesEmpty](/API_docs/constructors/messages.sponsoredMessagesEmpty.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->channels->getSponsoredMessages](/API_docs/methods/channels.getSponsoredMessages.html) + + + diff --git a/docs/API_docs/types/messages.StickerSet.md b/docs/API_docs/types/messages.StickerSet.md new file mode 100644 index 0000000000..0dd22bc285 --- /dev/null +++ b/docs/API_docs/types/messages.StickerSet.md @@ -0,0 +1,42 @@ +--- +title: messages.StickerSet +description: constructors and methods of type messages.StickerSet +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_StickerSet.html +--- +# Type: messages.StickerSet +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.stickerSet](/API_docs/constructors/messages.stickerSet.html) + +[messages.stickerSetNotModified](/API_docs/constructors/messages.stickerSetNotModified.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getStickerSet](/API_docs/methods/messages.getStickerSet.html) + +[$MadelineProto->stickers->createStickerSet](/API_docs/methods/stickers.createStickerSet.html) + +[$MadelineProto->stickers->removeStickerFromSet](/API_docs/methods/stickers.removeStickerFromSet.html) + +[$MadelineProto->stickers->changeStickerPosition](/API_docs/methods/stickers.changeStickerPosition.html) + +[$MadelineProto->stickers->addStickerToSet](/API_docs/methods/stickers.addStickerToSet.html) + +[$MadelineProto->stickers->setStickerSetThumb](/API_docs/methods/stickers.setStickerSetThumb.html) + +[$MadelineProto->stickers->changeSticker](/API_docs/methods/stickers.changeSticker.html) + +[$MadelineProto->stickers->renameStickerSet](/API_docs/methods/stickers.renameStickerSet.html) + +[$MadelineProto->stickers->replaceSticker](/API_docs/methods/stickers.replaceSticker.html) + + + diff --git a/docs/API_docs/types/messages.StickerSetInstallResult.md b/docs/API_docs/types/messages.StickerSetInstallResult.md new file mode 100644 index 0000000000..e78f96ac8a --- /dev/null +++ b/docs/API_docs/types/messages.StickerSetInstallResult.md @@ -0,0 +1,26 @@ +--- +title: messages.StickerSetInstallResult +description: constructors and methods of type messages.StickerSetInstallResult +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_StickerSetInstallResult.html +--- +# Type: messages.StickerSetInstallResult +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.stickerSetInstallResultSuccess](/API_docs/constructors/messages.stickerSetInstallResultSuccess.html) + +[messages.stickerSetInstallResultArchive](/API_docs/constructors/messages.stickerSetInstallResultArchive.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->installStickerSet](/API_docs/methods/messages.installStickerSet.html) + + + diff --git a/docs/API_docs/types/messages.Stickers.md b/docs/API_docs/types/messages.Stickers.md new file mode 100644 index 0000000000..811ebbb26e --- /dev/null +++ b/docs/API_docs/types/messages.Stickers.md @@ -0,0 +1,26 @@ +--- +title: messages.Stickers +description: constructors and methods of type messages.Stickers +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_Stickers.html +--- +# Type: messages.Stickers +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.stickersNotModified](/API_docs/constructors/messages.stickersNotModified.html) + +[messages.stickers](/API_docs/constructors/messages.stickers.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getStickers](/API_docs/methods/messages.getStickers.html) + + + diff --git a/docs/API_docs/types/messages.TranscribedAudio.md b/docs/API_docs/types/messages.TranscribedAudio.md new file mode 100644 index 0000000000..fad47dedb0 --- /dev/null +++ b/docs/API_docs/types/messages.TranscribedAudio.md @@ -0,0 +1,24 @@ +--- +title: messages.TranscribedAudio +description: constructors and methods of type messages.TranscribedAudio +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_TranscribedAudio.html +--- +# Type: messages.TranscribedAudio +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.transcribedAudio](/API_docs/constructors/messages.transcribedAudio.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->transcribeAudio](/API_docs/methods/messages.transcribeAudio.html) + + + diff --git a/docs/API_docs/types/messages.TranslatedText.md b/docs/API_docs/types/messages.TranslatedText.md new file mode 100644 index 0000000000..7a95672bb7 --- /dev/null +++ b/docs/API_docs/types/messages.TranslatedText.md @@ -0,0 +1,24 @@ +--- +title: messages.TranslatedText +description: constructors and methods of type messages.TranslatedText +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_TranslatedText.html +--- +# Type: messages.TranslatedText +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.translateResult](/API_docs/constructors/messages.translateResult.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->translateText](/API_docs/methods/messages.translateText.html) + + + diff --git a/docs/API_docs/types/messages.VotesList.md b/docs/API_docs/types/messages.VotesList.md new file mode 100644 index 0000000000..2d62f4ab49 --- /dev/null +++ b/docs/API_docs/types/messages.VotesList.md @@ -0,0 +1,24 @@ +--- +title: messages.VotesList +description: constructors and methods of type messages.VotesList +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_VotesList.html +--- +# Type: messages.VotesList +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.votesList](/API_docs/constructors/messages.votesList.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getPollVotes](/API_docs/methods/messages.getPollVotes.html) + + + diff --git a/docs/API_docs/types/messages.WebPage.md b/docs/API_docs/types/messages.WebPage.md new file mode 100644 index 0000000000..a1e654eeee --- /dev/null +++ b/docs/API_docs/types/messages.WebPage.md @@ -0,0 +1,24 @@ +--- +title: messages.WebPage +description: constructors and methods of type messages.WebPage +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/messages_WebPage.html +--- +# Type: messages.WebPage +[Back to types index](index.html) + + + +### Possible values (constructors): + +[messages.webPage](/API_docs/constructors/messages.webPage.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->messages->getWebPage](/API_docs/methods/messages.getWebPage.html) + + + diff --git a/docs/API_docs/types/payments.BankCardData.md b/docs/API_docs/types/payments.BankCardData.md new file mode 100644 index 0000000000..aa54f4a654 --- /dev/null +++ b/docs/API_docs/types/payments.BankCardData.md @@ -0,0 +1,24 @@ +--- +title: payments.BankCardData +description: constructors and methods of type payments.BankCardData +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/payments_BankCardData.html +--- +# Type: payments.BankCardData +[Back to types index](index.html) + + + +### Possible values (constructors): + +[payments.bankCardData](/API_docs/constructors/payments.bankCardData.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->payments->getBankCardData](/API_docs/methods/payments.getBankCardData.html) + + + diff --git a/docs/API_docs/types/payments.CheckedGiftCode.md b/docs/API_docs/types/payments.CheckedGiftCode.md new file mode 100644 index 0000000000..cf8fe08c4d --- /dev/null +++ b/docs/API_docs/types/payments.CheckedGiftCode.md @@ -0,0 +1,24 @@ +--- +title: payments.CheckedGiftCode +description: constructors and methods of type payments.CheckedGiftCode +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/payments_CheckedGiftCode.html +--- +# Type: payments.CheckedGiftCode +[Back to types index](index.html) + + + +### Possible values (constructors): + +[payments.checkedGiftCode](/API_docs/constructors/payments.checkedGiftCode.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->payments->checkGiftCode](/API_docs/methods/payments.checkGiftCode.html) + + + diff --git a/docs/API_docs/types/payments.ExportedInvoice.md b/docs/API_docs/types/payments.ExportedInvoice.md new file mode 100644 index 0000000000..6ac9278702 --- /dev/null +++ b/docs/API_docs/types/payments.ExportedInvoice.md @@ -0,0 +1,24 @@ +--- +title: payments.ExportedInvoice +description: constructors and methods of type payments.ExportedInvoice +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/payments_ExportedInvoice.html +--- +# Type: payments.ExportedInvoice +[Back to types index](index.html) + + + +### Possible values (constructors): + +[payments.exportedInvoice](/API_docs/constructors/payments.exportedInvoice.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->payments->exportInvoice](/API_docs/methods/payments.exportInvoice.html) + + + diff --git a/docs/API_docs/types/payments.GiveawayInfo.md b/docs/API_docs/types/payments.GiveawayInfo.md new file mode 100644 index 0000000000..a2073e9862 --- /dev/null +++ b/docs/API_docs/types/payments.GiveawayInfo.md @@ -0,0 +1,26 @@ +--- +title: payments.GiveawayInfo +description: constructors and methods of type payments.GiveawayInfo +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/payments_GiveawayInfo.html +--- +# Type: payments.GiveawayInfo +[Back to types index](index.html) + + + +### Possible values (constructors): + +[payments.giveawayInfo](/API_docs/constructors/payments.giveawayInfo.html) + +[payments.giveawayInfoResults](/API_docs/constructors/payments.giveawayInfoResults.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->payments->getGiveawayInfo](/API_docs/methods/payments.getGiveawayInfo.html) + + + diff --git a/docs/API_docs/types/payments.PaymentForm.md b/docs/API_docs/types/payments.PaymentForm.md new file mode 100644 index 0000000000..eed6c724d6 --- /dev/null +++ b/docs/API_docs/types/payments.PaymentForm.md @@ -0,0 +1,24 @@ +--- +title: payments.PaymentForm +description: constructors and methods of type payments.PaymentForm +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/payments_PaymentForm.html +--- +# Type: payments.PaymentForm +[Back to types index](index.html) + + + +### Possible values (constructors): + +[payments.paymentForm](/API_docs/constructors/payments.paymentForm.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->payments->getPaymentForm](/API_docs/methods/payments.getPaymentForm.html) + + + diff --git a/docs/API_docs/types/payments.PaymentReceipt.md b/docs/API_docs/types/payments.PaymentReceipt.md new file mode 100644 index 0000000000..d2566ac284 --- /dev/null +++ b/docs/API_docs/types/payments.PaymentReceipt.md @@ -0,0 +1,24 @@ +--- +title: payments.PaymentReceipt +description: constructors and methods of type payments.PaymentReceipt +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/payments_PaymentReceipt.html +--- +# Type: payments.PaymentReceipt +[Back to types index](index.html) + + + +### Possible values (constructors): + +[payments.paymentReceipt](/API_docs/constructors/payments.paymentReceipt.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->payments->getPaymentReceipt](/API_docs/methods/payments.getPaymentReceipt.html) + + + diff --git a/docs/API_docs/types/payments.PaymentResult.md b/docs/API_docs/types/payments.PaymentResult.md new file mode 100644 index 0000000000..5cf083a8f2 --- /dev/null +++ b/docs/API_docs/types/payments.PaymentResult.md @@ -0,0 +1,26 @@ +--- +title: payments.PaymentResult +description: constructors and methods of type payments.PaymentResult +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/payments_PaymentResult.html +--- +# Type: payments.PaymentResult +[Back to types index](index.html) + + + +### Possible values (constructors): + +[payments.paymentResult](/API_docs/constructors/payments.paymentResult.html) + +[payments.paymentVerificationNeeded](/API_docs/constructors/payments.paymentVerificationNeeded.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->payments->sendPaymentForm](/API_docs/methods/payments.sendPaymentForm.html) + + + diff --git a/docs/API_docs/types/payments.SavedInfo.md b/docs/API_docs/types/payments.SavedInfo.md new file mode 100644 index 0000000000..5aeb7f346b --- /dev/null +++ b/docs/API_docs/types/payments.SavedInfo.md @@ -0,0 +1,24 @@ +--- +title: payments.SavedInfo +description: constructors and methods of type payments.SavedInfo +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/payments_SavedInfo.html +--- +# Type: payments.SavedInfo +[Back to types index](index.html) + + + +### Possible values (constructors): + +[payments.savedInfo](/API_docs/constructors/payments.savedInfo.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->payments->getSavedInfo](/API_docs/methods/payments.getSavedInfo.html) + + + diff --git a/docs/API_docs/types/payments.ValidatedRequestedInfo.md b/docs/API_docs/types/payments.ValidatedRequestedInfo.md new file mode 100644 index 0000000000..cfb08c79eb --- /dev/null +++ b/docs/API_docs/types/payments.ValidatedRequestedInfo.md @@ -0,0 +1,24 @@ +--- +title: payments.ValidatedRequestedInfo +description: constructors and methods of type payments.ValidatedRequestedInfo +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/payments_ValidatedRequestedInfo.html +--- +# Type: payments.ValidatedRequestedInfo +[Back to types index](index.html) + + + +### Possible values (constructors): + +[payments.validatedRequestedInfo](/API_docs/constructors/payments.validatedRequestedInfo.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->payments->validateRequestedInfo](/API_docs/methods/payments.validateRequestedInfo.html) + + + diff --git a/docs/API_docs/types/phone.ExportedGroupCallInvite.md b/docs/API_docs/types/phone.ExportedGroupCallInvite.md new file mode 100644 index 0000000000..041c9f3239 --- /dev/null +++ b/docs/API_docs/types/phone.ExportedGroupCallInvite.md @@ -0,0 +1,24 @@ +--- +title: phone.ExportedGroupCallInvite +description: constructors and methods of type phone.ExportedGroupCallInvite +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/phone_ExportedGroupCallInvite.html +--- +# Type: phone.ExportedGroupCallInvite +[Back to types index](index.html) + + + +### Possible values (constructors): + +[phone.exportedGroupCallInvite](/API_docs/constructors/phone.exportedGroupCallInvite.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->phone->exportGroupCallInvite](/API_docs/methods/phone.exportGroupCallInvite.html) + + + diff --git a/docs/API_docs/types/phone.GroupCall.md b/docs/API_docs/types/phone.GroupCall.md new file mode 100644 index 0000000000..b3888e41e5 --- /dev/null +++ b/docs/API_docs/types/phone.GroupCall.md @@ -0,0 +1,24 @@ +--- +title: phone.GroupCall +description: constructors and methods of type phone.GroupCall +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/phone_GroupCall.html +--- +# Type: phone.GroupCall +[Back to types index](index.html) + + + +### Possible values (constructors): + +[phone.groupCall](/API_docs/constructors/phone.groupCall.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->phone->getGroupCall](/API_docs/methods/phone.getGroupCall.html) + + + diff --git a/docs/API_docs/types/phone.GroupCallStreamChannels.md b/docs/API_docs/types/phone.GroupCallStreamChannels.md new file mode 100644 index 0000000000..c8b858b68d --- /dev/null +++ b/docs/API_docs/types/phone.GroupCallStreamChannels.md @@ -0,0 +1,24 @@ +--- +title: phone.GroupCallStreamChannels +description: constructors and methods of type phone.GroupCallStreamChannels +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/phone_GroupCallStreamChannels.html +--- +# Type: phone.GroupCallStreamChannels +[Back to types index](index.html) + + + +### Possible values (constructors): + +[phone.groupCallStreamChannels](/API_docs/constructors/phone.groupCallStreamChannels.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->phone->getGroupCallStreamChannels](/API_docs/methods/phone.getGroupCallStreamChannels.html) + + + diff --git a/docs/API_docs/types/phone.GroupCallStreamRtmpUrl.md b/docs/API_docs/types/phone.GroupCallStreamRtmpUrl.md new file mode 100644 index 0000000000..fbb1b10223 --- /dev/null +++ b/docs/API_docs/types/phone.GroupCallStreamRtmpUrl.md @@ -0,0 +1,24 @@ +--- +title: phone.GroupCallStreamRtmpUrl +description: constructors and methods of type phone.GroupCallStreamRtmpUrl +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/phone_GroupCallStreamRtmpUrl.html +--- +# Type: phone.GroupCallStreamRtmpUrl +[Back to types index](index.html) + + + +### Possible values (constructors): + +[phone.groupCallStreamRtmpUrl](/API_docs/constructors/phone.groupCallStreamRtmpUrl.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->phone->getGroupCallStreamRtmpUrl](/API_docs/methods/phone.getGroupCallStreamRtmpUrl.html) + + + diff --git a/docs/API_docs/types/phone.GroupParticipants.md b/docs/API_docs/types/phone.GroupParticipants.md new file mode 100644 index 0000000000..a60afbf6f2 --- /dev/null +++ b/docs/API_docs/types/phone.GroupParticipants.md @@ -0,0 +1,24 @@ +--- +title: phone.GroupParticipants +description: constructors and methods of type phone.GroupParticipants +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/phone_GroupParticipants.html +--- +# Type: phone.GroupParticipants +[Back to types index](index.html) + + + +### Possible values (constructors): + +[phone.groupParticipants](/API_docs/constructors/phone.groupParticipants.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->phone->getGroupParticipants](/API_docs/methods/phone.getGroupParticipants.html) + + + diff --git a/docs/API_docs/types/phone.JoinAsPeers.md b/docs/API_docs/types/phone.JoinAsPeers.md new file mode 100644 index 0000000000..0382a8f3bb --- /dev/null +++ b/docs/API_docs/types/phone.JoinAsPeers.md @@ -0,0 +1,24 @@ +--- +title: phone.JoinAsPeers +description: constructors and methods of type phone.JoinAsPeers +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/phone_JoinAsPeers.html +--- +# Type: phone.JoinAsPeers +[Back to types index](index.html) + + + +### Possible values (constructors): + +[phone.joinAsPeers](/API_docs/constructors/phone.joinAsPeers.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->phone->getGroupCallJoinAs](/API_docs/methods/phone.getGroupCallJoinAs.html) + + + diff --git a/docs/API_docs/types/phone.PhoneCall.md b/docs/API_docs/types/phone.PhoneCall.md new file mode 100644 index 0000000000..5596f0aed1 --- /dev/null +++ b/docs/API_docs/types/phone.PhoneCall.md @@ -0,0 +1,28 @@ +--- +title: phone.PhoneCall +description: constructors and methods of type phone.PhoneCall +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/phone_PhoneCall.html +--- +# Type: phone.PhoneCall +[Back to types index](index.html) + + + +### Possible values (constructors): + +[phone.phoneCall](/API_docs/constructors/phone.phoneCall.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->phone->requestCall](/API_docs/methods/phone.requestCall.html) + +[$MadelineProto->phone->acceptCall](/API_docs/methods/phone.acceptCall.html) + +[$MadelineProto->phone->confirmCall](/API_docs/methods/phone.confirmCall.html) + + + diff --git a/docs/API_docs/types/photos.Photo.md b/docs/API_docs/types/photos.Photo.md new file mode 100644 index 0000000000..1590717f79 --- /dev/null +++ b/docs/API_docs/types/photos.Photo.md @@ -0,0 +1,28 @@ +--- +title: photos.Photo +description: constructors and methods of type photos.Photo +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/photos_Photo.html +--- +# Type: photos.Photo +[Back to types index](index.html) + + + +### Possible values (constructors): + +[photos.photo](/API_docs/constructors/photos.photo.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->photos->updateProfilePhoto](/API_docs/methods/photos.updateProfilePhoto.html) + +[$MadelineProto->photos->uploadProfilePhoto](/API_docs/methods/photos.uploadProfilePhoto.html) + +[$MadelineProto->photos->uploadContactProfilePhoto](/API_docs/methods/photos.uploadContactProfilePhoto.html) + + + diff --git a/docs/API_docs/types/photos.Photos.md b/docs/API_docs/types/photos.Photos.md new file mode 100644 index 0000000000..99dd82a8dd --- /dev/null +++ b/docs/API_docs/types/photos.Photos.md @@ -0,0 +1,26 @@ +--- +title: photos.Photos +description: constructors and methods of type photos.Photos +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/photos_Photos.html +--- +# Type: photos.Photos +[Back to types index](index.html) + + + +### Possible values (constructors): + +[photos.photos](/API_docs/constructors/photos.photos.html) + +[photos.photosSlice](/API_docs/constructors/photos.photosSlice.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->photos->getUserPhotos](/API_docs/methods/photos.getUserPhotos.html) + + + diff --git a/docs/API_docs/types/premium.BoostsList.md b/docs/API_docs/types/premium.BoostsList.md new file mode 100644 index 0000000000..54d88e0a7c --- /dev/null +++ b/docs/API_docs/types/premium.BoostsList.md @@ -0,0 +1,26 @@ +--- +title: premium.BoostsList +description: constructors and methods of type premium.BoostsList +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/premium_BoostsList.html +--- +# Type: premium.BoostsList +[Back to types index](index.html) + + + +### Possible values (constructors): + +[premium.boostsList](/API_docs/constructors/premium.boostsList.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->premium->getBoostsList](/API_docs/methods/premium.getBoostsList.html) + +[$MadelineProto->premium->getUserBoosts](/API_docs/methods/premium.getUserBoosts.html) + + + diff --git a/docs/API_docs/types/premium.BoostsStatus.md b/docs/API_docs/types/premium.BoostsStatus.md new file mode 100644 index 0000000000..592b12b3b0 --- /dev/null +++ b/docs/API_docs/types/premium.BoostsStatus.md @@ -0,0 +1,24 @@ +--- +title: premium.BoostsStatus +description: constructors and methods of type premium.BoostsStatus +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/premium_BoostsStatus.html +--- +# Type: premium.BoostsStatus +[Back to types index](index.html) + + + +### Possible values (constructors): + +[premium.boostsStatus](/API_docs/constructors/premium.boostsStatus.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->premium->getBoostsStatus](/API_docs/methods/premium.getBoostsStatus.html) + + + diff --git a/docs/API_docs/types/premium.MyBoosts.md b/docs/API_docs/types/premium.MyBoosts.md new file mode 100644 index 0000000000..1721ae05ed --- /dev/null +++ b/docs/API_docs/types/premium.MyBoosts.md @@ -0,0 +1,26 @@ +--- +title: premium.MyBoosts +description: constructors and methods of type premium.MyBoosts +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/premium_MyBoosts.html +--- +# Type: premium.MyBoosts +[Back to types index](index.html) + + + +### Possible values (constructors): + +[premium.myBoosts](/API_docs/constructors/premium.myBoosts.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->premium->getMyBoosts](/API_docs/methods/premium.getMyBoosts.html) + +[$MadelineProto->premium->applyBoost](/API_docs/methods/premium.applyBoost.html) + + + diff --git a/docs/API_docs/types/smsjobs.EligibilityToJoin.md b/docs/API_docs/types/smsjobs.EligibilityToJoin.md new file mode 100644 index 0000000000..9348d3289a --- /dev/null +++ b/docs/API_docs/types/smsjobs.EligibilityToJoin.md @@ -0,0 +1,24 @@ +--- +title: smsjobs.EligibilityToJoin +description: constructors and methods of type smsjobs.EligibilityToJoin +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/smsjobs_EligibilityToJoin.html +--- +# Type: smsjobs.EligibilityToJoin +[Back to types index](index.html) + + + +### Possible values (constructors): + +[smsjobs.eligibleToJoin](/API_docs/constructors/smsjobs.eligibleToJoin.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->smsjobs->isEligibleToJoin](/API_docs/methods/smsjobs.isEligibleToJoin.html) + + + diff --git a/docs/API_docs/types/smsjobs.Status.md b/docs/API_docs/types/smsjobs.Status.md new file mode 100644 index 0000000000..de5da82273 --- /dev/null +++ b/docs/API_docs/types/smsjobs.Status.md @@ -0,0 +1,24 @@ +--- +title: smsjobs.Status +description: constructors and methods of type smsjobs.Status +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/smsjobs_Status.html +--- +# Type: smsjobs.Status +[Back to types index](index.html) + + + +### Possible values (constructors): + +[smsjobs.status](/API_docs/constructors/smsjobs.status.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->smsjobs->getStatus](/API_docs/methods/smsjobs.getStatus.html) + + + diff --git a/docs/API_docs/types/stats.BroadcastRevenueStats.md b/docs/API_docs/types/stats.BroadcastRevenueStats.md new file mode 100644 index 0000000000..f2691ed626 --- /dev/null +++ b/docs/API_docs/types/stats.BroadcastRevenueStats.md @@ -0,0 +1,24 @@ +--- +title: stats.BroadcastRevenueStats +description: constructors and methods of type stats.BroadcastRevenueStats +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/stats_BroadcastRevenueStats.html +--- +# Type: stats.BroadcastRevenueStats +[Back to types index](index.html) + + + +### Possible values (constructors): + +[stats.broadcastRevenueStats](/API_docs/constructors/stats.broadcastRevenueStats.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->stats->getBroadcastRevenueStats](/API_docs/methods/stats.getBroadcastRevenueStats.html) + + + diff --git a/docs/API_docs/types/stats.BroadcastRevenueTransactions.md b/docs/API_docs/types/stats.BroadcastRevenueTransactions.md new file mode 100644 index 0000000000..797a17e75b --- /dev/null +++ b/docs/API_docs/types/stats.BroadcastRevenueTransactions.md @@ -0,0 +1,24 @@ +--- +title: stats.BroadcastRevenueTransactions +description: constructors and methods of type stats.BroadcastRevenueTransactions +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/stats_BroadcastRevenueTransactions.html +--- +# Type: stats.BroadcastRevenueTransactions +[Back to types index](index.html) + + + +### Possible values (constructors): + +[stats.broadcastRevenueTransactions](/API_docs/constructors/stats.broadcastRevenueTransactions.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->stats->getBroadcastRevenueTransactions](/API_docs/methods/stats.getBroadcastRevenueTransactions.html) + + + diff --git a/docs/API_docs/types/stats.BroadcastRevenueWithdrawalUrl.md b/docs/API_docs/types/stats.BroadcastRevenueWithdrawalUrl.md new file mode 100644 index 0000000000..6973bc4d28 --- /dev/null +++ b/docs/API_docs/types/stats.BroadcastRevenueWithdrawalUrl.md @@ -0,0 +1,24 @@ +--- +title: stats.BroadcastRevenueWithdrawalUrl +description: constructors and methods of type stats.BroadcastRevenueWithdrawalUrl +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/stats_BroadcastRevenueWithdrawalUrl.html +--- +# Type: stats.BroadcastRevenueWithdrawalUrl +[Back to types index](index.html) + + + +### Possible values (constructors): + +[stats.broadcastRevenueWithdrawalUrl](/API_docs/constructors/stats.broadcastRevenueWithdrawalUrl.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->stats->getBroadcastRevenueWithdrawalUrl](/API_docs/methods/stats.getBroadcastRevenueWithdrawalUrl.html) + + + diff --git a/docs/API_docs/types/stats.BroadcastStats.md b/docs/API_docs/types/stats.BroadcastStats.md new file mode 100644 index 0000000000..c66f090f10 --- /dev/null +++ b/docs/API_docs/types/stats.BroadcastStats.md @@ -0,0 +1,24 @@ +--- +title: stats.BroadcastStats +description: constructors and methods of type stats.BroadcastStats +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/stats_BroadcastStats.html +--- +# Type: stats.BroadcastStats +[Back to types index](index.html) + + + +### Possible values (constructors): + +[stats.broadcastStats](/API_docs/constructors/stats.broadcastStats.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->stats->getBroadcastStats](/API_docs/methods/stats.getBroadcastStats.html) + + + diff --git a/docs/API_docs/types/stats.MegagroupStats.md b/docs/API_docs/types/stats.MegagroupStats.md new file mode 100644 index 0000000000..7edaf483a9 --- /dev/null +++ b/docs/API_docs/types/stats.MegagroupStats.md @@ -0,0 +1,24 @@ +--- +title: stats.MegagroupStats +description: constructors and methods of type stats.MegagroupStats +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/stats_MegagroupStats.html +--- +# Type: stats.MegagroupStats +[Back to types index](index.html) + + + +### Possible values (constructors): + +[stats.megagroupStats](/API_docs/constructors/stats.megagroupStats.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->stats->getMegagroupStats](/API_docs/methods/stats.getMegagroupStats.html) + + + diff --git a/docs/API_docs/types/stats.MessageStats.md b/docs/API_docs/types/stats.MessageStats.md new file mode 100644 index 0000000000..dce18d5310 --- /dev/null +++ b/docs/API_docs/types/stats.MessageStats.md @@ -0,0 +1,24 @@ +--- +title: stats.MessageStats +description: constructors and methods of type stats.MessageStats +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/stats_MessageStats.html +--- +# Type: stats.MessageStats +[Back to types index](index.html) + + + +### Possible values (constructors): + +[stats.messageStats](/API_docs/constructors/stats.messageStats.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->stats->getMessageStats](/API_docs/methods/stats.getMessageStats.html) + + + diff --git a/docs/API_docs/types/stats.PublicForwards.md b/docs/API_docs/types/stats.PublicForwards.md new file mode 100644 index 0000000000..e40f7bceae --- /dev/null +++ b/docs/API_docs/types/stats.PublicForwards.md @@ -0,0 +1,26 @@ +--- +title: stats.PublicForwards +description: constructors and methods of type stats.PublicForwards +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/stats_PublicForwards.html +--- +# Type: stats.PublicForwards +[Back to types index](index.html) + + + +### Possible values (constructors): + +[stats.publicForwards](/API_docs/constructors/stats.publicForwards.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->stats->getMessagePublicForwards](/API_docs/methods/stats.getMessagePublicForwards.html) + +[$MadelineProto->stats->getStoryPublicForwards](/API_docs/methods/stats.getStoryPublicForwards.html) + + + diff --git a/docs/API_docs/types/stats.StoryStats.md b/docs/API_docs/types/stats.StoryStats.md new file mode 100644 index 0000000000..bee52c7707 --- /dev/null +++ b/docs/API_docs/types/stats.StoryStats.md @@ -0,0 +1,24 @@ +--- +title: stats.StoryStats +description: constructors and methods of type stats.StoryStats +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/stats_StoryStats.html +--- +# Type: stats.StoryStats +[Back to types index](index.html) + + + +### Possible values (constructors): + +[stats.storyStats](/API_docs/constructors/stats.storyStats.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->stats->getStoryStats](/API_docs/methods/stats.getStoryStats.html) + + + diff --git a/docs/API_docs/types/stickers.SuggestedShortName.md b/docs/API_docs/types/stickers.SuggestedShortName.md new file mode 100644 index 0000000000..fd9598d47c --- /dev/null +++ b/docs/API_docs/types/stickers.SuggestedShortName.md @@ -0,0 +1,24 @@ +--- +title: stickers.SuggestedShortName +description: constructors and methods of type stickers.SuggestedShortName +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/stickers_SuggestedShortName.html +--- +# Type: stickers.SuggestedShortName +[Back to types index](index.html) + + + +### Possible values (constructors): + +[stickers.suggestedShortName](/API_docs/constructors/stickers.suggestedShortName.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->stickers->suggestShortName](/API_docs/methods/stickers.suggestShortName.html) + + + diff --git a/docs/API_docs/types/storage.FileType.md b/docs/API_docs/types/storage.FileType.md new file mode 100644 index 0000000000..ed3a23e5bd --- /dev/null +++ b/docs/API_docs/types/storage.FileType.md @@ -0,0 +1,40 @@ +--- +title: storage.FileType +description: constructors and methods of type storage.FileType +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/storage_FileType.html +--- +# Type: storage.FileType +[Back to types index](index.html) + + + +### Possible values (constructors): + +[storage.fileUnknown](/API_docs/constructors/storage.fileUnknown.html) + +[storage.filePartial](/API_docs/constructors/storage.filePartial.html) + +[storage.fileJpeg](/API_docs/constructors/storage.fileJpeg.html) + +[storage.fileGif](/API_docs/constructors/storage.fileGif.html) + +[storage.filePng](/API_docs/constructors/storage.filePng.html) + +[storage.filePdf](/API_docs/constructors/storage.filePdf.html) + +[storage.fileMp3](/API_docs/constructors/storage.fileMp3.html) + +[storage.fileMov](/API_docs/constructors/storage.fileMov.html) + +[storage.fileMp4](/API_docs/constructors/storage.fileMp4.html) + +[storage.fileWebp](/API_docs/constructors/storage.fileWebp.html) + + + +### Methods that return an object of this type (methods): + + + diff --git a/docs/API_docs/types/stories.AllStories.md b/docs/API_docs/types/stories.AllStories.md new file mode 100644 index 0000000000..f861eebd59 --- /dev/null +++ b/docs/API_docs/types/stories.AllStories.md @@ -0,0 +1,26 @@ +--- +title: stories.AllStories +description: constructors and methods of type stories.AllStories +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/stories_AllStories.html +--- +# Type: stories.AllStories +[Back to types index](index.html) + + + +### Possible values (constructors): + +[stories.allStoriesNotModified](/API_docs/constructors/stories.allStoriesNotModified.html) + +[stories.allStories](/API_docs/constructors/stories.allStories.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->stories->getAllStories](/API_docs/methods/stories.getAllStories.html) + + + diff --git a/docs/API_docs/types/stories.PeerStories.md b/docs/API_docs/types/stories.PeerStories.md new file mode 100644 index 0000000000..6e435c804f --- /dev/null +++ b/docs/API_docs/types/stories.PeerStories.md @@ -0,0 +1,24 @@ +--- +title: stories.PeerStories +description: constructors and methods of type stories.PeerStories +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/stories_PeerStories.html +--- +# Type: stories.PeerStories +[Back to types index](index.html) + + + +### Possible values (constructors): + +[stories.peerStories](/API_docs/constructors/stories.peerStories.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->stories->getPeerStories](/API_docs/methods/stories.getPeerStories.html) + + + diff --git a/docs/API_docs/types/stories.Stories.md b/docs/API_docs/types/stories.Stories.md new file mode 100644 index 0000000000..3b3b0a5a44 --- /dev/null +++ b/docs/API_docs/types/stories.Stories.md @@ -0,0 +1,28 @@ +--- +title: stories.Stories +description: constructors and methods of type stories.Stories +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/stories_Stories.html +--- +# Type: stories.Stories +[Back to types index](index.html) + + + +### Possible values (constructors): + +[stories.stories](/API_docs/constructors/stories.stories.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->stories->getPinnedStories](/API_docs/methods/stories.getPinnedStories.html) + +[$MadelineProto->stories->getStoriesArchive](/API_docs/methods/stories.getStoriesArchive.html) + +[$MadelineProto->stories->getStoriesByID](/API_docs/methods/stories.getStoriesByID.html) + + + diff --git a/docs/API_docs/types/stories.StoryReactionsList.md b/docs/API_docs/types/stories.StoryReactionsList.md new file mode 100644 index 0000000000..c61f627ac2 --- /dev/null +++ b/docs/API_docs/types/stories.StoryReactionsList.md @@ -0,0 +1,24 @@ +--- +title: stories.StoryReactionsList +description: constructors and methods of type stories.StoryReactionsList +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/stories_StoryReactionsList.html +--- +# Type: stories.StoryReactionsList +[Back to types index](index.html) + + + +### Possible values (constructors): + +[stories.storyReactionsList](/API_docs/constructors/stories.storyReactionsList.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->stories->getStoryReactionsList](/API_docs/methods/stories.getStoryReactionsList.html) + + + diff --git a/docs/API_docs/types/stories.StoryViews.md b/docs/API_docs/types/stories.StoryViews.md new file mode 100644 index 0000000000..9eb7643a1b --- /dev/null +++ b/docs/API_docs/types/stories.StoryViews.md @@ -0,0 +1,24 @@ +--- +title: stories.StoryViews +description: constructors and methods of type stories.StoryViews +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/stories_StoryViews.html +--- +# Type: stories.StoryViews +[Back to types index](index.html) + + + +### Possible values (constructors): + +[stories.storyViews](/API_docs/constructors/stories.storyViews.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->stories->getStoriesViews](/API_docs/methods/stories.getStoriesViews.html) + + + diff --git a/docs/API_docs/types/stories.StoryViewsList.md b/docs/API_docs/types/stories.StoryViewsList.md new file mode 100644 index 0000000000..ed0e530813 --- /dev/null +++ b/docs/API_docs/types/stories.StoryViewsList.md @@ -0,0 +1,24 @@ +--- +title: stories.StoryViewsList +description: constructors and methods of type stories.StoryViewsList +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/stories_StoryViewsList.html +--- +# Type: stories.StoryViewsList +[Back to types index](index.html) + + + +### Possible values (constructors): + +[stories.storyViewsList](/API_docs/constructors/stories.storyViewsList.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->stories->getStoryViewsList](/API_docs/methods/stories.getStoryViewsList.html) + + + diff --git a/docs/API_docs/types/string.md b/docs/API_docs/types/string.md new file mode 100644 index 0000000000..95353ffd00 --- /dev/null +++ b/docs/API_docs/types/string.md @@ -0,0 +1,10 @@ +--- +title: string +description: A UTF8 string of variable length +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: string +[Back to constructor index](index.html) + +A UTF8 string of variable length. The total length in bytes of the string must not be bigger than 16777215. diff --git a/docs/API_docs/types/updates.ChannelDifference.md b/docs/API_docs/types/updates.ChannelDifference.md new file mode 100644 index 0000000000..dc3e40a0d9 --- /dev/null +++ b/docs/API_docs/types/updates.ChannelDifference.md @@ -0,0 +1,28 @@ +--- +title: updates.ChannelDifference +description: constructors and methods of type updates.ChannelDifference +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/updates_ChannelDifference.html +--- +# Type: updates.ChannelDifference +[Back to types index](index.html) + + + +### Possible values (constructors): + +[updates.channelDifferenceEmpty](/API_docs/constructors/updates.channelDifferenceEmpty.html) + +[updates.channelDifferenceTooLong](/API_docs/constructors/updates.channelDifferenceTooLong.html) + +[updates.channelDifference](/API_docs/constructors/updates.channelDifference.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->updates->getChannelDifference](/API_docs/methods/updates.getChannelDifference.html) + + + diff --git a/docs/API_docs/types/updates.Difference.md b/docs/API_docs/types/updates.Difference.md new file mode 100644 index 0000000000..de0cad895d --- /dev/null +++ b/docs/API_docs/types/updates.Difference.md @@ -0,0 +1,30 @@ +--- +title: updates.Difference +description: constructors and methods of type updates.Difference +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/updates_Difference.html +--- +# Type: updates.Difference +[Back to types index](index.html) + + + +### Possible values (constructors): + +[updates.differenceEmpty](/API_docs/constructors/updates.differenceEmpty.html) + +[updates.difference](/API_docs/constructors/updates.difference.html) + +[updates.differenceSlice](/API_docs/constructors/updates.differenceSlice.html) + +[updates.differenceTooLong](/API_docs/constructors/updates.differenceTooLong.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->updates->getDifference](/API_docs/methods/updates.getDifference.html) + + + diff --git a/docs/API_docs/types/updates.State.md b/docs/API_docs/types/updates.State.md new file mode 100644 index 0000000000..96e30384f8 --- /dev/null +++ b/docs/API_docs/types/updates.State.md @@ -0,0 +1,24 @@ +--- +title: updates.State +description: constructors and methods of type updates.State +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/updates_State.html +--- +# Type: updates.State +[Back to types index](index.html) + + + +### Possible values (constructors): + +[updates.state](/API_docs/constructors/updates.state.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->updates->getState](/API_docs/methods/updates.getState.html) + + + diff --git a/docs/API_docs/types/upload.CdnFile.md b/docs/API_docs/types/upload.CdnFile.md new file mode 100644 index 0000000000..a14410c05a --- /dev/null +++ b/docs/API_docs/types/upload.CdnFile.md @@ -0,0 +1,26 @@ +--- +title: upload.CdnFile +description: constructors and methods of type upload.CdnFile +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/upload_CdnFile.html +--- +# Type: upload.CdnFile +[Back to types index](index.html) + + + +### Possible values (constructors): + +[upload.cdnFileReuploadNeeded](/API_docs/constructors/upload.cdnFileReuploadNeeded.html) + +[upload.cdnFile](/API_docs/constructors/upload.cdnFile.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->upload->getCdnFile](/API_docs/methods/upload.getCdnFile.html) + + + diff --git a/docs/API_docs/types/upload.File.md b/docs/API_docs/types/upload.File.md new file mode 100644 index 0000000000..4fcc041f42 --- /dev/null +++ b/docs/API_docs/types/upload.File.md @@ -0,0 +1,26 @@ +--- +title: upload.File +description: constructors and methods of type upload.File +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/upload_File.html +--- +# Type: upload.File +[Back to types index](index.html) + + + +### Possible values (constructors): + +[upload.file](/API_docs/constructors/upload.file.html) + +[upload.fileCdnRedirect](/API_docs/constructors/upload.fileCdnRedirect.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->upload->getFile](/API_docs/methods/upload.getFile.html) + + + diff --git a/docs/API_docs/types/upload.WebFile.md b/docs/API_docs/types/upload.WebFile.md new file mode 100644 index 0000000000..33b3118179 --- /dev/null +++ b/docs/API_docs/types/upload.WebFile.md @@ -0,0 +1,24 @@ +--- +title: upload.WebFile +description: constructors and methods of type upload.WebFile +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/upload_WebFile.html +--- +# Type: upload.WebFile +[Back to types index](index.html) + + + +### Possible values (constructors): + +[upload.webFile](/API_docs/constructors/upload.webFile.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->upload->getWebFile](/API_docs/methods/upload.getWebFile.html) + + + diff --git a/docs/API_docs/types/users.UserFull.md b/docs/API_docs/types/users.UserFull.md new file mode 100644 index 0000000000..f467312060 --- /dev/null +++ b/docs/API_docs/types/users.UserFull.md @@ -0,0 +1,24 @@ +--- +title: users.UserFull +description: constructors and methods of type users.UserFull +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +redirect_from: /API_docs/types/users_UserFull.html +--- +# Type: users.UserFull +[Back to types index](index.html) + + + +### Possible values (constructors): + +[users.userFull](/API_docs/constructors/users.userFull.html) + + + +### Methods that return an object of this type (methods): + +[$MadelineProto->users->getFullUser](/API_docs/methods/users.getFullUser.html) + + + diff --git a/docs/API_docs/types/waveform.md b/docs/API_docs/types/waveform.md new file mode 100644 index 0000000000..8867f420ca --- /dev/null +++ b/docs/API_docs/types/waveform.md @@ -0,0 +1,16 @@ +--- +title: waveform +description: An array representing the waveform of a voice message +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: waveform +[Back to constructor index](index.html) + +The waveform of a voice message is represented by an array of 100 elements, containing integers ranging from 0 to 31. + +```php +$waveform = array_fill(0, 100, 0); +$waveform = array_fill(0, 100, 31); +``` + diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 0000000000..f4ccbf5357 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +docs.madelineproto.xyz \ No newline at end of file diff --git a/docs/Chat.md b/docs/Chat.md new file mode 100644 index 0000000000..004d4ae36c --- /dev/null +++ b/docs/Chat.md @@ -0,0 +1,51 @@ +--- +title: PWRTelegram chat +description: chat attributes, type and example +nav_exclude: true +--- +## Constructor: PWRTelegram chat + + + +### Attributes: + +| Name | Type | Required |Description| +|----------|---------------|----------|-----------| +|type|[string](API_docs/types/string.html) | Yes|bot, user, channel, supergroup or chat| +|id|[long](API_docs/types/long.html) | Yes|bot API chat id| +|access\_hash|[long](API_docs/types/long.html) | Optional|access hash of peer| +|first\_name|[string](API_docs/types/string.html) | Optional|First name of the user| +|last\_name|[string](API_docs/types/string.html) | Optional|Last name of the user| +|lang\_code|[string](API_docs/types/string.html) | Optional|Language of the user| +|username|[string](API_docs/types/string.html) | Optional|Username| +|verified|[Bool](API_docs/types/Bool.html) | Optional|Is the peer official?| +|restricted|[Bool](API_docs/types/Bool.html) | Optional|Is the peer restricted to the current user?| +|restriction\_reason|[string](API_docs/types/string.html) | Optional|Restriction reason| +|status|[UserStatus](API_docs/types/UserStatus.html) | Optional|Describes last time user was online| +|bot\_inline\_placeholder|[string](API_docs/types/string.html) | Optional|Inline placeholder of inline bot| +|bot\_nochats|[Bool](API_docs/types/Bool.html) | Optional|Can the bot be added to a group| +|about|[string](API_docs/types/string.html) | Optional|Description of supergroups/channels or bios of users| +|bot\_info|[BotInfo](API_docs/types/BotInfo.html) | Optional|Bot info of bots| +|phone\_calls\_available|[Bool](API_docs/types/Bool.html) | Optional|Are phone calls available for that user?| +|phone\_calls\_private|[Bool](API_docs/types/Bool.html) | Optional|| +|common\_chats\_count|[int](API_docs/types/int.html) | Optional|Number of chats in common with that user| +|photo|[string](API_docs/types/string.html) | Optional|bot API file object the profile picture| +|title|[string](API_docs/types/string.html) | Optional|Chat title| +|participants\_count|[int](API_docs/types/int.html) | Optional|Number of participants in the chat.| +|kicked\_count|[int](API_docs/types/int.html) | Optional|Number of users kicked from the chat.| +|admin\_count|[int](API_docs/types/int.html) | Optional|Number of admins in the chat.| +|admin|[Bool](API_docs/types/Bool.html) | Optional|Are you an admin in this chat?| +|all\_members\_are\_administrators|[Bool](API_docs/types/Bool.html) | Optional|True if a group has ‘All Members Are Admins’ enabled.| +|invite|[string](API_docs/types/string.html) | Optional|Invite link of the chat| +|participants|Array of [Participant](Participant.html) | Yes|Chat participants| +|democracy|[Bool](API_docs/types/Bool.html) | Optional|Can everyone add users to this chat?| +|signatures|[Bool](API_docs/types/Bool.html) | Optional|Are channel signatures enabled?| +|can\_view\_participants|[Bool](API_docs/types/Bool.html) | Optional|Can you view participants (you can still view the bots in channels even if this is false)| +|can\_set\_username|[Bool](API_docs/types/Bool.html) | Optional|Can you set the username of this channel/supergroup?| +|can\_set\_stickers|[Bool](API_docs/types/Bool.html) | Optional|Can you set the associated stickerpack of this channel/supergroup?| +|stickerset|[StickerSet](API_docs/types/StickerSet.html) | Optional|StickerSet associtaed to this channel/supergroup| +|migrated\_from\_chat\_id|[int](API_docs/types/int.html) | Optional|MTProto chat id of the original chat (render it negative to make it a bot API chat id)| +|migrated\_from\_max\_id|[int](API_docs/types/int.html) | Optional|Last message id before migration| +|pinned\_msg\_id|[int](API_docs/types/int.html) | Optional|Message id of pinned message| + + diff --git a/docs/FOSS.html b/docs/FOSS.html new file mode 100644 index 0000000000..6413691a34 --- /dev/null +++ b/docs/FOSS.html @@ -0,0 +1,10 @@ + + + Redirecting... + + + + +

Redirecting to https://github.com/danog/MadelineProto/edit/v8/README.md...

+ + diff --git a/docs/FullInfo.md b/docs/FullInfo.md new file mode 100644 index 0000000000..eb03bdae8e --- /dev/null +++ b/docs/FullInfo.md @@ -0,0 +1,26 @@ +--- +title: full chat info +description: chat attributes, type and example +nav_exclude: true +--- +## Constructor: FullInfo + + + +### Attributes: + +| Name | Type | Required |Description| +|----------|---------------|----------|-----------| +|type|[string](API_docs/types/string.html) | Yes|bot, user, channel, supergroup or chat| +|Chat|[Chat](API_docs/types/Chat.html) | Optional|Info about the current chat| +|User|[User](API_docs/types/User.html) | Optional|Info about the current user| +|bot\_api\_id|[long](API_docs/types/long.html) | Yes|bot API chat id| +|InputPeer|[InputPeer](API_docs/types/InputPeer.html) | Yes|InputPeer object| +|Peer|[Peer](API_docs/types/Peer.html) | Optional|Peer object| +|user\_id|[int](API_docs/types/int.html) | Optional|MTProto user id| +|chat\_id|[int](API_docs/types/int.html) | Optional|MTProto chat id| +|channel\_id|[int](API_docs/types/int.html) | Optional|MTProto channel id| +|InputUser|[InputUser](API_docs/types/InputUser.html) | Optional|InputUser object| +|InputChannel|[InputChannel](API_docs/types/InputChannel.html) | Optional|InputChannel object| +|last_update|[int](API_docs/types/int.html) | Yes|When was info about this peer cached| +|full|[ChatFull](API_docs/types/ChatFull.html) or [UserFull](API_docs/types/UserFull.html) | Yes|full info| diff --git a/docs/Info.md b/docs/Info.md new file mode 100644 index 0000000000..daf74b73bc --- /dev/null +++ b/docs/Info.md @@ -0,0 +1,26 @@ +--- +title: chat info +description: chat attributes, type and example +nav_exclude: true +--- +## Constructor: Info + + + +### Attributes: + +| Name | Type | Required |Description| +|----------|---------------|----------|-----------| +|type|[string](API_docs/types/string.html) | Yes|bot, user, channel, supergroup or chat| +|Chat|[Chat](API_docs/types/Chat.html) | Optional|Info about the current chat| +|User|[User](API_docs/types/User.html) | Optional|Info about the current user| +|bot\_api\_id|[long](API_docs/types/long.html) | Yes|bot API chat id| +|InputPeer|[InputPeer](API_docs/types/InputPeer.html) | Yes|InputPeer object| +|Peer|[Peer](API_docs/types/Peer.html) | Optional|Peer object| +|user\_id|[int](API_docs/types/int.html) | Optional|MTProto user id| +|chat\_id|[int](API_docs/types/int.html) | Optional|MTProto chat id| +|channel\_id|[int](API_docs/types/int.html) | Optional|MTProto channel id| +|InputUser|[InputUser](API_docs/types/InputUser.html) | Optional|InputUser object| +|InputChannel|[InputChannel](API_docs/types/InputChannel.html) | Optional|InputChannel object| + + diff --git a/docs/LICENSE-theme.txt b/docs/LICENSE-theme.txt new file mode 100644 index 0000000000..9e81a6cf5f --- /dev/null +++ b/docs/LICENSE-theme.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Patrick Marsceill + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/docs/PHP/danog/MadelineProto/API.md b/docs/PHP/danog/MadelineProto/API.md new file mode 100644 index 0000000000..32688a0d9c --- /dev/null +++ b/docs/PHP/danog/MadelineProto/API.md @@ -0,0 +1,3287 @@ +--- +title: "danog\\MadelineProto\\API: Main API wrapper for MadelineProto." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\API` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Main API wrapper for MadelineProto. + + + + +## Constants +* `danog\MadelineProto\API::RELEASE`: Release version. + +* `danog\MadelineProto\API::NOT_LOGGED_IN`: We're not logged in. + +* `danog\MadelineProto\API::WAITING_CODE`: We're waiting for the login code. + +* `danog\MadelineProto\API::WAITING_SIGNUP`: We're waiting for parameters to sign up. + +* `danog\MadelineProto\API::WAITING_PASSWORD`: We're waiting for the 2FA password. + +* `danog\MadelineProto\API::LOGGED_IN`: We're logged in. + +* `danog\MadelineProto\API::LOGGED_OUT`: We're logged out, the session will be deleted ASAP. + +* `danog\MadelineProto\API::PEER_TYPE_USER`: This peer is a user. + +* `danog\MadelineProto\API::PEER_TYPE_BOT`: This peer is a bot. + +* `danog\MadelineProto\API::PEER_TYPE_GROUP`: This peer is a normal group. + +* `danog\MadelineProto\API::PEER_TYPE_SUPERGROUP`: This peer is a supergroup. + +* `danog\MadelineProto\API::PEER_TYPE_CHANNEL`: This peer is a channel. + +* `danog\MadelineProto\API::INFO_TYPE_PEER`: Whether to generate only peer information. + +* `danog\MadelineProto\API::INFO_TYPE_CONSTRUCTOR`: Whether to generate only constructor information. + +* `danog\MadelineProto\API::INFO_TYPE_ID`: Whether to generate only ID information. + +* `danog\MadelineProto\API::INFO_TYPE_ALL`: Whether to generate all information. + +* `danog\MadelineProto\API::INFO_TYPE_USERNAMES`: Whether to generate all usernames. + +* `danog\MadelineProto\API::INFO_TYPE_TYPE`: Whether to generate just type info. + +## Properties +* `$auth`: `\danog\MadelineProto\Namespace\Auth` +* `$account`: `\danog\MadelineProto\Namespace\Account` +* `$users`: `\danog\MadelineProto\Namespace\Users` +* `$contacts`: `\danog\MadelineProto\Namespace\Contacts` +* `$messages`: `\danog\MadelineProto\Namespace\Messages` +* `$updates`: `\danog\MadelineProto\Namespace\Updates` +* `$photos`: `\danog\MadelineProto\Namespace\Photos` +* `$upload`: `\danog\MadelineProto\Namespace\Upload` +* `$help`: `\danog\MadelineProto\Namespace\Help` +* `$channels`: `\danog\MadelineProto\Namespace\Channels` +* `$bots`: `\danog\MadelineProto\Namespace\Bots` +* `$payments`: `\danog\MadelineProto\Namespace\Payments` +* `$stickers`: `\danog\MadelineProto\Namespace\Stickers` +* `$phone`: `\danog\MadelineProto\Namespace\Phone` +* `$langpack`: `\danog\MadelineProto\Namespace\Langpack` +* `$folders`: `\danog\MadelineProto\Namespace\Folders` +* `$stats`: `\danog\MadelineProto\Namespace\Stats` +* `$chatlists`: `\danog\MadelineProto\Namespace\Chatlists` +* `$stories`: `\danog\MadelineProto\Namespace\Stories` +* `$premium`: `\danog\MadelineProto\Namespace\Premium` +* `$smsjobs`: `\danog\MadelineProto\Namespace\Smsjobs` +* `$fragment`: `\danog\MadelineProto\Namespace\Fragment` + +## Method list: +* [`getWebAPITemplate(): string`](#getWebAPITemplate) +* [`setWebApiTemplate(string $template): void`](#setWebApiTemplate) +* [`__construct(string $session, \danog\MadelineProto\SettingsAbstract $settings = NULL)`](#__construct) +* [`startAndLoopMulti(array<\danog\MadelineProto\API> $instances, (array>|class-string<\danog\MadelineProto\EventHandler>) $eventHandler): void`](#startAndLoopMulti) +* [`MTProtoToBotAPI(array $data): array`](#MTProtoToBotAPI) +* [`MTProtoToTd(mixed $params): array`](#MTProtoToTd) +* [`MTProtoToTdcli(mixed $params): array`](#MTProtoToTdcli) +* [`acceptCall(int $id): void`](#acceptCall) +* [`acceptSecretChat(array $params): void`](#acceptSecretChat) +* [`arr(mixed ...$params): array`](#arr) +* [`base64urlDecode(string $data): string`](#base64urlDecode) +* [`base64urlEncode(string $data): string`](#base64urlEncode) +* [`botAPIToMTProto(array $arguments): array`](#botAPIToMTProto) +* [`botLogin(string $token): ?array`](#botLogin) +* [`broadcastCustom(\danog\MadelineProto\Broadcast\Action $action, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, (float|null) $delay = NULL): int`](#broadcastCustom) +* [`broadcastForwardMessages(mixed $from_peer, list $message_ids, bool $drop_author = false, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int`](#broadcastForwardMessages) +* [`broadcastMessages(array $messages, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int`](#broadcastMessages) +* [`callFork(\Generator|\Amp\Future|callable $callable, mixed ...$args): \Amp\Future`](#callFork) +* [`callGetCurrent(int $id): \danog\MadelineProto\RemoteUrl|\danog\MadelineProto\LocalFile|string|null`](#callGetCurrent) +* [`callPlay(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $file): void`](#callPlay) +* [`callPlayOnHold(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream ...$files): void`](#callPlayOnHold) +* [`callSetOutput(int $id, \danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream $file): void`](#callSetOutput) +* [`canConvertOgg(): bool`](#canConvertOgg) +* [`canUseFFmpeg(?\Amp\Cancellation $cancellation = NULL): bool`](#canUseFFmpeg) +* [`cancelBroadcast(integer $id): void`](#cancelBroadcast) +* [`closeConnection(string $message): void`](#closeConnection) +* [`complete2faLogin(string $password): array`](#complete2faLogin) +* [`completePhoneLogin(string $code): array`](#completePhoneLogin) +* [`completeSignup(string $first_name, string $last_name = ''): array`](#completeSignup) +* [`discardCall(int $id, \danog\MadelineProto\VoIP\DiscardReason $reason = \danog\MadelineProto\VoIP\DiscardReason::HANGUP, int<1, 5> $rating = NULL, string $comment = NULL): void`](#discardCall) +* [`discardSecretChat(int $chat): void`](#discardSecretChat) +* [`downloadServer(string $session): void`](#downloadServer) +* [`downloadToBrowser((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, (null|callable) $cb = NULL, (null|int) $size = NULL, (null|string) $name = NULL, (null|string) $mime = NULL, ?\Amp\Cancellation $cancellation = NULL): void`](#downloadToBrowser) +* [`downloadToCallable(mixed $messageMedia, (callable|\danog\MadelineProto\FileCallbackInterface) $callable, callable $cb = NULL, bool $seekable = true, int $offset = 0, int $end = -1, int $part_size = NULL, ?\Amp\Cancellation $cancellation = NULL): void`](#downloadToCallable) +* [`downloadToDir(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $dir, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string`](#downloadToDir) +* [`downloadToFile(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $file, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string`](#downloadToFile) +* [`downloadToResponse((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, \Amp\Http\Server\Request $request, callable $cb = NULL, (null|int) $size = NULL, (null|string) $mime = NULL, (null|string) $name = NULL, ?\Amp\Cancellation $cancellation = NULL): \Amp\Http\Server\Response`](#downloadToResponse) +* [`downloadToReturnedStream(mixed $messageMedia, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#downloadToReturnedStream) +* [`downloadToStream(mixed $messageMedia, (mixed|\danog\MadelineProto\FileCallbackInterface|resource|\Amp\ByteStream\WritableStream) $stream, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): void`](#downloadToStream) +* [`echo(string $string): void`](#echo) +* [`end(array $what): T`](#end) +* [`entitiesToHtml(string $message, list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})> $entities, bool $allowTelegramTags = false): string`](#entitiesToHtml) +* [`exportAuthorization(): array{0: (int|string), 1: string}`](#exportAuthorization) +* [`extractBotAPIFile(array $info): ?array`](#extractBotAPIFile) +* [`extractMessage(array $updates): array`](#extractMessage) +* [`extractMessageId(array $updates): int`](#extractMessageId) +* [`extractMessageUpdate(array $updates): array`](#extractMessageUpdate) +* [`extractUpdates(array $updates): array`](#extractUpdates) +* [`fileGetContents(string $url): string`](#fileGetContents) +* [`flock(string $file, integer $operation, float $polling = 0.1, ?\Amp\Cancellation $token = NULL, ?\Closure $failureCb = NULL): ($token is null ? Closure(): void : (Closure(): void | null))`](#flock) +* [`fullChatLastUpdated(mixed $id): int`](#fullChatLastUpdated) +* [`fullGetSelf(): array|false`](#fullGetSelf) +* [`genVectorHash(array $longs): string`](#genVectorHash) +* [`getAdminIds(): array`](#getAdminIds) +* [`getAllCalls(): array`](#getAllCalls) +* [`getAllMethods(): array`](#getAllMethods) +* [`getAuthorization(): (\danog\MadelineProto\API::NOT_LOGGED_IN|\danog\MadelineProto\API::WAITING_CODE|\danog\MadelineProto\API::WAITING_SIGNUP|\danog\MadelineProto\API::WAITING_PASSWORD|\danog\MadelineProto\API::LOGGED_IN|API::LOGGED_OUT)`](#getAuthorization) +* [`getBroadcastProgress(integer $id): ?\danog\MadelineProto\Broadcast\Progress`](#getBroadcastProgress) +* [`getCachedConfig(): array`](#getCachedConfig) +* [`getCall(int $id): ?\danog\MadelineProto\VoIP`](#getCall) +* [`getCallByPeer(int $userId): ?\danog\MadelineProto\VoIP`](#getCallByPeer) +* [`getCallState(int $id): ?\danog\MadelineProto\VoIP\CallState`](#getCallState) +* [`getCdnConfig(): void`](#getCdnConfig) +* [`getConfig(array $config = []): array`](#getConfig) +* [`getDNSClient(): \Amp\Dns\DnsResolver`](#getDNSClient) +* [`getDhConfig(): array`](#getDhConfig) +* [`getDialogIds(): list`](#getDialogIds) +* [`getDownloadInfo(mixed $messageMedia): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string, thumb_size?: string}`](#getDownloadInfo) +* [`getDownloadLink(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|array|string $media, ?string $scriptUrl = NULL, ?int $size = NULL, ?string $name = NULL, ?string $mime = NULL): string`](#getDownloadLink) +* [`getEventHandler((class-string|null) $class = NULL): (T|\danog\MadelineProto\Ipc\EventHandlerProxy|\__PHP_Incomplete_Class|null)`](#getEventHandler) +* [`getExtensionFromLocation(mixed $location, string $default): string`](#getExtensionFromLocation) +* [`getExtensionFromMime(string $mime): string`](#getExtensionFromMime) +* [`getFileInfo(mixed $constructor): array`](#getFileInfo) +* [`getFullDialogs(): array`](#getFullDialogs) +* [`getFullInfo(mixed $id): array`](#getFullInfo) +* [`getHTTPClient(): \Amp\Http\Client\HttpClient`](#getHTTPClient) +* [`getHint(): string`](#getHint) +* [`getId(mixed $id): int`](#getId) +* [`getInfo(mixed $id, \danog\MadelineProto\API::INFO_TYPE_* $type = \danog\MadelineProto\API::INFO_TYPE_ALL): (\$type is \danog\MadelineProto\API::INFO_TYPE_ALL ? array{User?: array, Chat?: array, bot_api_id: int, user_id?: int, chat_id?: int, channel_id?: int, type: string} : ($type is API::INFO_TYPE_TYPE ? string : ($type is \danog\MadelineProto\API::INFO_TYPE_ID ? int : (array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int} | array{_: string, user_id?: int, access_hash?: int, min?: bool} | array{_: string, channel_id: int, access_hash: int, min: bool}))))`](#getInfo) +* [`getLogger(): \danog\MadelineProto\Logger`](#getLogger) +* [`getMaps(): ?int`](#getMaps) +* [`getMaxMaps(): ?int`](#getMaxMaps) +* [`getMethodNamespaces(): array`](#getMethodNamespaces) +* [`getMethodsNamespaced(): array`](#getMethodsNamespaced) +* [`getMimeFromBuffer(string $buffer): string`](#getMimeFromBuffer) +* [`getMimeFromExtension(string $extension, string $default): string`](#getMimeFromExtension) +* [`getMimeFromFile(string $file): string`](#getMimeFromFile) +* [`getPlugin(class-string $class): \danog\MadelineProto\PluginEventHandler|\danog\MadelineProto\Ipc\EventHandlerProxy|null`](#getPlugin) +* [`getPropicInfo(mixed $data): ?\danog\MadelineProto\EventHandler\Media\Photo`](#getPropicInfo) +* [`getPsrLogger(): \Psr\Log\LoggerInterface`](#getPsrLogger) +* [`getPwrChat(mixed $id, bool $fullfetch = true): array`](#getPwrChat) +* [`getSecretChat((array|int) $chat): \danog\MadelineProto\SecretChats\SecretChat`](#getSecretChat) +* [`getSecretMessage(integer $chatId, integer $randomId): \danog\MadelineProto\EventHandler\Message\SecretMessage`](#getSecretMessage) +* [`getSelf(): array|false`](#getSelf) +* [`getSessionName(): string`](#getSessionName) +* [`getSettings(): \danog\MadelineProto\Settings`](#getSettings) +* [`getSponsoredMessages((int|string|array) $peer): ?array`](#getSponsoredMessages) +* [`getStream(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL, ?int $size = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`getStreamPipe(): \Amp\ByteStream\Pipe`](#getStreamPipe) +* [`getTL(): \danog\MadelineProto\TL\TLInterface`](#getTL) +* [`getType(mixed $id): \danog\MadelineProto\API::PEER_TYPE_*`](#getType) +* [`getUpdates(array{offset?: int, limit?: int, timeout?: float} $params = []): list`](#getUpdates) +* [`getWebMessage(string $message): string`](#getWebMessage) +* [`getWebWarnings(): string`](#getWebWarnings) +* [`hasAdmins(): bool`](#hasAdmins) +* [`hasEventHandler(): bool`](#hasEventHandler) +* [`hasPlugin(class-string<\danog\MadelineProto\EventHandler> $class): bool`](#hasPlugin) +* [`hasReportPeers(): bool`](#hasReportPeers) +* [`hasSecretChat((array|int) $chat): bool`](#hasSecretChat) +* [`htmlEscape(string $what): string`](#htmlEscape) +* [`htmlToMessageEntities(string $html): \danog\MadelineProto\TextEntities`](#htmlToMessageEntities) +* [`importAuthorization(array $authorization, int $mainDcID): array`](#importAuthorization) +* [`inflateStripped(string $stripped): string`](#inflateStripped) +* [`initSelfRestart(): void`](#initSelfRestart) +* [`isAltervista(): bool`](#isAltervista) +* [`isArrayOrAlike(mixed $var): bool`](#isArrayOrAlike) +* [`isBot(mixed $peer): bool`](#isBot) +* [`isForum(mixed $peer): bool`](#isForum) +* [`isIpc(): bool`](#isIpc) +* [`isIpcWorker(): bool`](#isIpcWorker) +* [`isPlayPaused(int $id): bool`](#isPlayPaused) +* [`isPremium(): bool`](#isPremium) +* [`isSelfBot(): bool`](#isSelfBot) +* [`isSelfUser(): bool`](#isSelfUser) +* [`isTestMode(): boolean`](#isTestMode) +* [`logger(mixed $param, int $level = \danog\MadelineProto\Logger::NOTICE, string $file = ''): void`](#logger) +* [`logout(): void`](#logout) +* [`markdownCodeEscape(string $what): string`](#markdownCodeEscape) +* [`markdownCodeblockEscape(string $what): string`](#markdownCodeblockEscape) +* [`markdownEscape(string $what): string`](#markdownEscape) +* [`markdownToMessageEntities(string $markdown): \danog\MadelineProto\TextEntities`](#markdownToMessageEntities) +* [`markdownUrlEscape(string $what): string`](#markdownUrlEscape) +* [`mbStrSplit(string $text, integer $length): array`](#mbStrSplit) +* [`mbStrlen(string $text): int`](#mbStrlen) +* [`mbSubstr(string $text, integer $offset, (null|int) $length = NULL): string`](#mbSubstr) +* [`openBuffered(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL): Closure(int): ?string`](#openBuffered) +* [`openFileAppendOnly(string $path): \Amp\File\File`](#openFileAppendOnly) +* [`packDouble(float $value): string`](#packDouble) +* [`packSignedInt(integer $value): string`](#packSignedInt) +* [`packSignedLong(int $value): string`](#packSignedLong) +* [`packUnsignedInt(int $value): string`](#packUnsignedInt) +* [`pausePlay(int $id): void`](#pausePlay) +* [`peerIsset(mixed $id): bool`](#peerIsset) +* [`phoneLogin(string $number, integer $sms_type = 5): array`](#phoneLogin) +* [`posmod(int $a, int $b): int`](#posmod) +* [`processDownloadServerPing(string $path, string $payload): void`](#processDownloadServerPing) +* [`qrLogin(): ?\danog\MadelineProto\TL\Types\LoginQrCode`](#qrLogin) +* [`random(integer $length): string`](#random) +* [`randomInt(integer $modulus = 0): int`](#randomInt) +* [`readLine(string $prompt = '', ?\Amp\Cancellation $cancel = NULL): string`](#readLine) +* [`refreshFullPeerCache(mixed $id): void`](#refreshFullPeerCache) +* [`refreshPeerCache(mixed ...$ids): void`](#refreshPeerCache) +* [`report(string $message, string $parseMode = ''): void`](#report) +* [`reportMemoryProfile(): void`](#reportMemoryProfile) +* [`requestCall(mixed $user): \danog\MadelineProto\VoIP`](#requestCall) +* [`requestSecretChat(mixed $user): int`](#requestSecretChat) +* [`resetUpdateState(): void`](#resetUpdateState) +* [`restart(): void`](#restart) +* [`resumePlay(int $id): void`](#resumePlay) +* [`rethrow(Throwable $e): void`](#rethrow) +* [`rleDecode(string $string): string`](#rleDecode) +* [`rleEncode(string $string): string`](#rleEncode) +* [`sendAudio((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendAudio) +* [`sendCustomEvent(mixed $payload): void`](#sendCustomEvent) +* [`sendDocument((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendDocument) +* [`sendDocumentPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendDocumentPhoto) +* [`sendGif((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, ?int $duration = NULL, ?int $width = NULL, ?int $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendGif) +* [`sendMessage((integer|string) $peer, string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendMessage) +* [`sendMessageToAdmins(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, ?\Amp\Cancellation $cancellation = NULL): list<\danog\MadelineProto\EventHandler\Message>`](#sendMessageToAdmins) +* [`sendPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendPhoto) +* [`sendSticker((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', array $stickerSet = [ '_' => 'inputStickerSetEmpty',], ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendSticker) +* [`sendVideo((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendVideo) +* [`sendVoice((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendVoice) +* [`setNoop(): void`](#setNoop) +* [`setReportPeers((int|string|array<(int|string)>) $userOrId): void`](#setReportPeers) +* [`setWebhook(string $webhookUrl): void`](#setWebhook) +* [`skipPlay(int $id): void`](#skipPlay) +* [`sleep(float $time): void`](#sleep) +* [`start(): array`](#start) +* [`stop(): void`](#stop) +* [`stopPlay(int $id): void`](#stopPlay) +* [`stringToStream(string $str): \Amp\ByteStream\ReadableBuffer`](#stringToStream) +* [`subscribeToUpdates(mixed $channel): bool`](#subscribeToUpdates) +* [`tdToMTProto(array $params): array`](#tdToMTProto) +* [`tdToTdcli(mixed $params): array`](#tdToTdcli) +* [`tdcliToTd(mixed $params, array $key = NULL): array`](#tdcliToTd) +* [`testFibers(int $fiberCount = 100000): array{maxFibers: int, realMemoryMb: int, maps: ?int, maxMaps: ?int}`](#testFibers) +* [`toCamelCase(string $input): string`](#toCamelCase) +* [`toSnakeCase(string $input): string`](#toSnakeCase) +* [`unpackDouble(string $value): float`](#unpackDouble) +* [`unpackFileId(string $fileId): array`](#unpackFileId) +* [`unpackSignedInt(string $value): int`](#unpackSignedInt) +* [`unpackSignedLong(string $value): int`](#unpackSignedLong) +* [`unpackSignedLongString((string|int|array) $value): string`](#unpackSignedLongString) +* [`unsetEventHandler(): void`](#unsetEventHandler) +* [`update2fa(array{password?: string, new_password?: string, email?: string, hint?: string} $params): void`](#update2fa) +* [`updateSettings(\danog\MadelineProto\SettingsAbstract $settings): void`](#updateSettings) +* [`upload((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|string|array|resource) $file, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#upload) +* [`uploadEncrypted((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|string|array|resource) $file, string $fileName = '', callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadEncrypted) +* [`uploadFromCallable(callable(int, int, ?Cancellation): strin) $callable, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable(float, float, float): voi) $cb = NULL, boolean $seekable = true, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromCallable) +* [`uploadFromStream(mixed $stream, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromStream) +* [`uploadFromTgfile(mixed $media, callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromTgfile) +* [`uploadFromUrl((string|\danog\MadelineProto\FileCallbackInterface) $url, integer $size = 0, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromUrl) +* [`validateEventHandlerClass(class-string<\danog\MadelineProto\EventHandler> $class): list<\danog\MadelineProto\EventHandlerIssue>`](#validateEventHandlerClass) +* [`viewSponsoredMessage((int|array) $peer, (string|array{random_id: string}) $message): bool`](#viewSponsoredMessage) +* [`wrapMedia(array $media, bool $protected = false): ?\danog\MadelineProto\EventHandler\Media`](#wrapMedia) +* [`wrapMessage(array $message, bool $scheduled = false): ?\danog\MadelineProto\EventHandler\AbstractMessage`](#wrapMessage) +* [`wrapPin(array $message): ?\danog\MadelineProto\EventHandler\Pinned`](#wrapPin) +* [`wrapUpdate(array $update): ?\danog\MadelineProto\EventHandler\Update`](#wrapUpdate) + +## Methods: +### `getWebAPITemplate(): string` + +Obtain the API ID UI template. + + + +### `setWebApiTemplate(string $template): void` + +Set the API ID UI template. + + +Parameters: + +* `$template`: `string` + + + +### `__construct(string $session, \danog\MadelineProto\SettingsAbstract $settings = NULL)` + +Constructor function. + + +Parameters: + +* `$session`: `string` Session name +* `$settings`: `\danog\MadelineProto\SettingsAbstract` Settings + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` + + + + +### `startAndLoopMulti(array<\danog\MadelineProto\API> $instances, (array>|class-string<\danog\MadelineProto\EventHandler>) $eventHandler): void` + +Start multiple instances of MadelineProto and the event handlers (enables async). + + +Parameters: + +* `$instances`: `array<\danog\MadelineProto\API>` Instances of madeline +* `$eventHandler`: `(array>|class-string<\danog\MadelineProto\EventHandler>)` Event handler(s) + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../danog/MadelineProto/EventHandler.html) + + + + +### `MTProtoToBotAPI(array $data): array` + +Convert MTProto parameters to bot API parameters. + + +Parameters: + +* `$data`: `array` Data + + + +### `MTProtoToTd(mixed $params): array` + +MTProto to TD params. + + +Parameters: + +* `$params`: `mixed` Params + + + +### `MTProtoToTdcli(mixed $params): array` + +MTProto to TDCLI params. + + +Parameters: + +* `$params`: `mixed` Params + + + +### `acceptCall(int $id): void` + +Accept call. + + +Parameters: + +* `$id`: `int` + + + +### `acceptSecretChat(array $params): void` + +Accept secret chat. + + +Parameters: + +* `$params`: `array` Secret chat ID + + + +### `arr(mixed ...$params): array` + +Create array. + + +Parameters: + +* `...$params`: `mixed` Params + + + +### `base64urlDecode(string $data): string` + +base64URL decode. + + +Parameters: + +* `$data`: `string` Data to decode + + + +### `base64urlEncode(string $data): string` + +Base64URL encode. + + +Parameters: + +* `$data`: `string` Data to encode + + + +### `botAPIToMTProto(array $arguments): array` + +Convert bot API parameters to MTProto parameters. + + +Parameters: + +* `$arguments`: `array` Arguments + + + +### `botLogin(string $token): ?array` + +Login as bot. + + +Parameters: + +* `$token`: `string` Bot token + + + +### `broadcastCustom(\danog\MadelineProto\Broadcast\Action $action, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, (float|null) $delay = NULL): int` + +Executes a custom broadcast action with all peers (users, chats, channels) of the bot. + +Will return an integer ID that can be used to: + +- Get the current broadcast progress with getBroadcastProgress +- Cancel the broadcast using cancelBroadcast + +Note that to avoid manually polling the progress, +MadelineProto will also periodically emit updateBroadcastProgress updates, +containing a Progress object for all broadcasts currently in-progress. + + +Parameters: + +* `$action`: `\danog\MadelineProto\Broadcast\Action` A custom, serializable Action class that will be called once for every peer. +* `$filter`: `?\danog\MadelineProto\Broadcast\Filter` +* `$delay`: `(float|null)` Number of seconds to wait between each peer. + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Action`: Interface that represents a broadcast action.](../../danog/MadelineProto/Broadcast/Action.html) +* [`\danog\MadelineProto\Broadcast\Filter`: Broadcast filter.](../../danog/MadelineProto/Broadcast/Filter.html) + + + + +### `broadcastForwardMessages(mixed $from_peer, list $message_ids, bool $drop_author = false, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int` + +Forwards a list of messages to all peers (users, chats, channels) of the bot. + +Will return an integer ID that can be used to: + +- Get the current broadcast progress with getBroadcastProgress +- Cancel the broadcast using cancelBroadcast + +Note that to avoid manually polling the progress, +MadelineProto will also periodically emit updateBroadcastProgress updates, +containing a Progress object for all broadcasts currently in-progress. + + +Parameters: + +* `$from_peer`: `mixed` Bot API ID or Update, from where to forward the messages. +* `$message_ids`: `list` IDs of the messages to forward. +* `$drop_author`: `bool` If true, will forward messages without quoting the original author. +* `$filter`: `?\danog\MadelineProto\Broadcast\Filter` +* `$pin`: `bool` Whether to also pin the last sent message. +* `$delay`: `(float|null)` Number of seconds to wait between each peer. + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Filter`: Broadcast filter.](../../danog/MadelineProto/Broadcast/Filter.html) + + + + +### `broadcastMessages(array $messages, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int` + +Sends a list of messages to all peers (users, chats, channels) of the bot. + +A simplified version of this method is also available: broadcastForwardMessages can work with pre-prepared messages. + +Will return an integer ID that can be used to: + +- Get the current broadcast progress with getBroadcastProgress +- Cancel the broadcast using cancelBroadcast + +Note that to avoid manually polling the progress, +MadelineProto will also periodically emit updateBroadcastProgress updates, +containing a Progress object for all broadcasts currently in-progress. + + +Parameters: + +* `$messages`: `array` The messages to send: an array of arrays, containing parameters to pass to messages.sendMessage. +* `$filter`: `?\danog\MadelineProto\Broadcast\Filter` +* `$pin`: `bool` Whether to also pin the last sent message. +* `$delay`: `(float|null)` Number of seconds to wait between each peer. + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Filter`: Broadcast filter.](../../danog/MadelineProto/Broadcast/Filter.html) + + + + +### `callFork(\Generator|\Amp\Future|callable $callable, mixed ...$args): \Amp\Future` + +Fork a new green thread and execute the passed function in the background. + + +Parameters: + +* `$callable`: `\Generator|\Amp\Future|callable` +* `...$args`: `mixed` Arguments forwarded to the function when forking the thread. + + +#### See also: +* `\Generator` +* `\Amp\Future` + + + + +### `callGetCurrent(int $id): \danog\MadelineProto\RemoteUrl|\danog\MadelineProto\LocalFile|string|null` + +Get the file that is currently being played. + +Will return a string with the object ID of the stream if we're currently playing a stream, otherwise returns the related LocalFile or RemoteUrl. + + +Parameters: + +* `$id`: `int` + + +#### See also: +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) + + + + +### `callPlay(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $file): void` + +Play file in call. + + +Parameters: + +* `$id`: `int` +* `$file`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` + + + + +### `callPlayOnHold(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream ...$files): void` + +Play files on hold in call. + + +Parameters: + +* `$id`: `int` +* `...$files`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` + + + + +### `callSetOutput(int $id, \danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream $file): void` + +Set output file or stream for incoming OPUS audio packets in a call. + +Will write an OGG OPUS stream to the specified file or stream. + + +Parameters: + +* `$id`: `int` +* `$file`: `\danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* `\Amp\ByteStream\WritableStream` + + + + +### `canConvertOgg(): bool` + +Whether we can convert any audio/video file to a VoIP OGG OPUS file, or the files must be preconverted using @libtgvoipbot. + + + +### `canUseFFmpeg(?\Amp\Cancellation $cancellation = NULL): bool` + +Whether we can convert any audio/video file using ffmpeg. + + +Parameters: + +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `cancelBroadcast(integer $id): void` + +Cancel a running broadcast. + + +Parameters: + +* `$id`: `integer` Broadcast ID + + + +### `closeConnection(string $message): void` + +Close connection with client, connected via web. + + +Parameters: + +* `$message`: `string` Message + + + +### `complete2faLogin(string $password): array` + +Complete 2FA login. + + +Parameters: + +* `$password`: `string` Password + + + +### `completePhoneLogin(string $code): array` + +Complet user login using login code. + + +Parameters: + +* `$code`: `string` Login code + + + +### `completeSignup(string $first_name, string $last_name = ''): array` + +Complete signup to Telegram. + + +Parameters: + +* `$first_name`: `string` First name +* `$last_name`: `string` Last name + + + +### `discardCall(int $id, \danog\MadelineProto\VoIP\DiscardReason $reason = \danog\MadelineProto\VoIP\DiscardReason::HANGUP, int<1, 5> $rating = NULL, string $comment = NULL): void` + +Discard call. + + +Parameters: + +* `$id`: `int` +* `$reason`: `\danog\MadelineProto\VoIP\DiscardReason` +* `$rating`: `int<1, 5>` Call rating in stars +* `$comment`: `string` Additional comment on call quality. + + +#### See also: +* [`\danog\MadelineProto\VoIP\DiscardReason`: Why was the call discarded?](../../danog/MadelineProto/VoIP/DiscardReason.html) + + + + +### `discardSecretChat(int $chat): void` + +Discard secret chat. + + +Parameters: + +* `$chat`: `int` Secret chat ID + + + +### `downloadServer(string $session): void` + +Downloads a file to the browser using the specified session file. + + +Parameters: + +* `$session`: `string` + + + +### `downloadToBrowser((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, (null|callable) $cb = NULL, (null|int) $size = NULL, (null|string) $name = NULL, (null|string) $mime = NULL, ?\Amp\Cancellation $cancellation = NULL): void` + +Download file to browser. + +Supports HEAD requests and content-ranges for parallel and resumed downloads. + + +Parameters: + +* `$messageMedia`: `(array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message)` File to download +* `$cb`: `(null|callable)` Status callback (can also use FileCallback) +* `$size`: `(null|int)` Size of file to download, required for bot API file IDs. +* `$name`: `(null|string)` Name of file to download, required for bot API file IDs. +* `$mime`: `(null|string)` MIME type of file to download, required for bot API file IDs. +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* `\Amp\Cancellation` + + + + +### `downloadToCallable(mixed $messageMedia, (callable|\danog\MadelineProto\FileCallbackInterface) $callable, callable $cb = NULL, bool $seekable = true, int $offset = 0, int $end = -1, int $part_size = NULL, ?\Amp\Cancellation $cancellation = NULL): void` + +Download file to callable. +The callable must accept two parameters: string $payload, int $offset +The callable will be called (possibly out of order, depending on the value of $seekable). + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$callable`: `(callable|\danog\MadelineProto\FileCallbackInterface)` Chunk callback +* `$cb`: `callable` Status callback +* `$seekable`: `bool` Whether the callable can be called out of order +* `$offset`: `int` Offset where to start downloading +* `$end`: `int` Offset where to stop downloading (inclusive) +* `$part_size`: `int` Size of each chunk +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` + + + + +### `downloadToDir(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $dir, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string` + +Download file to directory. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$dir`: `(string|\danog\MadelineProto\FileCallbackInterface)` Directory where to download the file +* `$cb`: `callable` Callback +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: Downloaded file name + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` +* `non-empty-string` + + + + +### `downloadToFile(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $file, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string` + +Download file. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$file`: `(string|\danog\MadelineProto\FileCallbackInterface)` Downloaded file path +* `$cb`: `callable` Callback +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: Downloaded file name + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` +* `non-empty-string` + + + + +### `downloadToResponse((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, \Amp\Http\Server\Request $request, callable $cb = NULL, (null|int) $size = NULL, (null|string) $mime = NULL, (null|string) $name = NULL, ?\Amp\Cancellation $cancellation = NULL): \Amp\Http\Server\Response` + +Download file to amphp/http-server response. + +Supports HEAD requests and content-ranges for parallel and resumed downloads. + + +Parameters: + +* `$messageMedia`: `(array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message)` File to download +* `$request`: `\Amp\Http\Server\Request` Request +* `$cb`: `callable` Status callback (can also use FileCallback) +* `$size`: `(null|int)` Size of file to download, required for bot API file IDs. +* `$mime`: `(null|string)` MIME type of file to download, required for bot API file IDs. +* `$name`: `(null|string)` Name of file to download, required for bot API file IDs. +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* `\Amp\Http\Server\Request` +* `\Amp\Cancellation` +* `\Amp\Http\Server\Response` + + + + +### `downloadToReturnedStream(mixed $messageMedia, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Download file to an amphp stream, returning it. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$cb`: `callable` Callback +* `$offset`: `int` Offset where to start downloading +* `$end`: `int` Offset where to end download +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToStream(mixed $messageMedia, (mixed|\danog\MadelineProto\FileCallbackInterface|resource|\Amp\ByteStream\WritableStream) $stream, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): void` + +Download file to stream. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$stream`: `(mixed|\danog\MadelineProto\FileCallbackInterface|resource|\Amp\ByteStream\WritableStream)` Stream where to download file +* `$cb`: `callable` Callback +* `$offset`: `int` Offset where to start downloading +* `$end`: `int` Offset where to end download +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `resource` +* `\Amp\ByteStream\WritableStream` +* `\Amp\Cancellation` + + + + +### `echo(string $string): void` + +Asynchronously write to stdout/browser. + + +Parameters: + +* `$string`: `string` Message to echo + + + +### `end(array $what): T` + +Get final element of array. + + +Parameters: + +* `$what`: `array` Array + + + +### `entitiesToHtml(string $message, list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})> $entities, bool $allowTelegramTags = false): string` + +Convert a message and a set of entities to HTML. + + +Parameters: + +* `$message`: `string` +* `$entities`: `list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})>` +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity`: Master class for message entities.](../../danog/MadelineProto/EventHandler/Message/Entities/MessageEntity.html) + + + + +### `exportAuthorization(): array{0: (int|string), 1: string}` + +Export authorization. + + + +### `extractBotAPIFile(array $info): ?array` + +Extract file info from bot API message. + + +Parameters: + +* `$info`: `array` Bot API message object + + + +### `extractMessage(array $updates): array` + +Extract a message constructor from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `extractMessageId(array $updates): int` + +Extract a message ID from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `extractMessageUpdate(array $updates): array` + +Extract an update message constructor from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `extractUpdates(array $updates): array` + +Extract Update constructors from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `fileGetContents(string $url): string` + +Get contents of remote file asynchronously. + + +Parameters: + +* `$url`: `string` URL + + + +### `flock(string $file, integer $operation, float $polling = 0.1, ?\Amp\Cancellation $token = NULL, ?\Closure $failureCb = NULL): ($token is null ? Closure(): void : (Closure(): void | null))` + +Asynchronously lock a file +Resolves with a callbable that MUST eventually be called in order to release the lock. + + +Parameters: + +* `$file`: `string` File to lock +* `$operation`: `integer` Locking mode +* `$polling`: `float` Polling interval +* `$token`: `?\Amp\Cancellation` Cancellation token +* `$failureCb`: `?\Closure` Failure callback, called only once if the first locking attempt fails. + + +#### See also: +* `\Amp\Cancellation` +* `\Closure` + + + + +### `fullChatLastUpdated(mixed $id): int` + +When was full info for this chat last cached. + + +Parameters: + +* `$id`: `mixed` Chat ID + + + +### `fullGetSelf(): array|false` + +Get info about the logged-in user, not cached. + + + +### `genVectorHash(array $longs): string` + +Generate MTProto vector hash. + +Returns a vector hash. + + +Parameters: + +* `$longs`: `array` IDs + + + +### `getAdminIds(): array` + +Get admin IDs (equal to all user report peers). + + + +### `getAllCalls(): array` + +Get all pending and running calls, indexed by user ID. + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../danog/MadelineProto/VoIP.html) + + + + +### `getAllMethods(): array` + +Get full list of MTProto and API methods. + + + +### `getAuthorization(): (\danog\MadelineProto\API::NOT_LOGGED_IN|\danog\MadelineProto\API::WAITING_CODE|\danog\MadelineProto\API::WAITING_SIGNUP|\danog\MadelineProto\API::WAITING_PASSWORD|\danog\MadelineProto\API::LOGGED_IN|API::LOGGED_OUT)` + +Get authorization info. + + +#### See also: +* `\danog\MadelineProto\API::NOT_LOGGED_IN` +* `\danog\MadelineProto\API::WAITING_CODE` +* `\danog\MadelineProto\API::WAITING_SIGNUP` +* `\danog\MadelineProto\API::WAITING_PASSWORD` +* `\danog\MadelineProto\API::LOGGED_IN` +* `API::LOGGED_OUT` + + + + +### `getBroadcastProgress(integer $id): ?\danog\MadelineProto\Broadcast\Progress` + +Get the progress of a currently running broadcast. + +Will return null if the broadcast doesn't exist, has already completed or was cancelled. + +Use updateBroadcastProgress updates to get real-time progress status without polling. + + +Parameters: + +* `$id`: `integer` Broadcast ID + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Progress`: Broadcast progress.](../../danog/MadelineProto/Broadcast/Progress.html) + + + + +### `getCachedConfig(): array` + +Get cached server-side config. + + + +### `getCall(int $id): ?\danog\MadelineProto\VoIP` + +Get phone call information. + + +Parameters: + +* `$id`: `int` + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../danog/MadelineProto/VoIP.html) + + + + +### `getCallByPeer(int $userId): ?\danog\MadelineProto\VoIP` + +Get the phone call with the specified user ID. + + +Parameters: + +* `$userId`: `int` + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../danog/MadelineProto/VoIP.html) + + + + +### `getCallState(int $id): ?\danog\MadelineProto\VoIP\CallState` + +Get call state. + + +Parameters: + +* `$id`: `int` + + +#### See also: +* [\danog\MadelineProto\VoIP\CallState](../../danog/MadelineProto/VoIP/CallState.html) + + + + +### `getCdnConfig(): void` + +Store RSA keys for CDN datacenters. + + + +### `getConfig(array $config = []): array` + +Get cached (or eventually re-fetch) server-side config. + + +Parameters: + +* `$config`: `array` Current config + + + +### `getDNSClient(): \Amp\Dns\DnsResolver` + +Get async DNS client. + + +#### See also: +* `\Amp\Dns\DnsResolver` + + + + +### `getDhConfig(): array` + +Get diffie-hellman configuration. + + + +### `getDialogIds(): list` + +Get dialog IDs. + + + +### `getDownloadInfo(mixed $messageMedia): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string, thumb_size?: string}` + +Get download info of file +Returns an array with the following structure:. + +`$info['ext']` - The file extension +`$info['name']` - The file name, without the extension +`$info['mime']` - The file mime type +`$info['size']` - The file size + + +Parameters: + +* `$messageMedia`: `mixed` File ID + + + +### `getDownloadLink(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|array|string $media, ?string $scriptUrl = NULL, ?int $size = NULL, ?string $name = NULL, ?string $mime = NULL): string` + +Get download link of media file. + + +Parameters: + +* `$media`: `\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|array|string` +* `$scriptUrl`: `?string` +* `$size`: `?int` +* `$name`: `?string` +* `$mime`: `?string` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) + + + + +### `getEventHandler((class-string|null) $class = NULL): (T|\danog\MadelineProto\Ipc\EventHandlerProxy|\__PHP_Incomplete_Class|null)` + +Get event handler (or plugin instance). + + +Parameters: + +* `$class`: `(class-string|null)` + + +#### See also: +* `\danog\MadelineProto\Ipc\EventHandlerProxy` +* `\__PHP_Incomplete_Class` + + + + +### `getExtensionFromLocation(mixed $location, string $default): string` + +Get extension from file location. + + +Parameters: + +* `$location`: `mixed` File location +* `$default`: `string` Default extension + + + +### `getExtensionFromMime(string $mime): string` + +Get extension from mime type. + + +Parameters: + +* `$mime`: `string` MIME type + + + +### `getFileInfo(mixed $constructor): array` + +Get info about file. + + +Parameters: + +* `$constructor`: `mixed` File ID + + + +### `getFullDialogs(): array` + +Get full info of all dialogs. + +Bots should use getDialogIds, instead. + + + +### `getFullInfo(mixed $id): array` + +Get full info about peer, returns an FullInfo object. + + +Parameters: + +* `$id`: `mixed` Peer + + +#### See also: +* [https://docs.madelineproto.xyz/FullInfo.html](https://docs.madelineproto.xyz/FullInfo.html) + + + + +### `getHTTPClient(): \Amp\Http\Client\HttpClient` + +Get async HTTP client. + + +#### See also: +* `\Amp\Http\Client\HttpClient` + + + + +### `getHint(): string` + +Get current password hint. + + + +### `getId(mixed $id): int` + +Get the bot API ID of a peer. + + +Parameters: + +* `$id`: `mixed` Peer + + + +### `getInfo(mixed $id, \danog\MadelineProto\API::INFO_TYPE_* $type = \danog\MadelineProto\API::INFO_TYPE_ALL): (\$type is \danog\MadelineProto\API::INFO_TYPE_ALL ? array{User?: array, Chat?: array, bot_api_id: int, user_id?: int, chat_id?: int, channel_id?: int, type: string} : ($type is API::INFO_TYPE_TYPE ? string : ($type is \danog\MadelineProto\API::INFO_TYPE_ID ? int : (array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int} | array{_: string, user_id?: int, access_hash?: int, min?: bool} | array{_: string, channel_id: int, access_hash: int, min: bool}))))` + +Get info about peer, returns an Info object. + +If passed a secret chat ID, returns information about the user, not about the secret chat. +Use getSecretChat to return information about the secret chat. + + +Parameters: + +* `$id`: `mixed` Peer +* `$type`: `\danog\MadelineProto\API::INFO_TYPE_*` Whether to generate an Input*, an InputPeer or the full set of constructors + + +#### See also: +* [https://docs.madelineproto.xyz/Info.html](https://docs.madelineproto.xyz/Info.html) +* `\danog\MadelineProto\API::INFO_TYPE_*` + + + + +### `getLogger(): \danog\MadelineProto\Logger` + +Get logger. + + +#### See also: +* [`\danog\MadelineProto\Logger`: Logger class.](../../danog/MadelineProto/Logger.html) + + + + +### `getMaps(): ?int` + +Get current number of memory-mapped regions, UNIX only. + + + +### `getMaxMaps(): ?int` + +Get maximum number of memory-mapped regions, UNIX only. +Use testFibers to get the maximum number of fibers on any platform. + + + +### `getMethodNamespaces(): array` + +Get TL namespaces. + + + +### `getMethodsNamespaced(): array` + +Get namespaced methods (method => namespace). + + + +### `getMimeFromBuffer(string $buffer): string` + +Get mime type from buffer. + + +Parameters: + +* `$buffer`: `string` Buffer + + + +### `getMimeFromExtension(string $extension, string $default): string` + +Get mime type from file extension. + + +Parameters: + +* `$extension`: `string` File extension +* `$default`: `string` Default mime type + + + +### `getMimeFromFile(string $file): string` + +Get mime type of file. + + +Parameters: + +* `$file`: `string` File + + + +### `getPlugin(class-string $class): \danog\MadelineProto\PluginEventHandler|\danog\MadelineProto\Ipc\EventHandlerProxy|null` + +Obtain a certain event handler plugin instance. + + +Parameters: + +* `$class`: `class-string` + +return T|null + + +#### See also: +* [`\danog\MadelineProto\PluginEventHandler`: Plugin event handler class.](../../danog/MadelineProto/PluginEventHandler.html) +* `\danog\MadelineProto\Ipc\EventHandlerProxy` + + + + +### `getPropicInfo(mixed $data): ?\danog\MadelineProto\EventHandler\Media\Photo` + +Gets info of the propic of a user. + + +Parameters: + +* `$data`: `mixed` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Media\Photo`: Represents a photo.](../../danog/MadelineProto/EventHandler/Media/Photo.html) + + + + +### `getPsrLogger(): \Psr\Log\LoggerInterface` + +Get PSR logger. + + +#### See also: +* `\Psr\Log\LoggerInterface` + + + + +### `getPwrChat(mixed $id, bool $fullfetch = true): array` + +Get full info about peer (including full list of channel members), returns a Chat object. + + +Parameters: + +* `$id`: `mixed` Peer +* `$fullfetch`: `bool` + + +#### See also: +* [https://docs.madelineproto.xyz/Chat.html](https://docs.madelineproto.xyz/Chat.html) + + + + +### `getSecretChat((array|int) $chat): \danog\MadelineProto\SecretChats\SecretChat` + +Get secret chat. + + +Parameters: + +* `$chat`: `(array|int)` Secret chat ID + + +#### See also: +* [`\danog\MadelineProto\SecretChats\SecretChat`: Represents a secret chat.](../../danog/MadelineProto/SecretChats/SecretChat.html) + + + + +### `getSecretMessage(integer $chatId, integer $randomId): \danog\MadelineProto\EventHandler\Message\SecretMessage` + +Gets a secret chat message. + + +Parameters: + +* `$chatId`: `integer` Secret chat ID. +* `$randomId`: `integer` Secret chat message ID. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\SecretMessage`: Represents New encrypted message.](../../danog/MadelineProto/EventHandler/Message/SecretMessage.html) + + + + +### `getSelf(): array|false` + +Get info about the logged-in user, cached. + +Use fullGetSelf to bypass the cache. + + + +### `getSessionName(): string` + +Returns the session name. + + + +### `getSettings(): \danog\MadelineProto\Settings` + +Return current settings. + + +#### See also: +* [`\danog\MadelineProto\Settings`: Settings class used for configuring MadelineProto.](../../danog/MadelineProto/Settings.html) + + + + +### `getSponsoredMessages((int|string|array) $peer): ?array` + +Get sponsored messages for channel. +This method will return an array of [sponsored message objects](https://docs.madelineproto.xyz/API_docs/constructors/sponsoredMessage.html). + +See [the API documentation](https://core.telegram.org/api/sponsored-messages) for more info on how to handle sponsored messages. + + +Parameters: + +* `$peer`: `(int|string|array)` Channel ID, or Update, or Message, or Peer. + + + +### `getStream(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL, ?int $size = NULL): \Amp\ByteStream\ReadableStream` + +Provide a stream for a file, URL or amp stream. + + +Parameters: + +* `$stream`: `\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream` +* `$cancellation`: `?\Amp\Cancellation` +* `$size`: `?int` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `getStreamPipe(): \Amp\ByteStream\Pipe` + +Obtains a pipe that can be used to upload a file from a stream. + + +#### See also: +* `\Amp\ByteStream\Pipe` + + + + +### `getTL(): \danog\MadelineProto\TL\TLInterface` + +Get TL serializer. + + +#### See also: +* [\danog\MadelineProto\TL\TLInterface](../../danog/MadelineProto/TL/TLInterface.html) + + + + +### `getType(mixed $id): \danog\MadelineProto\API::PEER_TYPE_*` + +Get type of peer. + + +Parameters: + +* `$id`: `mixed` Peer + + +#### See also: +* `\danog\MadelineProto\API::PEER_TYPE_*` + + + + +### `getUpdates(array{offset?: int, limit?: int, timeout?: float} $params = []): list` + +Only useful when consuming MadelineProto updates through an API in another language (like Javascript), **absolutely not recommended when directly writing MadelineProto bots**. + +`getUpdates` will **greatly slow down your bot** if used directly inside of PHP code. + +**Only use the [event handler](#async-event-driven) when writing a MadelineProto bot**, because update handling in the **event handler** is completely parallelized and non-blocking. + + +Parameters: + +* `$params`: `array{offset?: int, limit?: int, timeout?: float}` Params + + + +### `getWebMessage(string $message): string` + +Get a message to show to the user when starting the bot. + + +Parameters: + +* `$message`: `string` + + + +### `getWebWarnings(): string` + +Get various warnings to show to the user in the web UI. + + + +### `hasAdmins(): bool` + +Check if has admins. + + + +### `hasEventHandler(): bool` + +Check if an event handler instance is present. + + + +### `hasPlugin(class-string<\danog\MadelineProto\EventHandler> $class): bool` + +Check if a certain event handler plugin is installed. + + +Parameters: + +* `$class`: `class-string<\danog\MadelineProto\EventHandler>` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../danog/MadelineProto/EventHandler.html) + + + + +### `hasReportPeers(): bool` + +Check if has report peers. + + + +### `hasSecretChat((array|int) $chat): bool` + +Check whether secret chat exists. + + +Parameters: + +* `$chat`: `(array|int)` Secret chat ID + + + +### `htmlEscape(string $what): string` + +Escape string for MadelineProto's HTML entity converter. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `htmlToMessageEntities(string $html): \danog\MadelineProto\TextEntities` + +Manually convert HTML to a message and a set of entities. + +NOTE: You don't have to use this method to send HTML messages. + +This method is already called automatically by using parse_mode: "HTML" in messages.sendMessage, messages.sendMedia, et cetera... + + +Parameters: + +* `$html`: `string` + + +Return value: Object containing message and entities + +#### See also: +* [https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode](https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode) +* [`\danog\MadelineProto\TextEntities`: Class that converts HTML or markdown to a message + set of entities.](../../danog/MadelineProto/TextEntities.html) + + + + +### `importAuthorization(array $authorization, int $mainDcID): array` + +Import authorization. + + +Parameters: + +* `$authorization`: `array` Authorization info +* `$mainDcID`: `int` Main DC ID + + + +### `inflateStripped(string $stripped): string` + +Inflate stripped photosize to full JPG payload. + + +Parameters: + +* `$stripped`: `string` Stripped photosize + + + +### `initSelfRestart(): void` + +Initialize self-restart hack. + + + +### `isAltervista(): bool` + +Whether this is altervista. + + + +### `isArrayOrAlike(mixed $var): bool` + +Check if is array or similar (traversable && countable && arrayAccess). + + +Parameters: + +* `$var`: `mixed` Value to check + + + +### `isBot(mixed $peer): bool` + +Check if the specified peer is a bot. + + +Parameters: + +* `$peer`: `mixed` + + + +### `isForum(mixed $peer): bool` + +Check if the specified peer is a forum. + + +Parameters: + +* `$peer`: `mixed` + + + +### `isIpc(): bool` + +Whether we're an IPC client instance. + + + +### `isIpcWorker(): bool` + +Whether we're an IPC server process (as opposed to an event handler). + + + +### `isPlayPaused(int $id): bool` + +Whether the currently playing audio file is paused. + + +Parameters: + +* `$id`: `int` + + + +### `isPremium(): bool` + +Returns whether the current user is a premium user, cached. + + + +### `isSelfBot(): bool` + +Returns whether the current user is a bot. + + + +### `isSelfUser(): bool` + +Returns whether the current user is a user. + + + +### `isTestMode(): boolean` + +Whether we're currently connected to the test DCs. + + + +### `logger(mixed $param, int $level = \danog\MadelineProto\Logger::NOTICE, string $file = ''): void` + +Logger. + + +Parameters: + +* `$param`: `mixed` Parameter +* `$level`: `int` Logging level +* `$file`: `string` File where the message originated + + + +### `logout(): void` + +Logout the session. + + + +### `markdownCodeEscape(string $what): string` + +Escape string for markdown code section. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownCodeblockEscape(string $what): string` + +Escape string for markdown codeblock. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownEscape(string $what): string` + +Escape string for markdown. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownToMessageEntities(string $markdown): \danog\MadelineProto\TextEntities` + +Manually convert markdown to a message and a set of entities. + +NOTE: You don't have to use this method to send Markdown messages. + +This method is already called automatically by using parse_mode: "Markdown" in messages.sendMessage, messages.sendMedia, et cetera... + + +Parameters: + +* `$markdown`: `string` + + +Return value: Object containing message and entities + +#### See also: +* [https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode](https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode) +* [`\danog\MadelineProto\TextEntities`: Class that converts HTML or markdown to a message + set of entities.](../../danog/MadelineProto/TextEntities.html) + + + + +### `markdownUrlEscape(string $what): string` + +Escape string for URL. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `mbStrSplit(string $text, integer $length): array` + +Telegram UTF-8 multibyte split. + + +Parameters: + +* `$text`: `string` Text +* `$length`: `integer` Length + + + +### `mbStrlen(string $text): int` + +Get Telegram UTF-8 length of string. + + +Parameters: + +* `$text`: `string` Text + + + +### `mbSubstr(string $text, integer $offset, (null|int) $length = NULL): string` + +Telegram UTF-8 multibyte substring. + + +Parameters: + +* `$text`: `string` Text to substring +* `$offset`: `integer` Offset +* `$length`: `(null|int)` Length + + + +### `openBuffered(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL): Closure(int): ?string` + +Provide a buffered reader for a file, URL or amp stream. + + +Parameters: + +* `$stream`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `openFileAppendOnly(string $path): \Amp\File\File` + +Opens a file in append-only mode. + + +Parameters: + +* `$path`: `string` File path. + + +#### See also: +* `\Amp\File\File` + + + + +### `packDouble(float $value): string` + +Convert double to binary version. + + +Parameters: + +* `$value`: `float` Value to convert + + + +### `packSignedInt(integer $value): string` + +Convert integer to base256 signed int. + + +Parameters: + +* `$value`: `integer` Value to convert + + + +### `packSignedLong(int $value): string` + +Convert integer to base256 long. + + +Parameters: + +* `$value`: `int` Value to convert + + + +### `packUnsignedInt(int $value): string` + +Convert value to unsigned base256 int. + + +Parameters: + +* `$value`: `int` Value + + + +### `pausePlay(int $id): void` + +Pauses playback of the current audio file in the call. + + +Parameters: + +* `$id`: `int` + + + +### `peerIsset(mixed $id): bool` + +Check if peer is present in internal peer database. + + +Parameters: + +* `$id`: `mixed` Peer + + + +### `phoneLogin(string $number, integer $sms_type = 5): array` + +Login as user. + + +Parameters: + +* `$number`: `string` Phone number +* `$sms_type`: `integer` SMS type + + + +### `posmod(int $a, int $b): int` + +Positive modulo +Works just like the % (modulus) operator, only returns always a postive number. + + +Parameters: + +* `$a`: `int` A +* `$b`: `int` B + + + +### `processDownloadServerPing(string $path, string $payload): void` + +Internal endpoint used by the download server. + + +Parameters: + +* `$path`: `string` +* `$payload`: `string` + + + +### `qrLogin(): ?\danog\MadelineProto\TL\Types\LoginQrCode` + +Initiates QR code login. + +Returns a QR code login helper object, that can be used to render the QR code, display the link directly, wait for login, QR code expiration and much more. + +Returns null if we're already logged in, or if we're waiting for a password (use getAuthorization to distinguish between the two cases). + + +#### See also: +* [`\danog\MadelineProto\TL\Types\LoginQrCode`: Represents a login QR code.](../../danog/MadelineProto/TL/Types/LoginQrCode.html) + + + + +### `random(integer $length): string` + +Get secure random string of specified length. + + +Parameters: + +* `$length`: `integer` Length + + + +### `randomInt(integer $modulus = 0): int` + +Get random integer. + + +Parameters: + +* `$modulus`: `integer` Modulus + + + +### `readLine(string $prompt = '', ?\Amp\Cancellation $cancel = NULL): string` + +Asynchronously read line. + + +Parameters: + +* `$prompt`: `string` Prompt +* `$cancel`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `refreshFullPeerCache(mixed $id): void` + +Refresh full peer cache for a certain peer. + + +Parameters: + +* `$id`: `mixed` The peer to refresh + + + +### `refreshPeerCache(mixed ...$ids): void` + +Refresh peer cache for a certain peer. + + +Parameters: + +* `...$ids`: `mixed` + + + +### `report(string $message, string $parseMode = ''): void` + +Report an error to the previously set peer. + + +Parameters: + +* `$message`: `string` Error to report +* `$parseMode`: `string` Parse mode + + + +### `reportMemoryProfile(): void` + +Report memory profile with memprof. + + + +### `requestCall(mixed $user): \danog\MadelineProto\VoIP` + +Request VoIP call. + + +Parameters: + +* `$user`: `mixed` User + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../danog/MadelineProto/VoIP.html) + + + + +### `requestSecretChat(mixed $user): int` + +Request secret chat. + + +Parameters: + +* `$user`: `mixed` User to start secret chat with + + + +### `resetUpdateState(): void` + +Reset the update state and fetch all updates from the beginning. + + + +### `restart(): void` + +Restart update loop. + + + +### `resumePlay(int $id): void` + +Resumes playback of the current audio file in the call. + + +Parameters: + +* `$id`: `int` + + + +### `rethrow(Throwable $e): void` + +Rethrow exception into event loop. + + +Parameters: + +* `$e`: `Throwable` + + +#### See also: +* `Throwable` + + + + +### `rleDecode(string $string): string` + +null-byte RLE decode. + + +Parameters: + +* `$string`: `string` Data to decode + + + +### `rleEncode(string $string): string` + +null-byte RLE encode. + + +Parameters: + +* `$string`: `string` Data to encode + + + +### `sendAudio((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendCustomEvent(mixed $payload): void` + +Sends an updateCustomEvent update to the event handler. + + +Parameters: + +* `$payload`: `mixed` + + + +### `sendDocument((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendDocumentPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendGif((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, ?int $duration = NULL, ?int $width = NULL, ?int $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$duration`: `?int` +* `$width`: `?int` +* `$height`: `?int` +* `$thumbSeek`: `string` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendMessage((integer|string) $peer, string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a message. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` Cancellation + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `sendMessageToAdmins(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, ?\Amp\Cancellation $cancellation = NULL): list<\danog\MadelineProto\EventHandler\Message>` + +Sends a message to all report peers (admins of the bot). + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `sendPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendSticker((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', array $stickerSet = [ '_' => 'inputStickerSetEmpty',], ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$stickerSet`: `array` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendVideo((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$thumbSeek`: `string` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendVoice((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `setNoop(): void` + +Set NOOP update handler, ignoring all updates. + + + +### `setReportPeers((int|string|array<(int|string)>) $userOrId): void` + +Set peer(s) where to send errors occurred in the event loop. + + +Parameters: + +* `$userOrId`: `(int|string|array<(int|string)>)` Username(s) or peer ID(s) + + + +### `setWebhook(string $webhookUrl): void` + +Set webhook update handler. + + +Parameters: + +* `$webhookUrl`: `string` Webhook URL + + + +### `skipPlay(int $id): void` + +When called, skips to the next file in the playlist. + + +Parameters: + +* `$id`: `int` + + + +### `sleep(float $time): void` + +Asynchronously sleep. + + +Parameters: + +* `$time`: `float` Number of seconds to sleep for + + + +### `start(): array` + +Log in to telegram (via CLI or web). + + + +### `stop(): void` + +Stop update loop. + + + +### `stopPlay(int $id): void` + +Stops playing all files in the call, clears the main and the hold playlist. + + +Parameters: + +* `$id`: `int` + + + +### `stringToStream(string $str): \Amp\ByteStream\ReadableBuffer` + +Converts a string into an async amphp stream. + + +Parameters: + +* `$str`: `string` + + +#### See also: +* `\Amp\ByteStream\ReadableBuffer` + + + + +### `subscribeToUpdates(mixed $channel): bool` + +Subscribe to event handler updates for a channel/supergroup we're not a member of. + + +Parameters: + +* `$channel`: `mixed` Channel/supergroup to subscribe to + + +Return value: False if we were already subscribed + + +### `tdToMTProto(array $params): array` + +Convert TD to MTProto parameters. + + +Parameters: + +* `$params`: `array` Parameters + + + +### `tdToTdcli(mixed $params): array` + +Convert TD parameters to tdcli. + + +Parameters: + +* `$params`: `mixed` Parameters + + + +### `tdcliToTd(mixed $params, array $key = NULL): array` + +Convert tdcli parameters to tdcli. + + +Parameters: + +* `$params`: `mixed` Params +* `$key`: `array` Key + + + +### `testFibers(int $fiberCount = 100000): array{maxFibers: int, realMemoryMb: int, maps: ?int, maxMaps: ?int}` + +Test fibers. + + +Parameters: + +* `$fiberCount`: `int` + + + +### `toCamelCase(string $input): string` + +Convert to camelCase. + + +Parameters: + +* `$input`: `string` String + + + +### `toSnakeCase(string $input): string` + +Convert to snake_case. + + +Parameters: + +* `$input`: `string` String + + + +### `unpackDouble(string $value): float` + +Unpack binary double. + + +Parameters: + +* `$value`: `string` Value to unpack + + + +### `unpackFileId(string $fileId): array` + +Unpack bot API file ID. + + +Parameters: + +* `$fileId`: `string` Bot API file ID + + +Return value: Unpacked file ID + + +### `unpackSignedInt(string $value): int` + +Unpack base256 signed int. + + +Parameters: + +* `$value`: `string` base256 int + + + +### `unpackSignedLong(string $value): int` + +Unpack base256 signed long. + + +Parameters: + +* `$value`: `string` base256 long + + + +### `unpackSignedLongString((string|int|array) $value): string` + +Unpack base256 signed long to string. + + +Parameters: + +* `$value`: `(string|int|array)` base256 long + + + +### `unsetEventHandler(): void` + +Unset event handler. + + + +### `update2fa(array{password?: string, new_password?: string, email?: string, hint?: string} $params): void` + +Update the 2FA password. + +The params array can contain password, new_password, email and hint params. + + +Parameters: + +* `$params`: `array{password?: string, new_password?: string, email?: string, hint?: string}` The params + + + +### `updateSettings(\danog\MadelineProto\SettingsAbstract $settings): void` + +Parse, update and store settings. + + +Parameters: + +* `$settings`: `\danog\MadelineProto\SettingsAbstract` Settings + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` + + + + +### `upload((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|string|array|resource) $file, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|string|array|resource)` File, URL or Telegram file to upload +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `resource` +* `\Amp\Cancellation` + + + + +### `uploadEncrypted((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|string|array|resource) $file, string $fileName = '', callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file to secret chat. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|string|array|resource)` File, URL or Telegram file to upload +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `resource` +* `\Amp\Cancellation` + + + + +### `uploadFromCallable(callable(int, int, ?Cancellation): strin) $callable, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable(float, float, float): voi) $cb = NULL, boolean $seekable = true, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file from callable. + +The callable must accept two parameters: int $offset, int $size +The callable must return a string with the contest of the file at the specified offset and size. + + +Parameters: + +* `$callable`: `callable(int, int, ?Cancellation): strin)` Callable (offset, length) => data +* `$size`: `integer` File size +* `$mime`: `string` Mime type +* `$fileName`: `string` File name +* `$cb`: `callable(float, float, float): voi)` Status callback +* `$seekable`: `boolean` Whether chunks can be fetched out of order +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* `\Amp\Cancellation` + + + + +### `uploadFromStream(mixed $stream, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file from stream. + + +Parameters: + +* `$stream`: `mixed` PHP resource or AMPHP async stream +* `$size`: `integer` File size +* `$mime`: `string` Mime type +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* `\Amp\Cancellation` + + + + +### `uploadFromTgfile(mixed $media, callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Reupload telegram file. + + +Parameters: + +* `$media`: `mixed` Telegram file +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* `\Amp\Cancellation` + + + + +### `uploadFromUrl((string|\danog\MadelineProto\FileCallbackInterface) $url, integer $size = 0, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file from URL. + + +Parameters: + +* `$url`: `(string|\danog\MadelineProto\FileCallbackInterface)` URL of file +* `$size`: `integer` Size of file +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` + + + + +### `validateEventHandlerClass(class-string<\danog\MadelineProto\EventHandler> $class): list<\danog\MadelineProto\EventHandlerIssue>` + +Perform static analysis on a certain event handler class, to make sure it satisfies some performance requirements. + + +Parameters: + +* `$class`: `class-string<\danog\MadelineProto\EventHandler>` Class name + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../danog/MadelineProto/EventHandler.html) +* [`\danog\MadelineProto\EventHandlerIssue`: Represents an event handler issue.](../../danog/MadelineProto/EventHandlerIssue.html) + + + + +### `viewSponsoredMessage((int|array) $peer, (string|array{random_id: string}) $message): bool` + +Mark sponsored message as read. + + +Parameters: + +* `$peer`: `(int|array)` Channel ID, or Update, or Message, or Peer. +* `$message`: `(string|array{random_id: string})` Random ID or sponsored message to mark as read. + + + +### `wrapMedia(array $media, bool $protected = false): ?\danog\MadelineProto\EventHandler\Media` + +Wrap a media constructor into an abstract Media object. + + +Parameters: + +* `$media`: `array` +* `$protected`: `bool` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) + + + + +### `wrapMessage(array $message, bool $scheduled = false): ?\danog\MadelineProto\EventHandler\AbstractMessage` + +Wrap a Message constructor into an abstract Message object. + + +Parameters: + +* `$message`: `array` +* `$scheduled`: `bool` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractMessage`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/AbstractMessage.html) + + + + +### `wrapPin(array $message): ?\danog\MadelineProto\EventHandler\Pinned` + +Wrap a Pin constructor into an abstract Pinned object. + + +Parameters: + +* `$message`: `array` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Pinned`: Indicates that some messages were pinned/unpinned.](../../danog/MadelineProto/EventHandler/Pinned.html) + + + + +### `wrapUpdate(array $update): ?\danog\MadelineProto\EventHandler\Update` + +Wrap an Update constructor into an abstract Update object. + + +Parameters: + +* `$update`: `array` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../danog/MadelineProto/EventHandler/Update.html) + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/AsyncTools.md b/docs/PHP/danog/MadelineProto/AsyncTools.md new file mode 100644 index 0000000000..cac1c59709 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/AsyncTools.md @@ -0,0 +1,380 @@ +--- +title: "danog\\MadelineProto\\AsyncTools: Async tools." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\AsyncTools` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Async tools. + + + + +## Constants +* `danog\MadelineProto\AsyncTools::ALL_MIMES`: + + +## Method list: +* [`rethrow(\Throwable $e): void`](#rethrow) +* [`callFork(\Generator|\Amp\Future|callable $callable, mixed ...$args): \Amp\Future`](#callFork) +* [`flock(string $file, integer $operation, float $polling = 0.1, ?\Amp\Cancellation $token = NULL, ?\Closure $failureCb = NULL): ($token is null ? Closure(): void : (Closure(): void | null))`](#flock) +* [`sleep(float $time): void`](#sleep) +* [`readLine(string $prompt = '', ?\Amp\Cancellation $cancel = NULL): string`](#readLine) +* [`echo(string $string): void`](#echo) +* [`mbStrlen(string $text): int`](#mbStrlen) +* [`mbSubstr(string $text, integer $offset, (null|int) $length = NULL): string`](#mbSubstr) +* [`mbStrSplit(string $text, integer $length): array`](#mbStrSplit) +* [`htmlToMessageEntities(string $html): \danog\MadelineProto\TextEntities`](#htmlToMessageEntities) +* [`markdownToMessageEntities(string $markdown): \danog\MadelineProto\TextEntities`](#markdownToMessageEntities) +* [`entitiesToHtml(string $message, list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})> $entities, bool $allowTelegramTags = false): string`](#entitiesToHtml) +* [`toCamelCase(string $input): string`](#toCamelCase) +* [`toSnakeCase(string $input): string`](#toSnakeCase) +* [`htmlEscape(string $what): string`](#htmlEscape) +* [`markdownEscape(string $what): string`](#markdownEscape) +* [`markdownCodeblockEscape(string $what): string`](#markdownCodeblockEscape) +* [`markdownCodeEscape(string $what): string`](#markdownCodeEscape) +* [`markdownUrlEscape(string $what): string`](#markdownUrlEscape) +* [`getMimeFromExtension(string $extension, string $default): string`](#getMimeFromExtension) +* [`getExtensionFromMime(string $mime): string`](#getExtensionFromMime) +* [`getExtensionFromLocation(mixed $location, string $default): string`](#getExtensionFromLocation) +* [`getMimeFromFile(string $file): string`](#getMimeFromFile) +* [`getMimeFromBuffer(string $buffer): string`](#getMimeFromBuffer) + +## Methods: +### `rethrow(\Throwable $e): void` + +Rethrow exception into event loop. + + +Parameters: + +* `$e`: `\Throwable` + + +#### See also: +* `\Throwable` + + + + +### `callFork(\Generator|\Amp\Future|callable $callable, mixed ...$args): \Amp\Future` + +Fork a new green thread and execute the passed function in the background. + + +Parameters: + +* `$callable`: `\Generator|\Amp\Future|callable` +* `...$args`: `mixed` Arguments forwarded to the function when forking the thread. + + +#### See also: +* `\Generator` +* `\Amp\Future` + + + + +### `flock(string $file, integer $operation, float $polling = 0.1, ?\Amp\Cancellation $token = NULL, ?\Closure $failureCb = NULL): ($token is null ? Closure(): void : (Closure(): void | null))` + +Asynchronously lock a file +Resolves with a callbable that MUST eventually be called in order to release the lock. + + +Parameters: + +* `$file`: `string` File to lock +* `$operation`: `integer` Locking mode +* `$polling`: `float` Polling interval +* `$token`: `?\Amp\Cancellation` Cancellation token +* `$failureCb`: `?\Closure` Failure callback, called only once if the first locking attempt fails. + + +#### See also: +* `\Amp\Cancellation` +* `\Closure` + + + + +### `sleep(float $time): void` + +Asynchronously sleep. + + +Parameters: + +* `$time`: `float` Number of seconds to sleep for + + + +### `readLine(string $prompt = '', ?\Amp\Cancellation $cancel = NULL): string` + +Asynchronously read line. + + +Parameters: + +* `$prompt`: `string` Prompt +* `$cancel`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `echo(string $string): void` + +Asynchronously write to stdout/browser. + + +Parameters: + +* `$string`: `string` Message to echo + + + +### `mbStrlen(string $text): int` + +Get Telegram UTF-8 length of string. + + +Parameters: + +* `$text`: `string` Text + + + +### `mbSubstr(string $text, integer $offset, (null|int) $length = NULL): string` + +Telegram UTF-8 multibyte substring. + + +Parameters: + +* `$text`: `string` Text to substring +* `$offset`: `integer` Offset +* `$length`: `(null|int)` Length + + + +### `mbStrSplit(string $text, integer $length): array` + +Telegram UTF-8 multibyte split. + + +Parameters: + +* `$text`: `string` Text +* `$length`: `integer` Length + + + +### `htmlToMessageEntities(string $html): \danog\MadelineProto\TextEntities` + +Manually convert HTML to a message and a set of entities. + +NOTE: You don't have to use this method to send HTML messages. + +This method is already called automatically by using parse_mode: "HTML" in messages.sendMessage, messages.sendMedia, et cetera... + + +Parameters: + +* `$html`: `string` + + +Return value: Object containing message and entities + +#### See also: +* [https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode](https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode) +* [`\danog\MadelineProto\TextEntities`: Class that converts HTML or markdown to a message + set of entities.](../../danog/MadelineProto/TextEntities.html) + + + + +### `markdownToMessageEntities(string $markdown): \danog\MadelineProto\TextEntities` + +Manually convert markdown to a message and a set of entities. + +NOTE: You don't have to use this method to send Markdown messages. + +This method is already called automatically by using parse_mode: "Markdown" in messages.sendMessage, messages.sendMedia, et cetera... + + +Parameters: + +* `$markdown`: `string` + + +Return value: Object containing message and entities + +#### See also: +* [https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode](https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode) +* [`\danog\MadelineProto\TextEntities`: Class that converts HTML or markdown to a message + set of entities.](../../danog/MadelineProto/TextEntities.html) + + + + +### `entitiesToHtml(string $message, list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})> $entities, bool $allowTelegramTags = false): string` + +Convert a message and a set of entities to HTML. + + +Parameters: + +* `$message`: `string` +* `$entities`: `list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})>` +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity`: Master class for message entities.](../../danog/MadelineProto/EventHandler/Message/Entities/MessageEntity.html) + + + + +### `toCamelCase(string $input): string` + +Convert to camelCase. + + +Parameters: + +* `$input`: `string` String + + + +### `toSnakeCase(string $input): string` + +Convert to snake_case. + + +Parameters: + +* `$input`: `string` String + + + +### `htmlEscape(string $what): string` + +Escape string for MadelineProto's HTML entity converter. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownEscape(string $what): string` + +Escape string for markdown. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownCodeblockEscape(string $what): string` + +Escape string for markdown codeblock. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownCodeEscape(string $what): string` + +Escape string for markdown code section. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownUrlEscape(string $what): string` + +Escape string for URL. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `getMimeFromExtension(string $extension, string $default): string` + +Get mime type from file extension. + + +Parameters: + +* `$extension`: `string` File extension +* `$default`: `string` Default mime type + + + +### `getExtensionFromMime(string $mime): string` + +Get extension from mime type. + + +Parameters: + +* `$mime`: `string` MIME type + + + +### `getExtensionFromLocation(mixed $location, string $default): string` + +Get extension from file location. + + +Parameters: + +* `$location`: `mixed` File location +* `$default`: `string` Default extension + + + +### `getMimeFromFile(string $file): string` + +Get mime type of file. + + +Parameters: + +* `$file`: `string` File + + + +### `getMimeFromBuffer(string $buffer): string` + +Get mime type from buffer. + + +Parameters: + +* `$buffer`: `string` Buffer + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/BotApiFileId.md b/docs/PHP/danog/MadelineProto/BotApiFileId.md new file mode 100644 index 0000000000..5ce1c40b56 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/BotApiFileId.md @@ -0,0 +1,48 @@ +--- +title: "danog\\MadelineProto\\BotApiFileId: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc..." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\BotApiFileId` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Indicates a bot API file ID to upload using sendDocument, sendPhoto etc... + + + +## Properties +* `$fileId`: `string` +* `$size`: `int` +* `$fileName`: `string` +* `$protected`: `bool` + +## Method list: +* [`__construct(string $fileId, int<1, max> $size, string $fileName, bool $protected)`](#__construct) + +## Methods: +### `__construct(string $fileId, int<1, max> $size, string $fileName, bool $protected)` + + + + +Parameters: + +* `$fileId`: `string` The file ID +* `$size`: `int<1, max>` The file size +* `$fileName`: `string` The original file name +* `$protected`: `bool` Whether the original file is protected + + +#### See also: +* `max` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Broadcast/Action.md b/docs/PHP/danog/MadelineProto/Broadcast/Action.md new file mode 100644 index 0000000000..d4671fdc57 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Broadcast/Action.md @@ -0,0 +1,42 @@ +--- +title: "danog\\MadelineProto\\Broadcast\\Action: Interface that represents a broadcast action." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Broadcast\Action` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Interface that represents a broadcast action. + + + + +## Method list: +* [`act(integer $broadcastId, integer $peer, \Amp\Cancellation $cancellation): void`](#act) + +## Methods: +### `act(integer $broadcastId, integer $peer, \Amp\Cancellation $cancellation): void` + +Do something with a single peer. + + +Parameters: + +* `$broadcastId`: `integer` Broadcast ID +* `$peer`: `integer` Broadcast peer +* `$cancellation`: `\Amp\Cancellation` Cancellation token + + +#### See also: +* `\Amp\Cancellation` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Broadcast/Filter.md b/docs/PHP/danog/MadelineProto/Broadcast/Filter.md new file mode 100644 index 0000000000..f7ca9ff7ef --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Broadcast/Filter.md @@ -0,0 +1,54 @@ +--- +title: "danog\\MadelineProto\\Broadcast\\Filter: Broadcast filter." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Broadcast\Filter` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Broadcast filter. + + + +## Properties +* `$allowUsers`: `bool` +* `$allowBots`: `bool` +* `$allowGroups`: `bool` +* `$allowChannels`: `bool` +* `$blacklist`: `list` +* `$whitelist`: `(list | null)` If null all IDs are allowed (*) + +## Method list: +* [`__construct(bool $allowUsers, bool $allowBots, bool $allowGroups, bool $allowChannels, array $blacklist = [], ?array $whitelist = NULL)`](#__construct) +* [`default(): self`](#default) + +## Methods: +### `__construct(bool $allowUsers, bool $allowBots, bool $allowGroups, bool $allowChannels, array $blacklist = [], ?array $whitelist = NULL)` + + + + +Parameters: + +* `$allowUsers`: `bool` +* `$allowBots`: `bool` +* `$allowGroups`: `bool` +* `$allowChannels`: `bool` +* `$blacklist`: `array` +* `$whitelist`: `?array` + + + +### `default(): self` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Broadcast/Progress.md b/docs/PHP/danog/MadelineProto/Broadcast/Progress.md new file mode 100644 index 0000000000..51b38d975e --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Broadcast/Progress.md @@ -0,0 +1,26 @@ +--- +title: "danog\\MadelineProto\\Broadcast\\Progress: Broadcast progress." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Broadcast\Progress` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Broadcast progress. + + + +## Properties +* `$percent`: `int` Completion percentage. +* `$broadcastId`: `int` Broadcast ID +* `$status`: `danog\MadelineProto\Broadcast\Status` Broadcast status +* `$pendingCount`: `int` Pending number of peers +* `$successCount`: `int` Successful number of peers +* `$failCount`: `int` Failed number of peers +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Broadcast/Status.md b/docs/PHP/danog/MadelineProto/Broadcast/Status.md new file mode 100644 index 0000000000..cda4bf24e2 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Broadcast/Status.md @@ -0,0 +1,67 @@ +--- +title: "danog\\MadelineProto\\Broadcast\\Status: Broadcast status." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Broadcast\Status` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Broadcast status. + + + + +## Constants +* `danog\MadelineProto\Broadcast\Status::GATHERING_PEERS`: + +* `danog\MadelineProto\Broadcast\Status::BROADCASTING`: + +* `danog\MadelineProto\Broadcast\Status::FINISHED`: + +* `danog\MadelineProto\Broadcast\Status::CANCELLED`: + +## Properties +* `$name`: `string` +* `$value`: `string` + +## Method list: +* [`cases(): array`](#cases) +* [`from(string|int $value): static`](#from) +* [`tryFrom(string|int $value): ?static`](#tryFrom) + +## Methods: +### `cases(): array` + + + + + +### `from(string|int $value): static` + + + + +Parameters: + +* `$value`: `string|int` + + + +### `tryFrom(string|int $value): ?static` + + + + +Parameters: + +* `$value`: `string|int` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Conversion.md b/docs/PHP/danog/MadelineProto/Conversion.md new file mode 100644 index 0000000000..7b0e90a967 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Conversion.md @@ -0,0 +1,108 @@ +--- +title: "danog\\MadelineProto\\Conversion: " +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Conversion` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + + + + + +## Properties +* `$tdesktop_base_path`: `mixed` +* `$tdesktop_user_base_path`: `mixed` +* `$tdesktop_key`: `mixed` + +## Method list: +* [`importAuthorization(array $authorization, int $main_dc_id, string $session, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): \danog\MadelineProto\API`](#importAuthorization) +* [`telethon(string $session, string $new_session, (\danog\MadelineProto\SettingsAbstract|null) $settings = NULL): \danog\MadelineProto\API`](#telethon) +* [`pyrogram(string $session, string $new_session, (\danog\MadelineProto\SettingsAbstract|null) $settings = NULL): \danog\MadelineProto\API`](#pyrogram) +* [`zerobias(array|string $session, string $new_session, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): \danog\MadelineProto\API`](#zerobias) + +## Methods: +### `importAuthorization(array $authorization, int $main_dc_id, string $session, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): \danog\MadelineProto\API` + +Import authorization from raw auth key and DC id. + + +Parameters: + +* `$authorization`: `array` Authorization info, DC ID => auth key +* `$main_dc_id`: `int` +* `$session`: `string` +* `$settings`: `?\danog\MadelineProto\SettingsAbstract` + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` +* [`\danog\MadelineProto\API`: Main API wrapper for MadelineProto.](../../danog/MadelineProto/API.html) + + + + +### `telethon(string $session, string $new_session, (\danog\MadelineProto\SettingsAbstract|null) $settings = NULL): \danog\MadelineProto\API` + +Convert telethon session. + + +Parameters: + +* `$session`: `string` Telethon session file +* `$new_session`: `string` MadelineProto session directory to create +* `$settings`: `(\danog\MadelineProto\SettingsAbstract|null)` Settings + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` +* [`\danog\MadelineProto\API`: Main API wrapper for MadelineProto.](../../danog/MadelineProto/API.html) + + + + +### `pyrogram(string $session, string $new_session, (\danog\MadelineProto\SettingsAbstract|null) $settings = NULL): \danog\MadelineProto\API` + +Convert pyrogram session. + + +Parameters: + +* `$session`: `string` Pyrogram session file +* `$new_session`: `string` MadelineProto session directory to create +* `$settings`: `(\danog\MadelineProto\SettingsAbstract|null)` Settings + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` +* [`\danog\MadelineProto\API`: Main API wrapper for MadelineProto.](../../danog/MadelineProto/API.html) + + + + +### `zerobias(array|string $session, string $new_session, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): \danog\MadelineProto\API` + + + + +Parameters: + +* `$session`: `array|string` +* `$new_session`: `string` +* `$settings`: `?\danog\MadelineProto\SettingsAbstract` + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` +* [`\danog\MadelineProto\API`: Main API wrapper for MadelineProto.](../../danog/MadelineProto/API.html) + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler.md b/docs/PHP/danog/MadelineProto/EventHandler.md new file mode 100644 index 0000000000..7fd378069f --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler.md @@ -0,0 +1,3318 @@ +--- +title: "danog\\MadelineProto\\EventHandler: Event handler." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Event handler. + + + +## Properties +* `$auth`: `\danog\MadelineProto\Namespace\Auth` +* `$account`: `\danog\MadelineProto\Namespace\Account` +* `$users`: `\danog\MadelineProto\Namespace\Users` +* `$contacts`: `\danog\MadelineProto\Namespace\Contacts` +* `$messages`: `\danog\MadelineProto\Namespace\Messages` +* `$updates`: `\danog\MadelineProto\Namespace\Updates` +* `$photos`: `\danog\MadelineProto\Namespace\Photos` +* `$upload`: `\danog\MadelineProto\Namespace\Upload` +* `$help`: `\danog\MadelineProto\Namespace\Help` +* `$channels`: `\danog\MadelineProto\Namespace\Channels` +* `$bots`: `\danog\MadelineProto\Namespace\Bots` +* `$payments`: `\danog\MadelineProto\Namespace\Payments` +* `$stickers`: `\danog\MadelineProto\Namespace\Stickers` +* `$phone`: `\danog\MadelineProto\Namespace\Phone` +* `$langpack`: `\danog\MadelineProto\Namespace\Langpack` +* `$folders`: `\danog\MadelineProto\Namespace\Folders` +* `$stats`: `\danog\MadelineProto\Namespace\Stats` +* `$chatlists`: `\danog\MadelineProto\Namespace\Chatlists` +* `$stories`: `\danog\MadelineProto\Namespace\Stories` +* `$premium`: `\danog\MadelineProto\Namespace\Premium` +* `$smsjobs`: `\danog\MadelineProto\Namespace\Smsjobs` +* `$fragment`: `\danog\MadelineProto\Namespace\Fragment` + +## Method list: +* [`startAndLoop(string $session, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): void`](#startAndLoop) +* [`startAndLoopBot(string $session, string $token, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): void`](#startAndLoopBot) +* [`getPeriodicLoop(string $name): ?\danog\Loop\PeriodicLoop`](#getPeriodicLoop) +* [`getPeriodicLoops(): array`](#getPeriodicLoops) +* [`getReportPeers(): (string|int|array<(string|int)>)`](#getReportPeers) +* [`getPluginPaths(): (non-empty-string|non-empty-list|null)`](#getPluginPaths) +* [`getPlugins(): array>`](#getPlugins) +* [`MTProtoToBotAPI(array $data): array`](#MTProtoToBotAPI) +* [`MTProtoToTd(mixed $params): array`](#MTProtoToTd) +* [`MTProtoToTdcli(mixed $params): array`](#MTProtoToTdcli) +* [`acceptCall(int $id): void`](#acceptCall) +* [`acceptSecretChat(array $params): void`](#acceptSecretChat) +* [`arr(mixed ...$params): array`](#arr) +* [`base64urlDecode(string $data): string`](#base64urlDecode) +* [`base64urlEncode(string $data): string`](#base64urlEncode) +* [`botAPIToMTProto(array $arguments): array`](#botAPIToMTProto) +* [`botLogin(string $token): ?array`](#botLogin) +* [`broadcastCustom(\danog\MadelineProto\Broadcast\Action $action, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, (float|null) $delay = NULL): int`](#broadcastCustom) +* [`broadcastForwardMessages(mixed $from_peer, list $message_ids, bool $drop_author = false, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int`](#broadcastForwardMessages) +* [`broadcastMessages(array $messages, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int`](#broadcastMessages) +* [`callFork(\Generator|\Amp\Future|callable $callable, mixed ...$args): \Amp\Future`](#callFork) +* [`callGetCurrent(int $id): \danog\MadelineProto\RemoteUrl|\danog\MadelineProto\LocalFile|string|null`](#callGetCurrent) +* [`callPlay(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $file): void`](#callPlay) +* [`callPlayOnHold(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream ...$files): void`](#callPlayOnHold) +* [`callSetOutput(int $id, \danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream $file): void`](#callSetOutput) +* [`canConvertOgg(): bool`](#canConvertOgg) +* [`canUseFFmpeg(?\Amp\Cancellation $cancellation = NULL): bool`](#canUseFFmpeg) +* [`cancelBroadcast(integer $id): void`](#cancelBroadcast) +* [`closeConnection(string $message): void`](#closeConnection) +* [`complete2faLogin(string $password): array`](#complete2faLogin) +* [`completePhoneLogin(string $code): array`](#completePhoneLogin) +* [`completeSignup(string $first_name, string $last_name = ''): array`](#completeSignup) +* [`discardCall(int $id, \danog\MadelineProto\VoIP\DiscardReason $reason = \danog\MadelineProto\VoIP\DiscardReason::HANGUP, int<1, 5> $rating = NULL, string $comment = NULL): void`](#discardCall) +* [`discardSecretChat(int $chat): void`](#discardSecretChat) +* [`downloadServer(string $session): void`](#downloadServer) +* [`downloadToBrowser((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, (null|callable) $cb = NULL, (null|int) $size = NULL, (null|string) $name = NULL, (null|string) $mime = NULL, ?\Amp\Cancellation $cancellation = NULL): void`](#downloadToBrowser) +* [`downloadToCallable(mixed $messageMedia, (callable|\danog\MadelineProto\FileCallbackInterface) $callable, callable $cb = NULL, bool $seekable = true, int $offset = 0, int $end = -1, int $part_size = NULL, ?\Amp\Cancellation $cancellation = NULL): void`](#downloadToCallable) +* [`downloadToDir(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $dir, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string`](#downloadToDir) +* [`downloadToFile(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $file, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string`](#downloadToFile) +* [`downloadToResponse((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, \Amp\Http\Server\Request $request, callable $cb = NULL, (null|int) $size = NULL, (null|string) $mime = NULL, (null|string) $name = NULL, ?\Amp\Cancellation $cancellation = NULL): \Amp\Http\Server\Response`](#downloadToResponse) +* [`downloadToReturnedStream(mixed $messageMedia, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#downloadToReturnedStream) +* [`downloadToStream(mixed $messageMedia, (mixed|\danog\MadelineProto\FileCallbackInterface|resource|\Amp\ByteStream\WritableStream) $stream, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): void`](#downloadToStream) +* [`echo(string $string): void`](#echo) +* [`end(array $what): T`](#end) +* [`entitiesToHtml(string $message, list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})> $entities, bool $allowTelegramTags = false): string`](#entitiesToHtml) +* [`exportAuthorization(): array{0: (int|string), 1: string}`](#exportAuthorization) +* [`extractBotAPIFile(array $info): ?array`](#extractBotAPIFile) +* [`extractMessage(array $updates): array`](#extractMessage) +* [`extractMessageId(array $updates): int`](#extractMessageId) +* [`extractMessageUpdate(array $updates): array`](#extractMessageUpdate) +* [`extractUpdates(array $updates): array`](#extractUpdates) +* [`fileGetContents(string $url): string`](#fileGetContents) +* [`flock(string $file, integer $operation, float $polling = 0.1, ?\Amp\Cancellation $token = NULL, ?\Closure $failureCb = NULL): ($token is null ? Closure(): void : (Closure(): void | null))`](#flock) +* [`fullChatLastUpdated(mixed $id): int`](#fullChatLastUpdated) +* [`fullGetSelf(): array|false`](#fullGetSelf) +* [`genVectorHash(array $longs): string`](#genVectorHash) +* [`getAdminIds(): array`](#getAdminIds) +* [`getAllCalls(): array`](#getAllCalls) +* [`getAllMethods(): array`](#getAllMethods) +* [`getAuthorization(): (\danog\MadelineProto\API::NOT_LOGGED_IN|\danog\MadelineProto\API::WAITING_CODE|\danog\MadelineProto\API::WAITING_SIGNUP|\danog\MadelineProto\API::WAITING_PASSWORD|\danog\MadelineProto\API::LOGGED_IN|API::LOGGED_OUT)`](#getAuthorization) +* [`getBroadcastProgress(integer $id): ?\danog\MadelineProto\Broadcast\Progress`](#getBroadcastProgress) +* [`getCachedConfig(): array`](#getCachedConfig) +* [`getCall(int $id): ?\danog\MadelineProto\VoIP`](#getCall) +* [`getCallByPeer(int $userId): ?\danog\MadelineProto\VoIP`](#getCallByPeer) +* [`getCallState(int $id): ?\danog\MadelineProto\VoIP\CallState`](#getCallState) +* [`getCdnConfig(): void`](#getCdnConfig) +* [`getConfig(array $config = []): array`](#getConfig) +* [`getDNSClient(): \Amp\Dns\DnsResolver`](#getDNSClient) +* [`getDhConfig(): array`](#getDhConfig) +* [`getDialogIds(): list`](#getDialogIds) +* [`getDownloadInfo(mixed $messageMedia): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string, thumb_size?: string}`](#getDownloadInfo) +* [`getDownloadLink(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|array|string $media, ?string $scriptUrl = NULL, ?int $size = NULL, ?string $name = NULL, ?string $mime = NULL): string`](#getDownloadLink) +* [`getEventHandler((class-string|null) $class = NULL): (T|\danog\MadelineProto\Ipc\EventHandlerProxy|\__PHP_Incomplete_Class|null)`](#getEventHandler) +* [`getExtensionFromLocation(mixed $location, string $default): string`](#getExtensionFromLocation) +* [`getExtensionFromMime(string $mime): string`](#getExtensionFromMime) +* [`getFileInfo(mixed $constructor): array`](#getFileInfo) +* [`getFullDialogs(): array`](#getFullDialogs) +* [`getFullInfo(mixed $id): array`](#getFullInfo) +* [`getHTTPClient(): \Amp\Http\Client\HttpClient`](#getHTTPClient) +* [`getHint(): string`](#getHint) +* [`getId(mixed $id): int`](#getId) +* [`getInfo(mixed $id, \danog\MadelineProto\API::INFO_TYPE_* $type = \danog\MadelineProto\API::INFO_TYPE_ALL): (\$type is \danog\MadelineProto\API::INFO_TYPE_ALL ? array{User?: array, Chat?: array, bot_api_id: int, user_id?: int, chat_id?: int, channel_id?: int, type: string} : ($type is API::INFO_TYPE_TYPE ? string : ($type is \danog\MadelineProto\API::INFO_TYPE_ID ? int : (array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int} | array{_: string, user_id?: int, access_hash?: int, min?: bool} | array{_: string, channel_id: int, access_hash: int, min: bool}))))`](#getInfo) +* [`getLogger(): \danog\MadelineProto\Logger`](#getLogger) +* [`getMaps(): ?int`](#getMaps) +* [`getMaxMaps(): ?int`](#getMaxMaps) +* [`getMethodNamespaces(): array`](#getMethodNamespaces) +* [`getMethodsNamespaced(): array`](#getMethodsNamespaced) +* [`getMimeFromBuffer(string $buffer): string`](#getMimeFromBuffer) +* [`getMimeFromExtension(string $extension, string $default): string`](#getMimeFromExtension) +* [`getMimeFromFile(string $file): string`](#getMimeFromFile) +* [`getPlugin(class-string $class): \danog\MadelineProto\PluginEventHandler|\danog\MadelineProto\Ipc\EventHandlerProxy|null`](#getPlugin) +* [`getPropicInfo(mixed $data): ?\danog\MadelineProto\EventHandler\Media\Photo`](#getPropicInfo) +* [`getPsrLogger(): \Psr\Log\LoggerInterface`](#getPsrLogger) +* [`getPwrChat(mixed $id, bool $fullfetch = true): array`](#getPwrChat) +* [`getSecretChat((array|int) $chat): \danog\MadelineProto\SecretChats\SecretChat`](#getSecretChat) +* [`getSecretMessage(integer $chatId, integer $randomId): \danog\MadelineProto\EventHandler\Message\SecretMessage`](#getSecretMessage) +* [`getSelf(): array|false`](#getSelf) +* [`getSessionName(): string`](#getSessionName) +* [`getSettings(): \danog\MadelineProto\Settings`](#getSettings) +* [`getSponsoredMessages((int|string|array) $peer): ?array`](#getSponsoredMessages) +* [`getStream(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL, ?int $size = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`getStreamPipe(): \Amp\ByteStream\Pipe`](#getStreamPipe) +* [`getTL(): \danog\MadelineProto\TL\TLInterface`](#getTL) +* [`getType(mixed $id): \danog\MadelineProto\API::PEER_TYPE_*`](#getType) +* [`getUpdates(array{offset?: int, limit?: int, timeout?: float} $params = []): list`](#getUpdates) +* [`getWebMessage(string $message): string`](#getWebMessage) +* [`getWebWarnings(): string`](#getWebWarnings) +* [`hasAdmins(): bool`](#hasAdmins) +* [`hasEventHandler(): bool`](#hasEventHandler) +* [`hasPlugin(class-string<\danog\MadelineProto\EventHandler> $class): bool`](#hasPlugin) +* [`hasReportPeers(): bool`](#hasReportPeers) +* [`hasSecretChat((array|int) $chat): bool`](#hasSecretChat) +* [`htmlEscape(string $what): string`](#htmlEscape) +* [`htmlToMessageEntities(string $html): \danog\MadelineProto\TextEntities`](#htmlToMessageEntities) +* [`importAuthorization(array $authorization, int $mainDcID): array`](#importAuthorization) +* [`inflateStripped(string $stripped): string`](#inflateStripped) +* [`initSelfRestart(): void`](#initSelfRestart) +* [`isAltervista(): bool`](#isAltervista) +* [`isArrayOrAlike(mixed $var): bool`](#isArrayOrAlike) +* [`isBot(mixed $peer): bool`](#isBot) +* [`isForum(mixed $peer): bool`](#isForum) +* [`isIpc(): bool`](#isIpc) +* [`isIpcWorker(): bool`](#isIpcWorker) +* [`isPlayPaused(int $id): bool`](#isPlayPaused) +* [`isPremium(): bool`](#isPremium) +* [`isSelfBot(): bool`](#isSelfBot) +* [`isSelfUser(): bool`](#isSelfUser) +* [`isTestMode(): boolean`](#isTestMode) +* [`logger(mixed $param, int $level = \danog\MadelineProto\Logger::NOTICE, string $file = ''): void`](#logger) +* [`logout(): void`](#logout) +* [`markdownCodeEscape(string $what): string`](#markdownCodeEscape) +* [`markdownCodeblockEscape(string $what): string`](#markdownCodeblockEscape) +* [`markdownEscape(string $what): string`](#markdownEscape) +* [`markdownToMessageEntities(string $markdown): \danog\MadelineProto\TextEntities`](#markdownToMessageEntities) +* [`markdownUrlEscape(string $what): string`](#markdownUrlEscape) +* [`mbStrSplit(string $text, integer $length): array`](#mbStrSplit) +* [`mbStrlen(string $text): int`](#mbStrlen) +* [`mbSubstr(string $text, integer $offset, (null|int) $length = NULL): string`](#mbSubstr) +* [`openBuffered(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL): Closure(int): ?string`](#openBuffered) +* [`openFileAppendOnly(string $path): \Amp\File\File`](#openFileAppendOnly) +* [`packDouble(float $value): string`](#packDouble) +* [`packSignedInt(integer $value): string`](#packSignedInt) +* [`packSignedLong(int $value): string`](#packSignedLong) +* [`packUnsignedInt(int $value): string`](#packUnsignedInt) +* [`pausePlay(int $id): void`](#pausePlay) +* [`peerIsset(mixed $id): bool`](#peerIsset) +* [`phoneLogin(string $number, integer $sms_type = 5): array`](#phoneLogin) +* [`posmod(int $a, int $b): int`](#posmod) +* [`processDownloadServerPing(string $path, string $payload): void`](#processDownloadServerPing) +* [`qrLogin(): ?\danog\MadelineProto\TL\Types\LoginQrCode`](#qrLogin) +* [`random(integer $length): string`](#random) +* [`randomInt(integer $modulus = 0): int`](#randomInt) +* [`readLine(string $prompt = '', ?\Amp\Cancellation $cancel = NULL): string`](#readLine) +* [`refreshFullPeerCache(mixed $id): void`](#refreshFullPeerCache) +* [`refreshPeerCache(mixed ...$ids): void`](#refreshPeerCache) +* [`report(string $message, string $parseMode = ''): void`](#report) +* [`reportMemoryProfile(): void`](#reportMemoryProfile) +* [`requestCall(mixed $user): \danog\MadelineProto\VoIP`](#requestCall) +* [`requestSecretChat(mixed $user): int`](#requestSecretChat) +* [`resetUpdateState(): void`](#resetUpdateState) +* [`restart(): void`](#restart) +* [`resumePlay(int $id): void`](#resumePlay) +* [`rethrow(Throwable $e): void`](#rethrow) +* [`rleDecode(string $string): string`](#rleDecode) +* [`rleEncode(string $string): string`](#rleEncode) +* [`sendAudio((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendAudio) +* [`sendCustomEvent(mixed $payload): void`](#sendCustomEvent) +* [`sendDocument((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendDocument) +* [`sendDocumentPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendDocumentPhoto) +* [`sendGif((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, ?int $duration = NULL, ?int $width = NULL, ?int $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendGif) +* [`sendMessage((integer|string) $peer, string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendMessage) +* [`sendMessageToAdmins(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, ?\Amp\Cancellation $cancellation = NULL): list<\danog\MadelineProto\EventHandler\Message>`](#sendMessageToAdmins) +* [`sendPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendPhoto) +* [`sendSticker((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', array $stickerSet = [ '_' => 'inputStickerSetEmpty',], ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendSticker) +* [`sendVideo((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendVideo) +* [`sendVoice((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendVoice) +* [`setNoop(): void`](#setNoop) +* [`setReportPeers((int|string|array<(int|string)>) $userOrId): void`](#setReportPeers) +* [`setWebhook(string $webhookUrl): void`](#setWebhook) +* [`skipPlay(int $id): void`](#skipPlay) +* [`sleep(float $time): void`](#sleep) +* [`start(): array`](#start) +* [`stop(): void`](#stop) +* [`stopPlay(int $id): void`](#stopPlay) +* [`stringToStream(string $str): \Amp\ByteStream\ReadableBuffer`](#stringToStream) +* [`subscribeToUpdates(mixed $channel): bool`](#subscribeToUpdates) +* [`tdToMTProto(array $params): array`](#tdToMTProto) +* [`tdToTdcli(mixed $params): array`](#tdToTdcli) +* [`tdcliToTd(mixed $params, array $key = NULL): array`](#tdcliToTd) +* [`testFibers(int $fiberCount = 100000): array{maxFibers: int, realMemoryMb: int, maps: ?int, maxMaps: ?int}`](#testFibers) +* [`toCamelCase(string $input): string`](#toCamelCase) +* [`toSnakeCase(string $input): string`](#toSnakeCase) +* [`unpackDouble(string $value): float`](#unpackDouble) +* [`unpackFileId(string $fileId): array`](#unpackFileId) +* [`unpackSignedInt(string $value): int`](#unpackSignedInt) +* [`unpackSignedLong(string $value): int`](#unpackSignedLong) +* [`unpackSignedLongString((string|int|array) $value): string`](#unpackSignedLongString) +* [`unsetEventHandler(): void`](#unsetEventHandler) +* [`update2fa(array{password?: string, new_password?: string, email?: string, hint?: string} $params): void`](#update2fa) +* [`updateSettings(\danog\MadelineProto\SettingsAbstract $settings): void`](#updateSettings) +* [`upload((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|string|array|resource) $file, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#upload) +* [`uploadEncrypted((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|string|array|resource) $file, string $fileName = '', callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadEncrypted) +* [`uploadFromCallable(callable(int, int, ?Cancellation): strin) $callable, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable(float, float, float): voi) $cb = NULL, boolean $seekable = true, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromCallable) +* [`uploadFromStream(mixed $stream, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromStream) +* [`uploadFromTgfile(mixed $media, callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromTgfile) +* [`uploadFromUrl((string|\danog\MadelineProto\FileCallbackInterface) $url, integer $size = 0, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromUrl) +* [`validateEventHandlerClass(class-string<\danog\MadelineProto\EventHandler> $class): list<\danog\MadelineProto\EventHandlerIssue>`](#validateEventHandlerClass) +* [`viewSponsoredMessage((int|array) $peer, (string|array{random_id: string}) $message): bool`](#viewSponsoredMessage) +* [`wrapMedia(array $media, bool $protected = false): ?\danog\MadelineProto\EventHandler\Media`](#wrapMedia) +* [`wrapMessage(array $message, bool $scheduled = false): ?\danog\MadelineProto\EventHandler\AbstractMessage`](#wrapMessage) +* [`wrapPin(array $message): ?\danog\MadelineProto\EventHandler\Pinned`](#wrapPin) +* [`wrapUpdate(array $update): ?\danog\MadelineProto\EventHandler\Update`](#wrapUpdate) +* [`initDbProperties(\danog\AsyncOrm\Settings $settings, string $tablePrefix): void`](#initDbProperties) +* [`saveDbProperties(): void`](#saveDbProperties) + +## Methods: +### `startAndLoop(string $session, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): void` + +Start MadelineProto and the event handler. + +Also initializes error reporting, catching and reporting all errors surfacing from the event loop. + + +Parameters: + +* `$session`: `string` Session name +* `$settings`: `?\danog\MadelineProto\SettingsAbstract` Settings + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` + + + + +### `startAndLoopBot(string $session, string $token, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): void` + +Start MadelineProto as a bot and the event handler. + +Also initializes error reporting, catching and reporting all errors surfacing from the event loop. + + +Parameters: + +* `$session`: `string` Session name +* `$token`: `string` Bot token +* `$settings`: `?\danog\MadelineProto\SettingsAbstract` Settings + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` + + + + +### `getPeriodicLoop(string $name): ?\danog\Loop\PeriodicLoop` + +Obtain a PeriodicLoop instance created by the Cron attribute. + + +Parameters: + +* `$name`: `string` Method name + + +#### See also: +* `\danog\Loop\PeriodicLoop` + + + + +### `getPeriodicLoops(): array` + +Obtain all PeriodicLoop instances created by the Cron attribute. + + +#### See also: +* `\danog\Loop\PeriodicLoop` + + + + +### `getReportPeers(): (string|int|array<(string|int)>)` + +Get peers where to send error reports. + + + +### `getPluginPaths(): (non-empty-string|non-empty-list|null)` + +Obtain a path or a list of paths that will be recursively searched for plugins. + +Plugin filenames end with Plugin.php, and will be included automatically. + + +#### See also: +* `non-empty-string` +* `non-empty-list` + + + + +### `getPlugins(): array>` + +Obtain a list of plugin event handlers to use, in addition with those found by getPluginPath. + + + +### `MTProtoToBotAPI(array $data): array` + +Convert MTProto parameters to bot API parameters. + + +Parameters: + +* `$data`: `array` Data + + + +### `MTProtoToTd(mixed $params): array` + +MTProto to TD params. + + +Parameters: + +* `$params`: `mixed` Params + + + +### `MTProtoToTdcli(mixed $params): array` + +MTProto to TDCLI params. + + +Parameters: + +* `$params`: `mixed` Params + + + +### `acceptCall(int $id): void` + +Accept call. + + +Parameters: + +* `$id`: `int` + + + +### `acceptSecretChat(array $params): void` + +Accept secret chat. + + +Parameters: + +* `$params`: `array` Secret chat ID + + + +### `arr(mixed ...$params): array` + +Create array. + + +Parameters: + +* `...$params`: `mixed` Params + + + +### `base64urlDecode(string $data): string` + +base64URL decode. + + +Parameters: + +* `$data`: `string` Data to decode + + + +### `base64urlEncode(string $data): string` + +Base64URL encode. + + +Parameters: + +* `$data`: `string` Data to encode + + + +### `botAPIToMTProto(array $arguments): array` + +Convert bot API parameters to MTProto parameters. + + +Parameters: + +* `$arguments`: `array` Arguments + + + +### `botLogin(string $token): ?array` + +Login as bot. + + +Parameters: + +* `$token`: `string` Bot token + + + +### `broadcastCustom(\danog\MadelineProto\Broadcast\Action $action, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, (float|null) $delay = NULL): int` + +Executes a custom broadcast action with all peers (users, chats, channels) of the bot. + +Will return an integer ID that can be used to: + +- Get the current broadcast progress with getBroadcastProgress +- Cancel the broadcast using cancelBroadcast + +Note that to avoid manually polling the progress, +MadelineProto will also periodically emit updateBroadcastProgress updates, +containing a Progress object for all broadcasts currently in-progress. + + +Parameters: + +* `$action`: `\danog\MadelineProto\Broadcast\Action` A custom, serializable Action class that will be called once for every peer. +* `$filter`: `?\danog\MadelineProto\Broadcast\Filter` +* `$delay`: `(float|null)` Number of seconds to wait between each peer. + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Action`: Interface that represents a broadcast action.](../../danog/MadelineProto/Broadcast/Action.html) +* [`\danog\MadelineProto\Broadcast\Filter`: Broadcast filter.](../../danog/MadelineProto/Broadcast/Filter.html) + + + + +### `broadcastForwardMessages(mixed $from_peer, list $message_ids, bool $drop_author = false, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int` + +Forwards a list of messages to all peers (users, chats, channels) of the bot. + +Will return an integer ID that can be used to: + +- Get the current broadcast progress with getBroadcastProgress +- Cancel the broadcast using cancelBroadcast + +Note that to avoid manually polling the progress, +MadelineProto will also periodically emit updateBroadcastProgress updates, +containing a Progress object for all broadcasts currently in-progress. + + +Parameters: + +* `$from_peer`: `mixed` Bot API ID or Update, from where to forward the messages. +* `$message_ids`: `list` IDs of the messages to forward. +* `$drop_author`: `bool` If true, will forward messages without quoting the original author. +* `$filter`: `?\danog\MadelineProto\Broadcast\Filter` +* `$pin`: `bool` Whether to also pin the last sent message. +* `$delay`: `(float|null)` Number of seconds to wait between each peer. + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Filter`: Broadcast filter.](../../danog/MadelineProto/Broadcast/Filter.html) + + + + +### `broadcastMessages(array $messages, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int` + +Sends a list of messages to all peers (users, chats, channels) of the bot. + +A simplified version of this method is also available: broadcastForwardMessages can work with pre-prepared messages. + +Will return an integer ID that can be used to: + +- Get the current broadcast progress with getBroadcastProgress +- Cancel the broadcast using cancelBroadcast + +Note that to avoid manually polling the progress, +MadelineProto will also periodically emit updateBroadcastProgress updates, +containing a Progress object for all broadcasts currently in-progress. + + +Parameters: + +* `$messages`: `array` The messages to send: an array of arrays, containing parameters to pass to messages.sendMessage. +* `$filter`: `?\danog\MadelineProto\Broadcast\Filter` +* `$pin`: `bool` Whether to also pin the last sent message. +* `$delay`: `(float|null)` Number of seconds to wait between each peer. + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Filter`: Broadcast filter.](../../danog/MadelineProto/Broadcast/Filter.html) + + + + +### `callFork(\Generator|\Amp\Future|callable $callable, mixed ...$args): \Amp\Future` + +Fork a new green thread and execute the passed function in the background. + + +Parameters: + +* `$callable`: `\Generator|\Amp\Future|callable` +* `...$args`: `mixed` Arguments forwarded to the function when forking the thread. + + +#### See also: +* `\Generator` +* `\Amp\Future` + + + + +### `callGetCurrent(int $id): \danog\MadelineProto\RemoteUrl|\danog\MadelineProto\LocalFile|string|null` + +Get the file that is currently being played. + +Will return a string with the object ID of the stream if we're currently playing a stream, otherwise returns the related LocalFile or RemoteUrl. + + +Parameters: + +* `$id`: `int` + + +#### See also: +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) + + + + +### `callPlay(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $file): void` + +Play file in call. + + +Parameters: + +* `$id`: `int` +* `$file`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` + + + + +### `callPlayOnHold(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream ...$files): void` + +Play files on hold in call. + + +Parameters: + +* `$id`: `int` +* `...$files`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` + + + + +### `callSetOutput(int $id, \danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream $file): void` + +Set output file or stream for incoming OPUS audio packets in a call. + +Will write an OGG OPUS stream to the specified file or stream. + + +Parameters: + +* `$id`: `int` +* `$file`: `\danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* `\Amp\ByteStream\WritableStream` + + + + +### `canConvertOgg(): bool` + +Whether we can convert any audio/video file to a VoIP OGG OPUS file, or the files must be preconverted using @libtgvoipbot. + + + +### `canUseFFmpeg(?\Amp\Cancellation $cancellation = NULL): bool` + +Whether we can convert any audio/video file using ffmpeg. + + +Parameters: + +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `cancelBroadcast(integer $id): void` + +Cancel a running broadcast. + + +Parameters: + +* `$id`: `integer` Broadcast ID + + + +### `closeConnection(string $message): void` + +Close connection with client, connected via web. + + +Parameters: + +* `$message`: `string` Message + + + +### `complete2faLogin(string $password): array` + +Complete 2FA login. + + +Parameters: + +* `$password`: `string` Password + + + +### `completePhoneLogin(string $code): array` + +Complet user login using login code. + + +Parameters: + +* `$code`: `string` Login code + + + +### `completeSignup(string $first_name, string $last_name = ''): array` + +Complete signup to Telegram. + + +Parameters: + +* `$first_name`: `string` First name +* `$last_name`: `string` Last name + + + +### `discardCall(int $id, \danog\MadelineProto\VoIP\DiscardReason $reason = \danog\MadelineProto\VoIP\DiscardReason::HANGUP, int<1, 5> $rating = NULL, string $comment = NULL): void` + +Discard call. + + +Parameters: + +* `$id`: `int` +* `$reason`: `\danog\MadelineProto\VoIP\DiscardReason` +* `$rating`: `int<1, 5>` Call rating in stars +* `$comment`: `string` Additional comment on call quality. + + +#### See also: +* [`\danog\MadelineProto\VoIP\DiscardReason`: Why was the call discarded?](../../danog/MadelineProto/VoIP/DiscardReason.html) + + + + +### `discardSecretChat(int $chat): void` + +Discard secret chat. + + +Parameters: + +* `$chat`: `int` Secret chat ID + + + +### `downloadServer(string $session): void` + +Downloads a file to the browser using the specified session file. + + +Parameters: + +* `$session`: `string` + + + +### `downloadToBrowser((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, (null|callable) $cb = NULL, (null|int) $size = NULL, (null|string) $name = NULL, (null|string) $mime = NULL, ?\Amp\Cancellation $cancellation = NULL): void` + +Download file to browser. + +Supports HEAD requests and content-ranges for parallel and resumed downloads. + + +Parameters: + +* `$messageMedia`: `(array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message)` File to download +* `$cb`: `(null|callable)` Status callback (can also use FileCallback) +* `$size`: `(null|int)` Size of file to download, required for bot API file IDs. +* `$name`: `(null|string)` Name of file to download, required for bot API file IDs. +* `$mime`: `(null|string)` MIME type of file to download, required for bot API file IDs. +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* `\Amp\Cancellation` + + + + +### `downloadToCallable(mixed $messageMedia, (callable|\danog\MadelineProto\FileCallbackInterface) $callable, callable $cb = NULL, bool $seekable = true, int $offset = 0, int $end = -1, int $part_size = NULL, ?\Amp\Cancellation $cancellation = NULL): void` + +Download file to callable. +The callable must accept two parameters: string $payload, int $offset +The callable will be called (possibly out of order, depending on the value of $seekable). + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$callable`: `(callable|\danog\MadelineProto\FileCallbackInterface)` Chunk callback +* `$cb`: `callable` Status callback +* `$seekable`: `bool` Whether the callable can be called out of order +* `$offset`: `int` Offset where to start downloading +* `$end`: `int` Offset where to stop downloading (inclusive) +* `$part_size`: `int` Size of each chunk +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` + + + + +### `downloadToDir(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $dir, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string` + +Download file to directory. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$dir`: `(string|\danog\MadelineProto\FileCallbackInterface)` Directory where to download the file +* `$cb`: `callable` Callback +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: Downloaded file name + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` +* `non-empty-string` + + + + +### `downloadToFile(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $file, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string` + +Download file. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$file`: `(string|\danog\MadelineProto\FileCallbackInterface)` Downloaded file path +* `$cb`: `callable` Callback +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: Downloaded file name + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` +* `non-empty-string` + + + + +### `downloadToResponse((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, \Amp\Http\Server\Request $request, callable $cb = NULL, (null|int) $size = NULL, (null|string) $mime = NULL, (null|string) $name = NULL, ?\Amp\Cancellation $cancellation = NULL): \Amp\Http\Server\Response` + +Download file to amphp/http-server response. + +Supports HEAD requests and content-ranges for parallel and resumed downloads. + + +Parameters: + +* `$messageMedia`: `(array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message)` File to download +* `$request`: `\Amp\Http\Server\Request` Request +* `$cb`: `callable` Status callback (can also use FileCallback) +* `$size`: `(null|int)` Size of file to download, required for bot API file IDs. +* `$mime`: `(null|string)` MIME type of file to download, required for bot API file IDs. +* `$name`: `(null|string)` Name of file to download, required for bot API file IDs. +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* `\Amp\Http\Server\Request` +* `\Amp\Cancellation` +* `\Amp\Http\Server\Response` + + + + +### `downloadToReturnedStream(mixed $messageMedia, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Download file to an amphp stream, returning it. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$cb`: `callable` Callback +* `$offset`: `int` Offset where to start downloading +* `$end`: `int` Offset where to end download +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToStream(mixed $messageMedia, (mixed|\danog\MadelineProto\FileCallbackInterface|resource|\Amp\ByteStream\WritableStream) $stream, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): void` + +Download file to stream. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$stream`: `(mixed|\danog\MadelineProto\FileCallbackInterface|resource|\Amp\ByteStream\WritableStream)` Stream where to download file +* `$cb`: `callable` Callback +* `$offset`: `int` Offset where to start downloading +* `$end`: `int` Offset where to end download +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `resource` +* `\Amp\ByteStream\WritableStream` +* `\Amp\Cancellation` + + + + +### `echo(string $string): void` + +Asynchronously write to stdout/browser. + + +Parameters: + +* `$string`: `string` Message to echo + + + +### `end(array $what): T` + +Get final element of array. + + +Parameters: + +* `$what`: `array` Array + + + +### `entitiesToHtml(string $message, list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})> $entities, bool $allowTelegramTags = false): string` + +Convert a message and a set of entities to HTML. + + +Parameters: + +* `$message`: `string` +* `$entities`: `list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})>` +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity`: Master class for message entities.](../../danog/MadelineProto/EventHandler/Message/Entities/MessageEntity.html) + + + + +### `exportAuthorization(): array{0: (int|string), 1: string}` + +Export authorization. + + + +### `extractBotAPIFile(array $info): ?array` + +Extract file info from bot API message. + + +Parameters: + +* `$info`: `array` Bot API message object + + + +### `extractMessage(array $updates): array` + +Extract a message constructor from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `extractMessageId(array $updates): int` + +Extract a message ID from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `extractMessageUpdate(array $updates): array` + +Extract an update message constructor from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `extractUpdates(array $updates): array` + +Extract Update constructors from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `fileGetContents(string $url): string` + +Get contents of remote file asynchronously. + + +Parameters: + +* `$url`: `string` URL + + + +### `flock(string $file, integer $operation, float $polling = 0.1, ?\Amp\Cancellation $token = NULL, ?\Closure $failureCb = NULL): ($token is null ? Closure(): void : (Closure(): void | null))` + +Asynchronously lock a file +Resolves with a callbable that MUST eventually be called in order to release the lock. + + +Parameters: + +* `$file`: `string` File to lock +* `$operation`: `integer` Locking mode +* `$polling`: `float` Polling interval +* `$token`: `?\Amp\Cancellation` Cancellation token +* `$failureCb`: `?\Closure` Failure callback, called only once if the first locking attempt fails. + + +#### See also: +* `\Amp\Cancellation` +* `\Closure` + + + + +### `fullChatLastUpdated(mixed $id): int` + +When was full info for this chat last cached. + + +Parameters: + +* `$id`: `mixed` Chat ID + + + +### `fullGetSelf(): array|false` + +Get info about the logged-in user, not cached. + + + +### `genVectorHash(array $longs): string` + +Generate MTProto vector hash. + +Returns a vector hash. + + +Parameters: + +* `$longs`: `array` IDs + + + +### `getAdminIds(): array` + +Get admin IDs (equal to all user report peers). + + + +### `getAllCalls(): array` + +Get all pending and running calls, indexed by user ID. + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../danog/MadelineProto/VoIP.html) + + + + +### `getAllMethods(): array` + +Get full list of MTProto and API methods. + + + +### `getAuthorization(): (\danog\MadelineProto\API::NOT_LOGGED_IN|\danog\MadelineProto\API::WAITING_CODE|\danog\MadelineProto\API::WAITING_SIGNUP|\danog\MadelineProto\API::WAITING_PASSWORD|\danog\MadelineProto\API::LOGGED_IN|API::LOGGED_OUT)` + +Get authorization info. + + +#### See also: +* `\danog\MadelineProto\API::NOT_LOGGED_IN` +* `\danog\MadelineProto\API::WAITING_CODE` +* `\danog\MadelineProto\API::WAITING_SIGNUP` +* `\danog\MadelineProto\API::WAITING_PASSWORD` +* `\danog\MadelineProto\API::LOGGED_IN` +* `API::LOGGED_OUT` + + + + +### `getBroadcastProgress(integer $id): ?\danog\MadelineProto\Broadcast\Progress` + +Get the progress of a currently running broadcast. + +Will return null if the broadcast doesn't exist, has already completed or was cancelled. + +Use updateBroadcastProgress updates to get real-time progress status without polling. + + +Parameters: + +* `$id`: `integer` Broadcast ID + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Progress`: Broadcast progress.](../../danog/MadelineProto/Broadcast/Progress.html) + + + + +### `getCachedConfig(): array` + +Get cached server-side config. + + + +### `getCall(int $id): ?\danog\MadelineProto\VoIP` + +Get phone call information. + + +Parameters: + +* `$id`: `int` + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../danog/MadelineProto/VoIP.html) + + + + +### `getCallByPeer(int $userId): ?\danog\MadelineProto\VoIP` + +Get the phone call with the specified user ID. + + +Parameters: + +* `$userId`: `int` + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../danog/MadelineProto/VoIP.html) + + + + +### `getCallState(int $id): ?\danog\MadelineProto\VoIP\CallState` + +Get call state. + + +Parameters: + +* `$id`: `int` + + +#### See also: +* [\danog\MadelineProto\VoIP\CallState](../../danog/MadelineProto/VoIP/CallState.html) + + + + +### `getCdnConfig(): void` + +Store RSA keys for CDN datacenters. + + + +### `getConfig(array $config = []): array` + +Get cached (or eventually re-fetch) server-side config. + + +Parameters: + +* `$config`: `array` Current config + + + +### `getDNSClient(): \Amp\Dns\DnsResolver` + +Get async DNS client. + + +#### See also: +* `\Amp\Dns\DnsResolver` + + + + +### `getDhConfig(): array` + +Get diffie-hellman configuration. + + + +### `getDialogIds(): list` + +Get dialog IDs. + + + +### `getDownloadInfo(mixed $messageMedia): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string, thumb_size?: string}` + +Get download info of file +Returns an array with the following structure:. + +`$info['ext']` - The file extension +`$info['name']` - The file name, without the extension +`$info['mime']` - The file mime type +`$info['size']` - The file size + + +Parameters: + +* `$messageMedia`: `mixed` File ID + + + +### `getDownloadLink(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|array|string $media, ?string $scriptUrl = NULL, ?int $size = NULL, ?string $name = NULL, ?string $mime = NULL): string` + +Get download link of media file. + + +Parameters: + +* `$media`: `\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|array|string` +* `$scriptUrl`: `?string` +* `$size`: `?int` +* `$name`: `?string` +* `$mime`: `?string` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) + + + + +### `getEventHandler((class-string|null) $class = NULL): (T|\danog\MadelineProto\Ipc\EventHandlerProxy|\__PHP_Incomplete_Class|null)` + +Get event handler (or plugin instance). + + +Parameters: + +* `$class`: `(class-string|null)` + + +#### See also: +* `\danog\MadelineProto\Ipc\EventHandlerProxy` +* `\__PHP_Incomplete_Class` + + + + +### `getExtensionFromLocation(mixed $location, string $default): string` + +Get extension from file location. + + +Parameters: + +* `$location`: `mixed` File location +* `$default`: `string` Default extension + + + +### `getExtensionFromMime(string $mime): string` + +Get extension from mime type. + + +Parameters: + +* `$mime`: `string` MIME type + + + +### `getFileInfo(mixed $constructor): array` + +Get info about file. + + +Parameters: + +* `$constructor`: `mixed` File ID + + + +### `getFullDialogs(): array` + +Get full info of all dialogs. + +Bots should use getDialogIds, instead. + + + +### `getFullInfo(mixed $id): array` + +Get full info about peer, returns an FullInfo object. + + +Parameters: + +* `$id`: `mixed` Peer + + +#### See also: +* [https://docs.madelineproto.xyz/FullInfo.html](https://docs.madelineproto.xyz/FullInfo.html) + + + + +### `getHTTPClient(): \Amp\Http\Client\HttpClient` + +Get async HTTP client. + + +#### See also: +* `\Amp\Http\Client\HttpClient` + + + + +### `getHint(): string` + +Get current password hint. + + + +### `getId(mixed $id): int` + +Get the bot API ID of a peer. + + +Parameters: + +* `$id`: `mixed` Peer + + + +### `getInfo(mixed $id, \danog\MadelineProto\API::INFO_TYPE_* $type = \danog\MadelineProto\API::INFO_TYPE_ALL): (\$type is \danog\MadelineProto\API::INFO_TYPE_ALL ? array{User?: array, Chat?: array, bot_api_id: int, user_id?: int, chat_id?: int, channel_id?: int, type: string} : ($type is API::INFO_TYPE_TYPE ? string : ($type is \danog\MadelineProto\API::INFO_TYPE_ID ? int : (array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int} | array{_: string, user_id?: int, access_hash?: int, min?: bool} | array{_: string, channel_id: int, access_hash: int, min: bool}))))` + +Get info about peer, returns an Info object. + +If passed a secret chat ID, returns information about the user, not about the secret chat. +Use getSecretChat to return information about the secret chat. + + +Parameters: + +* `$id`: `mixed` Peer +* `$type`: `\danog\MadelineProto\API::INFO_TYPE_*` Whether to generate an Input*, an InputPeer or the full set of constructors + + +#### See also: +* [https://docs.madelineproto.xyz/Info.html](https://docs.madelineproto.xyz/Info.html) +* `\danog\MadelineProto\API::INFO_TYPE_*` + + + + +### `getLogger(): \danog\MadelineProto\Logger` + +Get logger. + + +#### See also: +* [`\danog\MadelineProto\Logger`: Logger class.](../../danog/MadelineProto/Logger.html) + + + + +### `getMaps(): ?int` + +Get current number of memory-mapped regions, UNIX only. + + + +### `getMaxMaps(): ?int` + +Get maximum number of memory-mapped regions, UNIX only. +Use testFibers to get the maximum number of fibers on any platform. + + + +### `getMethodNamespaces(): array` + +Get TL namespaces. + + + +### `getMethodsNamespaced(): array` + +Get namespaced methods (method => namespace). + + + +### `getMimeFromBuffer(string $buffer): string` + +Get mime type from buffer. + + +Parameters: + +* `$buffer`: `string` Buffer + + + +### `getMimeFromExtension(string $extension, string $default): string` + +Get mime type from file extension. + + +Parameters: + +* `$extension`: `string` File extension +* `$default`: `string` Default mime type + + + +### `getMimeFromFile(string $file): string` + +Get mime type of file. + + +Parameters: + +* `$file`: `string` File + + + +### `getPlugin(class-string $class): \danog\MadelineProto\PluginEventHandler|\danog\MadelineProto\Ipc\EventHandlerProxy|null` + +Obtain a certain event handler plugin instance. + + +Parameters: + +* `$class`: `class-string` + +return T|null + + +#### See also: +* [`\danog\MadelineProto\PluginEventHandler`: Plugin event handler class.](../../danog/MadelineProto/PluginEventHandler.html) +* `\danog\MadelineProto\Ipc\EventHandlerProxy` + + + + +### `getPropicInfo(mixed $data): ?\danog\MadelineProto\EventHandler\Media\Photo` + +Gets info of the propic of a user. + + +Parameters: + +* `$data`: `mixed` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Media\Photo`: Represents a photo.](../../danog/MadelineProto/EventHandler/Media/Photo.html) + + + + +### `getPsrLogger(): \Psr\Log\LoggerInterface` + +Get PSR logger. + + +#### See also: +* `\Psr\Log\LoggerInterface` + + + + +### `getPwrChat(mixed $id, bool $fullfetch = true): array` + +Get full info about peer (including full list of channel members), returns a Chat object. + + +Parameters: + +* `$id`: `mixed` Peer +* `$fullfetch`: `bool` + + +#### See also: +* [https://docs.madelineproto.xyz/Chat.html](https://docs.madelineproto.xyz/Chat.html) + + + + +### `getSecretChat((array|int) $chat): \danog\MadelineProto\SecretChats\SecretChat` + +Get secret chat. + + +Parameters: + +* `$chat`: `(array|int)` Secret chat ID + + +#### See also: +* [`\danog\MadelineProto\SecretChats\SecretChat`: Represents a secret chat.](../../danog/MadelineProto/SecretChats/SecretChat.html) + + + + +### `getSecretMessage(integer $chatId, integer $randomId): \danog\MadelineProto\EventHandler\Message\SecretMessage` + +Gets a secret chat message. + + +Parameters: + +* `$chatId`: `integer` Secret chat ID. +* `$randomId`: `integer` Secret chat message ID. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\SecretMessage`: Represents New encrypted message.](../../danog/MadelineProto/EventHandler/Message/SecretMessage.html) + + + + +### `getSelf(): array|false` + +Get info about the logged-in user, cached. + +Use fullGetSelf to bypass the cache. + + + +### `getSessionName(): string` + +Returns the session name. + + + +### `getSettings(): \danog\MadelineProto\Settings` + +Return current settings. + + +#### See also: +* [`\danog\MadelineProto\Settings`: Settings class used for configuring MadelineProto.](../../danog/MadelineProto/Settings.html) + + + + +### `getSponsoredMessages((int|string|array) $peer): ?array` + +Get sponsored messages for channel. +This method will return an array of [sponsored message objects](https://docs.madelineproto.xyz/API_docs/constructors/sponsoredMessage.html). + +See [the API documentation](https://core.telegram.org/api/sponsored-messages) for more info on how to handle sponsored messages. + + +Parameters: + +* `$peer`: `(int|string|array)` Channel ID, or Update, or Message, or Peer. + + + +### `getStream(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL, ?int $size = NULL): \Amp\ByteStream\ReadableStream` + +Provide a stream for a file, URL or amp stream. + + +Parameters: + +* `$stream`: `\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream` +* `$cancellation`: `?\Amp\Cancellation` +* `$size`: `?int` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `getStreamPipe(): \Amp\ByteStream\Pipe` + +Obtains a pipe that can be used to upload a file from a stream. + + +#### See also: +* `\Amp\ByteStream\Pipe` + + + + +### `getTL(): \danog\MadelineProto\TL\TLInterface` + +Get TL serializer. + + +#### See also: +* [\danog\MadelineProto\TL\TLInterface](../../danog/MadelineProto/TL/TLInterface.html) + + + + +### `getType(mixed $id): \danog\MadelineProto\API::PEER_TYPE_*` + +Get type of peer. + + +Parameters: + +* `$id`: `mixed` Peer + + +#### See also: +* `\danog\MadelineProto\API::PEER_TYPE_*` + + + + +### `getUpdates(array{offset?: int, limit?: int, timeout?: float} $params = []): list` + +Only useful when consuming MadelineProto updates through an API in another language (like Javascript), **absolutely not recommended when directly writing MadelineProto bots**. + +`getUpdates` will **greatly slow down your bot** if used directly inside of PHP code. + +**Only use the [event handler](#async-event-driven) when writing a MadelineProto bot**, because update handling in the **event handler** is completely parallelized and non-blocking. + + +Parameters: + +* `$params`: `array{offset?: int, limit?: int, timeout?: float}` Params + + + +### `getWebMessage(string $message): string` + +Get a message to show to the user when starting the bot. + + +Parameters: + +* `$message`: `string` + + + +### `getWebWarnings(): string` + +Get various warnings to show to the user in the web UI. + + + +### `hasAdmins(): bool` + +Check if has admins. + + + +### `hasEventHandler(): bool` + +Check if an event handler instance is present. + + + +### `hasPlugin(class-string<\danog\MadelineProto\EventHandler> $class): bool` + +Check if a certain event handler plugin is installed. + + +Parameters: + +* `$class`: `class-string<\danog\MadelineProto\EventHandler>` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../danog/MadelineProto/EventHandler.html) + + + + +### `hasReportPeers(): bool` + +Check if has report peers. + + + +### `hasSecretChat((array|int) $chat): bool` + +Check whether secret chat exists. + + +Parameters: + +* `$chat`: `(array|int)` Secret chat ID + + + +### `htmlEscape(string $what): string` + +Escape string for MadelineProto's HTML entity converter. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `htmlToMessageEntities(string $html): \danog\MadelineProto\TextEntities` + +Manually convert HTML to a message and a set of entities. + +NOTE: You don't have to use this method to send HTML messages. + +This method is already called automatically by using parse_mode: "HTML" in messages.sendMessage, messages.sendMedia, et cetera... + + +Parameters: + +* `$html`: `string` + + +Return value: Object containing message and entities + +#### See also: +* [https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode](https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode) +* [`\danog\MadelineProto\TextEntities`: Class that converts HTML or markdown to a message + set of entities.](../../danog/MadelineProto/TextEntities.html) + + + + +### `importAuthorization(array $authorization, int $mainDcID): array` + +Import authorization. + + +Parameters: + +* `$authorization`: `array` Authorization info +* `$mainDcID`: `int` Main DC ID + + + +### `inflateStripped(string $stripped): string` + +Inflate stripped photosize to full JPG payload. + + +Parameters: + +* `$stripped`: `string` Stripped photosize + + + +### `initSelfRestart(): void` + +Initialize self-restart hack. + + + +### `isAltervista(): bool` + +Whether this is altervista. + + + +### `isArrayOrAlike(mixed $var): bool` + +Check if is array or similar (traversable && countable && arrayAccess). + + +Parameters: + +* `$var`: `mixed` Value to check + + + +### `isBot(mixed $peer): bool` + +Check if the specified peer is a bot. + + +Parameters: + +* `$peer`: `mixed` + + + +### `isForum(mixed $peer): bool` + +Check if the specified peer is a forum. + + +Parameters: + +* `$peer`: `mixed` + + + +### `isIpc(): bool` + +Whether we're an IPC client instance. + + + +### `isIpcWorker(): bool` + +Whether we're an IPC server process (as opposed to an event handler). + + + +### `isPlayPaused(int $id): bool` + +Whether the currently playing audio file is paused. + + +Parameters: + +* `$id`: `int` + + + +### `isPremium(): bool` + +Returns whether the current user is a premium user, cached. + + + +### `isSelfBot(): bool` + +Returns whether the current user is a bot. + + + +### `isSelfUser(): bool` + +Returns whether the current user is a user. + + + +### `isTestMode(): boolean` + +Whether we're currently connected to the test DCs. + + + +### `logger(mixed $param, int $level = \danog\MadelineProto\Logger::NOTICE, string $file = ''): void` + +Logger. + + +Parameters: + +* `$param`: `mixed` Parameter +* `$level`: `int` Logging level +* `$file`: `string` File where the message originated + + + +### `logout(): void` + +Logout the session. + + + +### `markdownCodeEscape(string $what): string` + +Escape string for markdown code section. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownCodeblockEscape(string $what): string` + +Escape string for markdown codeblock. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownEscape(string $what): string` + +Escape string for markdown. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownToMessageEntities(string $markdown): \danog\MadelineProto\TextEntities` + +Manually convert markdown to a message and a set of entities. + +NOTE: You don't have to use this method to send Markdown messages. + +This method is already called automatically by using parse_mode: "Markdown" in messages.sendMessage, messages.sendMedia, et cetera... + + +Parameters: + +* `$markdown`: `string` + + +Return value: Object containing message and entities + +#### See also: +* [https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode](https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode) +* [`\danog\MadelineProto\TextEntities`: Class that converts HTML or markdown to a message + set of entities.](../../danog/MadelineProto/TextEntities.html) + + + + +### `markdownUrlEscape(string $what): string` + +Escape string for URL. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `mbStrSplit(string $text, integer $length): array` + +Telegram UTF-8 multibyte split. + + +Parameters: + +* `$text`: `string` Text +* `$length`: `integer` Length + + + +### `mbStrlen(string $text): int` + +Get Telegram UTF-8 length of string. + + +Parameters: + +* `$text`: `string` Text + + + +### `mbSubstr(string $text, integer $offset, (null|int) $length = NULL): string` + +Telegram UTF-8 multibyte substring. + + +Parameters: + +* `$text`: `string` Text to substring +* `$offset`: `integer` Offset +* `$length`: `(null|int)` Length + + + +### `openBuffered(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL): Closure(int): ?string` + +Provide a buffered reader for a file, URL or amp stream. + + +Parameters: + +* `$stream`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `openFileAppendOnly(string $path): \Amp\File\File` + +Opens a file in append-only mode. + + +Parameters: + +* `$path`: `string` File path. + + +#### See also: +* `\Amp\File\File` + + + + +### `packDouble(float $value): string` + +Convert double to binary version. + + +Parameters: + +* `$value`: `float` Value to convert + + + +### `packSignedInt(integer $value): string` + +Convert integer to base256 signed int. + + +Parameters: + +* `$value`: `integer` Value to convert + + + +### `packSignedLong(int $value): string` + +Convert integer to base256 long. + + +Parameters: + +* `$value`: `int` Value to convert + + + +### `packUnsignedInt(int $value): string` + +Convert value to unsigned base256 int. + + +Parameters: + +* `$value`: `int` Value + + + +### `pausePlay(int $id): void` + +Pauses playback of the current audio file in the call. + + +Parameters: + +* `$id`: `int` + + + +### `peerIsset(mixed $id): bool` + +Check if peer is present in internal peer database. + + +Parameters: + +* `$id`: `mixed` Peer + + + +### `phoneLogin(string $number, integer $sms_type = 5): array` + +Login as user. + + +Parameters: + +* `$number`: `string` Phone number +* `$sms_type`: `integer` SMS type + + + +### `posmod(int $a, int $b): int` + +Positive modulo +Works just like the % (modulus) operator, only returns always a postive number. + + +Parameters: + +* `$a`: `int` A +* `$b`: `int` B + + + +### `processDownloadServerPing(string $path, string $payload): void` + +Internal endpoint used by the download server. + + +Parameters: + +* `$path`: `string` +* `$payload`: `string` + + + +### `qrLogin(): ?\danog\MadelineProto\TL\Types\LoginQrCode` + +Initiates QR code login. + +Returns a QR code login helper object, that can be used to render the QR code, display the link directly, wait for login, QR code expiration and much more. + +Returns null if we're already logged in, or if we're waiting for a password (use getAuthorization to distinguish between the two cases). + + +#### See also: +* [`\danog\MadelineProto\TL\Types\LoginQrCode`: Represents a login QR code.](../../danog/MadelineProto/TL/Types/LoginQrCode.html) + + + + +### `random(integer $length): string` + +Get secure random string of specified length. + + +Parameters: + +* `$length`: `integer` Length + + + +### `randomInt(integer $modulus = 0): int` + +Get random integer. + + +Parameters: + +* `$modulus`: `integer` Modulus + + + +### `readLine(string $prompt = '', ?\Amp\Cancellation $cancel = NULL): string` + +Asynchronously read line. + + +Parameters: + +* `$prompt`: `string` Prompt +* `$cancel`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `refreshFullPeerCache(mixed $id): void` + +Refresh full peer cache for a certain peer. + + +Parameters: + +* `$id`: `mixed` The peer to refresh + + + +### `refreshPeerCache(mixed ...$ids): void` + +Refresh peer cache for a certain peer. + + +Parameters: + +* `...$ids`: `mixed` + + + +### `report(string $message, string $parseMode = ''): void` + +Report an error to the previously set peer. + + +Parameters: + +* `$message`: `string` Error to report +* `$parseMode`: `string` Parse mode + + + +### `reportMemoryProfile(): void` + +Report memory profile with memprof. + + + +### `requestCall(mixed $user): \danog\MadelineProto\VoIP` + +Request VoIP call. + + +Parameters: + +* `$user`: `mixed` User + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../danog/MadelineProto/VoIP.html) + + + + +### `requestSecretChat(mixed $user): int` + +Request secret chat. + + +Parameters: + +* `$user`: `mixed` User to start secret chat with + + + +### `resetUpdateState(): void` + +Reset the update state and fetch all updates from the beginning. + + + +### `restart(): void` + +Restart update loop. + + + +### `resumePlay(int $id): void` + +Resumes playback of the current audio file in the call. + + +Parameters: + +* `$id`: `int` + + + +### `rethrow(Throwable $e): void` + +Rethrow exception into event loop. + + +Parameters: + +* `$e`: `Throwable` + + +#### See also: +* `Throwable` + + + + +### `rleDecode(string $string): string` + +null-byte RLE decode. + + +Parameters: + +* `$string`: `string` Data to decode + + + +### `rleEncode(string $string): string` + +null-byte RLE encode. + + +Parameters: + +* `$string`: `string` Data to encode + + + +### `sendAudio((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendCustomEvent(mixed $payload): void` + +Sends an updateCustomEvent update to the event handler. + + +Parameters: + +* `$payload`: `mixed` + + + +### `sendDocument((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendDocumentPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendGif((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, ?int $duration = NULL, ?int $width = NULL, ?int $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$duration`: `?int` +* `$width`: `?int` +* `$height`: `?int` +* `$thumbSeek`: `string` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendMessage((integer|string) $peer, string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a message. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` Cancellation + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `sendMessageToAdmins(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, ?\Amp\Cancellation $cancellation = NULL): list<\danog\MadelineProto\EventHandler\Message>` + +Sends a message to all report peers (admins of the bot). + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `sendPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendSticker((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', array $stickerSet = [ '_' => 'inputStickerSetEmpty',], ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$stickerSet`: `array` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendVideo((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$thumbSeek`: `string` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendVoice((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `setNoop(): void` + +Set NOOP update handler, ignoring all updates. + + + +### `setReportPeers((int|string|array<(int|string)>) $userOrId): void` + +Set peer(s) where to send errors occurred in the event loop. + + +Parameters: + +* `$userOrId`: `(int|string|array<(int|string)>)` Username(s) or peer ID(s) + + + +### `setWebhook(string $webhookUrl): void` + +Set webhook update handler. + + +Parameters: + +* `$webhookUrl`: `string` Webhook URL + + + +### `skipPlay(int $id): void` + +When called, skips to the next file in the playlist. + + +Parameters: + +* `$id`: `int` + + + +### `sleep(float $time): void` + +Asynchronously sleep. + + +Parameters: + +* `$time`: `float` Number of seconds to sleep for + + + +### `start(): array` + +Log in to telegram (via CLI or web). + + + +### `stop(): void` + +Stop update loop. + + + +### `stopPlay(int $id): void` + +Stops playing all files in the call, clears the main and the hold playlist. + + +Parameters: + +* `$id`: `int` + + + +### `stringToStream(string $str): \Amp\ByteStream\ReadableBuffer` + +Converts a string into an async amphp stream. + + +Parameters: + +* `$str`: `string` + + +#### See also: +* `\Amp\ByteStream\ReadableBuffer` + + + + +### `subscribeToUpdates(mixed $channel): bool` + +Subscribe to event handler updates for a channel/supergroup we're not a member of. + + +Parameters: + +* `$channel`: `mixed` Channel/supergroup to subscribe to + + +Return value: False if we were already subscribed + + +### `tdToMTProto(array $params): array` + +Convert TD to MTProto parameters. + + +Parameters: + +* `$params`: `array` Parameters + + + +### `tdToTdcli(mixed $params): array` + +Convert TD parameters to tdcli. + + +Parameters: + +* `$params`: `mixed` Parameters + + + +### `tdcliToTd(mixed $params, array $key = NULL): array` + +Convert tdcli parameters to tdcli. + + +Parameters: + +* `$params`: `mixed` Params +* `$key`: `array` Key + + + +### `testFibers(int $fiberCount = 100000): array{maxFibers: int, realMemoryMb: int, maps: ?int, maxMaps: ?int}` + +Test fibers. + + +Parameters: + +* `$fiberCount`: `int` + + + +### `toCamelCase(string $input): string` + +Convert to camelCase. + + +Parameters: + +* `$input`: `string` String + + + +### `toSnakeCase(string $input): string` + +Convert to snake_case. + + +Parameters: + +* `$input`: `string` String + + + +### `unpackDouble(string $value): float` + +Unpack binary double. + + +Parameters: + +* `$value`: `string` Value to unpack + + + +### `unpackFileId(string $fileId): array` + +Unpack bot API file ID. + + +Parameters: + +* `$fileId`: `string` Bot API file ID + + +Return value: Unpacked file ID + + +### `unpackSignedInt(string $value): int` + +Unpack base256 signed int. + + +Parameters: + +* `$value`: `string` base256 int + + + +### `unpackSignedLong(string $value): int` + +Unpack base256 signed long. + + +Parameters: + +* `$value`: `string` base256 long + + + +### `unpackSignedLongString((string|int|array) $value): string` + +Unpack base256 signed long to string. + + +Parameters: + +* `$value`: `(string|int|array)` base256 long + + + +### `unsetEventHandler(): void` + +Unset event handler. + + + +### `update2fa(array{password?: string, new_password?: string, email?: string, hint?: string} $params): void` + +Update the 2FA password. + +The params array can contain password, new_password, email and hint params. + + +Parameters: + +* `$params`: `array{password?: string, new_password?: string, email?: string, hint?: string}` The params + + + +### `updateSettings(\danog\MadelineProto\SettingsAbstract $settings): void` + +Parse, update and store settings. + + +Parameters: + +* `$settings`: `\danog\MadelineProto\SettingsAbstract` Settings + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` + + + + +### `upload((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|string|array|resource) $file, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|string|array|resource)` File, URL or Telegram file to upload +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `resource` +* `\Amp\Cancellation` + + + + +### `uploadEncrypted((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|string|array|resource) $file, string $fileName = '', callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file to secret chat. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|string|array|resource)` File, URL or Telegram file to upload +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `resource` +* `\Amp\Cancellation` + + + + +### `uploadFromCallable(callable(int, int, ?Cancellation): strin) $callable, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable(float, float, float): voi) $cb = NULL, boolean $seekable = true, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file from callable. + +The callable must accept two parameters: int $offset, int $size +The callable must return a string with the contest of the file at the specified offset and size. + + +Parameters: + +* `$callable`: `callable(int, int, ?Cancellation): strin)` Callable (offset, length) => data +* `$size`: `integer` File size +* `$mime`: `string` Mime type +* `$fileName`: `string` File name +* `$cb`: `callable(float, float, float): voi)` Status callback +* `$seekable`: `boolean` Whether chunks can be fetched out of order +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* `\Amp\Cancellation` + + + + +### `uploadFromStream(mixed $stream, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file from stream. + + +Parameters: + +* `$stream`: `mixed` PHP resource or AMPHP async stream +* `$size`: `integer` File size +* `$mime`: `string` Mime type +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* `\Amp\Cancellation` + + + + +### `uploadFromTgfile(mixed $media, callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Reupload telegram file. + + +Parameters: + +* `$media`: `mixed` Telegram file +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* `\Amp\Cancellation` + + + + +### `uploadFromUrl((string|\danog\MadelineProto\FileCallbackInterface) $url, integer $size = 0, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file from URL. + + +Parameters: + +* `$url`: `(string|\danog\MadelineProto\FileCallbackInterface)` URL of file +* `$size`: `integer` Size of file +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` + + + + +### `validateEventHandlerClass(class-string<\danog\MadelineProto\EventHandler> $class): list<\danog\MadelineProto\EventHandlerIssue>` + +Perform static analysis on a certain event handler class, to make sure it satisfies some performance requirements. + + +Parameters: + +* `$class`: `class-string<\danog\MadelineProto\EventHandler>` Class name + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../danog/MadelineProto/EventHandler.html) +* [`\danog\MadelineProto\EventHandlerIssue`: Represents an event handler issue.](../../danog/MadelineProto/EventHandlerIssue.html) + + + + +### `viewSponsoredMessage((int|array) $peer, (string|array{random_id: string}) $message): bool` + +Mark sponsored message as read. + + +Parameters: + +* `$peer`: `(int|array)` Channel ID, or Update, or Message, or Peer. +* `$message`: `(string|array{random_id: string})` Random ID or sponsored message to mark as read. + + + +### `wrapMedia(array $media, bool $protected = false): ?\danog\MadelineProto\EventHandler\Media` + +Wrap a media constructor into an abstract Media object. + + +Parameters: + +* `$media`: `array` +* `$protected`: `bool` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) + + + + +### `wrapMessage(array $message, bool $scheduled = false): ?\danog\MadelineProto\EventHandler\AbstractMessage` + +Wrap a Message constructor into an abstract Message object. + + +Parameters: + +* `$message`: `array` +* `$scheduled`: `bool` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractMessage`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/AbstractMessage.html) + + + + +### `wrapPin(array $message): ?\danog\MadelineProto\EventHandler\Pinned` + +Wrap a Pin constructor into an abstract Pinned object. + + +Parameters: + +* `$message`: `array` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Pinned`: Indicates that some messages were pinned/unpinned.](../../danog/MadelineProto/EventHandler/Pinned.html) + + + + +### `wrapUpdate(array $update): ?\danog\MadelineProto\EventHandler\Update` + +Wrap an Update constructor into an abstract Update object. + + +Parameters: + +* `$update`: `array` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initDbProperties(\danog\AsyncOrm\Settings $settings, string $tablePrefix): void` + +Initialize database properties. + + +Parameters: + +* `$settings`: `\danog\AsyncOrm\Settings` +* `$tablePrefix`: `string` + + +#### See also: +* `\danog\AsyncOrm\Settings` + + + + +### `saveDbProperties(): void` + +Save all properties. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/AbstractMessage.md b/docs/PHP/danog/MadelineProto/EventHandler/AbstractMessage.md new file mode 100644 index 0000000000..e9c5372796 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/AbstractMessage.md @@ -0,0 +1,536 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\AbstractMessage: Represents an incoming or outgoing message." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\AbstractMessage` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Represents an incoming or outgoing message. + + + +## Properties +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/AbstractPoll.md b/docs/PHP/danog/MadelineProto/EventHandler/AbstractPoll.md new file mode 100644 index 0000000000..421926f0f6 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/AbstractPoll.md @@ -0,0 +1,57 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\AbstractPoll: Poll" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\AbstractPoll` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Poll + + + +## Properties +* `$id`: `int` ID of the poll +* `$closed`: `bool` Whether the poll is closed and doesn’t accept any more answers +* `$question`: `string` The question of the poll +* `$questionEntities`: `list` Styled text entities in the question of the poll. +* `$answers`: `list` The possible answers +* `$closePeriod`: `?int` Amount of time in seconds the poll will be active after creation, 5-600 +* `$closeDate`: `?int` Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future +* `$recentVoters`: `list` IDs of the last users that recently voted in the poll +* `$totalVoters`: `int` Total number of people that voted in the poll + +## Method list: +* [`fromRawPoll(array $rawPoll): \danog\MadelineProto\EventHandler\AbstractPoll`](#fromRawPoll) +* [`getQuestionHTML(bool $allowTelegramTags = false): string`](#getQuestionHTML) + +## Methods: +### `fromRawPoll(array $rawPoll): \danog\MadelineProto\EventHandler\AbstractPoll` + + + + +Parameters: + +* `$rawPoll`: `array` + + + +### `getQuestionHTML(bool $allowTelegramTags = false): string` + +Get an HTML version of the question. + + +Parameters: + +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/AbstractPrivateMessage.md b/docs/PHP/danog/MadelineProto/EventHandler/AbstractPrivateMessage.md new file mode 100644 index 0000000000..79e886bb01 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/AbstractPrivateMessage.md @@ -0,0 +1,796 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\AbstractPrivateMessage: Represents a private or secret chat message." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\AbstractPrivateMessage` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Represents a private or secret chat message. + + + +## Properties +* `$message`: `string` Content of the message +* `$fwdInfo`: `?danog\MadelineProto\EventHandler\ForwardedInfo` Info about a forwarded message +* `$command`: `?string` Bot command (if present) +* `$commandType`: `?danog\MadelineProto\EventHandler\CommandType` Bot command type (if present) +* `$commandArgs`: `list` Bot command arguments (if present) +* `$protected`: `bool` Whether this message is protected +* `$matches`: `list` +Regex matches, if a filter regex is present +* `$matchesAll`: `array | mixed)>` +Regex matches, if a filter multiple match regex is present +* `$media`: `(danog\MadelineProto\EventHandler\Media\Audio | danog\MadelineProto\EventHandler\Media\Document | danog\MadelineProto\EventHandler\Media\DocumentPhoto | danog\MadelineProto\EventHandler\Media\Gif | danog\MadelineProto\EventHandler\Media\MaskSticker | danog\MadelineProto\EventHandler\Media\Photo | danog\MadelineProto\EventHandler\Media\RoundVideo | danog\MadelineProto\EventHandler\Media\Sticker | danog\MadelineProto\EventHandler\Media\Video | danog\MadelineProto\EventHandler\Media\Voice | null)` Attached media. +* `$fromScheduled`: `bool` Whether this message is a *sent* scheduled message +* `$viaBotId`: `?int` If the message was generated by an inline query, ID of the bot that generated it +* `$editDate`: `?int` Last edit date of the message +* `$keyboard`: `(danog\MadelineProto\EventHandler\Keyboard\InlineKeyboard | danog\MadelineProto\EventHandler\Keyboard\ReplyKeyboard | null)` Inline or reply keyboard. +* `$imported`: `bool` Whether this message was [imported from a foreign chat service](https://core.telegram.org/api/import) +* `$psaType`: `?string` For Public Service Announcement messages, the PSA type +* `$nextSent`: `?self` +* `$views`: `?int` View counter for messages from channels or forwarded from channels +* `$forwards`: `?int` Forward counter for messages from channels or forwarded from channels +* `$signature`: `?string` Author of the post, if signatures are enabled for messages from channels or forwarded from channels +* `$entities`: `list` Message [entities](https://core.telegram.org/api/entities) for styled text +* `$groupedId`: `?int` Group ID for albums. + +All messages associated to the same album will have an identical grouped ID. +* `$poll`: `?danog\MadelineProto\EventHandler\AbstractPoll` The poll +* `$scheduled`: `bool` Whether this message is a scheduled message +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`screenShot(): \danog\MadelineProto\EventHandler\Message\Service\DialogScreenshotTaken`](#screenShot) +* [`pin(bool $pmOneside = false, bool $silent = false): void`](#pin) +* [`unpin(bool $pmOneside = false, bool $silent = false): ?\danog\MadelineProto\EventHandler\Update`](#unpin) +* [`getOurReactions(): list<(string|int)>`](#getOurReactions) +* [`report(\danog\MadelineProto\EventHandler\Message\ReportReason $reason, string $message): bool`](#report) +* [`saveContact(string $firstName, (string|null) $lastName = NULL, (string|null) $phoneNumber = NULL, bool $addPhonePrivacyException = false): void`](#saveContact) +* [`removeContact(): void`](#removeContact) +* [`inviteToChannel((string|int) $channel): void`](#inviteToChannel) +* [`addReaction((string|int) $reaction, bool $big = false, bool $addToRecent = true): list<(string|int)>`](#addReaction) +* [`delReaction((string|int) $reaction): list<(string|int)>`](#delReaction) +* [`translate(string $toLang): string`](#translate) +* [`editText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message`](#editText) +* [`editReplyMarkup(array $replyMarkup): \danog\MadelineProto\EventHandler\Message`](#editReplyMarkup) +* [`replyOrEdit(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message`](#replyOrEdit) +* [`forward((integer|string) $peer, list $id = [], bool $dropAuthor = false, bool $dropCaption = false, int $topicId = 1, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $score = false, (integer|null) $scheduleDate = NULL, (integer|string|null) $sendAs = NULL): non-empty-list<\danog\MadelineProto\EventHandler\Message>`](#forward) +* [`getHTML(bool $allowTelegramTags = false): string`](#getHTML) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `screenShot(): \danog\MadelineProto\EventHandler\Message\Service\DialogScreenshotTaken` + +Notify the other user in a private chat that a screenshot of the chat was taken. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogScreenshotTaken`: A screenshot of the chat was taken.](../../../danog/MadelineProto/EventHandler/Message/Service/DialogScreenshotTaken.html) + + + + +### `pin(bool $pmOneside = false, bool $silent = false): void` + +Pin a message. + + +Parameters: + +* `$pmOneside`: `bool` Whether the message should only be pinned on the local side of a one-to-one chat +* `$silent`: `bool` Pin the message silently, without triggering a notification + + + +### `unpin(bool $pmOneside = false, bool $silent = false): ?\danog\MadelineProto\EventHandler\Update` + +Unpin a message. + + +Parameters: + +* `$pmOneside`: `bool` Whether the message should only be pinned on the local side of a one-to-one chat +* `$silent`: `bool` Pin the message silently, without triggering a notification + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `getOurReactions(): list<(string|int)>` + +Get our reactions on the message. + + + +### `report(\danog\MadelineProto\EventHandler\Message\ReportReason $reason, string $message): bool` + +Report a message in a chat for violation of telegram’s Terms of Service. + + +Parameters: + +* `$reason`: `\danog\MadelineProto\EventHandler\Message\ReportReason` Why are these messages being reported +* `$message`: `string` Comment for report moderation + + +#### See also: +* [\danog\MadelineProto\EventHandler\Message\ReportReason](../../../danog/MadelineProto/EventHandler/Message/ReportReason.html) + + + + +### `saveContact(string $firstName, (string|null) $lastName = NULL, (string|null) $phoneNumber = NULL, bool $addPhonePrivacyException = false): void` + +Save message sender to your account contacts. + + +Parameters: + +* `$firstName`: `string` First name +* `$lastName`: `(string|null)` Last name +* `$phoneNumber`: `(string|null)` Telegram ID of the other user +* `$addPhonePrivacyException`: `bool` Allow the other user to see our phone number? + + + +### `removeContact(): void` + +Remove message sender from your account contacts. + + + +### `inviteToChannel((string|int) $channel): void` + +Invite message sender to requested channel. + + +Parameters: + +* `$channel`: `(string|int)` Username, Channel ID + + + +### `addReaction((string|int) $reaction, bool $big = false, bool $addToRecent = true): list<(string|int)>` + +Add reaction to message. + + +Parameters: + +* `$reaction`: `(string|int)` reaction +* `$big`: `bool` Whether a bigger and longer reaction should be shown +* `$addToRecent`: `bool` Add this reaction to the recent reactions list. + + + +### `delReaction((string|int) $reaction): list<(string|int)>` + +Delete reaction from message. + + +Parameters: + +* `$reaction`: `(string|int)` string or int Reaction + + + +### `translate(string $toLang): string` + +Translate text message(for media translate it caption). + + +Parameters: + +* `$toLang`: `string` Two-letter ISO 639-1 language code of the language to which the message is translated + + + +### `editText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message` + +Edit message text. + + +Parameters: + +* `$message`: `string` New message +* `$parseMode`: `\danog\MadelineProto\ParseMode` Whether to parse HTML or Markdown markup in the message +* `$replyMarkup`: `(array|null)` Reply markup for inline keyboards +* `$scheduleDate`: `(int|null)` Scheduled message date for scheduled messages +* `$noWebpage`: `bool` Disable webpage preview + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) + + + + +### `editReplyMarkup(array $replyMarkup): \danog\MadelineProto\EventHandler\Message` + +Edit message keyboard. + + +Parameters: + +* `$replyMarkup`: `array` Reply markup for inline keyboards + + + +### `replyOrEdit(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message` + +If the message is outgoing, will edit the message's text, otherwise will reply to the message. + + +Parameters: + +* `$message`: `string` New message +* `$parseMode`: `\danog\MadelineProto\ParseMode` Whether to parse HTML or Markdown markup in the message +* `$replyMarkup`: `(array|null)` Reply markup for inline keyboards +* `$scheduleDate`: `(int|null)` Scheduled message date for scheduled messages +* `$noWebpage`: `bool` Disable webpage preview + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) + + + + +### `forward((integer|string) $peer, list $id = [], bool $dropAuthor = false, bool $dropCaption = false, int $topicId = 1, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $score = false, (integer|null) $scheduleDate = NULL, (integer|string|null) $sendAs = NULL): non-empty-list<\danog\MadelineProto\EventHandler\Message>` + +Forwards messages by their IDs. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer +* `$id`: `list` IDs of messages +* `$dropAuthor`: `bool` Whether to forward messages without quoting the original author +* `$dropCaption`: `bool` Whether to strip captions from media +* `$topicId`: `int` Destination [forum topic](https://core.telegram.org/api/forum#forum-topics) +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$score`: `boolean` When forwarding games, whether to include your score in the game +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. + + +#### See also: +* `non-empty-list` + + + + +### `getHTML(bool $allowTelegramTags = false): string` + +Get an HTML version of the message. + + +Parameters: + +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/AbstractStory.md b/docs/PHP/danog/MadelineProto/EventHandler/AbstractStory.md new file mode 100644 index 0000000000..fa483782dc --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/AbstractStory.md @@ -0,0 +1,22 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\AbstractStory: Represents a Telegram Story." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\AbstractStory` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Represents a Telegram Story. + + + +## Properties +* `$senderId`: `int` ID of the sender of the story +* `$id`: `int` Story ID +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Action.md b/docs/PHP/danog/MadelineProto/EventHandler/Action.md new file mode 100644 index 0000000000..2ea9664872 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Action.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Action: In-progress actions." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Action` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +In-progress actions. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Action/Cancel.md b/docs/PHP/danog/MadelineProto/EventHandler/Action/Cancel.md new file mode 100644 index 0000000000..a4b947e62d --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Action/Cancel.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Action\\Cancel: Invalidate all previous action updates. E.g. when user deletes entered text or aborts a video upload." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Action\Cancel` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Invalidate all previous action updates. E.g. when user deletes entered text or aborts a video upload. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Action/ChooseContact.md b/docs/PHP/danog/MadelineProto/EventHandler/Action/ChooseContact.md new file mode 100644 index 0000000000..3701764ce3 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Action/ChooseContact.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Action\\ChooseContact: User is selecting a contact to share." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Action\ChooseContact` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +User is selecting a contact to share. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Action/ChooseSticker.md b/docs/PHP/danog/MadelineProto/EventHandler/Action/ChooseSticker.md new file mode 100644 index 0000000000..4a94d9897b --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Action/ChooseSticker.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Action\\ChooseSticker: User is choosing a sticker." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Action\ChooseSticker` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +User is choosing a sticker. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Action/EmojiSeen.md b/docs/PHP/danog/MadelineProto/EventHandler/Action/EmojiSeen.md new file mode 100644 index 0000000000..b1903d6e4a --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Action/EmojiSeen.md @@ -0,0 +1,44 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Action\\EmojiSeen: User is watching an animated emoji reaction triggered by another user, [click here for more info »](https://core.telegram.org/api/animated-emojis#emoji-reactions)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Action\EmojiSeen` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +User is watching an animated emoji reaction triggered by another user, [click here for more info »](https://core.telegram.org/api/animated-emojis#emoji-reactions). + + + +## Properties +* `$emoticon`: `string` Emoji + +## Method list: +* [`__construct(string $emoticon)`](#__construct) +* [`toRawAction(): array`](#toRawAction) + +## Methods: +### `__construct(string $emoticon)` + + + + +Parameters: + +* `$emoticon`: `string` + + + +### `toRawAction(): array` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Action/EmojiTap.md b/docs/PHP/danog/MadelineProto/EventHandler/Action/EmojiTap.md new file mode 100644 index 0000000000..f62cad9176 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Action/EmojiTap.md @@ -0,0 +1,49 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Action\\EmojiTap: User has clicked on an animated emoji triggering a [reaction, click here for more info »](https://core.telegram.org/api/animated-emojis#emoji-reactions)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Action\EmojiTap` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +User has clicked on an animated emoji triggering a [reaction, click here for more info »](https://core.telegram.org/api/animated-emojis#emoji-reactions). + + + +## Properties +* `$emoticon`: `string` Emoji +* `$id`: `int` Message ID of the animated emoji that was clicked +* `$animation`: `list` t: number of seconds that passed since the previous tap in the array, the first tap uses a value of `0.0`. +i: 1-based index of the randomly chosen animation for the tap (equivalent to the index of a specific emoji-related animation in [stickerPack](https://core.telegram.org/constructor/stickerPack) + 1). + +## Method list: +* [`__construct(string $emoticon, ?int $id, array $animation)`](#__construct) +* [`toRawAction(): array`](#toRawAction) + +## Methods: +### `__construct(string $emoticon, ?int $id, array $animation)` + + + + +Parameters: + +* `$emoticon`: `string` +* `$id`: `?int` +* `$animation`: `array` + + + +### `toRawAction(): array` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Action/GamePlay.md b/docs/PHP/danog/MadelineProto/EventHandler/Action/GamePlay.md new file mode 100644 index 0000000000..91f684f12e --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Action/GamePlay.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Action\\GamePlay: User is playing a game." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Action\GamePlay` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +User is playing a game. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Action/GeoLocation.md b/docs/PHP/danog/MadelineProto/EventHandler/Action/GeoLocation.md new file mode 100644 index 0000000000..aaab09c561 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Action/GeoLocation.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Action\\GeoLocation: User is selecting a location to share." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Action\GeoLocation` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +User is selecting a location to share. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Action/GroupCallSpeaking.md b/docs/PHP/danog/MadelineProto/EventHandler/Action/GroupCallSpeaking.md new file mode 100644 index 0000000000..47f567a960 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Action/GroupCallSpeaking.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Action\\GroupCallSpeaking: User is currently speaking in the group call." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Action\GroupCallSpeaking` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +User is currently speaking in the group call. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Action/HistoryImport.md b/docs/PHP/danog/MadelineProto/EventHandler/Action/HistoryImport.md new file mode 100644 index 0000000000..013fa7ef6b --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Action/HistoryImport.md @@ -0,0 +1,44 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Action\\HistoryImport: Chat history is being imported." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Action\HistoryImport` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Chat history is being imported. + + + +## Properties +* `$progress`: `?int` Progress percentage + +## Method list: +* [`__construct(?int $progress)`](#__construct) +* [`toRawAction(): array`](#toRawAction) + +## Methods: +### `__construct(?int $progress)` + + + + +Parameters: + +* `$progress`: `?int` + + + +### `toRawAction(): array` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Action/RecordAudio.md b/docs/PHP/danog/MadelineProto/EventHandler/Action/RecordAudio.md new file mode 100644 index 0000000000..70a5629842 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Action/RecordAudio.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Action\\RecordAudio: User is recording a voice message." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Action\RecordAudio` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +User is recording a voice message. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Action/RecordRound.md b/docs/PHP/danog/MadelineProto/EventHandler/Action/RecordRound.md new file mode 100644 index 0000000000..3e0ebd24e2 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Action/RecordRound.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Action\\RecordRound: User is recording a round video to share." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Action\RecordRound` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +User is recording a round video to share. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Action/RecordVideo.md b/docs/PHP/danog/MadelineProto/EventHandler/Action/RecordVideo.md new file mode 100644 index 0000000000..a272fa77ff --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Action/RecordVideo.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Action\\RecordVideo: User is recording a video." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Action\RecordVideo` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +User is recording a video. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Action/Typing.md b/docs/PHP/danog/MadelineProto/EventHandler/Action/Typing.md new file mode 100644 index 0000000000..8e46751e6a --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Action/Typing.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Action\\Typing: User is typing." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Action\Typing` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +User is typing. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Action/UploadAudio.md b/docs/PHP/danog/MadelineProto/EventHandler/Action/UploadAudio.md new file mode 100644 index 0000000000..389aea2427 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Action/UploadAudio.md @@ -0,0 +1,44 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Action\\UploadAudio: User is uploading a voice message." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Action\UploadAudio` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +User is uploading a voice message. + + + +## Properties +* `$progress`: `?int` Progress percentage + +## Method list: +* [`__construct(?int $progress)`](#__construct) +* [`toRawAction(): array`](#toRawAction) + +## Methods: +### `__construct(?int $progress)` + + + + +Parameters: + +* `$progress`: `?int` + + + +### `toRawAction(): array` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Action/UploadDocument.md b/docs/PHP/danog/MadelineProto/EventHandler/Action/UploadDocument.md new file mode 100644 index 0000000000..a243b0dd48 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Action/UploadDocument.md @@ -0,0 +1,44 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Action\\UploadDocument: User is uploading a file." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Action\UploadDocument` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +User is uploading a file. + + + +## Properties +* `$progress`: `?int` Progress percentage + +## Method list: +* [`__construct(?int $progress)`](#__construct) +* [`toRawAction(): array`](#toRawAction) + +## Methods: +### `__construct(?int $progress)` + + + + +Parameters: + +* `$progress`: `?int` + + + +### `toRawAction(): array` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Action/UploadPhoto.md b/docs/PHP/danog/MadelineProto/EventHandler/Action/UploadPhoto.md new file mode 100644 index 0000000000..a2dd0cd6d9 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Action/UploadPhoto.md @@ -0,0 +1,44 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Action\\UploadPhoto: User is uploading a photo." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Action\UploadPhoto` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +User is uploading a photo. + + + +## Properties +* `$progress`: `?int` Progress percentage + +## Method list: +* [`__construct(?int $progress)`](#__construct) +* [`toRawAction(): array`](#toRawAction) + +## Methods: +### `__construct(?int $progress)` + + + + +Parameters: + +* `$progress`: `?int` + + + +### `toRawAction(): array` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Action/UploadRound.md b/docs/PHP/danog/MadelineProto/EventHandler/Action/UploadRound.md new file mode 100644 index 0000000000..359325ab22 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Action/UploadRound.md @@ -0,0 +1,44 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Action\\UploadRound: User is uploading a round video." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Action\UploadRound` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +User is uploading a round video. + + + +## Properties +* `$progress`: `?int` Progress percentage + +## Method list: +* [`__construct(?int $progress)`](#__construct) +* [`toRawAction(): array`](#toRawAction) + +## Methods: +### `__construct(?int $progress)` + + + + +Parameters: + +* `$progress`: `?int` + + + +### `toRawAction(): array` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Action/UploadVideo.md b/docs/PHP/danog/MadelineProto/EventHandler/Action/UploadVideo.md new file mode 100644 index 0000000000..f1fe612f07 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Action/UploadVideo.md @@ -0,0 +1,44 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Action\\UploadVideo: User is uploading a video." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Action\UploadVideo` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +User is uploading a video. + + + +## Properties +* `$progress`: `?int` Progress percentage + +## Method list: +* [`__construct(?int $progress)`](#__construct) +* [`toRawAction(): array`](#toRawAction) + +## Methods: +### `__construct(?int $progress)` + + + + +Parameters: + +* `$progress`: `?int` + + + +### `toRawAction(): array` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Attributes/Cron.md b/docs/PHP/danog/MadelineProto/EventHandler/Attributes/Cron.md new file mode 100644 index 0000000000..9dee3882be --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Attributes/Cron.md @@ -0,0 +1,37 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Attributes\\Cron: Attribute that enables periodic execution of a certain method." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Attributes\Cron` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Attribute that enables periodic execution of a certain method. + + + +## Properties +* `$period`: `float` + +## Method list: +* [`__construct(float $period)`](#__construct) + +## Methods: +### `__construct(float $period)` + + + + +Parameters: + +* `$period`: `float` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Attributes/Handler.md b/docs/PHP/danog/MadelineProto/EventHandler/Attributes/Handler.md new file mode 100644 index 0000000000..4e7da4ebf2 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Attributes/Handler.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Attributes\\Handler: Attribute that marks a handler method." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Attributes\Handler` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Attribute that marks a handler method. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/BotApp.md b/docs/PHP/danog/MadelineProto/EventHandler/BotApp.md new file mode 100644 index 0000000000..6e0465853f --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/BotApp.md @@ -0,0 +1,31 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\BotApp: Represents information about a [named bot web app](https://core.telegram.org/api/bots/webapps#named-bot-web-apps)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\BotApp` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Represents information about a [named bot web app](https://core.telegram.org/api/bots/webapps#named-bot-web-apps). + + + +## Properties +* `$id`: `int` App ID +* `$accessHash`: `int` Access hash +* `$name`: `string` Bot web app short name, used to generate [named bot web app deep links](https://core.telegram.org/api/links#named-bot-web-app-links). +* `$title`: `string` Bot web app title. +* `$description`: `string` Bot web app description. +* `$photo`: `?danog\MadelineProto\EventHandler\Media\Photo` Bot web app photo. +* `$document`: `?danog\MadelineProto\EventHandler\Media\Document` Bot web app animation. +* `$hash`: `int` Hash to pass to [messages.getBotApp](https://docs.madelineproto.xyz/API_docs/methods/messages.getBotApp.html), to avoid refetching bot app info if it hasn’t changed. +* `$inactive`: `?bool` Whether the web app was never used by the user, and confirmation must be asked from the user before opening it. +* `$requestWriteAccess`: `?bool` The bot is asking permission to send messages to the user: if the user agrees, set the write_allowed flag when invoking [messages.requestAppWebView](https://docs.madelineproto.xyz/API_docs/methods/messages.requestAppWebView.html). +* `$hasSettings`: `?bool` +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/BotCommands.md b/docs/PHP/danog/MadelineProto/EventHandler/BotCommands.md new file mode 100644 index 0000000000..21dfff0341 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/BotCommands.md @@ -0,0 +1,23 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\BotCommands: The [command set](https://core.telegram.org/api/bots/commands) of a certain bot in a certain chat has changed." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\BotCommands` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +The [command set](https://core.telegram.org/api/bots/commands) of a certain bot in a certain chat has changed. + + + +## Properties +* `$botId`: `int` ID of the bot that changed its command set. +* `$chatId`: `int` The affected chat. +* `$commands`: `list` New bot commands. +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/CallbackQuery.md b/docs/PHP/danog/MadelineProto/EventHandler/CallbackQuery.md new file mode 100644 index 0000000000..f36cfe0905 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/CallbackQuery.md @@ -0,0 +1,42 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\CallbackQuery: Represents a query sent by the user by clicking on a button." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\CallbackQuery` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Represents a query sent by the user by clicking on a button. + + + +## Properties +* `$queryId`: `int` Query ID +* `$userId`: `int` ID of the user that pressed the button +* `$chatInstance`: `int` Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games. + +## Method list: +* [`answer(string $message, bool $alert = false, (string|null) $url = NULL, int $cacheTime = 300): bool`](#answer) + +## Methods: +### `answer(string $message, bool $alert = false, (string|null) $url = NULL, int $cacheTime = 300): bool` + + + + +Parameters: + +* `$message`: `string` Popup to show +* `$alert`: `bool` Whether to show the message as a popup instead of a toast notification +* `$url`: `(string|null)` URL to open +* `$cacheTime`: `int` Cache validity (default set to 5 min based on telegram official docs ...) + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Channel/ChannelParticipant.md b/docs/PHP/danog/MadelineProto/EventHandler/Channel/ChannelParticipant.md new file mode 100644 index 0000000000..24879597d9 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Channel/ChannelParticipant.md @@ -0,0 +1,50 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Channel\\ChannelParticipant: A participant has left, joined, was banned or admined in a [channel or supergroup](https://core.telegram.org/api/channel)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Channel\ChannelParticipant` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +A participant has left, joined, was banned or admined in a [channel or supergroup](https://core.telegram.org/api/channel). + + + +## Properties +* `$viaChatlist`: `bool` Whether the participant joined using a [chat folder deep link »](https://core.telegram.org/api/links#chat-folder-links). +* `$chatId`: `int` Channel ID +* `$date`: `int` Date of the event +* `$actorId`: `int` User that triggered the change (inviter, admin that kicked the user, or the even the userId itself) +* `$userId`: `int` User that was affected by the change +* `$prevParticipant`: `?danog\MadelineProto\EventHandler\Participant` Previous participant status +* `$newParticipant`: `?danog\MadelineProto\EventHandler\Participant` New participant status +* `$inviteLink`: `?danog\MadelineProto\EventHandler\ChatInvite` Chat invite used to join the channel/supergroup + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawChannelParticipant)`](#__construct) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawChannelParticipant)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawChannelParticipant`: `array` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Channel/MessageForwards.md b/docs/PHP/danog/MadelineProto/EventHandler/Channel/MessageForwards.md new file mode 100644 index 0000000000..2ed501ad48 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Channel/MessageForwards.md @@ -0,0 +1,23 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Channel\\MessageForwards: Indicates that the forward counter of a message in a channel has changed." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Channel\MessageForwards` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Indicates that the forward counter of a message in a channel has changed. + + + +## Properties +* `$chatId`: `int` Channel ID +* `$id`: `int` ID of the message +* `$forwards`: `int` New forward counter +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Channel/MessageViewsChanged.md b/docs/PHP/danog/MadelineProto/EventHandler/Channel/MessageViewsChanged.md new file mode 100644 index 0000000000..d1bb7bbd9f --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Channel/MessageViewsChanged.md @@ -0,0 +1,23 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Channel\\MessageViewsChanged: Indicates that the view counter of a message in a channel has changed." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Channel\MessageViewsChanged` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Indicates that the view counter of a message in a channel has changed. + + + +## Properties +* `$chatId`: `int` Channel ID +* `$id`: `int` ID of the message +* `$views`: `int` New view counter +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Channel/UpdateChannel.md b/docs/PHP/danog/MadelineProto/EventHandler/Channel/UpdateChannel.md new file mode 100644 index 0000000000..8fb81a4a0c --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Channel/UpdateChannel.md @@ -0,0 +1,21 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Channel\\UpdateChannel: A new channel is available, or info about an existing channel was changed." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Channel\UpdateChannel` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +A new channel is available, or info about an existing channel was changed. + + + +## Properties +* `$chatId`: `int` Channel ID +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/ChatInvite.md b/docs/PHP/danog/MadelineProto/EventHandler/ChatInvite.md new file mode 100644 index 0000000000..f99f0702f3 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/ChatInvite.md @@ -0,0 +1,35 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\ChatInvite: Chat invite link that was used by the user to send the [join request »](https://core.telegram.org/api/invites#join-requests)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\ChatInvite` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Chat invite link that was used by the user to send the [join request »](https://core.telegram.org/api/invites#join-requests). + + + + +## Method list: +* [`fromRawChatInvite(array $rawChatInvite): self`](#fromRawChatInvite) + +## Methods: +### `fromRawChatInvite(array $rawChatInvite): self` + + + + +Parameters: + +* `$rawChatInvite`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/ChatInvite/ChatInviteExported.md b/docs/PHP/danog/MadelineProto/EventHandler/ChatInvite/ChatInviteExported.md new file mode 100644 index 0000000000..36adebbe18 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/ChatInvite/ChatInviteExported.md @@ -0,0 +1,48 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\ChatInvite\\ChatInviteExported: Represents an exported chat invite." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\ChatInvite\ChatInviteExported` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents an exported chat invite. + + + +## Properties +* `$revoked`: `bool` Whether this chat invite was revoked. +* `$permanent`: `bool` Whether this chat invite has no expiration. +* `$requestNeeded`: `bool` Whether users importing this invite link will have to be [approved to join the channel or group](https://core.telegram.org/api/invites#join-requests). +* `$link`: `string` Chat invitation link. +* `$adminId`: `int` ID of the admin that created this chat invite. +* `$date`: `int` When was this chat invite last modified. +* `$created`: `?int` When was this chat invite last modified. +* `$expire`: `?int` When does this chat invite expire. +* `$limit`: `?int` Maximum number of users that can join using this link. +* `$used`: `?int` How many users joined using this link. +* `$requested`: `?int` Number of users that have already used this link to join. +* `$title`: `?string` Custom description for the invite link, visible only to admins. + +## Method list: +* [`fromRawChatInvite(array $rawChatInvite): self`](#fromRawChatInvite) + +## Methods: +### `fromRawChatInvite(array $rawChatInvite): self` + + + + +Parameters: + +* `$rawChatInvite`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/ChatInvite/ChatInvitePublicJoin.md b/docs/PHP/danog/MadelineProto/EventHandler/ChatInvite/ChatInvitePublicJoin.md new file mode 100644 index 0000000000..f0bf720ba5 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/ChatInvite/ChatInvitePublicJoin.md @@ -0,0 +1,35 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\ChatInvite\\ChatInvitePublicJoin: Used in updates and in the channel log to indicate when a user is requesting to join or has joined a [discussion group](https://core.telegram.org/api/discussion#requiring-users-to-join-the-group)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\ChatInvite\ChatInvitePublicJoin` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Used in updates and in the channel log to indicate when a user is requesting to join or has joined a [discussion group](https://core.telegram.org/api/discussion#requiring-users-to-join-the-group). + + + + +## Method list: +* [`fromRawChatInvite(array $rawChatInvite): self`](#fromRawChatInvite) + +## Methods: +### `fromRawChatInvite(array $rawChatInvite): self` + + + + +Parameters: + +* `$rawChatInvite`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester.md b/docs/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester.md new file mode 100644 index 0000000000..151c619bea --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester.md @@ -0,0 +1,21 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\ChatInviteRequester: Indicates someone has requested to join a chat or channel." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\ChatInviteRequester` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Indicates someone has requested to join a chat or channel. + + + +## Properties +* `$chatId`: `int` The chat or channel in question +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/BotChatInviteRequest.md b/docs/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/BotChatInviteRequest.md new file mode 100644 index 0000000000..f3191db507 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/BotChatInviteRequest.md @@ -0,0 +1,25 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\ChatInviteRequester\\BotChatInviteRequest: Indicates someone has requested to join a chat or channel (bots only)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\ChatInviteRequester\BotChatInviteRequest` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Indicates someone has requested to join a chat or channel (bots only). + + + +## Properties +* `$date`: `int` When was the [join request »](https://core.telegram.org/api/invites#join-requests) made +* `$userId`: `int` The user ID that is asking to join the chat or channel +* `$about`: `string` Bio of the user +* `$invite`: `danog\MadelineProto\EventHandler\ChatInvite` Chat invite link that was used by the user to send the [join request »](https://core.telegram.org/api/invites#join-requests) +* `$chatId`: `int` The chat or channel in question +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/PendingJoinRequests.md b/docs/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/PendingJoinRequests.md new file mode 100644 index 0000000000..3810cd6782 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/PendingJoinRequests.md @@ -0,0 +1,23 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\ChatInviteRequester\\PendingJoinRequests: Someone has requested to join a chat or channel." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\ChatInviteRequester\PendingJoinRequests` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Someone has requested to join a chat or channel. + + + +## Properties +* `$pending`: `int` Number of pending [join requests »](https://core.telegram.org/api/invites#join-requests) for the chat or channel +* `$recent`: `list` IDs of users that have recently requested to join +* `$chatId`: `int` The chat or channel in question +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Command.md b/docs/PHP/danog/MadelineProto/EventHandler/Command.md new file mode 100644 index 0000000000..49e2de3027 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Command.md @@ -0,0 +1,22 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Command: Represents a bot command that can be used in a chat." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Command` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Represents a bot command that can be used in a chat. + + + +## Properties +* `$command`: `string` `/command` name. +* `$description`: `string` Description of the command. +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/CommandType.md b/docs/PHP/danog/MadelineProto/EventHandler/CommandType.md new file mode 100644 index 0000000000..2149174eae --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/CommandType.md @@ -0,0 +1,65 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\CommandType: " +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\CommandType` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + + + + + + +## Constants +* `danog\MadelineProto\EventHandler\CommandType::SLASH`: + +* `danog\MadelineProto\EventHandler\CommandType::DOT`: + +* `danog\MadelineProto\EventHandler\CommandType::BANG`: + +## Properties +* `$name`: `string` +* `$value`: `string` + +## Method list: +* [`cases(): array`](#cases) +* [`from(string|int $value): static`](#from) +* [`tryFrom(string|int $value): ?static`](#tryFrom) + +## Methods: +### `cases(): array` + + + + + +### `from(string|int $value): static` + + + + +Parameters: + +* `$value`: `string|int` + + + +### `tryFrom(string|int $value): ?static` + + + + +Parameters: + +* `$value`: `string|int` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Delete.md b/docs/PHP/danog/MadelineProto/EventHandler/Delete.md new file mode 100644 index 0000000000..621e1ef1ea --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Delete.md @@ -0,0 +1,21 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Delete: Indicates that some messages were deleted." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Delete` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Indicates that some messages were deleted. + + + +## Properties +* `$ids`: `list` List of identifiers of deleted messages +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Delete/DeleteChannelMessages.md b/docs/PHP/danog/MadelineProto/EventHandler/Delete/DeleteChannelMessages.md new file mode 100644 index 0000000000..ac5373689b --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Delete/DeleteChannelMessages.md @@ -0,0 +1,22 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Delete\\DeleteChannelMessages: Some messages in a [supergroup/channel](https://core.telegram.org/api/channel) were deleted." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Delete\DeleteChannelMessages` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Some messages in a [supergroup/channel](https://core.telegram.org/api/channel) were deleted. + + + +## Properties +* `$chatId`: `int` Channel ID +* `$ids`: `list` List of identifiers of deleted messages +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Delete/DeleteMessages.md b/docs/PHP/danog/MadelineProto/EventHandler/Delete/DeleteMessages.md new file mode 100644 index 0000000000..88c5460f56 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Delete/DeleteMessages.md @@ -0,0 +1,21 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Delete\\DeleteMessages: Some messages were deleted in a private chat or simple group." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Delete\DeleteMessages` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Some messages were deleted in a private chat or simple group. + + + +## Properties +* `$ids`: `list` List of identifiers of deleted messages +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Delete/DeleteScheduledMessages.md b/docs/PHP/danog/MadelineProto/EventHandler/Delete/DeleteScheduledMessages.md new file mode 100644 index 0000000000..d9f89a735e --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Delete/DeleteScheduledMessages.md @@ -0,0 +1,22 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Delete\\DeleteScheduledMessages: Some [scheduled messages](https://core.telegram.org/api/scheduled-messages) were deleted from the schedule queue of a chat." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Delete\DeleteScheduledMessages` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Some [scheduled messages](https://core.telegram.org/api/scheduled-messages) were deleted from the schedule queue of a chat. + + + +## Properties +* `$chatId`: `int` Peer +* `$ids`: `list` List of identifiers of deleted messages +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/Combinator/FilterNot.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Combinator/FilterNot.md new file mode 100644 index 0000000000..3dae29ae5c --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Combinator/FilterNot.md @@ -0,0 +1,92 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\Combinator\\FilterNot: NOTs a filter." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\Combinator\FilterNot` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +NOTs a filter. + + + + +## Method list: +* [`__construct(\danog\MadelineProto\EventHandler\Filter\Filter $filter)`](#__construct) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(\danog\MadelineProto\EventHandler\Filter\Filter $filter)` + + + + +Parameters: + +* `$filter`: `\danog\MadelineProto\EventHandler\Filter\Filter` + + +#### See also: +* [\danog\MadelineProto\EventHandler\Filter\Filter](../../../../../danog/MadelineProto/EventHandler/Filter/Filter.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../../danog/MadelineProto/EventHandler.html) +* [\danog\MadelineProto\EventHandler\Filter\Filter](../../../../../danog/MadelineProto/EventHandler/Filter/Filter.html) + + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/Combinator/FiltersAnd.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Combinator/FiltersAnd.md new file mode 100644 index 0000000000..ec92a5d40e --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Combinator/FiltersAnd.md @@ -0,0 +1,92 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\Combinator\\FiltersAnd: ANDs multiple filters." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\Combinator\FiltersAnd` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +ANDs multiple filters. + + + + +## Method list: +* [`__construct(\danog\MadelineProto\EventHandler\Filter\Filter ...$filters)`](#__construct) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(\danog\MadelineProto\EventHandler\Filter\Filter ...$filters)` + + + + +Parameters: + +* `...$filters`: `\danog\MadelineProto\EventHandler\Filter\Filter` + + +#### See also: +* [\danog\MadelineProto\EventHandler\Filter\Filter](../../../../../danog/MadelineProto/EventHandler/Filter/Filter.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../../danog/MadelineProto/EventHandler.html) +* [\danog\MadelineProto\EventHandler\Filter\Filter](../../../../../danog/MadelineProto/EventHandler/Filter/Filter.html) + + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/Combinator/FiltersOr.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Combinator/FiltersOr.md new file mode 100644 index 0000000000..8e1c937350 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Combinator/FiltersOr.md @@ -0,0 +1,92 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\Combinator\\FiltersOr: ORs multiple filters." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\Combinator\FiltersOr` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +ORs multiple filters. + + + + +## Method list: +* [`__construct(\danog\MadelineProto\EventHandler\Filter\Filter ...$filters)`](#__construct) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(\danog\MadelineProto\EventHandler\Filter\Filter ...$filters)` + + + + +Parameters: + +* `...$filters`: `\danog\MadelineProto\EventHandler\Filter\Filter` + + +#### See also: +* [\danog\MadelineProto\EventHandler\Filter\Filter](../../../../../danog/MadelineProto/EventHandler/Filter/Filter.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../../danog/MadelineProto/EventHandler.html) +* [\danog\MadelineProto\EventHandler\Filter\Filter](../../../../../danog/MadelineProto/EventHandler/Filter/Filter.html) + + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/Filter.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Filter.md new file mode 100644 index 0000000000..bdd9ca6b02 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Filter.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\Filter: " +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\Filter` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + + + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterAllowAll.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterAllowAll.md new file mode 100644 index 0000000000..f7073905c2 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterAllowAll.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterAllowAll: Allow all updates." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterAllowAll` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow all updates. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterButtonQueryData.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterButtonQueryData.md new file mode 100644 index 0000000000..232532fbb5 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterButtonQueryData.md @@ -0,0 +1,86 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterButtonQueryData: Filters based on the content of a button query." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterButtonQueryData` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Filters based on the content of a button query. + + + + +## Method list: +* [`__construct(string $content)`](#__construct) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(string $content)` + + + + +Parameters: + +* `$content`: `string` + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterChannel.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterChannel.md new file mode 100644 index 0000000000..d476e47902 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterChannel.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterChannel: Allow only updates coming from channels." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterChannel` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only updates coming from channels. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterCommand.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterCommand.md new file mode 100644 index 0000000000..51cdf8d389 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterCommand.md @@ -0,0 +1,94 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterCommand: Allow only messages containing the specified command." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterCommand` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages containing the specified command. + + + +## Properties +* `$commandTypes`: `array` + +## Method list: +* [`__construct(string $command, list<\danog\MadelineProto\EventHandler\CommandType> $types = [ 0 => \danog\MadelineProto\EventHandler\CommandType::BANG, 1 => \danog\MadelineProto\EventHandler\CommandType::DOT, 2 => \danog\MadelineProto\EventHandler\CommandType::SLASH,])`](#__construct) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(string $command, list<\danog\MadelineProto\EventHandler\CommandType> $types = [ 0 => \danog\MadelineProto\EventHandler\CommandType::BANG, 1 => \danog\MadelineProto\EventHandler\CommandType::DOT, 2 => \danog\MadelineProto\EventHandler\CommandType::SLASH,])` + + + + +Parameters: + +* `$command`: `string` Command +* `$types`: `list<\danog\MadelineProto\EventHandler\CommandType>` Command types, if empty all command types are allowed. + + +#### See also: +* [\danog\MadelineProto\EventHandler\CommandType](../../../../danog/MadelineProto/EventHandler/CommandType.html) + + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterCommandCaseInsensitive.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterCommandCaseInsensitive.md new file mode 100644 index 0000000000..8191b84fdc --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterCommandCaseInsensitive.md @@ -0,0 +1,94 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterCommandCaseInsensitive: Allow only messages containing the specified case-insensitive command." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterCommandCaseInsensitive` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages containing the specified case-insensitive command. + + + +## Properties +* `$commandTypes`: `list` + +## Method list: +* [`__construct(string $command, list<\danog\MadelineProto\EventHandler\CommandType> $types = [ 0 => \danog\MadelineProto\EventHandler\CommandType::BANG, 1 => \danog\MadelineProto\EventHandler\CommandType::DOT, 2 => \danog\MadelineProto\EventHandler\CommandType::SLASH,])`](#__construct) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(string $command, list<\danog\MadelineProto\EventHandler\CommandType> $types = [ 0 => \danog\MadelineProto\EventHandler\CommandType::BANG, 1 => \danog\MadelineProto\EventHandler\CommandType::DOT, 2 => \danog\MadelineProto\EventHandler\CommandType::SLASH,])` + + + + +Parameters: + +* `$command`: `string` Command +* `$types`: `list<\danog\MadelineProto\EventHandler\CommandType>` Command types, if empty all command types are allowed. + + +#### See also: +* [\danog\MadelineProto\EventHandler\CommandType](../../../../danog/MadelineProto/EventHandler/CommandType.html) + + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterEdited.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterEdited.md new file mode 100644 index 0000000000..c7a7c57e0c --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterEdited.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterEdited: Allows messages that were edited." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterEdited` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows messages that were edited. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterEnded.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterEnded.md new file mode 100644 index 0000000000..fc6bc26b8a --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterEnded.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterEnded: Allow only ended calls." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterEnded` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only ended calls. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterForwarded.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterForwarded.md new file mode 100644 index 0000000000..bb9b66acdd --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterForwarded.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterForwarded: Allow only forwarded messages." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterForwarded` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only forwarded messages. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterForwardedFrom.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterForwardedFrom.md new file mode 100644 index 0000000000..940b8ff174 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterForwardedFrom.md @@ -0,0 +1,87 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterForwardedFrom: Allow only forwarded messages from a certain sender." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterForwardedFrom` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only forwarded messages from a certain sender. + + + + +## Method list: +* [`__construct(string|int $peer)`](#__construct) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(string|int $peer)` + + + + +Parameters: + +* `$peer`: `string|int` + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) +* [\danog\MadelineProto\EventHandler\Filter\Filter](../../../../danog/MadelineProto/EventHandler/Filter/Filter.html) + + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromAdmin.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromAdmin.md new file mode 100644 index 0000000000..44ba6bdcb7 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromAdmin.md @@ -0,0 +1,75 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterFromAdmin: Allow only messages coming from the admin (defined as the peers returned by getReportPeers)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterFromAdmin` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages coming from the admin (defined as the peers returned by getReportPeers). + + + + +## Method list: +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) +* [\danog\MadelineProto\EventHandler\Filter\Filter](../../../../danog/MadelineProto/EventHandler/Filter/Filter.html) + + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromBot.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromBot.md new file mode 100644 index 0000000000..2ff866f3fc --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromBot.md @@ -0,0 +1,75 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterFromBot: Allow only messages coming from bots." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterFromBot` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages coming from bots. + + + + +## Method list: +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) +* [\danog\MadelineProto\EventHandler\Filter\Filter](../../../../danog/MadelineProto/EventHandler/Filter/Filter.html) + + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromSender.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromSender.md new file mode 100644 index 0000000000..dc72813e11 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromSender.md @@ -0,0 +1,87 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterFromSender: Allow incoming or outgoing group messages made by a certain sender." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterFromSender` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow incoming or outgoing group messages made by a certain sender. + + + + +## Method list: +* [`__construct(string|int $peer)`](#__construct) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(string|int $peer)` + + + + +Parameters: + +* `$peer`: `string|int` + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) +* [\danog\MadelineProto\EventHandler\Filter\Filter](../../../../danog/MadelineProto/EventHandler/Filter/Filter.html) + + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromSenders.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromSenders.md new file mode 100644 index 0000000000..31bcc10897 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromSenders.md @@ -0,0 +1,87 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterFromSenders: Allow incoming or outgoing group messages made by a certain list of senders." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterFromSenders` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow incoming or outgoing group messages made by a certain list of senders. + + + + +## Method list: +* [`__construct(string|int ...$idOrUsername)`](#__construct) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(string|int ...$idOrUsername)` + + + + +Parameters: + +* `...$idOrUsername`: `string|int` + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) +* [\danog\MadelineProto\EventHandler\Filter\Filter](../../../../danog/MadelineProto/EventHandler/Filter/Filter.html) + + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterGroup.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterGroup.md new file mode 100644 index 0000000000..0bfa54fa65 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterGroup.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterGroup: Allow only updates coming from groups." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterGroup` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only updates coming from groups. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterIncoming.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterIncoming.md new file mode 100644 index 0000000000..32436c950b --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterIncoming.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterIncoming: Allow only incoming messages." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterIncoming` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only incoming messages. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterMedia.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterMedia.md new file mode 100644 index 0000000000..fd41bdb4c5 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterMedia.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterMedia: Allow any media messages." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterMedia` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow any media messages. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterMessage.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterMessage.md new file mode 100644 index 0000000000..344ff0ffac --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterMessage.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterMessage: Allow any non-service message." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterMessage` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow any non-service message. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterNoMedia.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterNoMedia.md new file mode 100644 index 0000000000..c8c9723f13 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterNoMedia.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterNoMedia: Allow any messages except media messages." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterNoMedia` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow any messages except media messages. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterNotEdited.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterNotEdited.md new file mode 100644 index 0000000000..a3eaf925a2 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterNotEdited.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterNotEdited: Allows messages that weren't edited." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterNotEdited` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows messages that weren't edited. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterOutgoing.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterOutgoing.md new file mode 100644 index 0000000000..7756209f79 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterOutgoing.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterOutgoing: Allow only outgoing messages." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterOutgoing` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only outgoing messages. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterPeer.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterPeer.md new file mode 100644 index 0000000000..51b86d04b0 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterPeer.md @@ -0,0 +1,87 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterPeer: Allow messages coming from or sent to a certain peer." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterPeer` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow messages coming from or sent to a certain peer. + + + + +## Method list: +* [`__construct(string|int $peer)`](#__construct) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(string|int $peer)` + + + + +Parameters: + +* `$peer`: `string|int` + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) +* [\danog\MadelineProto\EventHandler\Filter\Filter](../../../../danog/MadelineProto/EventHandler/Filter/Filter.html) + + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterPoll.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterPoll.md new file mode 100644 index 0000000000..4dba0e5ad7 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterPoll.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterPoll: Allow only messages that contain a poll." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterPoll` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages that contain a poll. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterPrivate.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterPrivate.md new file mode 100644 index 0000000000..dea1f35e7f --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterPrivate.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterPrivate: Allow only updates coming from private chats." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterPrivate` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only updates coming from private chats. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterRegex.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterRegex.md new file mode 100644 index 0000000000..876af95c12 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterRegex.md @@ -0,0 +1,94 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterRegex: Allow only messages or button queries matching the specified regex." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterRegex` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages or button queries matching the specified regex. + + + + +## Method list: +* [`__construct(non-empty-string $regex, int-mask<0, 256, 512> $flags = 0, int $offset = 0)`](#__construct) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(non-empty-string $regex, int-mask<0, 256, 512> $flags = 0, int $offset = 0)` + + + + +Parameters: + +* `$regex`: `non-empty-string` +* `$flags`: `int-mask<0, 256, 512>` +* `$offset`: `int` + + +#### See also: +* `non-empty-string` +* `int-mask` + + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterRegexMatchAll.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterRegexMatchAll.md new file mode 100644 index 0000000000..54d3eb7beb --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterRegexMatchAll.md @@ -0,0 +1,93 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterRegexMatchAll: Allow only messages or button queries matching the specified regex." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterRegexMatchAll` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages or button queries matching the specified regex. + + + + +## Method list: +* [`__construct(non-empty-string $regex, int $flags = 0, int $offset = 0)`](#__construct) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(non-empty-string $regex, int $flags = 0, int $offset = 0)` + + + + +Parameters: + +* `$regex`: `non-empty-string` +* `$flags`: `int` +* `$offset`: `int` + + +#### See also: +* `non-empty-string` + + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterReply.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterReply.md new file mode 100644 index 0000000000..aa151fe4a5 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterReply.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterReply: Allow messages that reply to other messages." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterReply` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow messages that reply to other messages. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterReplyToSelf.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterReplyToSelf.md new file mode 100644 index 0000000000..7ffe69c53f --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterReplyToSelf.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterReplyToSelf: Allow messages that reply to one of our messages." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterReplyToSelf` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow messages that reply to one of our messages. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterRunning.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterRunning.md new file mode 100644 index 0000000000..afccb3e5e5 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterRunning.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterRunning: Allow only running calls." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterRunning` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only running calls. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterSecret.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterSecret.md new file mode 100644 index 0000000000..a59eb0b576 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterSecret.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterSecret: Allow only updates coming from secret chats." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterSecret` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only updates coming from secret chats. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterSender.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterSender.md new file mode 100644 index 0000000000..1fd8f3c0c4 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterSender.md @@ -0,0 +1,87 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterSender: Allow incoming or outgoing group messages made by a certain sender." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterSender` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow incoming or outgoing group messages made by a certain sender. + + + + +## Method list: +* [`__construct(string|int $peer)`](#__construct) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(string|int $peer)` + + + + +Parameters: + +* `$peer`: `string|int` + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) +* [\danog\MadelineProto\EventHandler\Filter\Filter](../../../../danog/MadelineProto/EventHandler/Filter/Filter.html) + + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterSenders.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterSenders.md new file mode 100644 index 0000000000..84026808f2 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterSenders.md @@ -0,0 +1,87 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterSenders: Allow incoming or outgoing group messages made by a certain list of senders." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterSenders` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow incoming or outgoing group messages made by a certain list of senders. + + + + +## Method list: +* [`__construct(string|int ...$idOrUsername)`](#__construct) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(string|int ...$idOrUsername)` + + + + +Parameters: + +* `...$idOrUsername`: `string|int` + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) +* [\danog\MadelineProto\EventHandler\Filter\Filter](../../../../danog/MadelineProto/EventHandler/Filter/Filter.html) + + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterService.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterService.md new file mode 100644 index 0000000000..e1c1eca0ca --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterService.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterService: Allow only service messages of any type." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterService` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only service messages of any type. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterText.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterText.md new file mode 100644 index 0000000000..039a25b8df --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterText.md @@ -0,0 +1,86 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterText: Allow only messages with a specific content." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterText` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages with a specific content. + + + + +## Method list: +* [`__construct(string $content)`](#__construct) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(string $content)` + + + + +Parameters: + +* `$content`: `string` + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextCaseInsensitive.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextCaseInsensitive.md new file mode 100644 index 0000000000..490e06c703 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextCaseInsensitive.md @@ -0,0 +1,86 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterTextCaseInsensitive: Allow only messages with a specific case-insensitive content." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterTextCaseInsensitive` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages with a specific case-insensitive content. + + + + +## Method list: +* [`__construct(string $content)`](#__construct) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(string $content)` + + + + +Parameters: + +* `$content`: `string` + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextContains.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextContains.md new file mode 100644 index 0000000000..bf9f201f1e --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextContains.md @@ -0,0 +1,86 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterTextContains: Allow only messages that contain a specific content." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterTextContains` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages that contain a specific content. + + + + +## Method list: +* [`__construct(string $content)`](#__construct) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(string $content)` + + + + +Parameters: + +* `$content`: `string` + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextContainsCaseInsensitive.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextContainsCaseInsensitive.md new file mode 100644 index 0000000000..0603ae43bb --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextContainsCaseInsensitive.md @@ -0,0 +1,86 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterTextContainsCaseInsensitive: Allow only messages that contain a specific case-insensitive content." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterTextContainsCaseInsensitive` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages that contain a specific case-insensitive content. + + + + +## Method list: +* [`__construct(string $content)`](#__construct) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(string $content)` + + + + +Parameters: + +* `$content`: `string` + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextEnds.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextEnds.md new file mode 100644 index 0000000000..4585fa2093 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextEnds.md @@ -0,0 +1,86 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterTextEnds: Allow only messages that ends with a specific content." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterTextEnds` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages that ends with a specific content. + + + + +## Method list: +* [`__construct(string $content)`](#__construct) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(string $content)` + + + + +Parameters: + +* `$content`: `string` + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextEndsCaseInsensitive.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextEndsCaseInsensitive.md new file mode 100644 index 0000000000..4ca49e678a --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextEndsCaseInsensitive.md @@ -0,0 +1,86 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterTextEndsCaseInsensitive: Allow only messages that ends with a specific case-insensitive content." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterTextEndsCaseInsensitive` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages that ends with a specific case-insensitive content. + + + + +## Method list: +* [`__construct(string $content)`](#__construct) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(string $content)` + + + + +Parameters: + +* `$content`: `string` + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextStarts.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextStarts.md new file mode 100644 index 0000000000..045c98d7ba --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextStarts.md @@ -0,0 +1,86 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterTextStarts: Allow only messages that start with a specific content." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterTextStarts` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages that start with a specific content. + + + + +## Method list: +* [`__construct(string $content)`](#__construct) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(string $content)` + + + + +Parameters: + +* `$content`: `string` + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextStartsCaseInsensitive.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextStartsCaseInsensitive.md new file mode 100644 index 0000000000..854959b8ea --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextStartsCaseInsensitive.md @@ -0,0 +1,86 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterTextStartsCaseInsensitive: Allow only messages that start with a specific case-insensitive content." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterTextStartsCaseInsensitive` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages that start with a specific case-insensitive content. + + + + +## Method list: +* [`__construct(string $content)`](#__construct) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(string $content)` + + + + +Parameters: + +* `$content`: `string` + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTopic.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTopic.md new file mode 100644 index 0000000000..ec027951d5 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTopic.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterTopic: Allow only messages coming from groups that has topics (Supergroups only)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterTopic` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages coming from groups that has topics (Supergroups only). + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTopicId.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTopicId.md new file mode 100644 index 0000000000..84af346da0 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/FilterTopicId.md @@ -0,0 +1,86 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\FilterTopicId: Allow only messages with a specific topic id (Supergroups only)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\FilterTopicId` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages with a specific topic id (Supergroups only). + + + + +## Method list: +* [`__construct(int $topicId)`](#__construct) +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `__construct(int $topicId)` + + + + +Parameters: + +* `$topicId`: `int` + + + +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterAudio.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterAudio.md new file mode 100644 index 0000000000..18c0bb52af --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterAudio.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\Media\\FilterAudio: Allow only audio files." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\Media\FilterAudio` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Allow only audio files. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterDocument.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterDocument.md new file mode 100644 index 0000000000..b8897679e5 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterDocument.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\Media\\FilterDocument: Allow only documents." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\Media\FilterDocument` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Allow only documents. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterDocumentPhoto.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterDocumentPhoto.md new file mode 100644 index 0000000000..dbff419354 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterDocumentPhoto.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\Media\\FilterDocumentPhoto: Allow only documents containing an image." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\Media\FilterDocumentPhoto` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Allow only documents containing an image. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterGif.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterGif.md new file mode 100644 index 0000000000..11efdb4109 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterGif.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\Media\\FilterGif: Allow only GIFs." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\Media\FilterGif` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Allow only GIFs. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterPhoto.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterPhoto.md new file mode 100644 index 0000000000..96b182bebe --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterPhoto.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\Media\\FilterPhoto: Allow only photos." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\Media\FilterPhoto` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Allow only photos. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterRoundVideo.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterRoundVideo.md new file mode 100644 index 0000000000..9dc6e0b28d --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterRoundVideo.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\Media\\FilterRoundVideo: Allow only round videos." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\Media\FilterRoundVideo` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Allow only round videos. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterSticker.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterSticker.md new file mode 100644 index 0000000000..dea02e77cd --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterSticker.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\Media\\FilterSticker: Allow only stickers." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\Media\FilterSticker` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Allow only stickers. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterVideo.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterVideo.md new file mode 100644 index 0000000000..5c1d1d3c14 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterVideo.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\Media\\FilterVideo: Allow only videos." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\Media\FilterVideo` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Allow only videos. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterVoice.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterVoice.md new file mode 100644 index 0000000000..6d3d645d1b --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterVoice.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\Media\\FilterVoice: Allow only voice messages." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\Media\FilterVoice` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Allow only voice messages. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/Poll/FilterMultiplePoll.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Poll/FilterMultiplePoll.md new file mode 100644 index 0000000000..e8fdf2f2bf --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Poll/FilterMultiplePoll.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\Poll\\FilterMultiplePoll: Allow only messages that contain a multiple poll." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\Poll\FilterMultiplePoll` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages that contain a multiple poll. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/Poll/FilterQuizPoll.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Poll/FilterQuizPoll.md new file mode 100644 index 0000000000..58bfaa492f --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Poll/FilterQuizPoll.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\Poll\\FilterQuizPoll: Allow only messages that contain a quiz poll." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\Poll\FilterQuizPoll` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages that contain a quiz poll. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Filter/Poll/FilterSinglePoll.md b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Poll/FilterSinglePoll.md new file mode 100644 index 0000000000..fd9572c0c8 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Filter/Poll/FilterSinglePoll.md @@ -0,0 +1,74 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Filter\\Poll\\FilterSinglePoll: Allow only messages that contain a single poll." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Filter\Poll\FilterSinglePoll` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages that contain a single poll. + + + + +## Method list: +* [`apply(\danog\MadelineProto\EventHandler\Update $update): bool`](#apply) +* [`initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter`](#initialize) +* [`fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter`](#fromReflectionType) + +## Methods: +### `apply(\danog\MadelineProto\EventHandler\Update $update): bool` + + + + +Parameters: + +* `$update`: `\danog\MadelineProto\EventHandler\Update` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initialize(\danog\MadelineProto\EventHandler $API): \danog\MadelineProto\EventHandler\Filter\Filter` + +Run some initialization logic, optionally returning a new filter to replace the current one. + + +Parameters: + +* `$API`: `\danog\MadelineProto\EventHandler` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../../danog/MadelineProto/EventHandler.html) + + + + +### `fromReflectionType(\ReflectionType $type): \danog\MadelineProto\EventHandler\Filter\Filter` + + + + +Parameters: + +* `$type`: `\ReflectionType` + + +#### See also: +* `\ReflectionType` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/ForwardedInfo.md b/docs/PHP/danog/MadelineProto/EventHandler/ForwardedInfo.md new file mode 100644 index 0000000000..09ec355148 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/ForwardedInfo.md @@ -0,0 +1,27 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\ForwardedInfo: Info about a forwarded message." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\ForwardedInfo` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Info about a forwarded message. + + + +## Properties +* `$date`: `int` When was the message originally sent +* `$fromId`: `?int` The ID of the user that originally sent the message +* `$fromName`: `?string` The name of the user that originally sent the message +* `$forwardedChannelMsgId`: `?int` ID of the channel message that was forwarded +* `$forwardedChannelMsgAuthor`: `?string` For channels and if signatures are enabled, author of the channel message that was forwareded +* `$savedFromId`: `?int` Only for messages forwarded to Saved Messages, full info about the user/channel that originally sent the message +* `$savedFromMsgId`: `?int` Only for messages forwarded to Saved Messages, ID of the message that was forwarded from the original user/channel +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/InlineQuery.md b/docs/PHP/danog/MadelineProto/EventHandler/InlineQuery.md new file mode 100644 index 0000000000..40ed5330da --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/InlineQuery.md @@ -0,0 +1,30 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\InlineQuery: An incoming inline query." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\InlineQuery` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +An incoming inline query. + + + +## Properties +* `$queryId`: `int` Query ID +* `$query`: `string` Text of query +* `$userId`: `int` User that sent the query +* `$offset`: `string` Offset to navigate through results +* `$geo`: `?danog\MadelineProto\EventHandler\Media\GeoPoint` Attached geolocation +* `$peerType`: `danog\MadelineProto\EventHandler\InlineQueryPeerType` Type of the chat from which the inline query was sent. +* `$matches`: `list` +Regex matches, if a filter regex is present +* `$matchesAll`: `array | mixed)>` +Regex matches, if a filter multiple match regex is present +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Keyboard.md b/docs/PHP/danog/MadelineProto/EventHandler/Keyboard.md new file mode 100644 index 0000000000..dafd55cee3 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Keyboard.md @@ -0,0 +1,64 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Keyboard: Represents an inline or reply keyboard." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Keyboard` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Represents an inline or reply keyboard. + + + +## Properties +* `$buttons`: `non-empty-list>` + +## Method list: +* [`fromRawReplyMarkup(array $rawReplyMarkup): ?self`](#fromRawReplyMarkup) +* [`pressByCoordinates(int $row, int $column, bool $waitForResult): mixed`](#pressByCoordinates) +* [`press(string $label, bool $waitForResult): mixed`](#press) + +## Methods: +### `fromRawReplyMarkup(array $rawReplyMarkup): ?self` + + + + +Parameters: + +* `$rawReplyMarkup`: `array` + + + +### `pressByCoordinates(int $row, int $column, bool $waitForResult): mixed` + +Press button at the specified keyboard coordinates. + + +Parameters: + +* `$row`: `int` +* `$column`: `int` +* `$waitForResult`: `bool` If true, waits for a result from the bot before returning. + + + +### `press(string $label, bool $waitForResult): mixed` + +Presses the first keyboard button with the specified label. + + +Parameters: + +* `$label`: `string` +* `$waitForResult`: `bool` If true, waits for a result from the bot before returning. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Keyboard/InlineKeyboard.md b/docs/PHP/danog/MadelineProto/EventHandler/Keyboard/InlineKeyboard.md new file mode 100644 index 0000000000..c3c27d2d6b --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Keyboard/InlineKeyboard.md @@ -0,0 +1,64 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Keyboard\\InlineKeyboard: Represents an inline keyboard." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Keyboard\InlineKeyboard` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents an inline keyboard. + + + +## Properties +* `$buttons`: `non-empty-list>` + +## Method list: +* [`fromRawReplyMarkup(array $rawReplyMarkup): ?self`](#fromRawReplyMarkup) +* [`pressByCoordinates(int $row, int $column, bool $waitForResult): mixed`](#pressByCoordinates) +* [`press(string $label, bool $waitForResult): mixed`](#press) + +## Methods: +### `fromRawReplyMarkup(array $rawReplyMarkup): ?self` + + + + +Parameters: + +* `$rawReplyMarkup`: `array` + + + +### `pressByCoordinates(int $row, int $column, bool $waitForResult): mixed` + +Press button at the specified keyboard coordinates. + + +Parameters: + +* `$row`: `int` +* `$column`: `int` +* `$waitForResult`: `bool` If true, waits for a result from the bot before returning. + + + +### `press(string $label, bool $waitForResult): mixed` + +Presses the first keyboard button with the specified label. + + +Parameters: + +* `$label`: `string` +* `$waitForResult`: `bool` If true, waits for a result from the bot before returning. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Keyboard/ReplyKeyboard.md b/docs/PHP/danog/MadelineProto/EventHandler/Keyboard/ReplyKeyboard.md new file mode 100644 index 0000000000..5767a254c4 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Keyboard/ReplyKeyboard.md @@ -0,0 +1,64 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Keyboard\\ReplyKeyboard: Represents a reply keyboard." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Keyboard\ReplyKeyboard` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a reply keyboard. + + + +## Properties +* `$buttons`: `non-empty-list>` + +## Method list: +* [`fromRawReplyMarkup(array $rawReplyMarkup): ?self`](#fromRawReplyMarkup) +* [`pressByCoordinates(int $row, int $column, bool $waitForResult): mixed`](#pressByCoordinates) +* [`press(string $label, bool $waitForResult): mixed`](#press) + +## Methods: +### `fromRawReplyMarkup(array $rawReplyMarkup): ?self` + + + + +Parameters: + +* `$rawReplyMarkup`: `array` + + + +### `pressByCoordinates(int $row, int $column, bool $waitForResult): mixed` + +Press button at the specified keyboard coordinates. + + +Parameters: + +* `$row`: `int` +* `$column`: `int` +* `$waitForResult`: `bool` If true, waits for a result from the bot before returning. + + + +### `press(string $label, bool $waitForResult): mixed` + +Presses the first keyboard button with the specified label. + + +Parameters: + +* `$label`: `string` +* `$waitForResult`: `bool` If true, waits for a result from the bot before returning. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media.md b/docs/PHP/danog/MadelineProto/EventHandler/Media.md new file mode 100644 index 0000000000..890c5d5c36 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media.md @@ -0,0 +1,118 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media: Represents a generic media." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Represents a generic media. + + + +## Properties +* `$size`: `int` Media filesize +* `$fileName`: `string` Media file name +* `$fileExt`: `string` Media file extension +* `$creationDate`: `int` Media creation date +* `$mimeType`: `string` Media MIME type +* `$ttl`: `?int` Time-to-live of media +* `$thumbs`: `list` Thumbnails +* `$videoThumbs`: `list` Video thumbnails +* `$spoiler`: `bool` Whether the media should be hidden behind a spoiler +* `$botApiFileId`: `string` File ID in bot API format (always present even for users) +* `$botApiFileUniqueId`: `string` Unique file ID in bot API format (always present even for users) +* `$encrypted`: `bool` Whether this media originates from a secret chat. +* `$thumb`: `?danog\MadelineProto\TL\Types\Bytes` Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90) only for secret chats. +* `$thumbHeight`: `?int` Thumbnail height only for secret chats. +* `$thumbWidth`: `?int` Thumbnail width only for secret chats. +* `$protected`: `bool` Whether this media is protected + +## Method list: +* [`getDownloadLink((string|null) $scriptUrl = NULL): string`](#getDownloadLink) +* [`getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToDir) +* [`downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToFile) +* [`getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}`](#getDownloadInfo) + +## Methods: +### `getDownloadLink((string|null) $scriptUrl = NULL): string` + +Gets a download link for any file up to 4GB. + + +Parameters: + +* `$scriptUrl`: `(string|null)` Optional path to custom download script (not needed when running via web) + + + +### `getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Get a readable amp stream with the file contents. + + +Parameters: + +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$offset`: `int` +* `$end`: `int` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to working directory or passed path. + + +Parameters: + +* `$dir`: `string` Directory where to download the file +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to file. + + +Parameters: + +* `$file`: `string` Downloaded file path +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/AbstractAudio.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/AbstractAudio.md new file mode 100644 index 0000000000..f9a0571d05 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/AbstractAudio.md @@ -0,0 +1,119 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\AbstractAudio: Represents a generic audio file." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\AbstractAudio` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a generic audio file. + + + +## Properties +* `$duration`: `int` Audio duration in seconds +* `$size`: `int` Media filesize +* `$fileName`: `string` Media file name +* `$fileExt`: `string` Media file extension +* `$creationDate`: `int` Media creation date +* `$mimeType`: `string` Media MIME type +* `$ttl`: `?int` Time-to-live of media +* `$thumbs`: `list` Thumbnails +* `$videoThumbs`: `list` Video thumbnails +* `$spoiler`: `bool` Whether the media should be hidden behind a spoiler +* `$botApiFileId`: `string` File ID in bot API format (always present even for users) +* `$botApiFileUniqueId`: `string` Unique file ID in bot API format (always present even for users) +* `$encrypted`: `bool` Whether this media originates from a secret chat. +* `$thumb`: `?danog\MadelineProto\TL\Types\Bytes` Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90) only for secret chats. +* `$thumbHeight`: `?int` Thumbnail height only for secret chats. +* `$thumbWidth`: `?int` Thumbnail width only for secret chats. +* `$protected`: `bool` Whether this media is protected + +## Method list: +* [`getDownloadLink((string|null) $scriptUrl = NULL): string`](#getDownloadLink) +* [`getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToDir) +* [`downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToFile) +* [`getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}`](#getDownloadInfo) + +## Methods: +### `getDownloadLink((string|null) $scriptUrl = NULL): string` + +Gets a download link for any file up to 4GB. + + +Parameters: + +* `$scriptUrl`: `(string|null)` Optional path to custom download script (not needed when running via web) + + + +### `getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Get a readable amp stream with the file contents. + + +Parameters: + +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$offset`: `int` +* `$end`: `int` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to working directory or passed path. + + +Parameters: + +* `$dir`: `string` Directory where to download the file +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to file. + + +Parameters: + +* `$file`: `string` Downloaded file path +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/AbstractSticker.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/AbstractSticker.md new file mode 100644 index 0000000000..1f20e63873 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/AbstractSticker.md @@ -0,0 +1,122 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\AbstractSticker: Represents a generic sticker." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\AbstractSticker` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a generic sticker. + + + +## Properties +* `$emoji`: `string` Emoji representation of sticker +* `$stickerset`: `array` Associated stickerset +* `$width`: `?int` +* `$height`: `?int` +* `$size`: `int` Media filesize +* `$fileName`: `string` Media file name +* `$fileExt`: `string` Media file extension +* `$creationDate`: `int` Media creation date +* `$mimeType`: `string` Media MIME type +* `$ttl`: `?int` Time-to-live of media +* `$thumbs`: `list` Thumbnails +* `$videoThumbs`: `list` Video thumbnails +* `$spoiler`: `bool` Whether the media should be hidden behind a spoiler +* `$botApiFileId`: `string` File ID in bot API format (always present even for users) +* `$botApiFileUniqueId`: `string` Unique file ID in bot API format (always present even for users) +* `$encrypted`: `bool` Whether this media originates from a secret chat. +* `$thumb`: `?danog\MadelineProto\TL\Types\Bytes` Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90) only for secret chats. +* `$thumbHeight`: `?int` Thumbnail height only for secret chats. +* `$thumbWidth`: `?int` Thumbnail width only for secret chats. +* `$protected`: `bool` Whether this media is protected + +## Method list: +* [`getDownloadLink((string|null) $scriptUrl = NULL): string`](#getDownloadLink) +* [`getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToDir) +* [`downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToFile) +* [`getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}`](#getDownloadInfo) + +## Methods: +### `getDownloadLink((string|null) $scriptUrl = NULL): string` + +Gets a download link for any file up to 4GB. + + +Parameters: + +* `$scriptUrl`: `(string|null)` Optional path to custom download script (not needed when running via web) + + + +### `getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Get a readable amp stream with the file contents. + + +Parameters: + +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$offset`: `int` +* `$end`: `int` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to working directory or passed path. + + +Parameters: + +* `$dir`: `string` Directory where to download the file +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to file. + + +Parameters: + +* `$file`: `string` Downloaded file path +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/AbstractVideo.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/AbstractVideo.md new file mode 100644 index 0000000000..02a4d9621a --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/AbstractVideo.md @@ -0,0 +1,122 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\AbstractVideo: Represents a generic video." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\AbstractVideo` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a generic video. + + + +## Properties +* `$duration`: `float` Video duration in seconds +* `$supportsStreaming`: `bool` Whether the video supports streaming +* `$width`: `int` Video width +* `$height`: `int` Video height +* `$size`: `int` Media filesize +* `$fileName`: `string` Media file name +* `$fileExt`: `string` Media file extension +* `$creationDate`: `int` Media creation date +* `$mimeType`: `string` Media MIME type +* `$ttl`: `?int` Time-to-live of media +* `$thumbs`: `list` Thumbnails +* `$videoThumbs`: `list` Video thumbnails +* `$spoiler`: `bool` Whether the media should be hidden behind a spoiler +* `$botApiFileId`: `string` File ID in bot API format (always present even for users) +* `$botApiFileUniqueId`: `string` Unique file ID in bot API format (always present even for users) +* `$encrypted`: `bool` Whether this media originates from a secret chat. +* `$thumb`: `?danog\MadelineProto\TL\Types\Bytes` Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90) only for secret chats. +* `$thumbHeight`: `?int` Thumbnail height only for secret chats. +* `$thumbWidth`: `?int` Thumbnail width only for secret chats. +* `$protected`: `bool` Whether this media is protected + +## Method list: +* [`getDownloadLink((string|null) $scriptUrl = NULL): string`](#getDownloadLink) +* [`getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToDir) +* [`downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToFile) +* [`getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}`](#getDownloadInfo) + +## Methods: +### `getDownloadLink((string|null) $scriptUrl = NULL): string` + +Gets a download link for any file up to 4GB. + + +Parameters: + +* `$scriptUrl`: `(string|null)` Optional path to custom download script (not needed when running via web) + + + +### `getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Get a readable amp stream with the file contents. + + +Parameters: + +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$offset`: `int` +* `$end`: `int` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to working directory or passed path. + + +Parameters: + +* `$dir`: `string` Directory where to download the file +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to file. + + +Parameters: + +* `$file`: `string` Downloaded file path +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/AnimatedSticker.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/AnimatedSticker.md new file mode 100644 index 0000000000..017bfb3f34 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/AnimatedSticker.md @@ -0,0 +1,123 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\AnimatedSticker: Represents an animated sticker." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\AnimatedSticker` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents an animated sticker. + + + +## Properties +* `$premiumSticker`: `bool` Whether this is a premium sticker and a premium sticker animation must be played. +* `$emoji`: `string` Emoji representation of sticker +* `$stickerset`: `array` Associated stickerset +* `$width`: `?int` +* `$height`: `?int` +* `$size`: `int` Media filesize +* `$fileName`: `string` Media file name +* `$fileExt`: `string` Media file extension +* `$creationDate`: `int` Media creation date +* `$mimeType`: `string` Media MIME type +* `$ttl`: `?int` Time-to-live of media +* `$thumbs`: `list` Thumbnails +* `$videoThumbs`: `list` Video thumbnails +* `$spoiler`: `bool` Whether the media should be hidden behind a spoiler +* `$botApiFileId`: `string` File ID in bot API format (always present even for users) +* `$botApiFileUniqueId`: `string` Unique file ID in bot API format (always present even for users) +* `$encrypted`: `bool` Whether this media originates from a secret chat. +* `$thumb`: `?danog\MadelineProto\TL\Types\Bytes` Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90) only for secret chats. +* `$thumbHeight`: `?int` Thumbnail height only for secret chats. +* `$thumbWidth`: `?int` Thumbnail width only for secret chats. +* `$protected`: `bool` Whether this media is protected + +## Method list: +* [`getDownloadLink((string|null) $scriptUrl = NULL): string`](#getDownloadLink) +* [`getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToDir) +* [`downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToFile) +* [`getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}`](#getDownloadInfo) + +## Methods: +### `getDownloadLink((string|null) $scriptUrl = NULL): string` + +Gets a download link for any file up to 4GB. + + +Parameters: + +* `$scriptUrl`: `(string|null)` Optional path to custom download script (not needed when running via web) + + + +### `getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Get a readable amp stream with the file contents. + + +Parameters: + +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$offset`: `int` +* `$end`: `int` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to working directory or passed path. + + +Parameters: + +* `$dir`: `string` Directory where to download the file +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to file. + + +Parameters: + +* `$file`: `string` Downloaded file path +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/Audio.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/Audio.md new file mode 100644 index 0000000000..1fcc8983ba --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/Audio.md @@ -0,0 +1,121 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\Audio: Represents an audio file." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\Audio` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents an audio file. + + + +## Properties +* `$title`: `?string` Song name +* `$performer`: `?string` Performer +* `$duration`: `int` Audio duration in seconds +* `$size`: `int` Media filesize +* `$fileName`: `string` Media file name +* `$fileExt`: `string` Media file extension +* `$creationDate`: `int` Media creation date +* `$mimeType`: `string` Media MIME type +* `$ttl`: `?int` Time-to-live of media +* `$thumbs`: `list` Thumbnails +* `$videoThumbs`: `list` Video thumbnails +* `$spoiler`: `bool` Whether the media should be hidden behind a spoiler +* `$botApiFileId`: `string` File ID in bot API format (always present even for users) +* `$botApiFileUniqueId`: `string` Unique file ID in bot API format (always present even for users) +* `$encrypted`: `bool` Whether this media originates from a secret chat. +* `$thumb`: `?danog\MadelineProto\TL\Types\Bytes` Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90) only for secret chats. +* `$thumbHeight`: `?int` Thumbnail height only for secret chats. +* `$thumbWidth`: `?int` Thumbnail width only for secret chats. +* `$protected`: `bool` Whether this media is protected + +## Method list: +* [`getDownloadLink((string|null) $scriptUrl = NULL): string`](#getDownloadLink) +* [`getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToDir) +* [`downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToFile) +* [`getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}`](#getDownloadInfo) + +## Methods: +### `getDownloadLink((string|null) $scriptUrl = NULL): string` + +Gets a download link for any file up to 4GB. + + +Parameters: + +* `$scriptUrl`: `(string|null)` Optional path to custom download script (not needed when running via web) + + + +### `getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Get a readable amp stream with the file contents. + + +Parameters: + +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$offset`: `int` +* `$end`: `int` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to working directory or passed path. + + +Parameters: + +* `$dir`: `string` Directory where to download the file +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to file. + + +Parameters: + +* `$file`: `string` Downloaded file path +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/CustomEmoji.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/CustomEmoji.md new file mode 100644 index 0000000000..4ca38d3a14 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/CustomEmoji.md @@ -0,0 +1,124 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\CustomEmoji: Represents a custom emoji sticker." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\CustomEmoji` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a custom emoji sticker. + + + +## Properties +* `$free`: `bool` Whether this custom emoji can be sent by non-Premium users +* `$textColor`: `bool` Whether the color of this TGS custom emoji should be changed to the text color when used in messages, the accent color if used as emoji status, white on chat photos, or another appropriate color based on context. +* `$emoji`: `string` Emoji representation of sticker +* `$stickerset`: `array` Associated stickerset +* `$width`: `?int` +* `$height`: `?int` +* `$size`: `int` Media filesize +* `$fileName`: `string` Media file name +* `$fileExt`: `string` Media file extension +* `$creationDate`: `int` Media creation date +* `$mimeType`: `string` Media MIME type +* `$ttl`: `?int` Time-to-live of media +* `$thumbs`: `list` Thumbnails +* `$videoThumbs`: `list` Video thumbnails +* `$spoiler`: `bool` Whether the media should be hidden behind a spoiler +* `$botApiFileId`: `string` File ID in bot API format (always present even for users) +* `$botApiFileUniqueId`: `string` Unique file ID in bot API format (always present even for users) +* `$encrypted`: `bool` Whether this media originates from a secret chat. +* `$thumb`: `?danog\MadelineProto\TL\Types\Bytes` Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90) only for secret chats. +* `$thumbHeight`: `?int` Thumbnail height only for secret chats. +* `$thumbWidth`: `?int` Thumbnail width only for secret chats. +* `$protected`: `bool` Whether this media is protected + +## Method list: +* [`getDownloadLink((string|null) $scriptUrl = NULL): string`](#getDownloadLink) +* [`getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToDir) +* [`downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToFile) +* [`getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}`](#getDownloadInfo) + +## Methods: +### `getDownloadLink((string|null) $scriptUrl = NULL): string` + +Gets a download link for any file up to 4GB. + + +Parameters: + +* `$scriptUrl`: `(string|null)` Optional path to custom download script (not needed when running via web) + + + +### `getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Get a readable amp stream with the file contents. + + +Parameters: + +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$offset`: `int` +* `$end`: `int` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to working directory or passed path. + + +Parameters: + +* `$dir`: `string` Directory where to download the file +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to file. + + +Parameters: + +* `$file`: `string` Downloaded file path +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/Document.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/Document.md new file mode 100644 index 0000000000..087695cbaa --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/Document.md @@ -0,0 +1,118 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\Document: Represents a document." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\Document` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a document. + + + +## Properties +* `$size`: `int` Media filesize +* `$fileName`: `string` Media file name +* `$fileExt`: `string` Media file extension +* `$creationDate`: `int` Media creation date +* `$mimeType`: `string` Media MIME type +* `$ttl`: `?int` Time-to-live of media +* `$thumbs`: `list` Thumbnails +* `$videoThumbs`: `list` Video thumbnails +* `$spoiler`: `bool` Whether the media should be hidden behind a spoiler +* `$botApiFileId`: `string` File ID in bot API format (always present even for users) +* `$botApiFileUniqueId`: `string` Unique file ID in bot API format (always present even for users) +* `$encrypted`: `bool` Whether this media originates from a secret chat. +* `$thumb`: `?danog\MadelineProto\TL\Types\Bytes` Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90) only for secret chats. +* `$thumbHeight`: `?int` Thumbnail height only for secret chats. +* `$thumbWidth`: `?int` Thumbnail width only for secret chats. +* `$protected`: `bool` Whether this media is protected + +## Method list: +* [`getDownloadLink((string|null) $scriptUrl = NULL): string`](#getDownloadLink) +* [`getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToDir) +* [`downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToFile) +* [`getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}`](#getDownloadInfo) + +## Methods: +### `getDownloadLink((string|null) $scriptUrl = NULL): string` + +Gets a download link for any file up to 4GB. + + +Parameters: + +* `$scriptUrl`: `(string|null)` Optional path to custom download script (not needed when running via web) + + + +### `getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Get a readable amp stream with the file contents. + + +Parameters: + +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$offset`: `int` +* `$end`: `int` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to working directory or passed path. + + +Parameters: + +* `$dir`: `string` Directory where to download the file +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to file. + + +Parameters: + +* `$file`: `string` Downloaded file path +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/DocumentPhoto.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/DocumentPhoto.md new file mode 100644 index 0000000000..e1c85e7a10 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/DocumentPhoto.md @@ -0,0 +1,121 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\DocumentPhoto: Represents a photo uploaded as a document." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\DocumentPhoto` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a photo uploaded as a document. + + + +## Properties +* `$hasStickers`: `bool` If true; the current media has attached mask stickers. +* `$width`: `int` +* `$height`: `int` +* `$size`: `int` Media filesize +* `$fileName`: `string` Media file name +* `$fileExt`: `string` Media file extension +* `$creationDate`: `int` Media creation date +* `$mimeType`: `string` Media MIME type +* `$ttl`: `?int` Time-to-live of media +* `$thumbs`: `list` Thumbnails +* `$videoThumbs`: `list` Video thumbnails +* `$spoiler`: `bool` Whether the media should be hidden behind a spoiler +* `$botApiFileId`: `string` File ID in bot API format (always present even for users) +* `$botApiFileUniqueId`: `string` Unique file ID in bot API format (always present even for users) +* `$encrypted`: `bool` Whether this media originates from a secret chat. +* `$thumb`: `?danog\MadelineProto\TL\Types\Bytes` Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90) only for secret chats. +* `$thumbHeight`: `?int` Thumbnail height only for secret chats. +* `$thumbWidth`: `?int` Thumbnail width only for secret chats. +* `$protected`: `bool` Whether this media is protected + +## Method list: +* [`getDownloadLink((string|null) $scriptUrl = NULL): string`](#getDownloadLink) +* [`getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToDir) +* [`downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToFile) +* [`getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}`](#getDownloadInfo) + +## Methods: +### `getDownloadLink((string|null) $scriptUrl = NULL): string` + +Gets a download link for any file up to 4GB. + + +Parameters: + +* `$scriptUrl`: `(string|null)` Optional path to custom download script (not needed when running via web) + + + +### `getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Get a readable amp stream with the file contents. + + +Parameters: + +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$offset`: `int` +* `$end`: `int` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to working directory or passed path. + + +Parameters: + +* `$dir`: `string` Directory where to download the file +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to file. + + +Parameters: + +* `$file`: `string` Downloaded file path +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/GeoPoint.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/GeoPoint.md new file mode 100644 index 0000000000..c50ced084a --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/GeoPoint.md @@ -0,0 +1,40 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\GeoPoint: " +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\GeoPoint` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + + + + + +## Properties +* `$long`: `int` Longitude +* `$lat`: `int` Latitude +* `$accessHash`: `int` Access hash +* `$accuracyRadius`: `int` The estimated horizontal accuracy of the location, in meters; as defined by the sender. + +## Method list: +* [`__construct(array $rawGeoPoint)`](#__construct) + +## Methods: +### `__construct(array $rawGeoPoint)` + + + + +Parameters: + +* `$rawGeoPoint`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/Gif.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/Gif.md new file mode 100644 index 0000000000..9038d3f5b8 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/Gif.md @@ -0,0 +1,137 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\Gif: Represents a GIF (or an MPEG4 file without sound)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\Gif` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a GIF (or an MPEG4 file without sound). + + + +## Properties +* `$hasStickers`: `bool` If true; the current media has attached mask stickers. +* `$duration`: `float` Video duration in seconds +* `$supportsStreaming`: `bool` Whether the video supports streaming +* `$width`: `int` Video width +* `$height`: `int` Video height +* `$size`: `int` Media filesize +* `$fileName`: `string` Media file name +* `$fileExt`: `string` Media file extension +* `$creationDate`: `int` Media creation date +* `$mimeType`: `string` Media MIME type +* `$ttl`: `?int` Time-to-live of media +* `$thumbs`: `list` Thumbnails +* `$videoThumbs`: `list` Video thumbnails +* `$spoiler`: `bool` Whether the media should be hidden behind a spoiler +* `$botApiFileId`: `string` File ID in bot API format (always present even for users) +* `$botApiFileUniqueId`: `string` Unique file ID in bot API format (always present even for users) +* `$encrypted`: `bool` Whether this media originates from a secret chat. +* `$thumb`: `?danog\MadelineProto\TL\Types\Bytes` Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90) only for secret chats. +* `$thumbHeight`: `?int` Thumbnail height only for secret chats. +* `$thumbWidth`: `?int` Thumbnail width only for secret chats. +* `$protected`: `bool` Whether this media is protected + +## Method list: +* [`save(): bool`](#save) +* [`unsave(): bool`](#unsave) +* [`getDownloadLink((string|null) $scriptUrl = NULL): string`](#getDownloadLink) +* [`getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToDir) +* [`downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToFile) +* [`getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}`](#getDownloadInfo) + +## Methods: +### `save(): bool` + +Add GIF to saved gifs list. + + + +### `unsave(): bool` + +Remove GIF from saved gifs list. + + + +### `getDownloadLink((string|null) $scriptUrl = NULL): string` + +Gets a download link for any file up to 4GB. + + +Parameters: + +* `$scriptUrl`: `(string|null)` Optional path to custom download script (not needed when running via web) + + + +### `getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Get a readable amp stream with the file contents. + + +Parameters: + +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$offset`: `int` +* `$end`: `int` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to working directory or passed path. + + +Parameters: + +* `$dir`: `string` Directory where to download the file +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to file. + + +Parameters: + +* `$file`: `string` Downloaded file path +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/MaskPosition.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/MaskPosition.md new file mode 100644 index 0000000000..734b7b17b4 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/MaskPosition.md @@ -0,0 +1,67 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\MaskPosition: Position of the mask" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\MaskPosition` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Position of the mask + + + + +## Constants +* `danog\MadelineProto\EventHandler\Media\MaskPosition::Forehead`: + +* `danog\MadelineProto\EventHandler\Media\MaskPosition::Eyes`: + +* `danog\MadelineProto\EventHandler\Media\MaskPosition::Mouth`: + +* `danog\MadelineProto\EventHandler\Media\MaskPosition::Chin`: + +## Properties +* `$name`: `string` +* `$value`: `int` + +## Method list: +* [`cases(): array`](#cases) +* [`from(string|int $value): static`](#from) +* [`tryFrom(string|int $value): ?static`](#tryFrom) + +## Methods: +### `cases(): array` + + + + + +### `from(string|int $value): static` + + + + +Parameters: + +* `$value`: `string|int` + + + +### `tryFrom(string|int $value): ?static` + + + + +Parameters: + +* `$value`: `string|int` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/MaskSticker.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/MaskSticker.md new file mode 100644 index 0000000000..655c3f03f1 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/MaskSticker.md @@ -0,0 +1,132 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\MaskSticker: Represents a mask sticker." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\MaskSticker` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a mask sticker. + + + +## Properties +* `$position`: `danog\MadelineProto\EventHandler\Media\MaskPosition` Part of the face, relative to which the mask should be placed. +* `$x`: `float` Shift by X-axis measured in widths of the mask scaled to the face size, from left to right. + +For example, -1.0 will place the mask just to the left of the default mask position. +* `$y`: `float` Shift by Y-axis measured in widths of the mask scaled to the face size, from left to right. + +For example, -1.0 will place the mask just below the default mask position. +* `$zoom`: `float` Mask scaling coefficient. + +For example, 2.0 means a doubled size. +* `$emoji`: `string` Emoji representation of sticker +* `$stickerset`: `array` Associated stickerset +* `$width`: `?int` +* `$height`: `?int` +* `$size`: `int` Media filesize +* `$fileName`: `string` Media file name +* `$fileExt`: `string` Media file extension +* `$creationDate`: `int` Media creation date +* `$mimeType`: `string` Media MIME type +* `$ttl`: `?int` Time-to-live of media +* `$thumbs`: `list` Thumbnails +* `$videoThumbs`: `list` Video thumbnails +* `$spoiler`: `bool` Whether the media should be hidden behind a spoiler +* `$botApiFileId`: `string` File ID in bot API format (always present even for users) +* `$botApiFileUniqueId`: `string` Unique file ID in bot API format (always present even for users) +* `$encrypted`: `bool` Whether this media originates from a secret chat. +* `$thumb`: `?danog\MadelineProto\TL\Types\Bytes` Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90) only for secret chats. +* `$thumbHeight`: `?int` Thumbnail height only for secret chats. +* `$thumbWidth`: `?int` Thumbnail width only for secret chats. +* `$protected`: `bool` Whether this media is protected + +## Method list: +* [`getDownloadLink((string|null) $scriptUrl = NULL): string`](#getDownloadLink) +* [`getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToDir) +* [`downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToFile) +* [`getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}`](#getDownloadInfo) + +## Methods: +### `getDownloadLink((string|null) $scriptUrl = NULL): string` + +Gets a download link for any file up to 4GB. + + +Parameters: + +* `$scriptUrl`: `(string|null)` Optional path to custom download script (not needed when running via web) + + + +### `getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Get a readable amp stream with the file contents. + + +Parameters: + +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$offset`: `int` +* `$end`: `int` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to working directory or passed path. + + +Parameters: + +* `$dir`: `string` Directory where to download the file +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to file. + + +Parameters: + +* `$file`: `string` Downloaded file path +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/MediaStory.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/MediaStory.md new file mode 100644 index 0000000000..b273a7f65b --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/MediaStory.md @@ -0,0 +1,39 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\MediaStory: Represents a forwarded story." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\MediaStory` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a forwarded story. + + + +## Properties +* `$viaMention`: `bool` +* `$senderId`: `int` +* `$storyId`: `int` + +## Method list: +* [`getStory(): ?\danog\MadelineProto\EventHandler\AbstractStory`](#getStory) + +## Methods: +### `getStory(): ?\danog\MadelineProto\EventHandler\AbstractStory` + +Get story. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/Photo.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/Photo.md new file mode 100644 index 0000000000..ef49e7de56 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/Photo.md @@ -0,0 +1,119 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\Photo: Represents a photo." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\Photo` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a photo. + + + +## Properties +* `$hasStickers`: `bool` If true; the current media has attached mask stickers. +* `$size`: `int` Media filesize +* `$fileName`: `string` Media file name +* `$fileExt`: `string` Media file extension +* `$creationDate`: `int` Media creation date +* `$mimeType`: `string` Media MIME type +* `$ttl`: `?int` Time-to-live of media +* `$thumbs`: `list` Thumbnails +* `$videoThumbs`: `list` Video thumbnails +* `$spoiler`: `bool` Whether the media should be hidden behind a spoiler +* `$botApiFileId`: `string` File ID in bot API format (always present even for users) +* `$botApiFileUniqueId`: `string` Unique file ID in bot API format (always present even for users) +* `$encrypted`: `bool` Whether this media originates from a secret chat. +* `$thumb`: `?danog\MadelineProto\TL\Types\Bytes` Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90) only for secret chats. +* `$thumbHeight`: `?int` Thumbnail height only for secret chats. +* `$thumbWidth`: `?int` Thumbnail width only for secret chats. +* `$protected`: `bool` Whether this media is protected + +## Method list: +* [`getDownloadLink((string|null) $scriptUrl = NULL): string`](#getDownloadLink) +* [`getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToDir) +* [`downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToFile) +* [`getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}`](#getDownloadInfo) + +## Methods: +### `getDownloadLink((string|null) $scriptUrl = NULL): string` + +Gets a download link for any file up to 4GB. + + +Parameters: + +* `$scriptUrl`: `(string|null)` Optional path to custom download script (not needed when running via web) + + + +### `getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Get a readable amp stream with the file contents. + + +Parameters: + +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$offset`: `int` +* `$end`: `int` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to working directory or passed path. + + +Parameters: + +* `$dir`: `string` Directory where to download the file +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to file. + + +Parameters: + +* `$file`: `string` Downloaded file path +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/RoundVideo.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/RoundVideo.md new file mode 100644 index 0000000000..cade80f99f --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/RoundVideo.md @@ -0,0 +1,122 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\RoundVideo: Represents a round video." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\RoundVideo` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a round video. + + + +## Properties +* `$duration`: `float` Video duration in seconds +* `$supportsStreaming`: `bool` Whether the video supports streaming +* `$width`: `int` Video width +* `$height`: `int` Video height +* `$size`: `int` Media filesize +* `$fileName`: `string` Media file name +* `$fileExt`: `string` Media file extension +* `$creationDate`: `int` Media creation date +* `$mimeType`: `string` Media MIME type +* `$ttl`: `?int` Time-to-live of media +* `$thumbs`: `list` Thumbnails +* `$videoThumbs`: `list` Video thumbnails +* `$spoiler`: `bool` Whether the media should be hidden behind a spoiler +* `$botApiFileId`: `string` File ID in bot API format (always present even for users) +* `$botApiFileUniqueId`: `string` Unique file ID in bot API format (always present even for users) +* `$encrypted`: `bool` Whether this media originates from a secret chat. +* `$thumb`: `?danog\MadelineProto\TL\Types\Bytes` Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90) only for secret chats. +* `$thumbHeight`: `?int` Thumbnail height only for secret chats. +* `$thumbWidth`: `?int` Thumbnail width only for secret chats. +* `$protected`: `bool` Whether this media is protected + +## Method list: +* [`getDownloadLink((string|null) $scriptUrl = NULL): string`](#getDownloadLink) +* [`getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToDir) +* [`downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToFile) +* [`getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}`](#getDownloadInfo) + +## Methods: +### `getDownloadLink((string|null) $scriptUrl = NULL): string` + +Gets a download link for any file up to 4GB. + + +Parameters: + +* `$scriptUrl`: `(string|null)` Optional path to custom download script (not needed when running via web) + + + +### `getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Get a readable amp stream with the file contents. + + +Parameters: + +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$offset`: `int` +* `$end`: `int` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to working directory or passed path. + + +Parameters: + +* `$dir`: `string` Directory where to download the file +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to file. + + +Parameters: + +* `$file`: `string` Downloaded file path +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/StaticSticker.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/StaticSticker.md new file mode 100644 index 0000000000..2bc890faf4 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/StaticSticker.md @@ -0,0 +1,123 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\StaticSticker: Represents a static sticker." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\StaticSticker` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a static sticker. + + + +## Properties +* `$premiumSticker`: `bool` Whether this is a premium sticker and a premium sticker animation must be played. +* `$emoji`: `string` Emoji representation of sticker +* `$stickerset`: `array` Associated stickerset +* `$width`: `?int` +* `$height`: `?int` +* `$size`: `int` Media filesize +* `$fileName`: `string` Media file name +* `$fileExt`: `string` Media file extension +* `$creationDate`: `int` Media creation date +* `$mimeType`: `string` Media MIME type +* `$ttl`: `?int` Time-to-live of media +* `$thumbs`: `list` Thumbnails +* `$videoThumbs`: `list` Video thumbnails +* `$spoiler`: `bool` Whether the media should be hidden behind a spoiler +* `$botApiFileId`: `string` File ID in bot API format (always present even for users) +* `$botApiFileUniqueId`: `string` Unique file ID in bot API format (always present even for users) +* `$encrypted`: `bool` Whether this media originates from a secret chat. +* `$thumb`: `?danog\MadelineProto\TL\Types\Bytes` Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90) only for secret chats. +* `$thumbHeight`: `?int` Thumbnail height only for secret chats. +* `$thumbWidth`: `?int` Thumbnail width only for secret chats. +* `$protected`: `bool` Whether this media is protected + +## Method list: +* [`getDownloadLink((string|null) $scriptUrl = NULL): string`](#getDownloadLink) +* [`getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToDir) +* [`downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToFile) +* [`getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}`](#getDownloadInfo) + +## Methods: +### `getDownloadLink((string|null) $scriptUrl = NULL): string` + +Gets a download link for any file up to 4GB. + + +Parameters: + +* `$scriptUrl`: `(string|null)` Optional path to custom download script (not needed when running via web) + + + +### `getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Get a readable amp stream with the file contents. + + +Parameters: + +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$offset`: `int` +* `$end`: `int` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to working directory or passed path. + + +Parameters: + +* `$dir`: `string` Directory where to download the file +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to file. + + +Parameters: + +* `$file`: `string` Downloaded file path +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/Sticker.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/Sticker.md new file mode 100644 index 0000000000..fa077fde53 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/Sticker.md @@ -0,0 +1,123 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\Sticker: Represents a sticker." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\Sticker` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a sticker. + + + +## Properties +* `$premiumSticker`: `bool` Whether this is a premium sticker and a premium sticker animation must be played. +* `$emoji`: `string` Emoji representation of sticker +* `$stickerset`: `array` Associated stickerset +* `$width`: `?int` +* `$height`: `?int` +* `$size`: `int` Media filesize +* `$fileName`: `string` Media file name +* `$fileExt`: `string` Media file extension +* `$creationDate`: `int` Media creation date +* `$mimeType`: `string` Media MIME type +* `$ttl`: `?int` Time-to-live of media +* `$thumbs`: `list` Thumbnails +* `$videoThumbs`: `list` Video thumbnails +* `$spoiler`: `bool` Whether the media should be hidden behind a spoiler +* `$botApiFileId`: `string` File ID in bot API format (always present even for users) +* `$botApiFileUniqueId`: `string` Unique file ID in bot API format (always present even for users) +* `$encrypted`: `bool` Whether this media originates from a secret chat. +* `$thumb`: `?danog\MadelineProto\TL\Types\Bytes` Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90) only for secret chats. +* `$thumbHeight`: `?int` Thumbnail height only for secret chats. +* `$thumbWidth`: `?int` Thumbnail width only for secret chats. +* `$protected`: `bool` Whether this media is protected + +## Method list: +* [`getDownloadLink((string|null) $scriptUrl = NULL): string`](#getDownloadLink) +* [`getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToDir) +* [`downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToFile) +* [`getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}`](#getDownloadInfo) + +## Methods: +### `getDownloadLink((string|null) $scriptUrl = NULL): string` + +Gets a download link for any file up to 4GB. + + +Parameters: + +* `$scriptUrl`: `(string|null)` Optional path to custom download script (not needed when running via web) + + + +### `getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Get a readable amp stream with the file contents. + + +Parameters: + +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$offset`: `int` +* `$end`: `int` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to working directory or passed path. + + +Parameters: + +* `$dir`: `string` Directory where to download the file +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to file. + + +Parameters: + +* `$file`: `string` Downloaded file path +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/Video.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/Video.md new file mode 100644 index 0000000000..5371ca5bf3 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/Video.md @@ -0,0 +1,123 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\Video: Represents a video." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\Video` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a video. + + + +## Properties +* `$hasStickers`: `bool` If true; the current media has attached mask stickers. +* `$duration`: `float` Video duration in seconds +* `$supportsStreaming`: `bool` Whether the video supports streaming +* `$width`: `int` Video width +* `$height`: `int` Video height +* `$size`: `int` Media filesize +* `$fileName`: `string` Media file name +* `$fileExt`: `string` Media file extension +* `$creationDate`: `int` Media creation date +* `$mimeType`: `string` Media MIME type +* `$ttl`: `?int` Time-to-live of media +* `$thumbs`: `list` Thumbnails +* `$videoThumbs`: `list` Video thumbnails +* `$spoiler`: `bool` Whether the media should be hidden behind a spoiler +* `$botApiFileId`: `string` File ID in bot API format (always present even for users) +* `$botApiFileUniqueId`: `string` Unique file ID in bot API format (always present even for users) +* `$encrypted`: `bool` Whether this media originates from a secret chat. +* `$thumb`: `?danog\MadelineProto\TL\Types\Bytes` Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90) only for secret chats. +* `$thumbHeight`: `?int` Thumbnail height only for secret chats. +* `$thumbWidth`: `?int` Thumbnail width only for secret chats. +* `$protected`: `bool` Whether this media is protected + +## Method list: +* [`getDownloadLink((string|null) $scriptUrl = NULL): string`](#getDownloadLink) +* [`getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToDir) +* [`downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToFile) +* [`getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}`](#getDownloadInfo) + +## Methods: +### `getDownloadLink((string|null) $scriptUrl = NULL): string` + +Gets a download link for any file up to 4GB. + + +Parameters: + +* `$scriptUrl`: `(string|null)` Optional path to custom download script (not needed when running via web) + + + +### `getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Get a readable amp stream with the file contents. + + +Parameters: + +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$offset`: `int` +* `$end`: `int` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to working directory or passed path. + + +Parameters: + +* `$dir`: `string` Directory where to download the file +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to file. + + +Parameters: + +* `$file`: `string` Downloaded file path +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/VideoSticker.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/VideoSticker.md new file mode 100644 index 0000000000..cb1c898e80 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/VideoSticker.md @@ -0,0 +1,124 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\VideoSticker: Represents a video sticker." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\VideoSticker` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a video sticker. + + + +## Properties +* `$duration`: `float` +* `$premiumSticker`: `bool` Whether this is a premium sticker and a premium sticker animation must be played. +* `$emoji`: `string` Emoji representation of sticker +* `$stickerset`: `array` Associated stickerset +* `$width`: `?int` +* `$height`: `?int` +* `$size`: `int` Media filesize +* `$fileName`: `string` Media file name +* `$fileExt`: `string` Media file extension +* `$creationDate`: `int` Media creation date +* `$mimeType`: `string` Media MIME type +* `$ttl`: `?int` Time-to-live of media +* `$thumbs`: `list` Thumbnails +* `$videoThumbs`: `list` Video thumbnails +* `$spoiler`: `bool` Whether the media should be hidden behind a spoiler +* `$botApiFileId`: `string` File ID in bot API format (always present even for users) +* `$botApiFileUniqueId`: `string` Unique file ID in bot API format (always present even for users) +* `$encrypted`: `bool` Whether this media originates from a secret chat. +* `$thumb`: `?danog\MadelineProto\TL\Types\Bytes` Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90) only for secret chats. +* `$thumbHeight`: `?int` Thumbnail height only for secret chats. +* `$thumbWidth`: `?int` Thumbnail width only for secret chats. +* `$protected`: `bool` Whether this media is protected + +## Method list: +* [`getDownloadLink((string|null) $scriptUrl = NULL): string`](#getDownloadLink) +* [`getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToDir) +* [`downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToFile) +* [`getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}`](#getDownloadInfo) + +## Methods: +### `getDownloadLink((string|null) $scriptUrl = NULL): string` + +Gets a download link for any file up to 4GB. + + +Parameters: + +* `$scriptUrl`: `(string|null)` Optional path to custom download script (not needed when running via web) + + + +### `getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Get a readable amp stream with the file contents. + + +Parameters: + +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$offset`: `int` +* `$end`: `int` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to working directory or passed path. + + +Parameters: + +* `$dir`: `string` Directory where to download the file +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to file. + + +Parameters: + +* `$file`: `string` Downloaded file path +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Media/Voice.md b/docs/PHP/danog/MadelineProto/EventHandler/Media/Voice.md new file mode 100644 index 0000000000..a80d8f0cfa --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Media/Voice.md @@ -0,0 +1,120 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Media\\Voice: Represents a voice message." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Media\Voice` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a voice message. + + + +## Properties +* `$waveform`: `(list> | null)` 100 values from 0 to 31, representing a waveform. +* `$duration`: `int` Audio duration in seconds +* `$size`: `int` Media filesize +* `$fileName`: `string` Media file name +* `$fileExt`: `string` Media file extension +* `$creationDate`: `int` Media creation date +* `$mimeType`: `string` Media MIME type +* `$ttl`: `?int` Time-to-live of media +* `$thumbs`: `list` Thumbnails +* `$videoThumbs`: `list` Video thumbnails +* `$spoiler`: `bool` Whether the media should be hidden behind a spoiler +* `$botApiFileId`: `string` File ID in bot API format (always present even for users) +* `$botApiFileUniqueId`: `string` Unique file ID in bot API format (always present even for users) +* `$encrypted`: `bool` Whether this media originates from a secret chat. +* `$thumb`: `?danog\MadelineProto\TL\Types\Bytes` Content of thumbnail file (JPEGfile, quality 55, set in a square 90x90) only for secret chats. +* `$thumbHeight`: `?int` Thumbnail height only for secret chats. +* `$thumbWidth`: `?int` Thumbnail width only for secret chats. +* `$protected`: `bool` Whether this media is protected + +## Method list: +* [`getDownloadLink((string|null) $scriptUrl = NULL): string`](#getDownloadLink) +* [`getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToDir) +* [`downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string`](#downloadToFile) +* [`getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}`](#getDownloadInfo) + +## Methods: +### `getDownloadLink((string|null) $scriptUrl = NULL): string` + +Gets a download link for any file up to 4GB. + + +Parameters: + +* `$scriptUrl`: `(string|null)` Optional path to custom download script (not needed when running via web) + + + +### `getStream((callable(float, float, float): voi)|null) $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Get a readable amp stream with the file contents. + + +Parameters: + +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$offset`: `int` +* `$end`: `int` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToDir(string $dir = NULL, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to working directory or passed path. + + +Parameters: + +* `$dir`: `string` Directory where to download the file +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `downloadToFile(string $file, (callable(float, float, float): voi)|null) $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): string` + +Download the media to file. + + +Parameters: + +* `$file`: `string` Downloaded file path +* `$cb`: `(callable(float, float, float): voi)|null)` Progress callback +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getDownloadInfo(): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string}` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message.md b/docs/PHP/danog/MadelineProto/EventHandler/Message.md new file mode 100644 index 0000000000..d8ac20bc54 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message.md @@ -0,0 +1,784 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message: Represents an incoming or outgoing message." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Represents an incoming or outgoing message. + + + +## Properties +* `$message`: `string` Content of the message +* `$fwdInfo`: `?danog\MadelineProto\EventHandler\ForwardedInfo` Info about a forwarded message +* `$command`: `?string` Bot command (if present) +* `$commandType`: `?danog\MadelineProto\EventHandler\CommandType` Bot command type (if present) +* `$commandArgs`: `list` Bot command arguments (if present) +* `$protected`: `bool` Whether this message is protected +* `$matches`: `list` +Regex matches, if a filter regex is present +* `$matchesAll`: `array | mixed)>` +Regex matches, if a filter multiple match regex is present +* `$media`: `(danog\MadelineProto\EventHandler\Media\Audio | danog\MadelineProto\EventHandler\Media\Document | danog\MadelineProto\EventHandler\Media\DocumentPhoto | danog\MadelineProto\EventHandler\Media\Gif | danog\MadelineProto\EventHandler\Media\MaskSticker | danog\MadelineProto\EventHandler\Media\Photo | danog\MadelineProto\EventHandler\Media\RoundVideo | danog\MadelineProto\EventHandler\Media\Sticker | danog\MadelineProto\EventHandler\Media\Video | danog\MadelineProto\EventHandler\Media\Voice | null)` Attached media. +* `$fromScheduled`: `bool` Whether this message is a *sent* scheduled message +* `$viaBotId`: `?int` If the message was generated by an inline query, ID of the bot that generated it +* `$editDate`: `?int` Last edit date of the message +* `$keyboard`: `(danog\MadelineProto\EventHandler\Keyboard\InlineKeyboard | danog\MadelineProto\EventHandler\Keyboard\ReplyKeyboard | null)` Inline or reply keyboard. +* `$imported`: `bool` Whether this message was [imported from a foreign chat service](https://core.telegram.org/api/import) +* `$psaType`: `?string` For Public Service Announcement messages, the PSA type +* `$nextSent`: `?self` +* `$views`: `?int` View counter for messages from channels or forwarded from channels +* `$forwards`: `?int` Forward counter for messages from channels or forwarded from channels +* `$signature`: `?string` Author of the post, if signatures are enabled for messages from channels or forwarded from channels +* `$entities`: `list` Message [entities](https://core.telegram.org/api/entities) for styled text +* `$groupedId`: `?int` Group ID for albums. + +All messages associated to the same album will have an identical grouped ID. +* `$poll`: `?danog\MadelineProto\EventHandler\AbstractPoll` The poll +* `$scheduled`: `bool` Whether this message is a scheduled message +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`pin(bool $pmOneside = false, bool $silent = false): void`](#pin) +* [`unpin(bool $pmOneside = false, bool $silent = false): ?\danog\MadelineProto\EventHandler\Update`](#unpin) +* [`getOurReactions(): list<(string|int)>`](#getOurReactions) +* [`report(\danog\MadelineProto\EventHandler\Message\ReportReason $reason, string $message): bool`](#report) +* [`saveContact(string $firstName, (string|null) $lastName = NULL, (string|null) $phoneNumber = NULL, bool $addPhonePrivacyException = false): void`](#saveContact) +* [`removeContact(): void`](#removeContact) +* [`inviteToChannel((string|int) $channel): void`](#inviteToChannel) +* [`addReaction((string|int) $reaction, bool $big = false, bool $addToRecent = true): list<(string|int)>`](#addReaction) +* [`delReaction((string|int) $reaction): list<(string|int)>`](#delReaction) +* [`translate(string $toLang): string`](#translate) +* [`editText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message`](#editText) +* [`editReplyMarkup(array $replyMarkup): \danog\MadelineProto\EventHandler\Message`](#editReplyMarkup) +* [`replyOrEdit(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message`](#replyOrEdit) +* [`forward((integer|string) $peer, list $id = [], bool $dropAuthor = false, bool $dropCaption = false, int $topicId = 1, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $score = false, (integer|null) $scheduleDate = NULL, (integer|string|null) $sendAs = NULL): non-empty-list<\danog\MadelineProto\EventHandler\Message>`](#forward) +* [`getHTML(bool $allowTelegramTags = false): string`](#getHTML) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `pin(bool $pmOneside = false, bool $silent = false): void` + +Pin a message. + + +Parameters: + +* `$pmOneside`: `bool` Whether the message should only be pinned on the local side of a one-to-one chat +* `$silent`: `bool` Pin the message silently, without triggering a notification + + + +### `unpin(bool $pmOneside = false, bool $silent = false): ?\danog\MadelineProto\EventHandler\Update` + +Unpin a message. + + +Parameters: + +* `$pmOneside`: `bool` Whether the message should only be pinned on the local side of a one-to-one chat +* `$silent`: `bool` Pin the message silently, without triggering a notification + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `getOurReactions(): list<(string|int)>` + +Get our reactions on the message. + + + +### `report(\danog\MadelineProto\EventHandler\Message\ReportReason $reason, string $message): bool` + +Report a message in a chat for violation of telegram’s Terms of Service. + + +Parameters: + +* `$reason`: `\danog\MadelineProto\EventHandler\Message\ReportReason` Why are these messages being reported +* `$message`: `string` Comment for report moderation + + +#### See also: +* [\danog\MadelineProto\EventHandler\Message\ReportReason](../../../danog/MadelineProto/EventHandler/Message/ReportReason.html) + + + + +### `saveContact(string $firstName, (string|null) $lastName = NULL, (string|null) $phoneNumber = NULL, bool $addPhonePrivacyException = false): void` + +Save message sender to your account contacts. + + +Parameters: + +* `$firstName`: `string` First name +* `$lastName`: `(string|null)` Last name +* `$phoneNumber`: `(string|null)` Telegram ID of the other user +* `$addPhonePrivacyException`: `bool` Allow the other user to see our phone number? + + + +### `removeContact(): void` + +Remove message sender from your account contacts. + + + +### `inviteToChannel((string|int) $channel): void` + +Invite message sender to requested channel. + + +Parameters: + +* `$channel`: `(string|int)` Username, Channel ID + + + +### `addReaction((string|int) $reaction, bool $big = false, bool $addToRecent = true): list<(string|int)>` + +Add reaction to message. + + +Parameters: + +* `$reaction`: `(string|int)` reaction +* `$big`: `bool` Whether a bigger and longer reaction should be shown +* `$addToRecent`: `bool` Add this reaction to the recent reactions list. + + + +### `delReaction((string|int) $reaction): list<(string|int)>` + +Delete reaction from message. + + +Parameters: + +* `$reaction`: `(string|int)` string or int Reaction + + + +### `translate(string $toLang): string` + +Translate text message(for media translate it caption). + + +Parameters: + +* `$toLang`: `string` Two-letter ISO 639-1 language code of the language to which the message is translated + + + +### `editText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message` + +Edit message text. + + +Parameters: + +* `$message`: `string` New message +* `$parseMode`: `\danog\MadelineProto\ParseMode` Whether to parse HTML or Markdown markup in the message +* `$replyMarkup`: `(array|null)` Reply markup for inline keyboards +* `$scheduleDate`: `(int|null)` Scheduled message date for scheduled messages +* `$noWebpage`: `bool` Disable webpage preview + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) + + + + +### `editReplyMarkup(array $replyMarkup): \danog\MadelineProto\EventHandler\Message` + +Edit message keyboard. + + +Parameters: + +* `$replyMarkup`: `array` Reply markup for inline keyboards + + + +### `replyOrEdit(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message` + +If the message is outgoing, will edit the message's text, otherwise will reply to the message. + + +Parameters: + +* `$message`: `string` New message +* `$parseMode`: `\danog\MadelineProto\ParseMode` Whether to parse HTML or Markdown markup in the message +* `$replyMarkup`: `(array|null)` Reply markup for inline keyboards +* `$scheduleDate`: `(int|null)` Scheduled message date for scheduled messages +* `$noWebpage`: `bool` Disable webpage preview + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) + + + + +### `forward((integer|string) $peer, list $id = [], bool $dropAuthor = false, bool $dropCaption = false, int $topicId = 1, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $score = false, (integer|null) $scheduleDate = NULL, (integer|string|null) $sendAs = NULL): non-empty-list<\danog\MadelineProto\EventHandler\Message>` + +Forwards messages by their IDs. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer +* `$id`: `list` IDs of messages +* `$dropAuthor`: `bool` Whether to forward messages without quoting the original author +* `$dropCaption`: `bool` Whether to strip captions from media +* `$topicId`: `int` Destination [forum topic](https://core.telegram.org/api/forum#forum-topics) +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$score`: `boolean` When forwarding games, whether to include your score in the game +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. + + +#### See also: +* `non-empty-list` + + + + +### `getHTML(bool $allowTelegramTags = false): string` + +Get an HTML version of the message. + + +Parameters: + +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/ChannelMessage.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/ChannelMessage.md new file mode 100644 index 0000000000..690b8b50fa --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/ChannelMessage.md @@ -0,0 +1,868 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\ChannelMessage: Represents an incoming or outgoing channel message." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\ChannelMessage` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents an incoming or outgoing channel message. + + + +## Properties +* `$message`: `string` Content of the message +* `$fwdInfo`: `?danog\MadelineProto\EventHandler\ForwardedInfo` Info about a forwarded message +* `$command`: `?string` Bot command (if present) +* `$commandType`: `?danog\MadelineProto\EventHandler\CommandType` Bot command type (if present) +* `$commandArgs`: `list` Bot command arguments (if present) +* `$protected`: `bool` Whether this message is protected +* `$matches`: `list` +Regex matches, if a filter regex is present +* `$matchesAll`: `array | mixed)>` +Regex matches, if a filter multiple match regex is present +* `$media`: `(danog\MadelineProto\EventHandler\Media\Audio | danog\MadelineProto\EventHandler\Media\Document | danog\MadelineProto\EventHandler\Media\DocumentPhoto | danog\MadelineProto\EventHandler\Media\Gif | danog\MadelineProto\EventHandler\Media\MaskSticker | danog\MadelineProto\EventHandler\Media\Photo | danog\MadelineProto\EventHandler\Media\RoundVideo | danog\MadelineProto\EventHandler\Media\Sticker | danog\MadelineProto\EventHandler\Media\Video | danog\MadelineProto\EventHandler\Media\Voice | null)` Attached media. +* `$fromScheduled`: `bool` Whether this message is a *sent* scheduled message +* `$viaBotId`: `?int` If the message was generated by an inline query, ID of the bot that generated it +* `$editDate`: `?int` Last edit date of the message +* `$keyboard`: `(danog\MadelineProto\EventHandler\Keyboard\InlineKeyboard | danog\MadelineProto\EventHandler\Keyboard\ReplyKeyboard | null)` Inline or reply keyboard. +* `$imported`: `bool` Whether this message was [imported from a foreign chat service](https://core.telegram.org/api/import) +* `$psaType`: `?string` For Public Service Announcement messages, the PSA type +* `$nextSent`: `?self` +* `$views`: `?int` View counter for messages from channels or forwarded from channels +* `$forwards`: `?int` Forward counter for messages from channels or forwarded from channels +* `$signature`: `?string` Author of the post, if signatures are enabled for messages from channels or forwarded from channels +* `$entities`: `list` Message [entities](https://core.telegram.org/api/entities) for styled text +* `$groupedId`: `?int` Group ID for albums. + +All messages associated to the same album will have an identical grouped ID. +* `$poll`: `?danog\MadelineProto\EventHandler\AbstractPoll` The poll +* `$scheduled`: `bool` Whether this message is a scheduled message +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`getDiscussion(): ?\danog\MadelineProto\EventHandler\Message\GroupMessage`](#getDiscussion) +* [`disableSignatures(): void`](#disableSignatures) +* [`enableSignatures(): void`](#enableSignatures) +* [`getMember((string|integer) $member): \danog\MadelineProto\EventHandler\Participant`](#getMember) +* [`view(): void`](#view) +* [`hideHistory(): void`](#hideHistory) +* [`unhideHistory(): void`](#unhideHistory) +* [`enableProtection(): void`](#enableProtection) +* [`disableProtection(): void`](#disableProtection) +* [`pin(bool $pmOneside = false, bool $silent = false): void`](#pin) +* [`unpin(bool $pmOneside = false, bool $silent = false): ?\danog\MadelineProto\EventHandler\Update`](#unpin) +* [`getOurReactions(): list<(string|int)>`](#getOurReactions) +* [`report(\danog\MadelineProto\EventHandler\Message\ReportReason $reason, string $message): bool`](#report) +* [`saveContact(string $firstName, (string|null) $lastName = NULL, (string|null) $phoneNumber = NULL, bool $addPhonePrivacyException = false): void`](#saveContact) +* [`removeContact(): void`](#removeContact) +* [`inviteToChannel((string|int) $channel): void`](#inviteToChannel) +* [`addReaction((string|int) $reaction, bool $big = false, bool $addToRecent = true): list<(string|int)>`](#addReaction) +* [`delReaction((string|int) $reaction): list<(string|int)>`](#delReaction) +* [`translate(string $toLang): string`](#translate) +* [`editText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message`](#editText) +* [`editReplyMarkup(array $replyMarkup): \danog\MadelineProto\EventHandler\Message`](#editReplyMarkup) +* [`replyOrEdit(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message`](#replyOrEdit) +* [`forward((integer|string) $peer, list $id = [], bool $dropAuthor = false, bool $dropCaption = false, int $topicId = 1, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $score = false, (integer|null) $scheduleDate = NULL, (integer|string|null) $sendAs = NULL): non-empty-list<\danog\MadelineProto\EventHandler\Message>`](#forward) +* [`getHTML(bool $allowTelegramTags = false): string`](#getHTML) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `getDiscussion(): ?\danog\MadelineProto\EventHandler\Message\GroupMessage` + +Obtains the copy of the current message, that was sent to the linked group. + +Can be used to reply in the comment section, for example: + +```php +$update->getDiscussion()->reply("Comment"); +``` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\GroupMessage`: Represents an incoming or outgoing group message.](../../../../danog/MadelineProto/EventHandler/Message/GroupMessage.html) + + + + +### `disableSignatures(): void` + +Disable message signatures in channels. + + + +### `enableSignatures(): void` + +Enable message signatures in channels. + + + +### `getMember((string|integer) $member): \danog\MadelineProto\EventHandler\Participant` + +Get info about a [channel/supergroup](https://core.telegram.org/api/channel) participant. + + +Parameters: + +* `$member`: `(string|integer)` Participant to get info about. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Participant`: Info about a channel participant.](../../../../danog/MadelineProto/EventHandler/Participant.html) + + + + +### `view(): void` + +Increase the view counter of a current message in the channel. + + + +### `hideHistory(): void` + +Hide message history for new channel users. + + + +### `unhideHistory(): void` + +Unhide message history for new channel users. + + + +### `enableProtection(): void` + +Enable [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) on a channel. + + + +### `disableProtection(): void` + +Disable [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) on a channel. + + + +### `pin(bool $pmOneside = false, bool $silent = false): void` + +Pin a message. + + +Parameters: + +* `$pmOneside`: `bool` Whether the message should only be pinned on the local side of a one-to-one chat +* `$silent`: `bool` Pin the message silently, without triggering a notification + + + +### `unpin(bool $pmOneside = false, bool $silent = false): ?\danog\MadelineProto\EventHandler\Update` + +Unpin a message. + + +Parameters: + +* `$pmOneside`: `bool` Whether the message should only be pinned on the local side of a one-to-one chat +* `$silent`: `bool` Pin the message silently, without triggering a notification + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `getOurReactions(): list<(string|int)>` + +Get our reactions on the message. + + + +### `report(\danog\MadelineProto\EventHandler\Message\ReportReason $reason, string $message): bool` + +Report a message in a chat for violation of telegram’s Terms of Service. + + +Parameters: + +* `$reason`: `\danog\MadelineProto\EventHandler\Message\ReportReason` Why are these messages being reported +* `$message`: `string` Comment for report moderation + + +#### See also: +* [\danog\MadelineProto\EventHandler\Message\ReportReason](../../../../danog/MadelineProto/EventHandler/Message/ReportReason.html) + + + + +### `saveContact(string $firstName, (string|null) $lastName = NULL, (string|null) $phoneNumber = NULL, bool $addPhonePrivacyException = false): void` + +Save message sender to your account contacts. + + +Parameters: + +* `$firstName`: `string` First name +* `$lastName`: `(string|null)` Last name +* `$phoneNumber`: `(string|null)` Telegram ID of the other user +* `$addPhonePrivacyException`: `bool` Allow the other user to see our phone number? + + + +### `removeContact(): void` + +Remove message sender from your account contacts. + + + +### `inviteToChannel((string|int) $channel): void` + +Invite message sender to requested channel. + + +Parameters: + +* `$channel`: `(string|int)` Username, Channel ID + + + +### `addReaction((string|int) $reaction, bool $big = false, bool $addToRecent = true): list<(string|int)>` + +Add reaction to message. + + +Parameters: + +* `$reaction`: `(string|int)` reaction +* `$big`: `bool` Whether a bigger and longer reaction should be shown +* `$addToRecent`: `bool` Add this reaction to the recent reactions list. + + + +### `delReaction((string|int) $reaction): list<(string|int)>` + +Delete reaction from message. + + +Parameters: + +* `$reaction`: `(string|int)` string or int Reaction + + + +### `translate(string $toLang): string` + +Translate text message(for media translate it caption). + + +Parameters: + +* `$toLang`: `string` Two-letter ISO 639-1 language code of the language to which the message is translated + + + +### `editText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message` + +Edit message text. + + +Parameters: + +* `$message`: `string` New message +* `$parseMode`: `\danog\MadelineProto\ParseMode` Whether to parse HTML or Markdown markup in the message +* `$replyMarkup`: `(array|null)` Reply markup for inline keyboards +* `$scheduleDate`: `(int|null)` Scheduled message date for scheduled messages +* `$noWebpage`: `bool` Disable webpage preview + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) + + + + +### `editReplyMarkup(array $replyMarkup): \danog\MadelineProto\EventHandler\Message` + +Edit message keyboard. + + +Parameters: + +* `$replyMarkup`: `array` Reply markup for inline keyboards + + + +### `replyOrEdit(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message` + +If the message is outgoing, will edit the message's text, otherwise will reply to the message. + + +Parameters: + +* `$message`: `string` New message +* `$parseMode`: `\danog\MadelineProto\ParseMode` Whether to parse HTML or Markdown markup in the message +* `$replyMarkup`: `(array|null)` Reply markup for inline keyboards +* `$scheduleDate`: `(int|null)` Scheduled message date for scheduled messages +* `$noWebpage`: `bool` Disable webpage preview + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) + + + + +### `forward((integer|string) $peer, list $id = [], bool $dropAuthor = false, bool $dropCaption = false, int $topicId = 1, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $score = false, (integer|null) $scheduleDate = NULL, (integer|string|null) $sendAs = NULL): non-empty-list<\danog\MadelineProto\EventHandler\Message>` + +Forwards messages by their IDs. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer +* `$id`: `list` IDs of messages +* `$dropAuthor`: `bool` Whether to forward messages without quoting the original author +* `$dropCaption`: `bool` Whether to strip captions from media +* `$topicId`: `int` Destination [forum topic](https://core.telegram.org/api/forum#forum-topics) +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$score`: `boolean` When forwarding games, whether to include your score in the game +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. + + +#### See also: +* `non-empty-list` + + + + +### `getHTML(bool $allowTelegramTags = false): string` + +Get an HTML version of the message. + + +Parameters: + +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/BankCard.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/BankCard.md new file mode 100644 index 0000000000..1115c01149 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/BankCard.md @@ -0,0 +1,77 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\BankCard: Indicates a credit card number." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\BankCard` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Indicates a credit card number. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) + +## Method list: +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`__construct(int $offset, int $length)`](#__construct) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `__construct(int $offset, int $length)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Blockquote.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Blockquote.md new file mode 100644 index 0000000000..570ca1a726 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Blockquote.md @@ -0,0 +1,77 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\Blockquote: Message entity representing a block quote." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\Blockquote` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Message entity representing a block quote. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) + +## Method list: +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`__construct(int $offset, int $length)`](#__construct) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `__construct(int $offset, int $length)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Bold.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Bold.md new file mode 100644 index 0000000000..d7101803eb --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Bold.md @@ -0,0 +1,77 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\Bold: Message entity representing bold text." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\Bold` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Message entity representing bold text. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) + +## Method list: +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`__construct(int $offset, int $length)`](#__construct) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `__construct(int $offset, int $length)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/BotCommand.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/BotCommand.md new file mode 100644 index 0000000000..6a21ebf5f5 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/BotCommand.md @@ -0,0 +1,77 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\BotCommand: Message entity representing a bot /command." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\BotCommand` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Message entity representing a bot /command. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) + +## Method list: +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`__construct(int $offset, int $length)`](#__construct) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `__construct(int $offset, int $length)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Cashtag.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Cashtag.md new file mode 100644 index 0000000000..9f95a47a55 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Cashtag.md @@ -0,0 +1,77 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\Cashtag: Message entity representing a $cashtag." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\Cashtag` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Message entity representing a $cashtag. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) + +## Method list: +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`__construct(int $offset, int $length)`](#__construct) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `__construct(int $offset, int $length)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Code.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Code.md new file mode 100644 index 0000000000..591ef73565 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Code.md @@ -0,0 +1,77 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\Code: Message entity representing a codeblock." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\Code` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Message entity representing a codeblock. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) + +## Method list: +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`__construct(int $offset, int $length)`](#__construct) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `__construct(int $offset, int $length)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/CustomEmoji.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/CustomEmoji.md new file mode 100644 index 0000000000..84ece83fc8 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/CustomEmoji.md @@ -0,0 +1,79 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\CustomEmoji: Represents a custom emoji." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\CustomEmoji` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Represents a custom emoji. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) +* `$documentId`: `int` Document ID of the [custom emoji](https://core.telegram.org/api/custom-emoji). + +## Method list: +* [`__construct(int $offset, int $length, int $documentId)`](#__construct) +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `__construct(int $offset, int $length, int $documentId)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` +* `$documentId`: `int` + + + +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Email.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Email.md new file mode 100644 index 0000000000..f776a7d4d4 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Email.md @@ -0,0 +1,77 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\Email: Message entity representing an email@example.com." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\Email` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Message entity representing an email@example.com. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) + +## Method list: +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`__construct(int $offset, int $length)`](#__construct) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `__construct(int $offset, int $length)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Hashtag.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Hashtag.md new file mode 100644 index 0000000000..adc747b91f --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Hashtag.md @@ -0,0 +1,77 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\Hashtag: #hashtag message entity." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\Hashtag` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +#hashtag message entity. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) + +## Method list: +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`__construct(int $offset, int $length)`](#__construct) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `__construct(int $offset, int $length)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/InputMentionName.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/InputMentionName.md new file mode 100644 index 0000000000..bec40fc9ca --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/InputMentionName.md @@ -0,0 +1,79 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\InputMentionName: Message entity representing a [user mention](https://core.telegram.org/api/mentions) created by the user, not returned by the API." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\InputMentionName` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Message entity representing a [user mention](https://core.telegram.org/api/mentions) created by the user, not returned by the API. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) +* `$userId`: `(string | int)` Identifier of the user that was mentioned + +## Method list: +* [`__construct(int $offset, int $length, string|int $userId)`](#__construct) +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `__construct(int $offset, int $length, string|int $userId)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` +* `$userId`: `string|int` + + + +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Italic.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Italic.md new file mode 100644 index 0000000000..75137a06f1 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Italic.md @@ -0,0 +1,77 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\Italic: Message entity representing italic text." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\Italic` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Message entity representing italic text. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) + +## Method list: +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`__construct(int $offset, int $length)`](#__construct) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `__construct(int $offset, int $length)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Mention.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Mention.md new file mode 100644 index 0000000000..f30ca553d2 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Mention.md @@ -0,0 +1,77 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\Mention: Message entity mentioning the current user." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\Mention` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Message entity mentioning the current user. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) + +## Method list: +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`__construct(int $offset, int $length)`](#__construct) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `__construct(int $offset, int $length)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/MentionName.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/MentionName.md new file mode 100644 index 0000000000..eed3ed1e57 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/MentionName.md @@ -0,0 +1,79 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\MentionName: Message entity representing a [user mention](https://core.telegram.org/api/mentions)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\MentionName` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Message entity representing a [user mention](https://core.telegram.org/api/mentions). + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) +* `$userId`: `int` Identifier of the user that was mentioned + +## Method list: +* [`__construct(int $offset, int $length, int $userId)`](#__construct) +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `__construct(int $offset, int $length, int $userId)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` +* `$userId`: `int` + + + +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/MessageEntity.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/MessageEntity.md new file mode 100644 index 0000000000..c43f101711 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/MessageEntity.md @@ -0,0 +1,77 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\MessageEntity: Master class for message entities." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\MessageEntity` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Master class for message entities. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) + +## Method list: +* [`__construct(int $offset, int $length)`](#__construct) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) + +## Methods: +### `__construct(int $offset, int $length)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +### `toBotAPI(): array` + +Convert entity to bot API entity. + + + +### `toMTProto(): array` + +Convert entity to MTProto entity. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Phone.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Phone.md new file mode 100644 index 0000000000..dd3558282a --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Phone.md @@ -0,0 +1,77 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\Phone: Message entity representing a phone number." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\Phone` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Message entity representing a phone number. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) + +## Method list: +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`__construct(int $offset, int $length)`](#__construct) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `__construct(int $offset, int $length)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Pre.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Pre.md new file mode 100644 index 0000000000..b5796cad63 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Pre.md @@ -0,0 +1,79 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\Pre: Message entity representing a preformatted codeblock, allowing the user to specify a programming language for the codeblock." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\Pre` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Message entity representing a preformatted codeblock, allowing the user to specify a programming language for the codeblock. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) +* `$language`: `string` Programming language of the code + +## Method list: +* [`__construct(int $offset, int $length, string $language)`](#__construct) +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `__construct(int $offset, int $length, string $language)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` +* `$language`: `string` + + + +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Spoiler.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Spoiler.md new file mode 100644 index 0000000000..ad3907cd49 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Spoiler.md @@ -0,0 +1,77 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\Spoiler: Message entity representing a spoiler." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\Spoiler` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Message entity representing a spoiler. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) + +## Method list: +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`__construct(int $offset, int $length)`](#__construct) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `__construct(int $offset, int $length)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Strike.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Strike.md new file mode 100644 index 0000000000..e5ca206c2f --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Strike.md @@ -0,0 +1,77 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\Strike: Message entity representing strikethrough text." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\Strike` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Message entity representing strikethrough text. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) + +## Method list: +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`__construct(int $offset, int $length)`](#__construct) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `__construct(int $offset, int $length)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/TextUrl.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/TextUrl.md new file mode 100644 index 0000000000..db38aaf985 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/TextUrl.md @@ -0,0 +1,79 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\TextUrl: Message entity representing a text url: for in-text urls like https://google.com use Url." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\TextUrl` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Message entity representing a text url: for in-text urls like https://google.com use Url. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) +* `$url`: `string` The actual URL + +## Method list: +* [`__construct(int $offset, int $length, string $url)`](#__construct) +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `__construct(int $offset, int $length, string $url)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` +* `$url`: `string` + + + +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Underline.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Underline.md new file mode 100644 index 0000000000..1b79d7ece3 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Underline.md @@ -0,0 +1,77 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\Underline: Message entity representing underlined text." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\Underline` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Message entity representing underlined text. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) + +## Method list: +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`__construct(int $offset, int $length)`](#__construct) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `__construct(int $offset, int $length)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Url.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Url.md new file mode 100644 index 0000000000..ce0b67bed6 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Entities/Url.md @@ -0,0 +1,77 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Entities\\Url: Message entity representing an in-text url: https://google.com; for text urls, use TextUrl." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Entities\Url` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Message entity representing an in-text url: https://google.com; for text urls, use TextUrl. + + + +## Properties +* `$offset`: `int` Offset of message entity within message (in UTF-16 code units) +* `$length`: `int` Length of message entity within message (in UTF-16 code units) + +## Method list: +* [`toBotAPI(): array`](#toBotAPI) +* [`toMTProto(): array`](#toMTProto) +* [`__construct(int $offset, int $length)`](#__construct) +* [`fromRawEntities(list $entities): list`](#fromRawEntities) +* [`fromRawEntity(array $entity): self`](#fromRawEntity) + +## Methods: +### `toBotAPI(): array` + + + + + +### `toMTProto(): array` + + + + + +### `__construct(int $offset, int $length)` + + + + +Parameters: + +* `$offset`: `int` +* `$length`: `int` + + + +### `fromRawEntities(list $entities): list` + + + + +Parameters: + +* `$entities`: `list` + + + +### `fromRawEntity(array $entity): self` + + + + +Parameters: + +* `$entity`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/GroupMessage.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/GroupMessage.md new file mode 100644 index 0000000000..d4e2ddc33e --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/GroupMessage.md @@ -0,0 +1,1057 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\GroupMessage: Represents an incoming or outgoing group message." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\GroupMessage` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents an incoming or outgoing group message. + + + +## Properties +* `$message`: `string` Content of the message +* `$fwdInfo`: `?danog\MadelineProto\EventHandler\ForwardedInfo` Info about a forwarded message +* `$command`: `?string` Bot command (if present) +* `$commandType`: `?danog\MadelineProto\EventHandler\CommandType` Bot command type (if present) +* `$commandArgs`: `list` Bot command arguments (if present) +* `$protected`: `bool` Whether this message is protected +* `$matches`: `list` +Regex matches, if a filter regex is present +* `$matchesAll`: `array | mixed)>` +Regex matches, if a filter multiple match regex is present +* `$media`: `(danog\MadelineProto\EventHandler\Media\Audio | danog\MadelineProto\EventHandler\Media\Document | danog\MadelineProto\EventHandler\Media\DocumentPhoto | danog\MadelineProto\EventHandler\Media\Gif | danog\MadelineProto\EventHandler\Media\MaskSticker | danog\MadelineProto\EventHandler\Media\Photo | danog\MadelineProto\EventHandler\Media\RoundVideo | danog\MadelineProto\EventHandler\Media\Sticker | danog\MadelineProto\EventHandler\Media\Video | danog\MadelineProto\EventHandler\Media\Voice | null)` Attached media. +* `$fromScheduled`: `bool` Whether this message is a *sent* scheduled message +* `$viaBotId`: `?int` If the message was generated by an inline query, ID of the bot that generated it +* `$editDate`: `?int` Last edit date of the message +* `$keyboard`: `(danog\MadelineProto\EventHandler\Keyboard\InlineKeyboard | danog\MadelineProto\EventHandler\Keyboard\ReplyKeyboard | null)` Inline or reply keyboard. +* `$imported`: `bool` Whether this message was [imported from a foreign chat service](https://core.telegram.org/api/import) +* `$psaType`: `?string` For Public Service Announcement messages, the PSA type +* `$nextSent`: `?self` +* `$views`: `?int` View counter for messages from channels or forwarded from channels +* `$forwards`: `?int` Forward counter for messages from channels or forwarded from channels +* `$signature`: `?string` Author of the post, if signatures are enabled for messages from channels or forwarded from channels +* `$entities`: `list` Message [entities](https://core.telegram.org/api/entities) for styled text +* `$groupedId`: `?int` Group ID for albums. + +All messages associated to the same album will have an identical grouped ID. +* `$poll`: `?danog\MadelineProto\EventHandler\AbstractPoll` The poll +* `$scheduled`: `bool` Whether this message is a scheduled message +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`getMember((string|integer|null) $member = NULL): \danog\MadelineProto\EventHandler\Participant`](#getMember) +* [`hideMembers(): void`](#hideMembers) +* [`unhideMembers(): void`](#unhideMembers) +* [`hideHistory(): void`](#hideHistory) +* [`unhideHistory(): void`](#unhideHistory) +* [`ban(int $untilDate = 0): void`](#ban) +* [`unban(int $untilDate = 0): void`](#unban) +* [`kick(): void`](#kick) +* [`deleteAll(bool $forEveryone = true, int $maxId = 0): void`](#deleteAll) +* [`deleteUserMessages((string|integer|null) $member = NULL): void`](#deleteUserMessages) +* [`toSuperGroup(): integer`](#toSuperGroup) +* [`enableAntiSpam(): void`](#enableAntiSpam) +* [`disableAntiSpam(): void`](#disableAntiSpam) +* [`enableTopics(): void`](#enableTopics) +* [`disableTopics(): void`](#disableTopics) +* [`createTopic(string $title, (\danog\MadelineProto\EventHandler\Topic\IconColor|int) $icon = \danog\MadelineProto\EventHandler\Topic\IconColor::NONE): \danog\MadelineProto\EventHandler\Message\Service\DialogTopicCreated`](#createTopic) +* [`editTopic(string $title, integer $icon = 0, (integer|null) $topicId = NULL): \danog\MadelineProto\EventHandler\Message\Service\DialogTopicEdited`](#editTopic) +* [`openTopic((integer|null) $topicId = NULL): \danog\MadelineProto\EventHandler\Message\Service\DialogTopicEdited`](#openTopic) +* [`closeTopic((integer|null) $topicId = NULL): \danog\MadelineProto\EventHandler\Message\Service\DialogTopicEdited`](#closeTopic) +* [`deleteTopic((integer|null) $topicId = NULL): void`](#deleteTopic) +* [`enableSlowMode(integer $seconds): void`](#enableSlowMode) +* [`disableSlowMode(): void`](#disableSlowMode) +* [`enableProtection(): void`](#enableProtection) +* [`disableProtection(): void`](#disableProtection) +* [`enableJoinToComment(): void`](#enableJoinToComment) +* [`disableJoinToComment(): void`](#disableJoinToComment) +* [`pin(bool $pmOneside = false, bool $silent = false): void`](#pin) +* [`unpin(bool $pmOneside = false, bool $silent = false): ?\danog\MadelineProto\EventHandler\Update`](#unpin) +* [`getOurReactions(): list<(string|int)>`](#getOurReactions) +* [`report(\danog\MadelineProto\EventHandler\Message\ReportReason $reason, string $message): bool`](#report) +* [`saveContact(string $firstName, (string|null) $lastName = NULL, (string|null) $phoneNumber = NULL, bool $addPhonePrivacyException = false): void`](#saveContact) +* [`removeContact(): void`](#removeContact) +* [`inviteToChannel((string|int) $channel): void`](#inviteToChannel) +* [`addReaction((string|int) $reaction, bool $big = false, bool $addToRecent = true): list<(string|int)>`](#addReaction) +* [`delReaction((string|int) $reaction): list<(string|int)>`](#delReaction) +* [`translate(string $toLang): string`](#translate) +* [`editText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message`](#editText) +* [`editReplyMarkup(array $replyMarkup): \danog\MadelineProto\EventHandler\Message`](#editReplyMarkup) +* [`replyOrEdit(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message`](#replyOrEdit) +* [`forward((integer|string) $peer, list $id = [], bool $dropAuthor = false, bool $dropCaption = false, int $topicId = 1, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $score = false, (integer|null) $scheduleDate = NULL, (integer|string|null) $sendAs = NULL): non-empty-list<\danog\MadelineProto\EventHandler\Message>`](#forward) +* [`getHTML(bool $allowTelegramTags = false): string`](#getHTML) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `getMember((string|integer|null) $member = NULL): \danog\MadelineProto\EventHandler\Participant` + +Get info about a [channel/supergroup](https://core.telegram.org/api/channel) participant. + + +Parameters: + +* `$member`: `(string|integer|null)` Participant to get info about; can be empty or null to get info about the sender of the message. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Participant`: Info about a channel participant.](../../../../danog/MadelineProto/EventHandler/Participant.html) + + + + +### `hideMembers(): void` + +Hide the participants list in a [supergroup](https://core.telegram.org/api/channel). +The supergroup must have at least `hidden_members_group_size_min` participants in order to use this method, as specified by the [client configuration parameters »](https://core.telegram.org/api/config#client-configuration). + + + +### `unhideMembers(): void` + +Display the participants list in a [supergroup](https://core.telegram.org/api/channel). +The supergroup must have at least `hidden_members_group_size_min` participants in order to use this method, as specified by the [client configuration parameters »](https://core.telegram.org/api/config#client-configuration). + + + +### `hideHistory(): void` + +Hide message history for new supergroup users. + + + +### `unhideHistory(): void` + +Unhide message history for new supergroup users. + + + +### `ban(int $untilDate = 0): void` + +Ban message sender from current supergroup. + + +Parameters: + +* `$untilDate`: `int` Validity of said permissions (it is considered forever any value less then 30 seconds or more then 366 days). + + + +### `unban(int $untilDate = 0): void` + +Unban message sender from current supergroup. + + +Parameters: + +* `$untilDate`: `int` Validity of said permissions (it is considered forever any value less then 30 seconds or more then 366 days). + + + +### `kick(): void` + +Kick message sender from current supergroup. + + + +### `deleteAll(bool $forEveryone = true, int $maxId = 0): void` + +Delete all supergroup message. + + +Parameters: + +* `$forEveryone`: `bool` +* `$maxId`: `int` + + + +### `deleteUserMessages((string|integer|null) $member = NULL): void` + +Delete all messages sent by a specific participant of a given supergroup. + + +Parameters: + +* `$member`: `(string|integer|null)` The participant whose messages should be deleted, if null or absent defaults to the sender of the message. + + + +### `toSuperGroup(): integer` + +Turn a [basic group into a supergroup](https://core.telegram.org/api/channel#migration). + + +Return value: the channel id we migrated to + + +### `enableAntiSpam(): void` + +Enable the [native antispam system](https://core.telegram.org/api/antispam). + + + +### `disableAntiSpam(): void` + +Disable the [native antispam system](https://core.telegram.org/api/antispam). + + + +### `enableTopics(): void` + +Enable [forum functionality](https://core.telegram.org/api/forum) in a supergroup. + + + +### `disableTopics(): void` + +Disable [forum functionality](https://core.telegram.org/api/forum) in a supergroup. + + + +### `createTopic(string $title, (\danog\MadelineProto\EventHandler\Topic\IconColor|int) $icon = \danog\MadelineProto\EventHandler\Topic\IconColor::NONE): \danog\MadelineProto\EventHandler\Message\Service\DialogTopicCreated` + +Create a [forum topic](https://core.telegram.org/api/forum); requires [`manage_topics` rights](https://core.telegram.org/api/rights). + + +Parameters: + +* `$title`: `string` Topic title (maximum UTF-8 length: 128) +* `$icon`: `(\danog\MadelineProto\EventHandler\Topic\IconColor|int)` Icon color, or ID of the [custom emoji](https://core.telegram.org/api/custom-emoji) used as topic icon. + [Telegram Premium](https://core.telegram.org/api/premium) users can use any custom emoji, other users can only use the custom emojis contained in the [inputStickerSetEmojiDefaultTopicIcons](https://docs.madelineproto.xyz/API_docs/constructors/inputStickerSetEmojiDefaultTopicIcons.html) emoji pack. + If no custom emoji icon is specified, specifies the color of the fallback topic icon + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Topic\IconColor`: Specifies the color of the fallback topic icon (RGB) if no custom emoji icon is specified.](../../../../danog/MadelineProto/EventHandler/Topic/IconColor.html) +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogTopicCreated`: A [forum topic](https://core.telegram.org/api/forum#forum-topics) was created.](../../../../danog/MadelineProto/EventHandler/Message/Service/DialogTopicCreated.html) + + + + +### `editTopic(string $title, integer $icon = 0, (integer|null) $topicId = NULL): \danog\MadelineProto\EventHandler\Message\Service\DialogTopicEdited` + +Edit a [forum topic](https://core.telegram.org/api/forum); requires [`manage_topics` rights](https://core.telegram.org/api/rights). + + +Parameters: + +* `$title`: `string` Topic title (maximum UTF-8 length: 128) +* `$icon`: `integer` ID of the [custom emoji](https://core.telegram.org/api/custom-emoji) used as topic icon. [Telegram Premium](https://core.telegram.org/api/premium) users can use any custom emoji, other users can only use the custom emojis contained in the [inputStickerSetEmojiDefaultTopicIcons](https://docs.madelineproto.xyz/API_docs/constructors/inputStickerSetEmojiDefaultTopicIcons.html) emoji pack. Pass 0 to switch to the fallback topic icon. +* `$topicId`: `(integer|null)` Topic ID, if absent defaults to the topic where this message was sent. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogTopicEdited`: [Forum topic](https://core.telegram.org/api/forum#forum-topics) information was edited.](../../../../danog/MadelineProto/EventHandler/Message/Service/DialogTopicEdited.html) + + + + +### `openTopic((integer|null) $topicId = NULL): \danog\MadelineProto\EventHandler\Message\Service\DialogTopicEdited` + +Open a [forum topic](https://core.telegram.org/api/forum); requires [`manage_topics` rights](https://core.telegram.org/api/rights). + + +Parameters: + +* `$topicId`: `(integer|null)` Topic ID, if absent defaults to the topic where this message was sent. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogTopicEdited`: [Forum topic](https://core.telegram.org/api/forum#forum-topics) information was edited.](../../../../danog/MadelineProto/EventHandler/Message/Service/DialogTopicEdited.html) + + + + +### `closeTopic((integer|null) $topicId = NULL): \danog\MadelineProto\EventHandler\Message\Service\DialogTopicEdited` + +Close a [forum topic](https://core.telegram.org/api/forum); requires [`manage_topics` rights](https://core.telegram.org/api/rights). + + +Parameters: + +* `$topicId`: `(integer|null)` Topic ID, if absent defaults to the topic where this message was sent. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogTopicEdited`: [Forum topic](https://core.telegram.org/api/forum#forum-topics) information was edited.](../../../../danog/MadelineProto/EventHandler/Message/Service/DialogTopicEdited.html) + + + + +### `deleteTopic((integer|null) $topicId = NULL): void` + +Delete message history of a [forum topic](https://core.telegram.org/api/forum). + + +Parameters: + +* `$topicId`: `(integer|null)` Topic ID, if absent defaults to the topic where this message was sent. + + + +### `enableSlowMode(integer $seconds): void` + +Toggle supergroup slow mode: Users will only be able to send one message every `$seconds` seconds. + + +Parameters: + +* `$seconds`: `integer` Users will only be able to send one message every `$seconds` seconds + + + +### `disableSlowMode(): void` + +Disable supergroup slow mode. + + + +### `enableProtection(): void` + +Enable or disable [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) on a chat. + + + +### `disableProtection(): void` + +Enable or disable [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) on a chat. + + + +### `enableJoinToComment(): void` + +Enable to all users [should join a discussion group in order to comment on a post »](https://core.telegram.org/api/discussion#requiring-users-to-join-the-group). + + + +### `disableJoinToComment(): void` + +Disable to all users [should join a discussion group in order to comment on a post »](https://core.telegram.org/api/discussion#requiring-users-to-join-the-group). + + + +### `pin(bool $pmOneside = false, bool $silent = false): void` + +Pin a message. + + +Parameters: + +* `$pmOneside`: `bool` Whether the message should only be pinned on the local side of a one-to-one chat +* `$silent`: `bool` Pin the message silently, without triggering a notification + + + +### `unpin(bool $pmOneside = false, bool $silent = false): ?\danog\MadelineProto\EventHandler\Update` + +Unpin a message. + + +Parameters: + +* `$pmOneside`: `bool` Whether the message should only be pinned on the local side of a one-to-one chat +* `$silent`: `bool` Pin the message silently, without triggering a notification + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `getOurReactions(): list<(string|int)>` + +Get our reactions on the message. + + + +### `report(\danog\MadelineProto\EventHandler\Message\ReportReason $reason, string $message): bool` + +Report a message in a chat for violation of telegram’s Terms of Service. + + +Parameters: + +* `$reason`: `\danog\MadelineProto\EventHandler\Message\ReportReason` Why are these messages being reported +* `$message`: `string` Comment for report moderation + + +#### See also: +* [\danog\MadelineProto\EventHandler\Message\ReportReason](../../../../danog/MadelineProto/EventHandler/Message/ReportReason.html) + + + + +### `saveContact(string $firstName, (string|null) $lastName = NULL, (string|null) $phoneNumber = NULL, bool $addPhonePrivacyException = false): void` + +Save message sender to your account contacts. + + +Parameters: + +* `$firstName`: `string` First name +* `$lastName`: `(string|null)` Last name +* `$phoneNumber`: `(string|null)` Telegram ID of the other user +* `$addPhonePrivacyException`: `bool` Allow the other user to see our phone number? + + + +### `removeContact(): void` + +Remove message sender from your account contacts. + + + +### `inviteToChannel((string|int) $channel): void` + +Invite message sender to requested channel. + + +Parameters: + +* `$channel`: `(string|int)` Username, Channel ID + + + +### `addReaction((string|int) $reaction, bool $big = false, bool $addToRecent = true): list<(string|int)>` + +Add reaction to message. + + +Parameters: + +* `$reaction`: `(string|int)` reaction +* `$big`: `bool` Whether a bigger and longer reaction should be shown +* `$addToRecent`: `bool` Add this reaction to the recent reactions list. + + + +### `delReaction((string|int) $reaction): list<(string|int)>` + +Delete reaction from message. + + +Parameters: + +* `$reaction`: `(string|int)` string or int Reaction + + + +### `translate(string $toLang): string` + +Translate text message(for media translate it caption). + + +Parameters: + +* `$toLang`: `string` Two-letter ISO 639-1 language code of the language to which the message is translated + + + +### `editText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message` + +Edit message text. + + +Parameters: + +* `$message`: `string` New message +* `$parseMode`: `\danog\MadelineProto\ParseMode` Whether to parse HTML or Markdown markup in the message +* `$replyMarkup`: `(array|null)` Reply markup for inline keyboards +* `$scheduleDate`: `(int|null)` Scheduled message date for scheduled messages +* `$noWebpage`: `bool` Disable webpage preview + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) + + + + +### `editReplyMarkup(array $replyMarkup): \danog\MadelineProto\EventHandler\Message` + +Edit message keyboard. + + +Parameters: + +* `$replyMarkup`: `array` Reply markup for inline keyboards + + + +### `replyOrEdit(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message` + +If the message is outgoing, will edit the message's text, otherwise will reply to the message. + + +Parameters: + +* `$message`: `string` New message +* `$parseMode`: `\danog\MadelineProto\ParseMode` Whether to parse HTML or Markdown markup in the message +* `$replyMarkup`: `(array|null)` Reply markup for inline keyboards +* `$scheduleDate`: `(int|null)` Scheduled message date for scheduled messages +* `$noWebpage`: `bool` Disable webpage preview + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) + + + + +### `forward((integer|string) $peer, list $id = [], bool $dropAuthor = false, bool $dropCaption = false, int $topicId = 1, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $score = false, (integer|null) $scheduleDate = NULL, (integer|string|null) $sendAs = NULL): non-empty-list<\danog\MadelineProto\EventHandler\Message>` + +Forwards messages by their IDs. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer +* `$id`: `list` IDs of messages +* `$dropAuthor`: `bool` Whether to forward messages without quoting the original author +* `$dropCaption`: `bool` Whether to strip captions from media +* `$topicId`: `int` Destination [forum topic](https://core.telegram.org/api/forum#forum-topics) +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$score`: `boolean` When forwarding games, whether to include your score in the game +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. + + +#### See also: +* `non-empty-list` + + + + +### `getHTML(bool $allowTelegramTags = false): string` + +Get an HTML version of the message. + + +Parameters: + +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/PrivateMessage.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/PrivateMessage.md new file mode 100644 index 0000000000..cf1f9dd0e2 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/PrivateMessage.md @@ -0,0 +1,796 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\PrivateMessage: Represents an incoming or outgoing private message." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\PrivateMessage` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents an incoming or outgoing private message. + + + +## Properties +* `$message`: `string` Content of the message +* `$fwdInfo`: `?danog\MadelineProto\EventHandler\ForwardedInfo` Info about a forwarded message +* `$command`: `?string` Bot command (if present) +* `$commandType`: `?danog\MadelineProto\EventHandler\CommandType` Bot command type (if present) +* `$commandArgs`: `list` Bot command arguments (if present) +* `$protected`: `bool` Whether this message is protected +* `$matches`: `list` +Regex matches, if a filter regex is present +* `$matchesAll`: `array | mixed)>` +Regex matches, if a filter multiple match regex is present +* `$media`: `(danog\MadelineProto\EventHandler\Media\Audio | danog\MadelineProto\EventHandler\Media\Document | danog\MadelineProto\EventHandler\Media\DocumentPhoto | danog\MadelineProto\EventHandler\Media\Gif | danog\MadelineProto\EventHandler\Media\MaskSticker | danog\MadelineProto\EventHandler\Media\Photo | danog\MadelineProto\EventHandler\Media\RoundVideo | danog\MadelineProto\EventHandler\Media\Sticker | danog\MadelineProto\EventHandler\Media\Video | danog\MadelineProto\EventHandler\Media\Voice | null)` Attached media. +* `$fromScheduled`: `bool` Whether this message is a *sent* scheduled message +* `$viaBotId`: `?int` If the message was generated by an inline query, ID of the bot that generated it +* `$editDate`: `?int` Last edit date of the message +* `$keyboard`: `(danog\MadelineProto\EventHandler\Keyboard\InlineKeyboard | danog\MadelineProto\EventHandler\Keyboard\ReplyKeyboard | null)` Inline or reply keyboard. +* `$imported`: `bool` Whether this message was [imported from a foreign chat service](https://core.telegram.org/api/import) +* `$psaType`: `?string` For Public Service Announcement messages, the PSA type +* `$nextSent`: `?self` +* `$views`: `?int` View counter for messages from channels or forwarded from channels +* `$forwards`: `?int` Forward counter for messages from channels or forwarded from channels +* `$signature`: `?string` Author of the post, if signatures are enabled for messages from channels or forwarded from channels +* `$entities`: `list` Message [entities](https://core.telegram.org/api/entities) for styled text +* `$groupedId`: `?int` Group ID for albums. + +All messages associated to the same album will have an identical grouped ID. +* `$poll`: `?danog\MadelineProto\EventHandler\AbstractPoll` The poll +* `$scheduled`: `bool` Whether this message is a scheduled message +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`screenShot(): \danog\MadelineProto\EventHandler\Message\Service\DialogScreenshotTaken`](#screenShot) +* [`pin(bool $pmOneside = false, bool $silent = false): void`](#pin) +* [`unpin(bool $pmOneside = false, bool $silent = false): ?\danog\MadelineProto\EventHandler\Update`](#unpin) +* [`getOurReactions(): list<(string|int)>`](#getOurReactions) +* [`report(\danog\MadelineProto\EventHandler\Message\ReportReason $reason, string $message): bool`](#report) +* [`saveContact(string $firstName, (string|null) $lastName = NULL, (string|null) $phoneNumber = NULL, bool $addPhonePrivacyException = false): void`](#saveContact) +* [`removeContact(): void`](#removeContact) +* [`inviteToChannel((string|int) $channel): void`](#inviteToChannel) +* [`addReaction((string|int) $reaction, bool $big = false, bool $addToRecent = true): list<(string|int)>`](#addReaction) +* [`delReaction((string|int) $reaction): list<(string|int)>`](#delReaction) +* [`translate(string $toLang): string`](#translate) +* [`editText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message`](#editText) +* [`editReplyMarkup(array $replyMarkup): \danog\MadelineProto\EventHandler\Message`](#editReplyMarkup) +* [`replyOrEdit(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message`](#replyOrEdit) +* [`forward((integer|string) $peer, list $id = [], bool $dropAuthor = false, bool $dropCaption = false, int $topicId = 1, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $score = false, (integer|null) $scheduleDate = NULL, (integer|string|null) $sendAs = NULL): non-empty-list<\danog\MadelineProto\EventHandler\Message>`](#forward) +* [`getHTML(bool $allowTelegramTags = false): string`](#getHTML) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `screenShot(): \danog\MadelineProto\EventHandler\Message\Service\DialogScreenshotTaken` + + + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogScreenshotTaken`: A screenshot of the chat was taken.](../../../../danog/MadelineProto/EventHandler/Message/Service/DialogScreenshotTaken.html) + + + + +### `pin(bool $pmOneside = false, bool $silent = false): void` + +Pin a message. + + +Parameters: + +* `$pmOneside`: `bool` Whether the message should only be pinned on the local side of a one-to-one chat +* `$silent`: `bool` Pin the message silently, without triggering a notification + + + +### `unpin(bool $pmOneside = false, bool $silent = false): ?\danog\MadelineProto\EventHandler\Update` + +Unpin a message. + + +Parameters: + +* `$pmOneside`: `bool` Whether the message should only be pinned on the local side of a one-to-one chat +* `$silent`: `bool` Pin the message silently, without triggering a notification + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `getOurReactions(): list<(string|int)>` + +Get our reactions on the message. + + + +### `report(\danog\MadelineProto\EventHandler\Message\ReportReason $reason, string $message): bool` + +Report a message in a chat for violation of telegram’s Terms of Service. + + +Parameters: + +* `$reason`: `\danog\MadelineProto\EventHandler\Message\ReportReason` Why are these messages being reported +* `$message`: `string` Comment for report moderation + + +#### See also: +* [\danog\MadelineProto\EventHandler\Message\ReportReason](../../../../danog/MadelineProto/EventHandler/Message/ReportReason.html) + + + + +### `saveContact(string $firstName, (string|null) $lastName = NULL, (string|null) $phoneNumber = NULL, bool $addPhonePrivacyException = false): void` + +Save message sender to your account contacts. + + +Parameters: + +* `$firstName`: `string` First name +* `$lastName`: `(string|null)` Last name +* `$phoneNumber`: `(string|null)` Telegram ID of the other user +* `$addPhonePrivacyException`: `bool` Allow the other user to see our phone number? + + + +### `removeContact(): void` + +Remove message sender from your account contacts. + + + +### `inviteToChannel((string|int) $channel): void` + +Invite message sender to requested channel. + + +Parameters: + +* `$channel`: `(string|int)` Username, Channel ID + + + +### `addReaction((string|int) $reaction, bool $big = false, bool $addToRecent = true): list<(string|int)>` + +Add reaction to message. + + +Parameters: + +* `$reaction`: `(string|int)` reaction +* `$big`: `bool` Whether a bigger and longer reaction should be shown +* `$addToRecent`: `bool` Add this reaction to the recent reactions list. + + + +### `delReaction((string|int) $reaction): list<(string|int)>` + +Delete reaction from message. + + +Parameters: + +* `$reaction`: `(string|int)` string or int Reaction + + + +### `translate(string $toLang): string` + +Translate text message(for media translate it caption). + + +Parameters: + +* `$toLang`: `string` Two-letter ISO 639-1 language code of the language to which the message is translated + + + +### `editText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message` + +Edit message text. + + +Parameters: + +* `$message`: `string` New message +* `$parseMode`: `\danog\MadelineProto\ParseMode` Whether to parse HTML or Markdown markup in the message +* `$replyMarkup`: `(array|null)` Reply markup for inline keyboards +* `$scheduleDate`: `(int|null)` Scheduled message date for scheduled messages +* `$noWebpage`: `bool` Disable webpage preview + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) + + + + +### `editReplyMarkup(array $replyMarkup): \danog\MadelineProto\EventHandler\Message` + +Edit message keyboard. + + +Parameters: + +* `$replyMarkup`: `array` Reply markup for inline keyboards + + + +### `replyOrEdit(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message` + +If the message is outgoing, will edit the message's text, otherwise will reply to the message. + + +Parameters: + +* `$message`: `string` New message +* `$parseMode`: `\danog\MadelineProto\ParseMode` Whether to parse HTML or Markdown markup in the message +* `$replyMarkup`: `(array|null)` Reply markup for inline keyboards +* `$scheduleDate`: `(int|null)` Scheduled message date for scheduled messages +* `$noWebpage`: `bool` Disable webpage preview + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) + + + + +### `forward((integer|string) $peer, list $id = [], bool $dropAuthor = false, bool $dropCaption = false, int $topicId = 1, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $score = false, (integer|null) $scheduleDate = NULL, (integer|string|null) $sendAs = NULL): non-empty-list<\danog\MadelineProto\EventHandler\Message>` + +Forwards messages by their IDs. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer +* `$id`: `list` IDs of messages +* `$dropAuthor`: `bool` Whether to forward messages without quoting the original author +* `$dropCaption`: `bool` Whether to strip captions from media +* `$topicId`: `int` Destination [forum topic](https://core.telegram.org/api/forum#forum-topics) +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$score`: `boolean` When forwarding games, whether to include your score in the game +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. + + +#### See also: +* `non-empty-list` + + + + +### `getHTML(bool $allowTelegramTags = false): string` + +Get an HTML version of the message. + + +Parameters: + +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/ReportReason.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/ReportReason.md new file mode 100644 index 0000000000..75c3fd50a7 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/ReportReason.md @@ -0,0 +1,79 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\ReportReason: " +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\ReportReason` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + + + + + + +## Constants +* `danog\MadelineProto\EventHandler\Message\ReportReason::SPAM`: Report for spam + +* `danog\MadelineProto\EventHandler\Message\ReportReason::VIOLENCE`: Report for violence + +* `danog\MadelineProto\EventHandler\Message\ReportReason::PORNOGRAPHY`: Report for pornography + +* `danog\MadelineProto\EventHandler\Message\ReportReason::CHILD_ABUSE`: Report for child abuse + +* `danog\MadelineProto\EventHandler\Message\ReportReason::COPYRIGHT`: Report for copyrighted content + +* `danog\MadelineProto\EventHandler\Message\ReportReason::GEO_IRRELEVANT`: Report an irrelevant geogroup + +* `danog\MadelineProto\EventHandler\Message\ReportReason::FAKE`: Report for impersonation + +* `danog\MadelineProto\EventHandler\Message\ReportReason::ILLEGAL_DRUGS`: Report for illegal drugs + +* `danog\MadelineProto\EventHandler\Message\ReportReason::PERSONAL_DETAILS`: Report for divulgation of personal details + +* `danog\MadelineProto\EventHandler\Message\ReportReason::OTHER`: Other + +## Properties +* `$name`: `string` +* `$value`: `string` + +## Method list: +* [`cases(): array`](#cases) +* [`from(string|int $value): static`](#from) +* [`tryFrom(string|int $value): ?static`](#tryFrom) + +## Methods: +### `cases(): array` + + + + + +### `from(string|int $value): static` + + + + +Parameters: + +* `$value`: `string|int` + + + +### `tryFrom(string|int $value): ?static` + + + + +Parameters: + +* `$value`: `string|int` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/SecretMessage.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/SecretMessage.md new file mode 100644 index 0000000000..aabede7c7a --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/SecretMessage.md @@ -0,0 +1,794 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\SecretMessage: Represents New encrypted message." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\SecretMessage` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents New encrypted message. + + + +## Properties +* `$message`: `string` Content of the message +* `$fwdInfo`: `?danog\MadelineProto\EventHandler\ForwardedInfo` Info about a forwarded message +* `$command`: `?string` Bot command (if present) +* `$commandType`: `?danog\MadelineProto\EventHandler\CommandType` Bot command type (if present) +* `$commandArgs`: `list` Bot command arguments (if present) +* `$protected`: `bool` Whether this message is protected +* `$matches`: `list` +Regex matches, if a filter regex is present +* `$matchesAll`: `array | mixed)>` +Regex matches, if a filter multiple match regex is present +* `$media`: `(danog\MadelineProto\EventHandler\Media\Audio | danog\MadelineProto\EventHandler\Media\Document | danog\MadelineProto\EventHandler\Media\DocumentPhoto | danog\MadelineProto\EventHandler\Media\Gif | danog\MadelineProto\EventHandler\Media\MaskSticker | danog\MadelineProto\EventHandler\Media\Photo | danog\MadelineProto\EventHandler\Media\RoundVideo | danog\MadelineProto\EventHandler\Media\Sticker | danog\MadelineProto\EventHandler\Media\Video | danog\MadelineProto\EventHandler\Media\Voice | null)` Attached media. +* `$fromScheduled`: `bool` Whether this message is a *sent* scheduled message +* `$viaBotId`: `?int` If the message was generated by an inline query, ID of the bot that generated it +* `$editDate`: `?int` Last edit date of the message +* `$keyboard`: `(danog\MadelineProto\EventHandler\Keyboard\InlineKeyboard | danog\MadelineProto\EventHandler\Keyboard\ReplyKeyboard | null)` Inline or reply keyboard. +* `$imported`: `bool` Whether this message was [imported from a foreign chat service](https://core.telegram.org/api/import) +* `$psaType`: `?string` For Public Service Announcement messages, the PSA type +* `$nextSent`: `?self` +* `$views`: `?int` View counter for messages from channels or forwarded from channels +* `$forwards`: `?int` Forward counter for messages from channels or forwarded from channels +* `$signature`: `?string` Author of the post, if signatures are enabled for messages from channels or forwarded from channels +* `$entities`: `list` Message [entities](https://core.telegram.org/api/entities) for styled text +* `$groupedId`: `?int` Group ID for albums. + +All messages associated to the same album will have an identical grouped ID. +* `$poll`: `?danog\MadelineProto\EventHandler\AbstractPoll` The poll +* `$scheduled`: `bool` Whether this message is a scheduled message +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`getReply(string $class = 'danog\\MadelineProto\\EventHandler\\Message\\SecretMessage'): ?\danog\MadelineProto\EventHandler\Message\SecretMessage`](#getReply) +* [`screenShot(): \danog\MadelineProto\EventHandler\Message\Service\DialogScreenshotTaken`](#screenShot) +* [`pin(bool $pmOneside = false, bool $silent = false): void`](#pin) +* [`unpin(bool $pmOneside = false, bool $silent = false): ?\danog\MadelineProto\EventHandler\Update`](#unpin) +* [`getOurReactions(): list<(string|int)>`](#getOurReactions) +* [`report(\danog\MadelineProto\EventHandler\Message\ReportReason $reason, string $message): bool`](#report) +* [`saveContact(string $firstName, (string|null) $lastName = NULL, (string|null) $phoneNumber = NULL, bool $addPhonePrivacyException = false): void`](#saveContact) +* [`removeContact(): void`](#removeContact) +* [`inviteToChannel((string|int) $channel): void`](#inviteToChannel) +* [`addReaction((string|int) $reaction, bool $big = false, bool $addToRecent = true): list<(string|int)>`](#addReaction) +* [`delReaction((string|int) $reaction): list<(string|int)>`](#delReaction) +* [`translate(string $toLang): string`](#translate) +* [`editText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message`](#editText) +* [`editReplyMarkup(array $replyMarkup): \danog\MadelineProto\EventHandler\Message`](#editReplyMarkup) +* [`replyOrEdit(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message`](#replyOrEdit) +* [`forward((integer|string) $peer, list $id = [], bool $dropAuthor = false, bool $dropCaption = false, int $topicId = 1, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $score = false, (integer|null) $scheduleDate = NULL, (integer|string|null) $sendAs = NULL): non-empty-list<\danog\MadelineProto\EventHandler\Message>`](#forward) +* [`getHTML(bool $allowTelegramTags = false): string`](#getHTML) +* [`isReply(): bool`](#isReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `getReply(string $class = 'danog\\MadelineProto\\EventHandler\\Message\\SecretMessage'): ?\danog\MadelineProto\EventHandler\Message\SecretMessage` + + + + +Parameters: + +* `$class`: `string` + + + +### `screenShot(): \danog\MadelineProto\EventHandler\Message\Service\DialogScreenshotTaken` + + + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogScreenshotTaken`: A screenshot of the chat was taken.](../../../../danog/MadelineProto/EventHandler/Message/Service/DialogScreenshotTaken.html) + + + + +### `pin(bool $pmOneside = false, bool $silent = false): void` + +Pin a message. + + +Parameters: + +* `$pmOneside`: `bool` Whether the message should only be pinned on the local side of a one-to-one chat +* `$silent`: `bool` Pin the message silently, without triggering a notification + + + +### `unpin(bool $pmOneside = false, bool $silent = false): ?\danog\MadelineProto\EventHandler\Update` + +Unpin a message. + + +Parameters: + +* `$pmOneside`: `bool` Whether the message should only be pinned on the local side of a one-to-one chat +* `$silent`: `bool` Pin the message silently, without triggering a notification + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `getOurReactions(): list<(string|int)>` + +Get our reactions on the message. + + + +### `report(\danog\MadelineProto\EventHandler\Message\ReportReason $reason, string $message): bool` + +Report a message in a chat for violation of telegram’s Terms of Service. + + +Parameters: + +* `$reason`: `\danog\MadelineProto\EventHandler\Message\ReportReason` Why are these messages being reported +* `$message`: `string` Comment for report moderation + + +#### See also: +* [\danog\MadelineProto\EventHandler\Message\ReportReason](../../../../danog/MadelineProto/EventHandler/Message/ReportReason.html) + + + + +### `saveContact(string $firstName, (string|null) $lastName = NULL, (string|null) $phoneNumber = NULL, bool $addPhonePrivacyException = false): void` + +Save message sender to your account contacts. + + +Parameters: + +* `$firstName`: `string` First name +* `$lastName`: `(string|null)` Last name +* `$phoneNumber`: `(string|null)` Telegram ID of the other user +* `$addPhonePrivacyException`: `bool` Allow the other user to see our phone number? + + + +### `removeContact(): void` + +Remove message sender from your account contacts. + + + +### `inviteToChannel((string|int) $channel): void` + +Invite message sender to requested channel. + + +Parameters: + +* `$channel`: `(string|int)` Username, Channel ID + + + +### `addReaction((string|int) $reaction, bool $big = false, bool $addToRecent = true): list<(string|int)>` + +Add reaction to message. + + +Parameters: + +* `$reaction`: `(string|int)` reaction +* `$big`: `bool` Whether a bigger and longer reaction should be shown +* `$addToRecent`: `bool` Add this reaction to the recent reactions list. + + + +### `delReaction((string|int) $reaction): list<(string|int)>` + +Delete reaction from message. + + +Parameters: + +* `$reaction`: `(string|int)` string or int Reaction + + + +### `translate(string $toLang): string` + +Translate text message(for media translate it caption). + + +Parameters: + +* `$toLang`: `string` Two-letter ISO 639-1 language code of the language to which the message is translated + + + +### `editText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message` + +Edit message text. + + +Parameters: + +* `$message`: `string` New message +* `$parseMode`: `\danog\MadelineProto\ParseMode` Whether to parse HTML or Markdown markup in the message +* `$replyMarkup`: `(array|null)` Reply markup for inline keyboards +* `$scheduleDate`: `(int|null)` Scheduled message date for scheduled messages +* `$noWebpage`: `bool` Disable webpage preview + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) + + + + +### `editReplyMarkup(array $replyMarkup): \danog\MadelineProto\EventHandler\Message` + +Edit message keyboard. + + +Parameters: + +* `$replyMarkup`: `array` Reply markup for inline keyboards + + + +### `replyOrEdit(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (int|null) $scheduleDate = NULL, bool $noWebpage = false): \danog\MadelineProto\EventHandler\Message` + +If the message is outgoing, will edit the message's text, otherwise will reply to the message. + + +Parameters: + +* `$message`: `string` New message +* `$parseMode`: `\danog\MadelineProto\ParseMode` Whether to parse HTML or Markdown markup in the message +* `$replyMarkup`: `(array|null)` Reply markup for inline keyboards +* `$scheduleDate`: `(int|null)` Scheduled message date for scheduled messages +* `$noWebpage`: `bool` Disable webpage preview + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) + + + + +### `forward((integer|string) $peer, list $id = [], bool $dropAuthor = false, bool $dropCaption = false, int $topicId = 1, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $score = false, (integer|null) $scheduleDate = NULL, (integer|string|null) $sendAs = NULL): non-empty-list<\danog\MadelineProto\EventHandler\Message>` + +Forwards messages by their IDs. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer +* `$id`: `list` IDs of messages +* `$dropAuthor`: `bool` Whether to forward messages without quoting the original author +* `$dropCaption`: `bool` Whether to strip captions from media +* `$topicId`: `int` Destination [forum topic](https://core.telegram.org/api/forum#forum-topics) +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$score`: `boolean` When forwarding games, whether to include your score in the game +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. + + +#### See also: +* `non-empty-list` + + + + +### `getHTML(bool $allowTelegramTags = false): string` + +Get an HTML version of the message. + + +Parameters: + +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogBotAllowed.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogBotAllowed.md new file mode 100644 index 0000000000..2933a9cec3 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogBotAllowed.md @@ -0,0 +1,540 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogBotAllowed: We have given the bot permission to send us direct messages." +description: "The optional fields specify how did we authorize the bot to send us messages.\n" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogBotAllowed` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +We have given the bot permission to send us direct messages. + +The optional fields specify how did we authorize the bot to send us messages. + + +## Properties +* `$attachMenu`: `bool` We have authorized the bot to send us messages by installing the bot’s [attachment menu](https://core.telegram.org/api/bots/attach). +* `$domain`: `?string` We have authorized the bot to send us messages by logging into a website via [Telegram Login »](https://core.telegram.org/widgets/login); this field contains the domain name of the website on which the user has logged in. +* `$app`: `?danog\MadelineProto\EventHandler\BotApp` We have authorized the bot to send us messages by opening the specified [bot web app](https://core.telegram.org/api/bots/webapps). +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelCreated.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelCreated.md new file mode 100644 index 0000000000..055741cabe --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelCreated.md @@ -0,0 +1,557 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogChannelCreated: The channel was created." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogChannelCreated` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +The channel was created. + + + +## Properties +* `$title`: `string` Original channel/supergroup title +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, string $title)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, string $title)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$title`: `string` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelMigrateFrom.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelMigrateFrom.md new file mode 100644 index 0000000000..2e46eb0fe3 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelMigrateFrom.md @@ -0,0 +1,559 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogChannelMigrateFrom: Indicates the channel was [migrated](https://core.telegram.org/api/channel) from the specified chat." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogChannelMigrateFrom` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Indicates the channel was [migrated](https://core.telegram.org/api/channel) from the specified chat. + + + +## Properties +* `$oldTitle`: `string` The old chat title +* `$oldChatId`: `int` The old chat title +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, string $oldTitle, int $oldChatId)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, string $oldTitle, int $oldChatId)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$oldTitle`: `string` +* `$oldChatId`: `int` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatJoinedByLink.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatJoinedByLink.md new file mode 100644 index 0000000000..06b056e2c2 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatJoinedByLink.md @@ -0,0 +1,557 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogChatJoinedByLink: A user joined the chat via an invite link." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogChatJoinedByLink` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +A user joined the chat via an invite link. + + + +## Properties +* `$inviterId`: `int` ID of the user that created the invite link +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, int $inviterId)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, int $inviterId)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$inviterId`: `int` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatMigrateTo.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatMigrateTo.md new file mode 100644 index 0000000000..103220782e --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatMigrateTo.md @@ -0,0 +1,557 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogChatMigrateTo: Indicates the chat was [migrated](https://core.telegram.org/api/channel) to the specified supergroup." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogChatMigrateTo` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Indicates the chat was [migrated](https://core.telegram.org/api/channel) to the specified supergroup. + + + +## Properties +* `$channelId`: `int` The supergroup it was migrated to +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, int $channelId)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, int $channelId)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$channelId`: `int` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogContactSignUp.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogContactSignUp.md new file mode 100644 index 0000000000..7f87022446 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogContactSignUp.md @@ -0,0 +1,536 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogContactSignUp: A contact just signed up to telegram." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogContactSignUp` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +A contact just signed up to telegram. + + + +## Properties +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogCreated.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogCreated.md new file mode 100644 index 0000000000..90328a13ef --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogCreated.md @@ -0,0 +1,559 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogCreated: A chat or channel was created." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogCreated` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +A chat or channel was created. + + + +## Properties +* `$title`: `string` Title of the created chat or channel +* `$users`: `list` List of group members +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, string $title, array $users)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, string $title, array $users)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$title`: `string` +* `$users`: `array` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogDeleteMessages.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogDeleteMessages.md new file mode 100644 index 0000000000..7ee98e132a --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogDeleteMessages.md @@ -0,0 +1,557 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogDeleteMessages: Deleted messages." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogDeleteMessages` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Deleted messages. + + + +## Properties +* `$ids`: `list` List of deleted message IDs. +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, array $ids)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, array $ids)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$ids`: `array` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGameScore.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGameScore.md new file mode 100644 index 0000000000..5611bc0518 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGameScore.md @@ -0,0 +1,559 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogGameScore: Someone scored in a game." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogGameScore` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Someone scored in a game. + + + +## Properties +* `$gameId`: `int` Game ID +* `$score`: `int` Score +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, int $gameId, int $score)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, int $gameId, int $score)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$gameId`: `int` +* `$score`: `int` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGeoProximityReached.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGeoProximityReached.md new file mode 100644 index 0000000000..269976d8aa --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGeoProximityReached.md @@ -0,0 +1,561 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogGeoProximityReached: A user of the chat is now in proximity of another user." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogGeoProximityReached` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +A user of the chat is now in proximity of another user. + + + +## Properties +* `$fromId`: `int` The user or chat that is now in proximity of to_id +* `$toId`: `int` The user or chat that subscribed to [live geolocation proximity alerts](https://core.telegram.org/api/live-location#proximity-alert) +* `$distance`: `int` Distance, in meters (0-100000) +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, int $fromId, int $toId, int $distance)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, int $fromId, int $toId, int $distance)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$fromId`: `int` +* `$toId`: `int` +* `$distance`: `int` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGiftPremium.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGiftPremium.md new file mode 100644 index 0000000000..8cae1d90d9 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGiftPremium.md @@ -0,0 +1,565 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogGiftPremium: Info about a gifted Telegram Premium subscription." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogGiftPremium` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Info about a gifted Telegram Premium subscription. + + + +## Properties +* `$currency`: `string` Three-letter ISO 4217 [currency](https://core.telegram.org/bots/payments#supported-currencies) code +* `$amount`: `int` Price of the gift 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](https://core.telegram.org/bots/payments/currencies.json), it shows the number of digits past the decimal point for each currency (2 for the majority of currencies). +* `$months`: `int` Duration of the gifted Telegram Premium subscription +* `$cryptoCurrency`: `?int` If the gift was bought using a cryptocurrency, the cryptocurrency name. +* `$cryptoAmount`: `?int` If the gift was bought using a cryptocurrency, price of the gift in the smallest units of a cryptocurrency. +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, string $currency, int $amount, int $months, ?int $cryptoCurrency, ?int $cryptoAmount)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, string $currency, int $amount, int $months, ?int $cryptoCurrency, ?int $cryptoAmount)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$currency`: `string` +* `$amount`: `int` +* `$months`: `int` +* `$cryptoCurrency`: `?int` +* `$cryptoAmount`: `?int` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall.md new file mode 100644 index 0000000000..6500a68ef2 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall.md @@ -0,0 +1,538 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogGroupCall: Represents a service message about a group call." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Represents a service message about a group call. + + + +## Properties +* `$callId`: `int` Group call ID +* `$accessHash`: `int` Group call access hash +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCall.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCall.md new file mode 100644 index 0000000000..4e5e1e9226 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCall.md @@ -0,0 +1,560 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogGroupCall\\GroupCall: The group call has started or ended." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall\GroupCall` +[Back to index](../../../../../../index.html) + +> Author: Daniil Gentili + + +The group call has started or ended. + + + +## Properties +* `$ended`: `bool` Whether that group call ended or not. +* `$duration`: `?int` Group call duration +* `$callId`: `int` Group call ID +* `$accessHash`: `int` Group call access hash +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, ?int $duration)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, ?int $duration)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$duration`: `?int` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallInvited.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallInvited.md new file mode 100644 index 0000000000..1e50d08448 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallInvited.md @@ -0,0 +1,559 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogGroupCall\\GroupCallInvited: A set of users was invited to the group call." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall\GroupCallInvited` +[Back to index](../../../../../../index.html) + +> Author: Daniil Gentili + + +A set of users was invited to the group call. + + + +## Properties +* `$users`: `array` The invited users +* `$callId`: `int` Group call ID +* `$accessHash`: `int` Group call access hash +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, array $users)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, array $users)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$users`: `array` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallScheduled.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallScheduled.md new file mode 100644 index 0000000000..04a6591050 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallScheduled.md @@ -0,0 +1,559 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogGroupCall\\GroupCallScheduled: A group call was scheduled." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall\GroupCallScheduled` +[Back to index](../../../../../../index.html) + +> Author: Daniil Gentili + + +A group call was scheduled. + + + +## Properties +* `$scheduleDate`: `int` When is this group call scheduled to start +* `$callId`: `int` Group call ID +* `$accessHash`: `int` Group call access hash +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, int $scheduleDate)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, int $scheduleDate)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$scheduleDate`: `int` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogHistoryCleared.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogHistoryCleared.md new file mode 100644 index 0000000000..645839069d --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogHistoryCleared.md @@ -0,0 +1,536 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogHistoryCleared: Chat history was cleared." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogHistoryCleared` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Chat history was cleared. + + + +## Properties +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberJoinedByRequest.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberJoinedByRequest.md new file mode 100644 index 0000000000..615576dad5 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberJoinedByRequest.md @@ -0,0 +1,536 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogMemberJoinedByRequest: A user was accepted into the group by an admin." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogMemberJoinedByRequest` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +A user was accepted into the group by an admin. + + + +## Properties +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberLeft.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberLeft.md new file mode 100644 index 0000000000..1f278c6e99 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberLeft.md @@ -0,0 +1,557 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogMemberLeft: A member left the chat or channel." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogMemberLeft` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +A member left the chat or channel. + + + +## Properties +* `$left`: `int` ID of the user that left the channel +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, int $left)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, int $left)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$left`: `int` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMembersJoined.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMembersJoined.md new file mode 100644 index 0000000000..b7f5409279 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMembersJoined.md @@ -0,0 +1,557 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogMembersJoined: Some members joined the chat or channel." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogMembersJoined` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Some members joined the chat or channel. + + + +## Properties +* `$joined`: `list` List of IDs of the users that joined the chat or channel. +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, array $joined)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, array $joined)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$joined`: `array` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMessagePinned.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMessagePinned.md new file mode 100644 index 0000000000..9109330f2c --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMessagePinned.md @@ -0,0 +1,550 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogMessagePinned: A message was pinned in a chat." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogMessagePinned` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +A message was pinned in a chat. + + + +## Properties +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`getPinnedMessage(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getPinnedMessage) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `getPinnedMessage(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Gets the pinned message. + +May return null if the pinned message was deleted. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPeerRequested.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPeerRequested.md new file mode 100644 index 0000000000..4df1eb963a --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPeerRequested.md @@ -0,0 +1,538 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogPeerRequested: Contains info about a peer that the user shared with the bot after clicking on a [keyboardButtonRequestPeer](https://docs.madelineproto.xyz/API_docs/constructors/keyboardButtonRequestPeer.html) button." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogPeerRequested` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Contains info about a peer that the user shared with the bot after clicking on a [keyboardButtonRequestPeer](https://docs.madelineproto.xyz/API_docs/constructors/keyboardButtonRequestPeer.html) button. + + + +## Properties +* `$buttonId`: `int` buttonId contained in the [keyboardButtonRequestPeer](https://docs.madelineproto.xyz/API_docs/constructors/keyboardButtonRequestPeer.html) +* `$peers`: `list` The shared peers +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhoneCall.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhoneCall.md new file mode 100644 index 0000000000..447afc15b5 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhoneCall.md @@ -0,0 +1,564 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogPhoneCall: A phone call." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogPhoneCall` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +A phone call. + + + +## Properties +* `$video`: `bool` Is this a video call? +* `$callId`: `int` Call ID +* `$reason`: `?DiscardReason` If the call has ended, the reason why it ended +* `$duration`: `?int` Duration of the call in seconds +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, bool $video, int $callId, ?\danog\MadelineProto\VoIP\DiscardReason $reason, ?int $duration)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, bool $video, int $callId, ?\danog\MadelineProto\VoIP\DiscardReason $reason, ?int $duration)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$video`: `bool` +* `$callId`: `int` +* `$reason`: `?\danog\MadelineProto\VoIP\DiscardReason` +* `$duration`: `?int` + + +#### See also: +* `\danog\MadelineProto\MTProto` +* [`\danog\MadelineProto\VoIP\DiscardReason`: Why was the call discarded?](../../../../../danog/MadelineProto/VoIP/DiscardReason.html) + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhotoChanged.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhotoChanged.md new file mode 100644 index 0000000000..2141d418a4 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhotoChanged.md @@ -0,0 +1,558 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogPhotoChanged: The photo of the dialog was changed or deleted." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogPhotoChanged` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +The photo of the dialog was changed or deleted. + + + +## Properties +* `$photo`: `?Photo` New photo (or no photo if it was deleted) +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, ?\danog\MadelineProto\EventHandler\Media\Photo $photo)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, ?\danog\MadelineProto\EventHandler\Media\Photo $photo)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$photo`: `?\danog\MadelineProto\EventHandler\Media\Photo` + + +#### See also: +* `\danog\MadelineProto\MTProto` +* [`\danog\MadelineProto\EventHandler\Media\Photo`: Represents a photo.](../../../../../danog/MadelineProto/EventHandler/Media/Photo.html) + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogReadMessages.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogReadMessages.md new file mode 100644 index 0000000000..94e3b4cccf --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogReadMessages.md @@ -0,0 +1,537 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogReadMessages: Messages marked as read." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogReadMessages` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Messages marked as read. + + + +## Properties +* `$ids`: `list` List of message IDs. +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogScreenshotTaken.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogScreenshotTaken.md new file mode 100644 index 0000000000..711947bc60 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogScreenshotTaken.md @@ -0,0 +1,557 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogScreenshotTaken: A screenshot of the chat was taken." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogScreenshotTaken` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +A screenshot of the chat was taken. + + + +## Properties +* `$ids`: `list` List of affected message ids that appeared on the screenshot, only for secret chats. +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, array $ids = [])`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, array $ids = [])` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$ids`: `array` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatTheme.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatTheme.md new file mode 100644 index 0000000000..2d1e5f0dab --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatTheme.md @@ -0,0 +1,557 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogSetChatTheme: The chat theme was changed." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogSetChatTheme` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +The chat theme was changed. + + + +## Properties +* `$emoticon`: `string` The emoji that identifies a chat theme +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, string $emoticon)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, string $emoticon)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$emoticon`: `string` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatWallPaper.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatWallPaper.md new file mode 100644 index 0000000000..bbe4c50a20 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatWallPaper.md @@ -0,0 +1,560 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogSetChatWallPaper: The [wallpaper](https://core.telegram.org/api/wallpapers) of the current chat was changed." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogSetChatWallPaper` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +The [wallpaper](https://core.telegram.org/api/wallpapers) of the current chat was changed. + + + +## Properties +* `$wallpaper`: `Wallpaper` New [wallpaper](https://core.telegram.org/api/wallpapers) +* `$same`: `bool` Whether the user applied a wallpaper previously sent by the other user in a DialogSetChatWallPaper message. +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, \danog\MadelineProto\EventHandler\Wallpaper $wallpaper, bool $same = false)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, \danog\MadelineProto\EventHandler\Wallpaper $wallpaper, bool $same = false)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$wallpaper`: `\danog\MadelineProto\EventHandler\Wallpaper` +* `$same`: `bool` + + +#### See also: +* `\danog\MadelineProto\MTProto` +* [`\danog\MadelineProto\EventHandler\Wallpaper`: Represents a [wallpaper](https://core.telegram.org/api/wallpapers).](../../../../../danog/MadelineProto/EventHandler/Wallpaper.html) + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.md new file mode 100644 index 0000000000..43d00f6549 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.md @@ -0,0 +1,559 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogSetTTL: The Time-To-Live of messages in this chat was changed." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +The Time-To-Live of messages in this chat was changed. + + + +## Properties +* `$period`: `int` New Time-To-Live of all messages sent in this chat; if 0, autodeletion was disabled. +* `$autoSettingFrom`: `?int` If set, the chat TTL setting was set not due to a manual change by one of participants, but automatically because one of the participants has the [default TTL settings enabled »](https://docs.madelineproto.xyz/API_docs/methods/messages.setDefaultHistoryTTL.html). For example, when a user writes to us for the first time and we have set a default messages TTL of 1 week, this service message (with auto_setting_from=our_userid) will be emitted before our first message. +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, int $period, ?int $autoSettingFrom)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, int $period, ?int $autoSettingFrom)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$period`: `int` +* `$autoSettingFrom`: `?int` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSuggestProfilePhoto.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSuggestProfilePhoto.md new file mode 100644 index 0000000000..c98aeaaab3 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSuggestProfilePhoto.md @@ -0,0 +1,558 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogSuggestProfilePhoto: A new profile picture was suggested using [photos.uploadContactProfilePhoto](https://docs.madelineproto.xyz/API_docs/methods/photos.uploadContactProfilePhoto.html)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogSuggestProfilePhoto` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +A new profile picture was suggested using [photos.uploadContactProfilePhoto](https://docs.madelineproto.xyz/API_docs/methods/photos.uploadContactProfilePhoto.html). + + + +## Properties +* `$photo`: `?Photo` The photo that the user suggested we set as profile picture. +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, ?\danog\MadelineProto\EventHandler\Media\Photo $photo)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, ?\danog\MadelineProto\EventHandler\Media\Photo $photo)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$photo`: `?\danog\MadelineProto\EventHandler\Media\Photo` + + +#### See also: +* `\danog\MadelineProto\MTProto` +* [`\danog\MadelineProto\EventHandler\Media\Photo`: Represents a photo.](../../../../../danog/MadelineProto/EventHandler/Media/Photo.html) + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTitleChanged.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTitleChanged.md new file mode 100644 index 0000000000..cae0482a0b --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTitleChanged.md @@ -0,0 +1,557 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogTitleChanged: The title of a channel or group has changed." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogTitleChanged` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +The title of a channel or group has changed. + + + +## Properties +* `$title`: `string` New title +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, string $title)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, string $title)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$title`: `string` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicCreated.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicCreated.md new file mode 100644 index 0000000000..f2a9222a15 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicCreated.md @@ -0,0 +1,561 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogTopicCreated: A [forum topic](https://core.telegram.org/api/forum#forum-topics) was created." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogTopicCreated` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +A [forum topic](https://core.telegram.org/api/forum#forum-topics) was created. + + + +## Properties +* `$title`: `string` Topic name. +* `$iconColor`: `int` If no custom emoji icon is specified, specifies the color of the fallback topic icon (RGB), one of 0x6FB9F0, 0xFFD67E, 0xCB86DB, 0x8EEE98, 0xFF93B2, or 0xFB6F5F. +* `$iconEmojiId`: `?int` ID of the [custom emoji](https://core.telegram.org/api/custom-emoji) used as topic icon. +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, string $title, int $iconColor, ?int $iconEmojiId)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, string $title, int $iconColor, ?int $iconEmojiId)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$title`: `string` +* `$iconColor`: `int` +* `$iconEmojiId`: `?int` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicEdited.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicEdited.md new file mode 100644 index 0000000000..7e3e0e58cd --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicEdited.md @@ -0,0 +1,571 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogTopicEdited: [Forum topic](https://core.telegram.org/api/forum#forum-topics) information was edited." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogTopicEdited` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +[Forum topic](https://core.telegram.org/api/forum#forum-topics) information was edited. + + + +## Properties +* `$title`: `?string` If not null, indicates that the topic name has changed, contains the new topic name. + +Ignore this field if null. +* `$iconEmojiId`: `?int` If not null, indicates that the topic icon has changed, and contains the ID of the new [custom emoji](https://core.telegram.org/api/custom-emoji) used as topic icon (0 if it was removed). + +Ignore this field if null. +* `$closed`: `?bool` If not null, indicates whether the topic was opened or closed. + +Ignore this field if null. +* `$hidden`: `?bool` If not null, indicates whether the topic was hidden or unhidden (only valid for the “General” topic, id=1). + +Ignore this field if null. +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, ?string $title, ?int $iconEmojiId, ?bool $closed, ?bool $hidden)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, ?string $title, ?int $iconEmojiId, ?bool $closed, ?bool $hidden)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$title`: `?string` +* `$iconEmojiId`: `?int` +* `$closed`: `?bool` +* `$hidden`: `?bool` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogWebView.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogWebView.md new file mode 100644 index 0000000000..5c7d8c202d --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogWebView.md @@ -0,0 +1,560 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\Service\\DialogWebView: Data from an opened [reply keyboard bot web app](https://core.telegram.org/api/bots/webapps) was relayed to the bot that owns it (user & bot side service message)." +description: "Clients should display a service message with the text Data from the «$text» button was transferred to the bot.\n" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\Service\DialogWebView` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Data from an opened [reply keyboard bot web app](https://core.telegram.org/api/bots/webapps) was relayed to the bot that owns it (user & bot side service message). + +Clients should display a service message with the text Data from the «$text» button was transferred to the bot. + + +## Properties +* `$text`: `string` Text of the [keyboardButtonSimpleWebView](https://docs.madelineproto.xyz/API_docs/constructors/keyboardButtonSimpleWebView.html) that was pressed to open the web app. +* `$data`: `?string` Relayed data. (bot side service message) +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, string $text, ?string $data)`](#__construct) +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawMessage, array $info, string $text, ?string $data)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawMessage`: `array` +* `$info`: `array` +* `$text`: `string` +* `$data`: `?string` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Message/ServiceMessage.md b/docs/PHP/danog/MadelineProto/EventHandler/Message/ServiceMessage.md new file mode 100644 index 0000000000..5fc7d49c5f --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Message/ServiceMessage.md @@ -0,0 +1,536 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Message\\ServiceMessage: Represents info about a service message." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Message\ServiceMessage` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents info about a service message. + + + +## Properties +* `$id`: `int` Message ID +* `$out`: `bool` Whether the message is outgoing +* `$chatId`: `int` ID of the chat where the message was sent +* `$senderId`: `int` ID of the sender of the message +* `$replyToMsgId`: `?int` ID of the message to which this message is replying +* `$date`: `int` When was the message sent +* `$topicId`: `?int` ID of the forum topic where the message was sent +* `$threadId`: `?int` ID of the message thread where the message was sent +* `$replyToScheduled`: `bool` Whether this is a reply to a scheduled message +* `$mentioned`: `bool` Whether we were mentioned in this message +* `$silent`: `bool` Whether this message was sent without any notification (silently) +* `$ttlPeriod`: `?int` Time-to-live of the message + +## Method list: +* [`isReply(): bool`](#isReply) +* [`getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T`](#getReply) +* [`delete(boolean $revoke = true): void`](#delete) +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyDocument) +* [`replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVideo) +* [`replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyGif) +* [`replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyAudio) +* [`replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyVoice) +* [`replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replyPhoto) +* [`replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#replySticker) +* [`sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendText) +* [`block(): bool`](#block) +* [`unblock(): bool`](#unblock) +* [`getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>`](#getStories) +* [`setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool`](#setAction) +* [`read(bool $readAll = false): boolean`](#read) +* [`enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#enableTTL) +* [`disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`](#disableTTL) +* [`enableAutoTranslate(): bool`](#enableAutoTranslate) +* [`disableAutoTranslate(): bool`](#disableAutoTranslate) + +## Methods: +### `isReply(): bool` + +Check if the current message replies to another message. + + + +### `getReply(class-string $class = 'danog\\MadelineProto\\EventHandler\\AbstractMessage'): ?T` + +Get replied-to message. + +May return null if the replied-to message was deleted or if the message does not reply to any other message. + + +Parameters: + +* `$class`: `class-string` Only return a reply if it is of the specified type, return null otherwise. + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply to the message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `replyDocument((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVideo((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyGif((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyAudio((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyVoice((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replyPhoto((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `replySticker((\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Reply a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendText(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $noWebpage = false, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Send a text message. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Only for bots, disallows further re-forwarding and saving of the messages, even if the destination chat doesn’t have [content protection](https://telegram.org/blog/protected-content-delete-by-date-and-more) enabled +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `block(): bool` + +Adds the user to the blacklist. + + + +### `unblock(): bool` + +Deletes the user from the blacklist. + + + +### `getStories(): list<\danog\MadelineProto\EventHandler\AbstractStory>` + +Get user stories. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractStory`: Represents a Telegram Story.](../../../../danog/MadelineProto/EventHandler/AbstractStory.html) + + + + +### `setAction(\danog\MadelineProto\EventHandler\Action $action = \danog\MadelineProto\EventHandler\Action\Typing::__set_state(array(]]): bool` + +Sends a current user typing event +(see [SendMessageAction](https://docs.madelineproto.xyz/API_docs/types/SendMessageAction.html) for all event types) to a conversation partner or group. + + +Parameters: + +* `$action`: `\danog\MadelineProto\EventHandler\Action` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Action`: In-progress actions.](../../../../danog/MadelineProto/EventHandler/Action.html) + + + + +### `read(bool $readAll = false): boolean` + +Mark selected message as read. + + +Parameters: + +* `$readAll`: `bool` + + +Return value: if set, read all messages in current chat. + + +### `enableTTL(int<1, max> $seconds = 86400): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Set maximum Time-To-Live of all messages in the specified chat. + + +Parameters: + +* `$seconds`: `int<1, max>` Automatically delete all messages sent in the chat after this many seconds + + +#### See also: +* `max` +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `disableTTL(): \danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL` + +Disable Time-To-Live of all messages in the specified chat. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL`: The Time-To-Live of messages in this chat was changed.](../../../../danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) + + + + +### `enableAutoTranslate(): bool` + +Show the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +### `disableAutoTranslate(): bool` + +Hide the [real-time chat translation popup](https://core.telegram.org/api/translation) for a certain chat. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Participant.md b/docs/PHP/danog/MadelineProto/EventHandler/Participant.md new file mode 100644 index 0000000000..d11af0d9db --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Participant.md @@ -0,0 +1,35 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Participant: Info about a channel participant." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Participant` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Info about a channel participant. + + + + +## Method list: +* [`fromRawParticipant(array $rawParticipant): self`](#fromRawParticipant) + +## Methods: +### `fromRawParticipant(array $rawParticipant): self` + + + + +Parameters: + +* `$rawParticipant`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Participant/Admin.md b/docs/PHP/danog/MadelineProto/EventHandler/Participant/Admin.md new file mode 100644 index 0000000000..6ea84bfc63 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Participant/Admin.md @@ -0,0 +1,44 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Participant\\Admin: Admin." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Participant\Admin` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Admin. + + + +## Properties +* `$canEdit`: `bool` Can this admin promote other admins with the same permissions? +* `$self`: `bool` Is this the current user +* `$userId`: `int` Admin user ID +* `$inviterId`: `?int` User that invited the admin to the channel/group +* `$promotedBy`: `int` User that promoted the user to admin +* `$date`: `int` When did the user join +* `$adminRights`: `danog\MadelineProto\EventHandler\Participant\Rights\Admin` Admin [rights](https://core.telegram.org/api/rights) +* `$rank`: `string` The role (rank) of the admin in the group: just an arbitrary string, `admin` by default + +## Method list: +* [`fromRawParticipant(array $rawParticipant): self`](#fromRawParticipant) + +## Methods: +### `fromRawParticipant(array $rawParticipant): self` + + + + +Parameters: + +* `$rawParticipant`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Participant/Banned.md b/docs/PHP/danog/MadelineProto/EventHandler/Participant/Banned.md new file mode 100644 index 0000000000..98395af6e4 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Participant/Banned.md @@ -0,0 +1,41 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Participant\\Banned: Banned/kicked user." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Participant\Banned` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Banned/kicked user. + + + +## Properties +* `$left`: `bool` Whether the user has left the group +* `$peer`: `int` The banned peer +* `$kickedBy`: `int` User was kicked by the specified admin +* `$date`: `int` When did the user join the group +* `$bannedRights`: `danog\MadelineProto\EventHandler\Participant\Rights\Banned` Banned [rights](https://core.telegram.org/api/rights) + +## Method list: +* [`fromRawParticipant(array $rawParticipant): self`](#fromRawParticipant) + +## Methods: +### `fromRawParticipant(array $rawParticipant): self` + + + + +Parameters: + +* `$rawParticipant`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Participant/Creator.md b/docs/PHP/danog/MadelineProto/EventHandler/Participant/Creator.md new file mode 100644 index 0000000000..d7f79c765c --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Participant/Creator.md @@ -0,0 +1,39 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Participant\\Creator: Channel/supergroup creator." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Participant\Creator` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Channel/supergroup creator. + + + +## Properties +* `$userId`: `int` User ID +* `$adminRights`: `danog\MadelineProto\EventHandler\Participant\Rights\Admin` Creator admin rights +* `$rank`: `string` The role (rank) of the group creator in the group: just an arbitrary string, `admin` by default + +## Method list: +* [`fromRawParticipant(array $rawParticipant): self`](#fromRawParticipant) + +## Methods: +### `fromRawParticipant(array $rawParticipant): self` + + + + +Parameters: + +* `$rawParticipant`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Participant/Left.md b/docs/PHP/danog/MadelineProto/EventHandler/Participant/Left.md new file mode 100644 index 0000000000..0f3de1c2ee --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Participant/Left.md @@ -0,0 +1,37 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Participant\\Left: A participant that left the channel/supergroup." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Participant\Left` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +A participant that left the channel/supergroup. + + + +## Properties +* `$peer`: `int` The peer that left + +## Method list: +* [`fromRawParticipant(array $rawParticipant): self`](#fromRawParticipant) + +## Methods: +### `fromRawParticipant(array $rawParticipant): self` + + + + +Parameters: + +* `$rawParticipant`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Participant/Member.md b/docs/PHP/danog/MadelineProto/EventHandler/Participant/Member.md new file mode 100644 index 0000000000..c946a33179 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Participant/Member.md @@ -0,0 +1,38 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Participant\\Member: Channel/supergroup participant." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Participant\Member` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Channel/supergroup participant. + + + +## Properties +* `$userId`: `int` Participant user ID +* `$date`: `int` Date joined + +## Method list: +* [`fromRawParticipant(array $rawParticipant): self`](#fromRawParticipant) + +## Methods: +### `fromRawParticipant(array $rawParticipant): self` + + + + +Parameters: + +* `$rawParticipant`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Participant/MySelf.md b/docs/PHP/danog/MadelineProto/EventHandler/Participant/MySelf.md new file mode 100644 index 0000000000..da87c948a1 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Participant/MySelf.md @@ -0,0 +1,40 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Participant\\MySelf: Myself." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Participant\MySelf` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Myself. + + + +## Properties +* `$viaRequest`: `bool` Whether I joined upon specific approval of an admin +* `$userId`: `int` User ID +* `$inviterId`: `?int` User that invited me to the channel/supergroup +* `$date`: `int` When did I join the channel/supergroup + +## Method list: +* [`fromRawParticipant(array $rawParticipant): self`](#fromRawParticipant) + +## Methods: +### `fromRawParticipant(array $rawParticipant): self` + + + + +Parameters: + +* `$rawParticipant`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Participant/Rights.md b/docs/PHP/danog/MadelineProto/EventHandler/Participant/Rights.md new file mode 100644 index 0000000000..b2982ae5d4 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Participant/Rights.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Participant\\Rights: " +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Participant\Rights` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Participant/Rights/Admin.md b/docs/PHP/danog/MadelineProto/EventHandler/Participant/Rights/Admin.md new file mode 100644 index 0000000000..12adf53edc --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Participant/Rights/Admin.md @@ -0,0 +1,35 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Participant\\Rights\\Admin: Represents the rights of an admin in a [channel/supergroup](https://core.telegram.org/api/channel)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Participant\Rights\Admin` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Represents the rights of an admin in a [channel/supergroup](https://core.telegram.org/api/channel). + + + +## Properties +* `$changeInfo`: `bool` If set, allows the admin to modify the description of the [channel/supergroup](https://core.telegram.org/api/channel) +* `$postMessages`: `bool` If set, allows the admin to post messages in the [channel](https://core.telegram.org/api/channel) +* `$editMessages`: `bool` If set, allows the admin to also edit messages from other admins in the [channel](https://core.telegram.org/api/channel) +* `$deleteMessages`: `bool` If set, allows the admin to also delete messages from other admins in the [channel](https://core.telegram.org/api/channel) +* `$banUsers`: `bool` If set, allows the admin to ban users from the [channel/supergroup](https://core.telegram.org/api/channel) +* `$inviteUsers`: `bool` If set, allows the admin to invite users in the [channel/supergroup](https://core.telegram.org/api/channel) +* `$pinMessages`: `bool` If set, allows the admin to pin messages in the [channel/supergroup](https://core.telegram.org/api/channel) +* `$addAdmins`: `bool` If set, allows the admin to add other admins with the same (or more limited) permissions in the [channel/supergroup](https://core.telegram.org/api/channel) +* `$anonymous`: `bool` Whether this admin is anonymous +* `$manageCall`: `bool` If set, allows the admin to change group call/livestream settings +* `$other`: `bool` Set this flag if none of the other flags are set, +but you still want the user to be an admin: if this or any of the other flags are set, +the admin can get the chat [admin log](https://core.telegram.org/api/recent-actions), get [chat statistics](https://core.telegram.org/api/stats), get [message statistics in channels](https://core.telegram.org/api/stats), get channel members, +see anonymous administrators in supergroups and ignore slow mode. +* `$manageTopics`: `bool` If set, allows the admin to create, delete or modify [forum topics »](https://core.telegram.org/api/forum#forum-topics). +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Participant/Rights/Banned.md b/docs/PHP/danog/MadelineProto/EventHandler/Participant/Rights/Banned.md new file mode 100644 index 0000000000..87ee8805d9 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Participant/Rights/Banned.md @@ -0,0 +1,40 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Participant\\Rights\\Banned: Represents the rights of a normal user in a [supergroup/channel/chat](https://core.telegram.org/api/channel). In this case, the flags are inverted: if set, a flag does not allow a user to do X." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Participant\Rights\Banned` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Represents the rights of a normal user in a [supergroup/channel/chat](https://core.telegram.org/api/channel). In this case, the flags are inverted: if set, a flag does not allow a user to do X. + + + +## Properties +* `$viewMessages`: `bool` If set, does not allow a user to view messages in a [supergroup/chat](https://core.telegram.org/api/channel) +* `$sendMessages`: `bool` If set, does not allow a user to send messages in a [supergroup/chat](https://core.telegram.org/api/channel) +* `$sendMedia`: `bool` If set, does not allow a user to send any media in a [supergroup/chat](https://core.telegram.org/api/channel) +* `$sendStickers`: `bool` If set, does not allow a user to send stickers in a [supergroup/chat](https://core.telegram.org/api/channel) +* `$sendGifs`: `bool` If set, does not allow a user to send stickers in a [supergroup/chat](https://core.telegram.org/api/channel) +* `$sendGames`: `bool` If set, does not allow a user to send games in a [supergroup/chat](https://core.telegram.org/api/channel) +* `$sendInline`: `bool` If set, does not allow a user to use inline bots in a [supergroup/chat](https://core.telegram.org/api/channel) +* `$embedLinks`: `bool` If set, does not allow a user to embed links in the messages of a [supergroup/chat](https://core.telegram.org/api/channel) +* `$sendPolls`: `bool` If set, does not allow a user to send polls in a [supergroup/chat](https://core.telegram.org/api/channel) +* `$changeInfo`: `bool` If set, does not allow any user to change the description of a [supergroup/chat](https://core.telegram.org/api/channel) +* `$inviteUsers`: `bool` If set, does not allow any user to invite users in a [supergroup/chat](https://core.telegram.org/api/channel) +* `$pinMessages`: `bool` If set, does not allow any user to pin messages in a [supergroup/chat](https://core.telegram.org/api/channel) +* `$manageTopics`: `bool` If set, does not allow any user to create, delete or modify [forum topics »](https://core.telegram.org/api/forum#forum-topics). +* `$sendPhotos`: `bool` If set, does not allow a user to send photos in a [supergroup/chat](https://core.telegram.org/api/channel) +* `$sendVideos`: `bool` If set, does not allow a user to send videos in a [supergroup/chat](https://core.telegram.org/api/channel) +* `$sendRoundvideos`: `bool` If set, does not allow a user to send round videos in a [supergroup/chat](https://core.telegram.org/api/channel) +* `$sendAudios`: `bool` If set, does not allow a user to send audio files in a [supergroup/chat](https://core.telegram.org/api/channel) +* `$sendDocs`: `bool` If set, does not allow a user to send documents in a [supergroup/chat](https://core.telegram.org/api/channel) +* `$sendPlain`: `bool` If set, does not allow a user to send text messages in a [supergroup/chat](https://core.telegram.org/api/channel) +* `$untilDate`: `int` Validity of said permissions (it is considered forever any value less then 30 seconds or more then 366 days). +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Pinned.md b/docs/PHP/danog/MadelineProto/EventHandler/Pinned.md new file mode 100644 index 0000000000..4af1c3eeeb --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Pinned.md @@ -0,0 +1,23 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Pinned: Indicates that some messages were pinned/unpinned." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Pinned` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Indicates that some messages were pinned/unpinned. + + + +## Properties +* `$pinned`: `bool` Whether the messages were pinned or unpinned. +* `$ids`: `list` List of identifiers of pinned messages. +* `$chatId`: `int` ID of the chat where the messages were pinned. +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedChannelMessages.md b/docs/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedChannelMessages.md new file mode 100644 index 0000000000..5bbdcf1588 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedChannelMessages.md @@ -0,0 +1,23 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Pinned\\PinnedChannelMessages: Represents messages that were pinned/unpinned in a [channel](https://core.telegram.org/api/channel)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Pinned\PinnedChannelMessages` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents messages that were pinned/unpinned in a [channel](https://core.telegram.org/api/channel). + + + +## Properties +* `$pinned`: `bool` Whether the messages were pinned or unpinned. +* `$ids`: `list` List of identifiers of pinned messages. +* `$chatId`: `int` ID of the chat where the messages were pinned. +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedGroupMessages.md b/docs/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedGroupMessages.md new file mode 100644 index 0000000000..278a01ce92 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedGroupMessages.md @@ -0,0 +1,23 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Pinned\\PinnedGroupMessages: Represents messages that were pinned/unpinned in a [chat/supergroup](https://core.telegram.org/api/channel)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Pinned\PinnedGroupMessages` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents messages that were pinned/unpinned in a [chat/supergroup](https://core.telegram.org/api/channel). + + + +## Properties +* `$pinned`: `bool` Whether the messages were pinned or unpinned. +* `$ids`: `list` List of identifiers of pinned messages. +* `$chatId`: `int` ID of the chat where the messages were pinned. +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedPrivateMessages.md b/docs/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedPrivateMessages.md new file mode 100644 index 0000000000..f3bc929e31 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedPrivateMessages.md @@ -0,0 +1,23 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Pinned\\PinnedPrivateMessages: Some messages were pinned in a private chat." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Pinned\PinnedPrivateMessages` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Some messages were pinned in a private chat. + + + +## Properties +* `$pinned`: `bool` Whether the messages were pinned or unpinned. +* `$ids`: `list` List of identifiers of pinned messages. +* `$chatId`: `int` ID of the chat where the messages were pinned. +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Plugin/RestartPlugin.md b/docs/PHP/danog/MadelineProto/EventHandler/Plugin/RestartPlugin.md new file mode 100644 index 0000000000..246ceb00e6 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Plugin/RestartPlugin.md @@ -0,0 +1,3334 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Plugin\\RestartPlugin: Plugin that offers a /restart command to admins that can be used to restart the bot, applying changes." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Plugin\RestartPlugin` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Plugin that offers a /restart command to admins that can be used to restart the bot, applying changes. + + + +## Properties +* `$auth`: `\danog\MadelineProto\Namespace\Auth` +* `$account`: `\danog\MadelineProto\Namespace\Account` +* `$users`: `\danog\MadelineProto\Namespace\Users` +* `$contacts`: `\danog\MadelineProto\Namespace\Contacts` +* `$messages`: `\danog\MadelineProto\Namespace\Messages` +* `$updates`: `\danog\MadelineProto\Namespace\Updates` +* `$photos`: `\danog\MadelineProto\Namespace\Photos` +* `$upload`: `\danog\MadelineProto\Namespace\Upload` +* `$help`: `\danog\MadelineProto\Namespace\Help` +* `$channels`: `\danog\MadelineProto\Namespace\Channels` +* `$bots`: `\danog\MadelineProto\Namespace\Bots` +* `$payments`: `\danog\MadelineProto\Namespace\Payments` +* `$stickers`: `\danog\MadelineProto\Namespace\Stickers` +* `$phone`: `\danog\MadelineProto\Namespace\Phone` +* `$langpack`: `\danog\MadelineProto\Namespace\Langpack` +* `$folders`: `\danog\MadelineProto\Namespace\Folders` +* `$stats`: `\danog\MadelineProto\Namespace\Stats` +* `$chatlists`: `\danog\MadelineProto\Namespace\Chatlists` +* `$stories`: `\danog\MadelineProto\Namespace\Stories` +* `$premium`: `\danog\MadelineProto\Namespace\Premium` +* `$smsjobs`: `\danog\MadelineProto\Namespace\Smsjobs` +* `$fragment`: `\danog\MadelineProto\Namespace\Fragment` + +## Method list: +* [`cmd(\danog\MadelineProto\EventHandler\SimpleFilter\Incoming&danog\MadelineProto\EventHandler\Message&danog\MadelineProto\EventHandler\SimpleFilter\FromAdmin $_): void`](#cmd) +* [`getPluginPaths(): array|string|null`](#getPluginPaths) +* [`isPluginEnabled(): bool`](#isPluginEnabled) +* [`startAndLoop(string $session, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): void`](#startAndLoop) +* [`startAndLoopBot(string $session, string $token, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): void`](#startAndLoopBot) +* [`getPeriodicLoop(string $name): ?\danog\Loop\PeriodicLoop`](#getPeriodicLoop) +* [`getPeriodicLoops(): array`](#getPeriodicLoops) +* [`getReportPeers(): (string|int|array<(string|int)>)`](#getReportPeers) +* [`getPlugins(): array>`](#getPlugins) +* [`MTProtoToBotAPI(array $data): array`](#MTProtoToBotAPI) +* [`MTProtoToTd(mixed $params): array`](#MTProtoToTd) +* [`MTProtoToTdcli(mixed $params): array`](#MTProtoToTdcli) +* [`acceptCall(int $id): void`](#acceptCall) +* [`acceptSecretChat(array $params): void`](#acceptSecretChat) +* [`arr(mixed ...$params): array`](#arr) +* [`base64urlDecode(string $data): string`](#base64urlDecode) +* [`base64urlEncode(string $data): string`](#base64urlEncode) +* [`botAPIToMTProto(array $arguments): array`](#botAPIToMTProto) +* [`botLogin(string $token): ?array`](#botLogin) +* [`broadcastCustom(\danog\MadelineProto\Broadcast\Action $action, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, (float|null) $delay = NULL): int`](#broadcastCustom) +* [`broadcastForwardMessages(mixed $from_peer, list $message_ids, bool $drop_author = false, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int`](#broadcastForwardMessages) +* [`broadcastMessages(array $messages, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int`](#broadcastMessages) +* [`callFork(\Generator|\Amp\Future|callable $callable, mixed ...$args): \Amp\Future`](#callFork) +* [`callGetCurrent(int $id): \danog\MadelineProto\RemoteUrl|\danog\MadelineProto\LocalFile|string|null`](#callGetCurrent) +* [`callPlay(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $file): void`](#callPlay) +* [`callPlayOnHold(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream ...$files): void`](#callPlayOnHold) +* [`callSetOutput(int $id, \danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream $file): void`](#callSetOutput) +* [`canConvertOgg(): bool`](#canConvertOgg) +* [`canUseFFmpeg(?\Amp\Cancellation $cancellation = NULL): bool`](#canUseFFmpeg) +* [`cancelBroadcast(integer $id): void`](#cancelBroadcast) +* [`closeConnection(string $message): void`](#closeConnection) +* [`complete2faLogin(string $password): array`](#complete2faLogin) +* [`completePhoneLogin(string $code): array`](#completePhoneLogin) +* [`completeSignup(string $first_name, string $last_name = ''): array`](#completeSignup) +* [`discardCall(int $id, \danog\MadelineProto\VoIP\DiscardReason $reason = \danog\MadelineProto\VoIP\DiscardReason::HANGUP, int<1, 5> $rating = NULL, string $comment = NULL): void`](#discardCall) +* [`discardSecretChat(int $chat): void`](#discardSecretChat) +* [`downloadServer(string $session): void`](#downloadServer) +* [`downloadToBrowser((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, (null|callable) $cb = NULL, (null|int) $size = NULL, (null|string) $name = NULL, (null|string) $mime = NULL, ?\Amp\Cancellation $cancellation = NULL): void`](#downloadToBrowser) +* [`downloadToCallable(mixed $messageMedia, (callable|\danog\MadelineProto\FileCallbackInterface) $callable, callable $cb = NULL, bool $seekable = true, int $offset = 0, int $end = -1, int $part_size = NULL, ?\Amp\Cancellation $cancellation = NULL): void`](#downloadToCallable) +* [`downloadToDir(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $dir, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string`](#downloadToDir) +* [`downloadToFile(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $file, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string`](#downloadToFile) +* [`downloadToResponse((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, \Amp\Http\Server\Request $request, callable $cb = NULL, (null|int) $size = NULL, (null|string) $mime = NULL, (null|string) $name = NULL, ?\Amp\Cancellation $cancellation = NULL): \Amp\Http\Server\Response`](#downloadToResponse) +* [`downloadToReturnedStream(mixed $messageMedia, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#downloadToReturnedStream) +* [`downloadToStream(mixed $messageMedia, (mixed|\danog\MadelineProto\FileCallbackInterface|resource|\Amp\ByteStream\WritableStream) $stream, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): void`](#downloadToStream) +* [`echo(string $string): void`](#echo) +* [`end(array $what): T`](#end) +* [`entitiesToHtml(string $message, list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})> $entities, bool $allowTelegramTags = false): string`](#entitiesToHtml) +* [`exportAuthorization(): array{0: (int|string), 1: string}`](#exportAuthorization) +* [`extractBotAPIFile(array $info): ?array`](#extractBotAPIFile) +* [`extractMessage(array $updates): array`](#extractMessage) +* [`extractMessageId(array $updates): int`](#extractMessageId) +* [`extractMessageUpdate(array $updates): array`](#extractMessageUpdate) +* [`extractUpdates(array $updates): array`](#extractUpdates) +* [`fileGetContents(string $url): string`](#fileGetContents) +* [`flock(string $file, integer $operation, float $polling = 0.1, ?\Amp\Cancellation $token = NULL, ?\Closure $failureCb = NULL): ($token is null ? Closure(): void : (Closure(): void | null))`](#flock) +* [`fullChatLastUpdated(mixed $id): int`](#fullChatLastUpdated) +* [`fullGetSelf(): array|false`](#fullGetSelf) +* [`genVectorHash(array $longs): string`](#genVectorHash) +* [`getAdminIds(): array`](#getAdminIds) +* [`getAllCalls(): array`](#getAllCalls) +* [`getAllMethods(): array`](#getAllMethods) +* [`getAuthorization(): (\danog\MadelineProto\API::NOT_LOGGED_IN|\danog\MadelineProto\API::WAITING_CODE|\danog\MadelineProto\API::WAITING_SIGNUP|\danog\MadelineProto\API::WAITING_PASSWORD|\danog\MadelineProto\API::LOGGED_IN|API::LOGGED_OUT)`](#getAuthorization) +* [`getBroadcastProgress(integer $id): ?\danog\MadelineProto\Broadcast\Progress`](#getBroadcastProgress) +* [`getCachedConfig(): array`](#getCachedConfig) +* [`getCall(int $id): ?\danog\MadelineProto\VoIP`](#getCall) +* [`getCallByPeer(int $userId): ?\danog\MadelineProto\VoIP`](#getCallByPeer) +* [`getCallState(int $id): ?\danog\MadelineProto\VoIP\CallState`](#getCallState) +* [`getCdnConfig(): void`](#getCdnConfig) +* [`getConfig(array $config = []): array`](#getConfig) +* [`getDNSClient(): \Amp\Dns\DnsResolver`](#getDNSClient) +* [`getDhConfig(): array`](#getDhConfig) +* [`getDialogIds(): list`](#getDialogIds) +* [`getDownloadInfo(mixed $messageMedia): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string, thumb_size?: string}`](#getDownloadInfo) +* [`getDownloadLink(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|array|string $media, ?string $scriptUrl = NULL, ?int $size = NULL, ?string $name = NULL, ?string $mime = NULL): string`](#getDownloadLink) +* [`getEventHandler((class-string|null) $class = NULL): (T|\danog\MadelineProto\Ipc\EventHandlerProxy|\__PHP_Incomplete_Class|null)`](#getEventHandler) +* [`getExtensionFromLocation(mixed $location, string $default): string`](#getExtensionFromLocation) +* [`getExtensionFromMime(string $mime): string`](#getExtensionFromMime) +* [`getFileInfo(mixed $constructor): array`](#getFileInfo) +* [`getFullDialogs(): array`](#getFullDialogs) +* [`getFullInfo(mixed $id): array`](#getFullInfo) +* [`getHTTPClient(): \Amp\Http\Client\HttpClient`](#getHTTPClient) +* [`getHint(): string`](#getHint) +* [`getId(mixed $id): int`](#getId) +* [`getInfo(mixed $id, \danog\MadelineProto\API::INFO_TYPE_* $type = \danog\MadelineProto\API::INFO_TYPE_ALL): (\$type is \danog\MadelineProto\API::INFO_TYPE_ALL ? array{User?: array, Chat?: array, bot_api_id: int, user_id?: int, chat_id?: int, channel_id?: int, type: string} : ($type is API::INFO_TYPE_TYPE ? string : ($type is \danog\MadelineProto\API::INFO_TYPE_ID ? int : (array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int} | array{_: string, user_id?: int, access_hash?: int, min?: bool} | array{_: string, channel_id: int, access_hash: int, min: bool}))))`](#getInfo) +* [`getLogger(): \danog\MadelineProto\Logger`](#getLogger) +* [`getMaps(): ?int`](#getMaps) +* [`getMaxMaps(): ?int`](#getMaxMaps) +* [`getMethodNamespaces(): array`](#getMethodNamespaces) +* [`getMethodsNamespaced(): array`](#getMethodsNamespaced) +* [`getMimeFromBuffer(string $buffer): string`](#getMimeFromBuffer) +* [`getMimeFromExtension(string $extension, string $default): string`](#getMimeFromExtension) +* [`getMimeFromFile(string $file): string`](#getMimeFromFile) +* [`getPlugin(class-string $class): \danog\MadelineProto\PluginEventHandler|\danog\MadelineProto\Ipc\EventHandlerProxy|null`](#getPlugin) +* [`getPropicInfo(mixed $data): ?\danog\MadelineProto\EventHandler\Media\Photo`](#getPropicInfo) +* [`getPsrLogger(): \Psr\Log\LoggerInterface`](#getPsrLogger) +* [`getPwrChat(mixed $id, bool $fullfetch = true): array`](#getPwrChat) +* [`getSecretChat((array|int) $chat): \danog\MadelineProto\SecretChats\SecretChat`](#getSecretChat) +* [`getSecretMessage(integer $chatId, integer $randomId): \danog\MadelineProto\EventHandler\Message\SecretMessage`](#getSecretMessage) +* [`getSelf(): array|false`](#getSelf) +* [`getSessionName(): string`](#getSessionName) +* [`getSettings(): \danog\MadelineProto\Settings`](#getSettings) +* [`getSponsoredMessages((int|string|array) $peer): ?array`](#getSponsoredMessages) +* [`getStream(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL, ?int $size = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`getStreamPipe(): \Amp\ByteStream\Pipe`](#getStreamPipe) +* [`getTL(): \danog\MadelineProto\TL\TLInterface`](#getTL) +* [`getType(mixed $id): \danog\MadelineProto\API::PEER_TYPE_*`](#getType) +* [`getUpdates(array{offset?: int, limit?: int, timeout?: float} $params = []): list`](#getUpdates) +* [`getWebMessage(string $message): string`](#getWebMessage) +* [`getWebWarnings(): string`](#getWebWarnings) +* [`hasAdmins(): bool`](#hasAdmins) +* [`hasEventHandler(): bool`](#hasEventHandler) +* [`hasPlugin(class-string<\danog\MadelineProto\EventHandler> $class): bool`](#hasPlugin) +* [`hasReportPeers(): bool`](#hasReportPeers) +* [`hasSecretChat((array|int) $chat): bool`](#hasSecretChat) +* [`htmlEscape(string $what): string`](#htmlEscape) +* [`htmlToMessageEntities(string $html): \danog\MadelineProto\TextEntities`](#htmlToMessageEntities) +* [`importAuthorization(array $authorization, int $mainDcID): array`](#importAuthorization) +* [`inflateStripped(string $stripped): string`](#inflateStripped) +* [`initSelfRestart(): void`](#initSelfRestart) +* [`isAltervista(): bool`](#isAltervista) +* [`isArrayOrAlike(mixed $var): bool`](#isArrayOrAlike) +* [`isBot(mixed $peer): bool`](#isBot) +* [`isForum(mixed $peer): bool`](#isForum) +* [`isIpc(): bool`](#isIpc) +* [`isIpcWorker(): bool`](#isIpcWorker) +* [`isPlayPaused(int $id): bool`](#isPlayPaused) +* [`isPremium(): bool`](#isPremium) +* [`isSelfBot(): bool`](#isSelfBot) +* [`isSelfUser(): bool`](#isSelfUser) +* [`isTestMode(): boolean`](#isTestMode) +* [`logger(mixed $param, int $level = \danog\MadelineProto\Logger::NOTICE, string $file = ''): void`](#logger) +* [`logout(): void`](#logout) +* [`markdownCodeEscape(string $what): string`](#markdownCodeEscape) +* [`markdownCodeblockEscape(string $what): string`](#markdownCodeblockEscape) +* [`markdownEscape(string $what): string`](#markdownEscape) +* [`markdownToMessageEntities(string $markdown): \danog\MadelineProto\TextEntities`](#markdownToMessageEntities) +* [`markdownUrlEscape(string $what): string`](#markdownUrlEscape) +* [`mbStrSplit(string $text, integer $length): array`](#mbStrSplit) +* [`mbStrlen(string $text): int`](#mbStrlen) +* [`mbSubstr(string $text, integer $offset, (null|int) $length = NULL): string`](#mbSubstr) +* [`openBuffered(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL): Closure(int): ?string`](#openBuffered) +* [`openFileAppendOnly(string $path): \Amp\File\File`](#openFileAppendOnly) +* [`packDouble(float $value): string`](#packDouble) +* [`packSignedInt(integer $value): string`](#packSignedInt) +* [`packSignedLong(int $value): string`](#packSignedLong) +* [`packUnsignedInt(int $value): string`](#packUnsignedInt) +* [`pausePlay(int $id): void`](#pausePlay) +* [`peerIsset(mixed $id): bool`](#peerIsset) +* [`phoneLogin(string $number, integer $sms_type = 5): array`](#phoneLogin) +* [`posmod(int $a, int $b): int`](#posmod) +* [`processDownloadServerPing(string $path, string $payload): void`](#processDownloadServerPing) +* [`qrLogin(): ?\danog\MadelineProto\TL\Types\LoginQrCode`](#qrLogin) +* [`random(integer $length): string`](#random) +* [`randomInt(integer $modulus = 0): int`](#randomInt) +* [`readLine(string $prompt = '', ?\Amp\Cancellation $cancel = NULL): string`](#readLine) +* [`refreshFullPeerCache(mixed $id): void`](#refreshFullPeerCache) +* [`refreshPeerCache(mixed ...$ids): void`](#refreshPeerCache) +* [`report(string $message, string $parseMode = ''): void`](#report) +* [`reportMemoryProfile(): void`](#reportMemoryProfile) +* [`requestCall(mixed $user): \danog\MadelineProto\VoIP`](#requestCall) +* [`requestSecretChat(mixed $user): int`](#requestSecretChat) +* [`resetUpdateState(): void`](#resetUpdateState) +* [`restart(): void`](#restart) +* [`resumePlay(int $id): void`](#resumePlay) +* [`rethrow(Throwable $e): void`](#rethrow) +* [`rleDecode(string $string): string`](#rleDecode) +* [`rleEncode(string $string): string`](#rleEncode) +* [`sendAudio((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendAudio) +* [`sendCustomEvent(mixed $payload): void`](#sendCustomEvent) +* [`sendDocument((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendDocument) +* [`sendDocumentPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendDocumentPhoto) +* [`sendGif((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, ?int $duration = NULL, ?int $width = NULL, ?int $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendGif) +* [`sendMessage((integer|string) $peer, string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendMessage) +* [`sendMessageToAdmins(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, ?\Amp\Cancellation $cancellation = NULL): list<\danog\MadelineProto\EventHandler\Message>`](#sendMessageToAdmins) +* [`sendPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendPhoto) +* [`sendSticker((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', array $stickerSet = [ '_' => 'inputStickerSetEmpty',], ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendSticker) +* [`sendVideo((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendVideo) +* [`sendVoice((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendVoice) +* [`setNoop(): void`](#setNoop) +* [`setReportPeers((int|string|array<(int|string)>) $userOrId): void`](#setReportPeers) +* [`setWebhook(string $webhookUrl): void`](#setWebhook) +* [`skipPlay(int $id): void`](#skipPlay) +* [`sleep(float $time): void`](#sleep) +* [`start(): array`](#start) +* [`stop(): void`](#stop) +* [`stopPlay(int $id): void`](#stopPlay) +* [`stringToStream(string $str): \Amp\ByteStream\ReadableBuffer`](#stringToStream) +* [`subscribeToUpdates(mixed $channel): bool`](#subscribeToUpdates) +* [`tdToMTProto(array $params): array`](#tdToMTProto) +* [`tdToTdcli(mixed $params): array`](#tdToTdcli) +* [`tdcliToTd(mixed $params, array $key = NULL): array`](#tdcliToTd) +* [`testFibers(int $fiberCount = 100000): array{maxFibers: int, realMemoryMb: int, maps: ?int, maxMaps: ?int}`](#testFibers) +* [`toCamelCase(string $input): string`](#toCamelCase) +* [`toSnakeCase(string $input): string`](#toSnakeCase) +* [`unpackDouble(string $value): float`](#unpackDouble) +* [`unpackFileId(string $fileId): array`](#unpackFileId) +* [`unpackSignedInt(string $value): int`](#unpackSignedInt) +* [`unpackSignedLong(string $value): int`](#unpackSignedLong) +* [`unpackSignedLongString((string|int|array) $value): string`](#unpackSignedLongString) +* [`unsetEventHandler(): void`](#unsetEventHandler) +* [`update2fa(array{password?: string, new_password?: string, email?: string, hint?: string} $params): void`](#update2fa) +* [`updateSettings(\danog\MadelineProto\SettingsAbstract $settings): void`](#updateSettings) +* [`upload((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|string|array|resource) $file, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#upload) +* [`uploadEncrypted((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|string|array|resource) $file, string $fileName = '', callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadEncrypted) +* [`uploadFromCallable(callable(int, int, ?Cancellation): strin) $callable, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable(float, float, float): voi) $cb = NULL, boolean $seekable = true, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromCallable) +* [`uploadFromStream(mixed $stream, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromStream) +* [`uploadFromTgfile(mixed $media, callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromTgfile) +* [`uploadFromUrl((string|\danog\MadelineProto\FileCallbackInterface) $url, integer $size = 0, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromUrl) +* [`validateEventHandlerClass(class-string<\danog\MadelineProto\EventHandler> $class): list<\danog\MadelineProto\EventHandlerIssue>`](#validateEventHandlerClass) +* [`viewSponsoredMessage((int|array) $peer, (string|array{random_id: string}) $message): bool`](#viewSponsoredMessage) +* [`wrapMedia(array $media, bool $protected = false): ?\danog\MadelineProto\EventHandler\Media`](#wrapMedia) +* [`wrapMessage(array $message, bool $scheduled = false): ?\danog\MadelineProto\EventHandler\AbstractMessage`](#wrapMessage) +* [`wrapPin(array $message): ?\danog\MadelineProto\EventHandler\Pinned`](#wrapPin) +* [`wrapUpdate(array $update): ?\danog\MadelineProto\EventHandler\Update`](#wrapUpdate) +* [`initDbProperties(\danog\AsyncOrm\Settings $settings, string $tablePrefix): void`](#initDbProperties) +* [`saveDbProperties(): void`](#saveDbProperties) + +## Methods: +### `cmd(\danog\MadelineProto\EventHandler\SimpleFilter\Incoming&danog\MadelineProto\EventHandler\Message&danog\MadelineProto\EventHandler\SimpleFilter\FromAdmin $_): void` + + + + +Parameters: + +* `$_`: `\danog\MadelineProto\EventHandler\SimpleFilter\Incoming&danog\MadelineProto\EventHandler\Message&danog\MadelineProto\EventHandler\SimpleFilter\FromAdmin` + + +#### See also: +* `\danog\MadelineProto\EventHandler\SimpleFilter\Incoming&danog\MadelineProto\EventHandler\Message&danog\MadelineProto\EventHandler\SimpleFilter\FromAdmin` + + + + +### `getPluginPaths(): array|string|null` + +Plugins can require other plugins ONLY with the getPlugins() method. + + + +### `isPluginEnabled(): bool` + +Whether the plugin is enabled. + + + +### `startAndLoop(string $session, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): void` + +Start MadelineProto and the event handler. + +Also initializes error reporting, catching and reporting all errors surfacing from the event loop. + + +Parameters: + +* `$session`: `string` Session name +* `$settings`: `?\danog\MadelineProto\SettingsAbstract` Settings + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` + + + + +### `startAndLoopBot(string $session, string $token, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): void` + +Start MadelineProto as a bot and the event handler. + +Also initializes error reporting, catching and reporting all errors surfacing from the event loop. + + +Parameters: + +* `$session`: `string` Session name +* `$token`: `string` Bot token +* `$settings`: `?\danog\MadelineProto\SettingsAbstract` Settings + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` + + + + +### `getPeriodicLoop(string $name): ?\danog\Loop\PeriodicLoop` + +Obtain a PeriodicLoop instance created by the Cron attribute. + + +Parameters: + +* `$name`: `string` Method name + + +#### See also: +* `\danog\Loop\PeriodicLoop` + + + + +### `getPeriodicLoops(): array` + +Obtain all PeriodicLoop instances created by the Cron attribute. + + +#### See also: +* `\danog\Loop\PeriodicLoop` + + + + +### `getReportPeers(): (string|int|array<(string|int)>)` + +Get peers where to send error reports. + + + +### `getPlugins(): array>` + +Obtain a list of plugin event handlers to use, in addition with those found by getPluginPath. + + + +### `MTProtoToBotAPI(array $data): array` + +Convert MTProto parameters to bot API parameters. + + +Parameters: + +* `$data`: `array` Data + + + +### `MTProtoToTd(mixed $params): array` + +MTProto to TD params. + + +Parameters: + +* `$params`: `mixed` Params + + + +### `MTProtoToTdcli(mixed $params): array` + +MTProto to TDCLI params. + + +Parameters: + +* `$params`: `mixed` Params + + + +### `acceptCall(int $id): void` + +Accept call. + + +Parameters: + +* `$id`: `int` + + + +### `acceptSecretChat(array $params): void` + +Accept secret chat. + + +Parameters: + +* `$params`: `array` Secret chat ID + + + +### `arr(mixed ...$params): array` + +Create array. + + +Parameters: + +* `...$params`: `mixed` Params + + + +### `base64urlDecode(string $data): string` + +base64URL decode. + + +Parameters: + +* `$data`: `string` Data to decode + + + +### `base64urlEncode(string $data): string` + +Base64URL encode. + + +Parameters: + +* `$data`: `string` Data to encode + + + +### `botAPIToMTProto(array $arguments): array` + +Convert bot API parameters to MTProto parameters. + + +Parameters: + +* `$arguments`: `array` Arguments + + + +### `botLogin(string $token): ?array` + +Login as bot. + + +Parameters: + +* `$token`: `string` Bot token + + + +### `broadcastCustom(\danog\MadelineProto\Broadcast\Action $action, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, (float|null) $delay = NULL): int` + +Executes a custom broadcast action with all peers (users, chats, channels) of the bot. + +Will return an integer ID that can be used to: + +- Get the current broadcast progress with getBroadcastProgress +- Cancel the broadcast using cancelBroadcast + +Note that to avoid manually polling the progress, +MadelineProto will also periodically emit updateBroadcastProgress updates, +containing a Progress object for all broadcasts currently in-progress. + + +Parameters: + +* `$action`: `\danog\MadelineProto\Broadcast\Action` A custom, serializable Action class that will be called once for every peer. +* `$filter`: `?\danog\MadelineProto\Broadcast\Filter` +* `$delay`: `(float|null)` Number of seconds to wait between each peer. + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Action`: Interface that represents a broadcast action.](../../../../danog/MadelineProto/Broadcast/Action.html) +* [`\danog\MadelineProto\Broadcast\Filter`: Broadcast filter.](../../../../danog/MadelineProto/Broadcast/Filter.html) + + + + +### `broadcastForwardMessages(mixed $from_peer, list $message_ids, bool $drop_author = false, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int` + +Forwards a list of messages to all peers (users, chats, channels) of the bot. + +Will return an integer ID that can be used to: + +- Get the current broadcast progress with getBroadcastProgress +- Cancel the broadcast using cancelBroadcast + +Note that to avoid manually polling the progress, +MadelineProto will also periodically emit updateBroadcastProgress updates, +containing a Progress object for all broadcasts currently in-progress. + + +Parameters: + +* `$from_peer`: `mixed` Bot API ID or Update, from where to forward the messages. +* `$message_ids`: `list` IDs of the messages to forward. +* `$drop_author`: `bool` If true, will forward messages without quoting the original author. +* `$filter`: `?\danog\MadelineProto\Broadcast\Filter` +* `$pin`: `bool` Whether to also pin the last sent message. +* `$delay`: `(float|null)` Number of seconds to wait between each peer. + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Filter`: Broadcast filter.](../../../../danog/MadelineProto/Broadcast/Filter.html) + + + + +### `broadcastMessages(array $messages, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int` + +Sends a list of messages to all peers (users, chats, channels) of the bot. + +A simplified version of this method is also available: broadcastForwardMessages can work with pre-prepared messages. + +Will return an integer ID that can be used to: + +- Get the current broadcast progress with getBroadcastProgress +- Cancel the broadcast using cancelBroadcast + +Note that to avoid manually polling the progress, +MadelineProto will also periodically emit updateBroadcastProgress updates, +containing a Progress object for all broadcasts currently in-progress. + + +Parameters: + +* `$messages`: `array` The messages to send: an array of arrays, containing parameters to pass to messages.sendMessage. +* `$filter`: `?\danog\MadelineProto\Broadcast\Filter` +* `$pin`: `bool` Whether to also pin the last sent message. +* `$delay`: `(float|null)` Number of seconds to wait between each peer. + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Filter`: Broadcast filter.](../../../../danog/MadelineProto/Broadcast/Filter.html) + + + + +### `callFork(\Generator|\Amp\Future|callable $callable, mixed ...$args): \Amp\Future` + +Fork a new green thread and execute the passed function in the background. + + +Parameters: + +* `$callable`: `\Generator|\Amp\Future|callable` +* `...$args`: `mixed` Arguments forwarded to the function when forking the thread. + + +#### See also: +* `\Generator` +* `\Amp\Future` + + + + +### `callGetCurrent(int $id): \danog\MadelineProto\RemoteUrl|\danog\MadelineProto\LocalFile|string|null` + +Get the file that is currently being played. + +Will return a string with the object ID of the stream if we're currently playing a stream, otherwise returns the related LocalFile or RemoteUrl. + + +Parameters: + +* `$id`: `int` + + +#### See also: +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) + + + + +### `callPlay(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $file): void` + +Play file in call. + + +Parameters: + +* `$id`: `int` +* `$file`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` + + + + +### `callPlayOnHold(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream ...$files): void` + +Play files on hold in call. + + +Parameters: + +* `$id`: `int` +* `...$files`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` + + + + +### `callSetOutput(int $id, \danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream $file): void` + +Set output file or stream for incoming OPUS audio packets in a call. + +Will write an OGG OPUS stream to the specified file or stream. + + +Parameters: + +* `$id`: `int` +* `$file`: `\danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* `\Amp\ByteStream\WritableStream` + + + + +### `canConvertOgg(): bool` + +Whether we can convert any audio/video file to a VoIP OGG OPUS file, or the files must be preconverted using @libtgvoipbot. + + + +### `canUseFFmpeg(?\Amp\Cancellation $cancellation = NULL): bool` + +Whether we can convert any audio/video file using ffmpeg. + + +Parameters: + +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `cancelBroadcast(integer $id): void` + +Cancel a running broadcast. + + +Parameters: + +* `$id`: `integer` Broadcast ID + + + +### `closeConnection(string $message): void` + +Close connection with client, connected via web. + + +Parameters: + +* `$message`: `string` Message + + + +### `complete2faLogin(string $password): array` + +Complete 2FA login. + + +Parameters: + +* `$password`: `string` Password + + + +### `completePhoneLogin(string $code): array` + +Complet user login using login code. + + +Parameters: + +* `$code`: `string` Login code + + + +### `completeSignup(string $first_name, string $last_name = ''): array` + +Complete signup to Telegram. + + +Parameters: + +* `$first_name`: `string` First name +* `$last_name`: `string` Last name + + + +### `discardCall(int $id, \danog\MadelineProto\VoIP\DiscardReason $reason = \danog\MadelineProto\VoIP\DiscardReason::HANGUP, int<1, 5> $rating = NULL, string $comment = NULL): void` + +Discard call. + + +Parameters: + +* `$id`: `int` +* `$reason`: `\danog\MadelineProto\VoIP\DiscardReason` +* `$rating`: `int<1, 5>` Call rating in stars +* `$comment`: `string` Additional comment on call quality. + + +#### See also: +* [`\danog\MadelineProto\VoIP\DiscardReason`: Why was the call discarded?](../../../../danog/MadelineProto/VoIP/DiscardReason.html) + + + + +### `discardSecretChat(int $chat): void` + +Discard secret chat. + + +Parameters: + +* `$chat`: `int` Secret chat ID + + + +### `downloadServer(string $session): void` + +Downloads a file to the browser using the specified session file. + + +Parameters: + +* `$session`: `string` + + + +### `downloadToBrowser((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, (null|callable) $cb = NULL, (null|int) $size = NULL, (null|string) $name = NULL, (null|string) $mime = NULL, ?\Amp\Cancellation $cancellation = NULL): void` + +Download file to browser. + +Supports HEAD requests and content-ranges for parallel and resumed downloads. + + +Parameters: + +* `$messageMedia`: `(array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message)` File to download +* `$cb`: `(null|callable)` Status callback (can also use FileCallback) +* `$size`: `(null|int)` Size of file to download, required for bot API file IDs. +* `$name`: `(null|string)` Name of file to download, required for bot API file IDs. +* `$mime`: `(null|string)` MIME type of file to download, required for bot API file IDs. +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* `\Amp\Cancellation` + + + + +### `downloadToCallable(mixed $messageMedia, (callable|\danog\MadelineProto\FileCallbackInterface) $callable, callable $cb = NULL, bool $seekable = true, int $offset = 0, int $end = -1, int $part_size = NULL, ?\Amp\Cancellation $cancellation = NULL): void` + +Download file to callable. +The callable must accept two parameters: string $payload, int $offset +The callable will be called (possibly out of order, depending on the value of $seekable). + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$callable`: `(callable|\danog\MadelineProto\FileCallbackInterface)` Chunk callback +* `$cb`: `callable` Status callback +* `$seekable`: `bool` Whether the callable can be called out of order +* `$offset`: `int` Offset where to start downloading +* `$end`: `int` Offset where to stop downloading (inclusive) +* `$part_size`: `int` Size of each chunk +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` + + + + +### `downloadToDir(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $dir, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string` + +Download file to directory. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$dir`: `(string|\danog\MadelineProto\FileCallbackInterface)` Directory where to download the file +* `$cb`: `callable` Callback +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: Downloaded file name + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` +* `non-empty-string` + + + + +### `downloadToFile(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $file, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string` + +Download file. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$file`: `(string|\danog\MadelineProto\FileCallbackInterface)` Downloaded file path +* `$cb`: `callable` Callback +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: Downloaded file name + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` +* `non-empty-string` + + + + +### `downloadToResponse((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, \Amp\Http\Server\Request $request, callable $cb = NULL, (null|int) $size = NULL, (null|string) $mime = NULL, (null|string) $name = NULL, ?\Amp\Cancellation $cancellation = NULL): \Amp\Http\Server\Response` + +Download file to amphp/http-server response. + +Supports HEAD requests and content-ranges for parallel and resumed downloads. + + +Parameters: + +* `$messageMedia`: `(array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message)` File to download +* `$request`: `\Amp\Http\Server\Request` Request +* `$cb`: `callable` Status callback (can also use FileCallback) +* `$size`: `(null|int)` Size of file to download, required for bot API file IDs. +* `$mime`: `(null|string)` MIME type of file to download, required for bot API file IDs. +* `$name`: `(null|string)` Name of file to download, required for bot API file IDs. +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* `\Amp\Http\Server\Request` +* `\Amp\Cancellation` +* `\Amp\Http\Server\Response` + + + + +### `downloadToReturnedStream(mixed $messageMedia, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Download file to an amphp stream, returning it. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$cb`: `callable` Callback +* `$offset`: `int` Offset where to start downloading +* `$end`: `int` Offset where to end download +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToStream(mixed $messageMedia, (mixed|\danog\MadelineProto\FileCallbackInterface|resource|\Amp\ByteStream\WritableStream) $stream, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): void` + +Download file to stream. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$stream`: `(mixed|\danog\MadelineProto\FileCallbackInterface|resource|\Amp\ByteStream\WritableStream)` Stream where to download file +* `$cb`: `callable` Callback +* `$offset`: `int` Offset where to start downloading +* `$end`: `int` Offset where to end download +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../../../danog/MadelineProto/FileCallbackInterface.html) +* `resource` +* `\Amp\ByteStream\WritableStream` +* `\Amp\Cancellation` + + + + +### `echo(string $string): void` + +Asynchronously write to stdout/browser. + + +Parameters: + +* `$string`: `string` Message to echo + + + +### `end(array $what): T` + +Get final element of array. + + +Parameters: + +* `$what`: `array` Array + + + +### `entitiesToHtml(string $message, list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})> $entities, bool $allowTelegramTags = false): string` + +Convert a message and a set of entities to HTML. + + +Parameters: + +* `$message`: `string` +* `$entities`: `list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})>` +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity`: Master class for message entities.](../../../../danog/MadelineProto/EventHandler/Message/Entities/MessageEntity.html) + + + + +### `exportAuthorization(): array{0: (int|string), 1: string}` + +Export authorization. + + + +### `extractBotAPIFile(array $info): ?array` + +Extract file info from bot API message. + + +Parameters: + +* `$info`: `array` Bot API message object + + + +### `extractMessage(array $updates): array` + +Extract a message constructor from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `extractMessageId(array $updates): int` + +Extract a message ID from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `extractMessageUpdate(array $updates): array` + +Extract an update message constructor from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `extractUpdates(array $updates): array` + +Extract Update constructors from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `fileGetContents(string $url): string` + +Get contents of remote file asynchronously. + + +Parameters: + +* `$url`: `string` URL + + + +### `flock(string $file, integer $operation, float $polling = 0.1, ?\Amp\Cancellation $token = NULL, ?\Closure $failureCb = NULL): ($token is null ? Closure(): void : (Closure(): void | null))` + +Asynchronously lock a file +Resolves with a callbable that MUST eventually be called in order to release the lock. + + +Parameters: + +* `$file`: `string` File to lock +* `$operation`: `integer` Locking mode +* `$polling`: `float` Polling interval +* `$token`: `?\Amp\Cancellation` Cancellation token +* `$failureCb`: `?\Closure` Failure callback, called only once if the first locking attempt fails. + + +#### See also: +* `\Amp\Cancellation` +* `\Closure` + + + + +### `fullChatLastUpdated(mixed $id): int` + +When was full info for this chat last cached. + + +Parameters: + +* `$id`: `mixed` Chat ID + + + +### `fullGetSelf(): array|false` + +Get info about the logged-in user, not cached. + + + +### `genVectorHash(array $longs): string` + +Generate MTProto vector hash. + +Returns a vector hash. + + +Parameters: + +* `$longs`: `array` IDs + + + +### `getAdminIds(): array` + +Get admin IDs (equal to all user report peers). + + + +### `getAllCalls(): array` + +Get all pending and running calls, indexed by user ID. + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../../../danog/MadelineProto/VoIP.html) + + + + +### `getAllMethods(): array` + +Get full list of MTProto and API methods. + + + +### `getAuthorization(): (\danog\MadelineProto\API::NOT_LOGGED_IN|\danog\MadelineProto\API::WAITING_CODE|\danog\MadelineProto\API::WAITING_SIGNUP|\danog\MadelineProto\API::WAITING_PASSWORD|\danog\MadelineProto\API::LOGGED_IN|API::LOGGED_OUT)` + +Get authorization info. + + +#### See also: +* `\danog\MadelineProto\API::NOT_LOGGED_IN` +* `\danog\MadelineProto\API::WAITING_CODE` +* `\danog\MadelineProto\API::WAITING_SIGNUP` +* `\danog\MadelineProto\API::WAITING_PASSWORD` +* `\danog\MadelineProto\API::LOGGED_IN` +* `API::LOGGED_OUT` + + + + +### `getBroadcastProgress(integer $id): ?\danog\MadelineProto\Broadcast\Progress` + +Get the progress of a currently running broadcast. + +Will return null if the broadcast doesn't exist, has already completed or was cancelled. + +Use updateBroadcastProgress updates to get real-time progress status without polling. + + +Parameters: + +* `$id`: `integer` Broadcast ID + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Progress`: Broadcast progress.](../../../../danog/MadelineProto/Broadcast/Progress.html) + + + + +### `getCachedConfig(): array` + +Get cached server-side config. + + + +### `getCall(int $id): ?\danog\MadelineProto\VoIP` + +Get phone call information. + + +Parameters: + +* `$id`: `int` + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../../../danog/MadelineProto/VoIP.html) + + + + +### `getCallByPeer(int $userId): ?\danog\MadelineProto\VoIP` + +Get the phone call with the specified user ID. + + +Parameters: + +* `$userId`: `int` + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../../../danog/MadelineProto/VoIP.html) + + + + +### `getCallState(int $id): ?\danog\MadelineProto\VoIP\CallState` + +Get call state. + + +Parameters: + +* `$id`: `int` + + +#### See also: +* [\danog\MadelineProto\VoIP\CallState](../../../../danog/MadelineProto/VoIP/CallState.html) + + + + +### `getCdnConfig(): void` + +Store RSA keys for CDN datacenters. + + + +### `getConfig(array $config = []): array` + +Get cached (or eventually re-fetch) server-side config. + + +Parameters: + +* `$config`: `array` Current config + + + +### `getDNSClient(): \Amp\Dns\DnsResolver` + +Get async DNS client. + + +#### See also: +* `\Amp\Dns\DnsResolver` + + + + +### `getDhConfig(): array` + +Get diffie-hellman configuration. + + + +### `getDialogIds(): list` + +Get dialog IDs. + + + +### `getDownloadInfo(mixed $messageMedia): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string, thumb_size?: string}` + +Get download info of file +Returns an array with the following structure:. + +`$info['ext']` - The file extension +`$info['name']` - The file name, without the extension +`$info['mime']` - The file mime type +`$info['size']` - The file size + + +Parameters: + +* `$messageMedia`: `mixed` File ID + + + +### `getDownloadLink(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|array|string $media, ?string $scriptUrl = NULL, ?int $size = NULL, ?string $name = NULL, ?string $mime = NULL): string` + +Get download link of media file. + + +Parameters: + +* `$media`: `\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|array|string` +* `$scriptUrl`: `?string` +* `$size`: `?int` +* `$name`: `?string` +* `$mime`: `?string` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) + + + + +### `getEventHandler((class-string|null) $class = NULL): (T|\danog\MadelineProto\Ipc\EventHandlerProxy|\__PHP_Incomplete_Class|null)` + +Get event handler (or plugin instance). + + +Parameters: + +* `$class`: `(class-string|null)` + + +#### See also: +* `\danog\MadelineProto\Ipc\EventHandlerProxy` +* `\__PHP_Incomplete_Class` + + + + +### `getExtensionFromLocation(mixed $location, string $default): string` + +Get extension from file location. + + +Parameters: + +* `$location`: `mixed` File location +* `$default`: `string` Default extension + + + +### `getExtensionFromMime(string $mime): string` + +Get extension from mime type. + + +Parameters: + +* `$mime`: `string` MIME type + + + +### `getFileInfo(mixed $constructor): array` + +Get info about file. + + +Parameters: + +* `$constructor`: `mixed` File ID + + + +### `getFullDialogs(): array` + +Get full info of all dialogs. + +Bots should use getDialogIds, instead. + + + +### `getFullInfo(mixed $id): array` + +Get full info about peer, returns an FullInfo object. + + +Parameters: + +* `$id`: `mixed` Peer + + +#### See also: +* [https://docs.madelineproto.xyz/FullInfo.html](https://docs.madelineproto.xyz/FullInfo.html) + + + + +### `getHTTPClient(): \Amp\Http\Client\HttpClient` + +Get async HTTP client. + + +#### See also: +* `\Amp\Http\Client\HttpClient` + + + + +### `getHint(): string` + +Get current password hint. + + + +### `getId(mixed $id): int` + +Get the bot API ID of a peer. + + +Parameters: + +* `$id`: `mixed` Peer + + + +### `getInfo(mixed $id, \danog\MadelineProto\API::INFO_TYPE_* $type = \danog\MadelineProto\API::INFO_TYPE_ALL): (\$type is \danog\MadelineProto\API::INFO_TYPE_ALL ? array{User?: array, Chat?: array, bot_api_id: int, user_id?: int, chat_id?: int, channel_id?: int, type: string} : ($type is API::INFO_TYPE_TYPE ? string : ($type is \danog\MadelineProto\API::INFO_TYPE_ID ? int : (array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int} | array{_: string, user_id?: int, access_hash?: int, min?: bool} | array{_: string, channel_id: int, access_hash: int, min: bool}))))` + +Get info about peer, returns an Info object. + +If passed a secret chat ID, returns information about the user, not about the secret chat. +Use getSecretChat to return information about the secret chat. + + +Parameters: + +* `$id`: `mixed` Peer +* `$type`: `\danog\MadelineProto\API::INFO_TYPE_*` Whether to generate an Input*, an InputPeer or the full set of constructors + + +#### See also: +* [https://docs.madelineproto.xyz/Info.html](https://docs.madelineproto.xyz/Info.html) +* `\danog\MadelineProto\API::INFO_TYPE_*` + + + + +### `getLogger(): \danog\MadelineProto\Logger` + +Get logger. + + +#### See also: +* [`\danog\MadelineProto\Logger`: Logger class.](../../../../danog/MadelineProto/Logger.html) + + + + +### `getMaps(): ?int` + +Get current number of memory-mapped regions, UNIX only. + + + +### `getMaxMaps(): ?int` + +Get maximum number of memory-mapped regions, UNIX only. +Use testFibers to get the maximum number of fibers on any platform. + + + +### `getMethodNamespaces(): array` + +Get TL namespaces. + + + +### `getMethodsNamespaced(): array` + +Get namespaced methods (method => namespace). + + + +### `getMimeFromBuffer(string $buffer): string` + +Get mime type from buffer. + + +Parameters: + +* `$buffer`: `string` Buffer + + + +### `getMimeFromExtension(string $extension, string $default): string` + +Get mime type from file extension. + + +Parameters: + +* `$extension`: `string` File extension +* `$default`: `string` Default mime type + + + +### `getMimeFromFile(string $file): string` + +Get mime type of file. + + +Parameters: + +* `$file`: `string` File + + + +### `getPlugin(class-string $class): \danog\MadelineProto\PluginEventHandler|\danog\MadelineProto\Ipc\EventHandlerProxy|null` + +Obtain a certain event handler plugin instance. + + +Parameters: + +* `$class`: `class-string` + +return T|null + + +#### See also: +* [`\danog\MadelineProto\PluginEventHandler`: Plugin event handler class.](../../../../danog/MadelineProto/PluginEventHandler.html) +* `\danog\MadelineProto\Ipc\EventHandlerProxy` + + + + +### `getPropicInfo(mixed $data): ?\danog\MadelineProto\EventHandler\Media\Photo` + +Gets info of the propic of a user. + + +Parameters: + +* `$data`: `mixed` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Media\Photo`: Represents a photo.](../../../../danog/MadelineProto/EventHandler/Media/Photo.html) + + + + +### `getPsrLogger(): \Psr\Log\LoggerInterface` + +Get PSR logger. + + +#### See also: +* `\Psr\Log\LoggerInterface` + + + + +### `getPwrChat(mixed $id, bool $fullfetch = true): array` + +Get full info about peer (including full list of channel members), returns a Chat object. + + +Parameters: + +* `$id`: `mixed` Peer +* `$fullfetch`: `bool` + + +#### See also: +* [https://docs.madelineproto.xyz/Chat.html](https://docs.madelineproto.xyz/Chat.html) + + + + +### `getSecretChat((array|int) $chat): \danog\MadelineProto\SecretChats\SecretChat` + +Get secret chat. + + +Parameters: + +* `$chat`: `(array|int)` Secret chat ID + + +#### See also: +* [`\danog\MadelineProto\SecretChats\SecretChat`: Represents a secret chat.](../../../../danog/MadelineProto/SecretChats/SecretChat.html) + + + + +### `getSecretMessage(integer $chatId, integer $randomId): \danog\MadelineProto\EventHandler\Message\SecretMessage` + +Gets a secret chat message. + + +Parameters: + +* `$chatId`: `integer` Secret chat ID. +* `$randomId`: `integer` Secret chat message ID. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\SecretMessage`: Represents New encrypted message.](../../../../danog/MadelineProto/EventHandler/Message/SecretMessage.html) + + + + +### `getSelf(): array|false` + +Get info about the logged-in user, cached. + +Use fullGetSelf to bypass the cache. + + + +### `getSessionName(): string` + +Returns the session name. + + + +### `getSettings(): \danog\MadelineProto\Settings` + +Return current settings. + + +#### See also: +* [`\danog\MadelineProto\Settings`: Settings class used for configuring MadelineProto.](../../../../danog/MadelineProto/Settings.html) + + + + +### `getSponsoredMessages((int|string|array) $peer): ?array` + +Get sponsored messages for channel. +This method will return an array of [sponsored message objects](https://docs.madelineproto.xyz/API_docs/constructors/sponsoredMessage.html). + +See [the API documentation](https://core.telegram.org/api/sponsored-messages) for more info on how to handle sponsored messages. + + +Parameters: + +* `$peer`: `(int|string|array)` Channel ID, or Update, or Message, or Peer. + + + +### `getStream(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL, ?int $size = NULL): \Amp\ByteStream\ReadableStream` + +Provide a stream for a file, URL or amp stream. + + +Parameters: + +* `$stream`: `\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream` +* `$cancellation`: `?\Amp\Cancellation` +* `$size`: `?int` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `getStreamPipe(): \Amp\ByteStream\Pipe` + +Obtains a pipe that can be used to upload a file from a stream. + + +#### See also: +* `\Amp\ByteStream\Pipe` + + + + +### `getTL(): \danog\MadelineProto\TL\TLInterface` + +Get TL serializer. + + +#### See also: +* [\danog\MadelineProto\TL\TLInterface](../../../../danog/MadelineProto/TL/TLInterface.html) + + + + +### `getType(mixed $id): \danog\MadelineProto\API::PEER_TYPE_*` + +Get type of peer. + + +Parameters: + +* `$id`: `mixed` Peer + + +#### See also: +* `\danog\MadelineProto\API::PEER_TYPE_*` + + + + +### `getUpdates(array{offset?: int, limit?: int, timeout?: float} $params = []): list` + +Only useful when consuming MadelineProto updates through an API in another language (like Javascript), **absolutely not recommended when directly writing MadelineProto bots**. + +`getUpdates` will **greatly slow down your bot** if used directly inside of PHP code. + +**Only use the [event handler](#async-event-driven) when writing a MadelineProto bot**, because update handling in the **event handler** is completely parallelized and non-blocking. + + +Parameters: + +* `$params`: `array{offset?: int, limit?: int, timeout?: float}` Params + + + +### `getWebMessage(string $message): string` + +Get a message to show to the user when starting the bot. + + +Parameters: + +* `$message`: `string` + + + +### `getWebWarnings(): string` + +Get various warnings to show to the user in the web UI. + + + +### `hasAdmins(): bool` + +Check if has admins. + + + +### `hasEventHandler(): bool` + +Check if an event handler instance is present. + + + +### `hasPlugin(class-string<\danog\MadelineProto\EventHandler> $class): bool` + +Check if a certain event handler plugin is installed. + + +Parameters: + +* `$class`: `class-string<\danog\MadelineProto\EventHandler>` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) + + + + +### `hasReportPeers(): bool` + +Check if has report peers. + + + +### `hasSecretChat((array|int) $chat): bool` + +Check whether secret chat exists. + + +Parameters: + +* `$chat`: `(array|int)` Secret chat ID + + + +### `htmlEscape(string $what): string` + +Escape string for MadelineProto's HTML entity converter. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `htmlToMessageEntities(string $html): \danog\MadelineProto\TextEntities` + +Manually convert HTML to a message and a set of entities. + +NOTE: You don't have to use this method to send HTML messages. + +This method is already called automatically by using parse_mode: "HTML" in messages.sendMessage, messages.sendMedia, et cetera... + + +Parameters: + +* `$html`: `string` + + +Return value: Object containing message and entities + +#### See also: +* [https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode](https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode) +* [`\danog\MadelineProto\TextEntities`: Class that converts HTML or markdown to a message + set of entities.](../../../../danog/MadelineProto/TextEntities.html) + + + + +### `importAuthorization(array $authorization, int $mainDcID): array` + +Import authorization. + + +Parameters: + +* `$authorization`: `array` Authorization info +* `$mainDcID`: `int` Main DC ID + + + +### `inflateStripped(string $stripped): string` + +Inflate stripped photosize to full JPG payload. + + +Parameters: + +* `$stripped`: `string` Stripped photosize + + + +### `initSelfRestart(): void` + +Initialize self-restart hack. + + + +### `isAltervista(): bool` + +Whether this is altervista. + + + +### `isArrayOrAlike(mixed $var): bool` + +Check if is array or similar (traversable && countable && arrayAccess). + + +Parameters: + +* `$var`: `mixed` Value to check + + + +### `isBot(mixed $peer): bool` + +Check if the specified peer is a bot. + + +Parameters: + +* `$peer`: `mixed` + + + +### `isForum(mixed $peer): bool` + +Check if the specified peer is a forum. + + +Parameters: + +* `$peer`: `mixed` + + + +### `isIpc(): bool` + +Whether we're an IPC client instance. + + + +### `isIpcWorker(): bool` + +Whether we're an IPC server process (as opposed to an event handler). + + + +### `isPlayPaused(int $id): bool` + +Whether the currently playing audio file is paused. + + +Parameters: + +* `$id`: `int` + + + +### `isPremium(): bool` + +Returns whether the current user is a premium user, cached. + + + +### `isSelfBot(): bool` + +Returns whether the current user is a bot. + + + +### `isSelfUser(): bool` + +Returns whether the current user is a user. + + + +### `isTestMode(): boolean` + +Whether we're currently connected to the test DCs. + + + +### `logger(mixed $param, int $level = \danog\MadelineProto\Logger::NOTICE, string $file = ''): void` + +Logger. + + +Parameters: + +* `$param`: `mixed` Parameter +* `$level`: `int` Logging level +* `$file`: `string` File where the message originated + + + +### `logout(): void` + +Logout the session. + + + +### `markdownCodeEscape(string $what): string` + +Escape string for markdown code section. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownCodeblockEscape(string $what): string` + +Escape string for markdown codeblock. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownEscape(string $what): string` + +Escape string for markdown. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownToMessageEntities(string $markdown): \danog\MadelineProto\TextEntities` + +Manually convert markdown to a message and a set of entities. + +NOTE: You don't have to use this method to send Markdown messages. + +This method is already called automatically by using parse_mode: "Markdown" in messages.sendMessage, messages.sendMedia, et cetera... + + +Parameters: + +* `$markdown`: `string` + + +Return value: Object containing message and entities + +#### See also: +* [https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode](https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode) +* [`\danog\MadelineProto\TextEntities`: Class that converts HTML or markdown to a message + set of entities.](../../../../danog/MadelineProto/TextEntities.html) + + + + +### `markdownUrlEscape(string $what): string` + +Escape string for URL. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `mbStrSplit(string $text, integer $length): array` + +Telegram UTF-8 multibyte split. + + +Parameters: + +* `$text`: `string` Text +* `$length`: `integer` Length + + + +### `mbStrlen(string $text): int` + +Get Telegram UTF-8 length of string. + + +Parameters: + +* `$text`: `string` Text + + + +### `mbSubstr(string $text, integer $offset, (null|int) $length = NULL): string` + +Telegram UTF-8 multibyte substring. + + +Parameters: + +* `$text`: `string` Text to substring +* `$offset`: `integer` Offset +* `$length`: `(null|int)` Length + + + +### `openBuffered(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL): Closure(int): ?string` + +Provide a buffered reader for a file, URL or amp stream. + + +Parameters: + +* `$stream`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `openFileAppendOnly(string $path): \Amp\File\File` + +Opens a file in append-only mode. + + +Parameters: + +* `$path`: `string` File path. + + +#### See also: +* `\Amp\File\File` + + + + +### `packDouble(float $value): string` + +Convert double to binary version. + + +Parameters: + +* `$value`: `float` Value to convert + + + +### `packSignedInt(integer $value): string` + +Convert integer to base256 signed int. + + +Parameters: + +* `$value`: `integer` Value to convert + + + +### `packSignedLong(int $value): string` + +Convert integer to base256 long. + + +Parameters: + +* `$value`: `int` Value to convert + + + +### `packUnsignedInt(int $value): string` + +Convert value to unsigned base256 int. + + +Parameters: + +* `$value`: `int` Value + + + +### `pausePlay(int $id): void` + +Pauses playback of the current audio file in the call. + + +Parameters: + +* `$id`: `int` + + + +### `peerIsset(mixed $id): bool` + +Check if peer is present in internal peer database. + + +Parameters: + +* `$id`: `mixed` Peer + + + +### `phoneLogin(string $number, integer $sms_type = 5): array` + +Login as user. + + +Parameters: + +* `$number`: `string` Phone number +* `$sms_type`: `integer` SMS type + + + +### `posmod(int $a, int $b): int` + +Positive modulo +Works just like the % (modulus) operator, only returns always a postive number. + + +Parameters: + +* `$a`: `int` A +* `$b`: `int` B + + + +### `processDownloadServerPing(string $path, string $payload): void` + +Internal endpoint used by the download server. + + +Parameters: + +* `$path`: `string` +* `$payload`: `string` + + + +### `qrLogin(): ?\danog\MadelineProto\TL\Types\LoginQrCode` + +Initiates QR code login. + +Returns a QR code login helper object, that can be used to render the QR code, display the link directly, wait for login, QR code expiration and much more. + +Returns null if we're already logged in, or if we're waiting for a password (use getAuthorization to distinguish between the two cases). + + +#### See also: +* [`\danog\MadelineProto\TL\Types\LoginQrCode`: Represents a login QR code.](../../../../danog/MadelineProto/TL/Types/LoginQrCode.html) + + + + +### `random(integer $length): string` + +Get secure random string of specified length. + + +Parameters: + +* `$length`: `integer` Length + + + +### `randomInt(integer $modulus = 0): int` + +Get random integer. + + +Parameters: + +* `$modulus`: `integer` Modulus + + + +### `readLine(string $prompt = '', ?\Amp\Cancellation $cancel = NULL): string` + +Asynchronously read line. + + +Parameters: + +* `$prompt`: `string` Prompt +* `$cancel`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `refreshFullPeerCache(mixed $id): void` + +Refresh full peer cache for a certain peer. + + +Parameters: + +* `$id`: `mixed` The peer to refresh + + + +### `refreshPeerCache(mixed ...$ids): void` + +Refresh peer cache for a certain peer. + + +Parameters: + +* `...$ids`: `mixed` + + + +### `report(string $message, string $parseMode = ''): void` + +Report an error to the previously set peer. + + +Parameters: + +* `$message`: `string` Error to report +* `$parseMode`: `string` Parse mode + + + +### `reportMemoryProfile(): void` + +Report memory profile with memprof. + + + +### `requestCall(mixed $user): \danog\MadelineProto\VoIP` + +Request VoIP call. + + +Parameters: + +* `$user`: `mixed` User + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../../../danog/MadelineProto/VoIP.html) + + + + +### `requestSecretChat(mixed $user): int` + +Request secret chat. + + +Parameters: + +* `$user`: `mixed` User to start secret chat with + + + +### `resetUpdateState(): void` + +Reset the update state and fetch all updates from the beginning. + + + +### `restart(): void` + +Restart update loop. + + + +### `resumePlay(int $id): void` + +Resumes playback of the current audio file in the call. + + +Parameters: + +* `$id`: `int` + + + +### `rethrow(Throwable $e): void` + +Rethrow exception into event loop. + + +Parameters: + +* `$e`: `Throwable` + + +#### See also: +* `Throwable` + + + + +### `rleDecode(string $string): string` + +null-byte RLE decode. + + +Parameters: + +* `$string`: `string` Data to decode + + + +### `rleEncode(string $string): string` + +null-byte RLE encode. + + +Parameters: + +* `$string`: `string` Data to encode + + + +### `sendAudio((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendCustomEvent(mixed $payload): void` + +Sends an updateCustomEvent update to the event handler. + + +Parameters: + +* `$payload`: `mixed` + + + +### `sendDocument((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendDocumentPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendGif((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, ?int $duration = NULL, ?int $width = NULL, ?int $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$duration`: `?int` +* `$width`: `?int` +* `$height`: `?int` +* `$thumbSeek`: `string` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendMessage((integer|string) $peer, string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a message. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` Cancellation + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `sendMessageToAdmins(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, ?\Amp\Cancellation $cancellation = NULL): list<\danog\MadelineProto\EventHandler\Message>` + +Sends a message to all report peers (admins of the bot). + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `sendPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendSticker((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', array $stickerSet = [ '_' => 'inputStickerSetEmpty',], ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$stickerSet`: `array` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendVideo((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$thumbSeek`: `string` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendVoice((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `setNoop(): void` + +Set NOOP update handler, ignoring all updates. + + + +### `setReportPeers((int|string|array<(int|string)>) $userOrId): void` + +Set peer(s) where to send errors occurred in the event loop. + + +Parameters: + +* `$userOrId`: `(int|string|array<(int|string)>)` Username(s) or peer ID(s) + + + +### `setWebhook(string $webhookUrl): void` + +Set webhook update handler. + + +Parameters: + +* `$webhookUrl`: `string` Webhook URL + + + +### `skipPlay(int $id): void` + +When called, skips to the next file in the playlist. + + +Parameters: + +* `$id`: `int` + + + +### `sleep(float $time): void` + +Asynchronously sleep. + + +Parameters: + +* `$time`: `float` Number of seconds to sleep for + + + +### `start(): array` + +Log in to telegram (via CLI or web). + + + +### `stop(): void` + +Stop update loop. + + + +### `stopPlay(int $id): void` + +Stops playing all files in the call, clears the main and the hold playlist. + + +Parameters: + +* `$id`: `int` + + + +### `stringToStream(string $str): \Amp\ByteStream\ReadableBuffer` + +Converts a string into an async amphp stream. + + +Parameters: + +* `$str`: `string` + + +#### See also: +* `\Amp\ByteStream\ReadableBuffer` + + + + +### `subscribeToUpdates(mixed $channel): bool` + +Subscribe to event handler updates for a channel/supergroup we're not a member of. + + +Parameters: + +* `$channel`: `mixed` Channel/supergroup to subscribe to + + +Return value: False if we were already subscribed + + +### `tdToMTProto(array $params): array` + +Convert TD to MTProto parameters. + + +Parameters: + +* `$params`: `array` Parameters + + + +### `tdToTdcli(mixed $params): array` + +Convert TD parameters to tdcli. + + +Parameters: + +* `$params`: `mixed` Parameters + + + +### `tdcliToTd(mixed $params, array $key = NULL): array` + +Convert tdcli parameters to tdcli. + + +Parameters: + +* `$params`: `mixed` Params +* `$key`: `array` Key + + + +### `testFibers(int $fiberCount = 100000): array{maxFibers: int, realMemoryMb: int, maps: ?int, maxMaps: ?int}` + +Test fibers. + + +Parameters: + +* `$fiberCount`: `int` + + + +### `toCamelCase(string $input): string` + +Convert to camelCase. + + +Parameters: + +* `$input`: `string` String + + + +### `toSnakeCase(string $input): string` + +Convert to snake_case. + + +Parameters: + +* `$input`: `string` String + + + +### `unpackDouble(string $value): float` + +Unpack binary double. + + +Parameters: + +* `$value`: `string` Value to unpack + + + +### `unpackFileId(string $fileId): array` + +Unpack bot API file ID. + + +Parameters: + +* `$fileId`: `string` Bot API file ID + + +Return value: Unpacked file ID + + +### `unpackSignedInt(string $value): int` + +Unpack base256 signed int. + + +Parameters: + +* `$value`: `string` base256 int + + + +### `unpackSignedLong(string $value): int` + +Unpack base256 signed long. + + +Parameters: + +* `$value`: `string` base256 long + + + +### `unpackSignedLongString((string|int|array) $value): string` + +Unpack base256 signed long to string. + + +Parameters: + +* `$value`: `(string|int|array)` base256 long + + + +### `unsetEventHandler(): void` + +Unset event handler. + + + +### `update2fa(array{password?: string, new_password?: string, email?: string, hint?: string} $params): void` + +Update the 2FA password. + +The params array can contain password, new_password, email and hint params. + + +Parameters: + +* `$params`: `array{password?: string, new_password?: string, email?: string, hint?: string}` The params + + + +### `updateSettings(\danog\MadelineProto\SettingsAbstract $settings): void` + +Parse, update and store settings. + + +Parameters: + +* `$settings`: `\danog\MadelineProto\SettingsAbstract` Settings + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` + + + + +### `upload((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|string|array|resource) $file, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|string|array|resource)` File, URL or Telegram file to upload +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `resource` +* `\Amp\Cancellation` + + + + +### `uploadEncrypted((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|string|array|resource) $file, string $fileName = '', callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file to secret chat. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|string|array|resource)` File, URL or Telegram file to upload +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../../../danog/MadelineProto/BotApiFileId.html) +* `resource` +* `\Amp\Cancellation` + + + + +### `uploadFromCallable(callable(int, int, ?Cancellation): strin) $callable, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable(float, float, float): voi) $cb = NULL, boolean $seekable = true, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file from callable. + +The callable must accept two parameters: int $offset, int $size +The callable must return a string with the contest of the file at the specified offset and size. + + +Parameters: + +* `$callable`: `callable(int, int, ?Cancellation): strin)` Callable (offset, length) => data +* `$size`: `integer` File size +* `$mime`: `string` Mime type +* `$fileName`: `string` File name +* `$cb`: `callable(float, float, float): voi)` Status callback +* `$seekable`: `boolean` Whether chunks can be fetched out of order +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* `\Amp\Cancellation` + + + + +### `uploadFromStream(mixed $stream, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file from stream. + + +Parameters: + +* `$stream`: `mixed` PHP resource or AMPHP async stream +* `$size`: `integer` File size +* `$mime`: `string` Mime type +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* `\Amp\Cancellation` + + + + +### `uploadFromTgfile(mixed $media, callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Reupload telegram file. + + +Parameters: + +* `$media`: `mixed` Telegram file +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* `\Amp\Cancellation` + + + + +### `uploadFromUrl((string|\danog\MadelineProto\FileCallbackInterface) $url, integer $size = 0, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file from URL. + + +Parameters: + +* `$url`: `(string|\danog\MadelineProto\FileCallbackInterface)` URL of file +* `$size`: `integer` Size of file +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` + + + + +### `validateEventHandlerClass(class-string<\danog\MadelineProto\EventHandler> $class): list<\danog\MadelineProto\EventHandlerIssue>` + +Perform static analysis on a certain event handler class, to make sure it satisfies some performance requirements. + + +Parameters: + +* `$class`: `class-string<\danog\MadelineProto\EventHandler>` Class name + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../../../danog/MadelineProto/EventHandler.html) +* [`\danog\MadelineProto\EventHandlerIssue`: Represents an event handler issue.](../../../../danog/MadelineProto/EventHandlerIssue.html) + + + + +### `viewSponsoredMessage((int|array) $peer, (string|array{random_id: string}) $message): bool` + +Mark sponsored message as read. + + +Parameters: + +* `$peer`: `(int|array)` Channel ID, or Update, or Message, or Peer. +* `$message`: `(string|array{random_id: string})` Random ID or sponsored message to mark as read. + + + +### `wrapMedia(array $media, bool $protected = false): ?\danog\MadelineProto\EventHandler\Media` + +Wrap a media constructor into an abstract Media object. + + +Parameters: + +* `$media`: `array` +* `$protected`: `bool` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../../../danog/MadelineProto/EventHandler/Media.html) + + + + +### `wrapMessage(array $message, bool $scheduled = false): ?\danog\MadelineProto\EventHandler\AbstractMessage` + +Wrap a Message constructor into an abstract Message object. + + +Parameters: + +* `$message`: `array` +* `$scheduled`: `bool` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractMessage`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/AbstractMessage.html) + + + + +### `wrapPin(array $message): ?\danog\MadelineProto\EventHandler\Pinned` + +Wrap a Pin constructor into an abstract Pinned object. + + +Parameters: + +* `$message`: `array` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Pinned`: Indicates that some messages were pinned/unpinned.](../../../../danog/MadelineProto/EventHandler/Pinned.html) + + + + +### `wrapUpdate(array $update): ?\danog\MadelineProto\EventHandler\Update` + +Wrap an Update constructor into an abstract Update object. + + +Parameters: + +* `$update`: `array` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initDbProperties(\danog\AsyncOrm\Settings $settings, string $tablePrefix): void` + +Initialize database properties. + + +Parameters: + +* `$settings`: `\danog\AsyncOrm\Settings` +* `$tablePrefix`: `string` + + +#### See also: +* `\danog\AsyncOrm\Settings` + + + + +### `saveDbProperties(): void` + +Save all properties. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Poll/MultiplePoll.md b/docs/PHP/danog/MadelineProto/EventHandler/Poll/MultiplePoll.md new file mode 100644 index 0000000000..344cf62b2b --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Poll/MultiplePoll.md @@ -0,0 +1,57 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Poll\\MultiplePoll: Represents a poll with multiple options can be chosen as answer" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Poll\MultiplePoll` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a poll with multiple options can be chosen as answer + + + +## Properties +* `$id`: `int` ID of the poll +* `$closed`: `bool` Whether the poll is closed and doesn’t accept any more answers +* `$question`: `string` The question of the poll +* `$questionEntities`: `list` Styled text entities in the question of the poll. +* `$answers`: `list` The possible answers +* `$closePeriod`: `?int` Amount of time in seconds the poll will be active after creation, 5-600 +* `$closeDate`: `?int` Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future +* `$recentVoters`: `list` IDs of the last users that recently voted in the poll +* `$totalVoters`: `int` Total number of people that voted in the poll + +## Method list: +* [`fromRawPoll(array $rawPoll): \danog\MadelineProto\EventHandler\AbstractPoll`](#fromRawPoll) +* [`getQuestionHTML(bool $allowTelegramTags = false): string`](#getQuestionHTML) + +## Methods: +### `fromRawPoll(array $rawPoll): \danog\MadelineProto\EventHandler\AbstractPoll` + + + + +Parameters: + +* `$rawPoll`: `array` + + + +### `getQuestionHTML(bool $allowTelegramTags = false): string` + +Get an HTML version of the question. + + +Parameters: + +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Poll/PollAnswer.md b/docs/PHP/danog/MadelineProto/EventHandler/Poll/PollAnswer.md new file mode 100644 index 0000000000..8fbc85f42e --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Poll/PollAnswer.md @@ -0,0 +1,42 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Poll\\PollAnswer: Represents a possible answer of a poll" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Poll\PollAnswer` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a possible answer of a poll + + + +## Properties +* `$text`: `string` Textual representation of the answer +* `$entities`: `list` Styled text entities in the answer. +* `$option`: `string` The param that has to be passed to [messages.sendVote](https://docs.madelineproto.xyz/API_docs/methods/messages.sendVote.html) +* `$chosen`: `?bool` Whether we have chosen this answer +* `$correct`: `?bool` For quizzes, whether the option we have chosen is correct +* `$voters`: `?int` How many users voted for this option + +## Method list: +* [`getHTML(bool $allowTelegramTags = false): string`](#getHTML) + +## Methods: +### `getHTML(bool $allowTelegramTags = false): string` + +Get an HTML version of the answer. + + +Parameters: + +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Poll/QuizPoll.md b/docs/PHP/danog/MadelineProto/EventHandler/Poll/QuizPoll.md new file mode 100644 index 0000000000..afca8291eb --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Poll/QuizPoll.md @@ -0,0 +1,71 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Poll\\QuizPoll: Represents a quiz (with wrong and correct answers, results shown in the return type) poll" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Poll\QuizPoll` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a quiz (with wrong and correct answers, results shown in the return type) poll + + + +## Properties +* `$solution`: `?string` Explanation of quiz solution +* `$solutionEntities`: `list` Message [entities](https://core.telegram.org/api/entities) for styled text in quiz solution +* `$id`: `int` ID of the poll +* `$closed`: `bool` Whether the poll is closed and doesn’t accept any more answers +* `$question`: `string` The question of the poll +* `$questionEntities`: `list` Styled text entities in the question of the poll. +* `$answers`: `list` The possible answers +* `$closePeriod`: `?int` Amount of time in seconds the poll will be active after creation, 5-600 +* `$closeDate`: `?int` Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future +* `$recentVoters`: `list` IDs of the last users that recently voted in the poll +* `$totalVoters`: `int` Total number of people that voted in the poll + +## Method list: +* [`getSolutionHTML(bool $allowTelegramTags = false): ?string`](#getSolutionHTML) +* [`fromRawPoll(array $rawPoll): \danog\MadelineProto\EventHandler\AbstractPoll`](#fromRawPoll) +* [`getQuestionHTML(bool $allowTelegramTags = false): string`](#getQuestionHTML) + +## Methods: +### `getSolutionHTML(bool $allowTelegramTags = false): ?string` + +Get an HTML version of the solution. + + +Parameters: + +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + + +### `fromRawPoll(array $rawPoll): \danog\MadelineProto\EventHandler\AbstractPoll` + + + + +Parameters: + +* `$rawPoll`: `array` + + + +### `getQuestionHTML(bool $allowTelegramTags = false): string` + +Get an HTML version of the question. + + +Parameters: + +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Poll/SinglePoll.md b/docs/PHP/danog/MadelineProto/EventHandler/Poll/SinglePoll.md new file mode 100644 index 0000000000..f44f8e4bdd --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Poll/SinglePoll.md @@ -0,0 +1,57 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Poll\\SinglePoll: Represents a poll with a option can be chosen as answer" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Poll\SinglePoll` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a poll with a option can be chosen as answer + + + +## Properties +* `$id`: `int` ID of the poll +* `$closed`: `bool` Whether the poll is closed and doesn’t accept any more answers +* `$question`: `string` The question of the poll +* `$questionEntities`: `list` Styled text entities in the question of the poll. +* `$answers`: `list` The possible answers +* `$closePeriod`: `?int` Amount of time in seconds the poll will be active after creation, 5-600 +* `$closeDate`: `?int` Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future +* `$recentVoters`: `list` IDs of the last users that recently voted in the poll +* `$totalVoters`: `int` Total number of people that voted in the poll + +## Method list: +* [`fromRawPoll(array $rawPoll): \danog\MadelineProto\EventHandler\AbstractPoll`](#fromRawPoll) +* [`getQuestionHTML(bool $allowTelegramTags = false): string`](#getQuestionHTML) + +## Methods: +### `fromRawPoll(array $rawPoll): \danog\MadelineProto\EventHandler\AbstractPoll` + + + + +Parameters: + +* `$rawPoll`: `array` + + + +### `getQuestionHTML(bool $allowTelegramTags = false): string` + +Get an HTML version of the question. + + +Parameters: + +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Privacy.md b/docs/PHP/danog/MadelineProto/EventHandler/Privacy.md new file mode 100644 index 0000000000..00bfa58a8c --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Privacy.md @@ -0,0 +1,22 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Privacy: Indicates some privacy rules for a user or set of users." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Privacy` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Indicates some privacy rules for a user or set of users. + + + +## Properties +* `$rule`: `danog\MadelineProto\EventHandler\Privacy\Rule` New privacy rule. +* `$appliesTo`: `list` Peers to which the privacy rules apply +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Privacy/Rule.md b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/Rule.md new file mode 100644 index 0000000000..04815cce76 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/Rule.md @@ -0,0 +1,79 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Privacy\\Rule: Represents a privacy rule." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Privacy\Rule` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a privacy rule. + + + + +## Constants +* `danog\MadelineProto\EventHandler\Privacy\Rule::STATUS_TIMESTAMP`: Whether we can see the last online timestamp of this user + +* `danog\MadelineProto\EventHandler\Privacy\Rule::CHAT_INVITE`: Whether the user can be invited to chats + +* `danog\MadelineProto\EventHandler\Privacy\Rule::PHONE_CALL`: Whether the user accepts phone calls + +* `danog\MadelineProto\EventHandler\Privacy\Rule::PHONE_P2P`: Whether P2P connections in phone calls with this user are allowed + +* `danog\MadelineProto\EventHandler\Privacy\Rule::FORWARDS`: Whether messages forwarded from the user will be [anonymously forwarded](https://telegram.org/blog/unsend-privacy-emoji#anonymous-forwarding) + +* `danog\MadelineProto\EventHandler\Privacy\Rule::PROFILE_PHOTO`: Whether the profile picture of the user is visible + +* `danog\MadelineProto\EventHandler\Privacy\Rule::PHONE_NUMBER`: Whether the user allows us to see his phone number + +* `danog\MadelineProto\EventHandler\Privacy\Rule::ADDED_BY_PHONE`: Whether this user can be added to our contact list by their phone number + +* `danog\MadelineProto\EventHandler\Privacy\Rule::VOICE_MESSAGES`: Whether the user accepts voice messages + +* `danog\MadelineProto\EventHandler\Privacy\Rule::ABOUT`: Whether the user can see our bio. + +## Properties +* `$name`: `string` +* `$value`: `string` + +## Method list: +* [`cases(): array`](#cases) +* [`from(string|int $value): static`](#from) +* [`tryFrom(string|int $value): ?static`](#tryFrom) + +## Methods: +### `cases(): array` + + + + + +### `from(string|int $value): static` + + + + +Parameters: + +* `$value`: `string|int` + + + +### `tryFrom(string|int $value): ?static` + + + + +Parameters: + +* `$value`: `string|int` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination.md b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination.md new file mode 100644 index 0000000000..9db8758952 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination.md @@ -0,0 +1,35 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Privacy\\RuleDestination: To whom does a privacy rule apply?" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Privacy\RuleDestination` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +To whom does a privacy rule apply? + + + + +## Method list: +* [`fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination`](#fromRawRule) + +## Methods: +### `fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination` + + + + +Parameters: + +* `$rawRule`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowAll.md b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowAll.md new file mode 100644 index 0000000000..c576a8ab82 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowAll.md @@ -0,0 +1,35 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Privacy\\RuleDestination\\AllowAll: Allow all users." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Privacy\RuleDestination\AllowAll` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Allow all users. + + + + +## Method list: +* [`fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination`](#fromRawRule) + +## Methods: +### `fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination` + + + + +Parameters: + +* `$rawRule`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowChatParticipants.md b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowChatParticipants.md new file mode 100644 index 0000000000..2d71276ee6 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowChatParticipants.md @@ -0,0 +1,37 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Privacy\\RuleDestination\\AllowChatParticipants: Allow all participants of certain chats." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Privacy\RuleDestination\AllowChatParticipants` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Allow all participants of certain chats. + + + +## Properties +* `$chats`: `array` Allowed chats + +## Method list: +* [`fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination`](#fromRawRule) + +## Methods: +### `fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination` + + + + +Parameters: + +* `$rawRule`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowCloseFriends.md b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowCloseFriends.md new file mode 100644 index 0000000000..ab774d89f0 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowCloseFriends.md @@ -0,0 +1,35 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Privacy\\RuleDestination\\AllowCloseFriends: " +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Privacy\RuleDestination\AllowCloseFriends` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + + + + + + +## Method list: +* [`fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination`](#fromRawRule) + +## Methods: +### `fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination` + + + + +Parameters: + +* `$rawRule`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowContacts.md b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowContacts.md new file mode 100644 index 0000000000..f881a7fc2a --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowContacts.md @@ -0,0 +1,35 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Privacy\\RuleDestination\\AllowContacts: Allow all contacts." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Privacy\RuleDestination\AllowContacts` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Allow all contacts. + + + + +## Method list: +* [`fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination`](#fromRawRule) + +## Methods: +### `fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination` + + + + +Parameters: + +* `$rawRule`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowUsers.md b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowUsers.md new file mode 100644 index 0000000000..e922452623 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowUsers.md @@ -0,0 +1,37 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Privacy\\RuleDestination\\AllowUsers: Allow only certain user." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Privacy\RuleDestination\AllowUsers` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Allow only certain user. + + + +## Properties +* `$users`: `array` Allowed users + +## Method list: +* [`fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination`](#fromRawRule) + +## Methods: +### `fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination` + + + + +Parameters: + +* `$rawRule`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowAll.md b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowAll.md new file mode 100644 index 0000000000..58516f0e09 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowAll.md @@ -0,0 +1,35 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Privacy\\RuleDestination\\DisallowAll: Disallow all users." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Privacy\RuleDestination\DisallowAll` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Disallow all users. + + + + +## Method list: +* [`fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination`](#fromRawRule) + +## Methods: +### `fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination` + + + + +Parameters: + +* `$rawRule`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowChatParticipants.md b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowChatParticipants.md new file mode 100644 index 0000000000..0a68e3ca10 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowChatParticipants.md @@ -0,0 +1,37 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Privacy\\RuleDestination\\DisallowChatParticipants: Disallow only participants of certain chats." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Privacy\RuleDestination\DisallowChatParticipants` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Disallow only participants of certain chats. + + + +## Properties +* `$chats`: `array` Allowed chats + +## Method list: +* [`fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination`](#fromRawRule) + +## Methods: +### `fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination` + + + + +Parameters: + +* `$rawRule`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowContacts.md b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowContacts.md new file mode 100644 index 0000000000..a8ef7aa241 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowContacts.md @@ -0,0 +1,35 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Privacy\\RuleDestination\\DisallowContacts: Disallow only contacts." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Privacy\RuleDestination\DisallowContacts` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Disallow only contacts. + + + + +## Method list: +* [`fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination`](#fromRawRule) + +## Methods: +### `fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination` + + + + +Parameters: + +* `$rawRule`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowUsers.md b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowUsers.md new file mode 100644 index 0000000000..ef02bf9d97 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowUsers.md @@ -0,0 +1,37 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Privacy\\RuleDestination\\DisallowUsers: Disallow only certain users." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Privacy\RuleDestination\DisallowUsers` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Disallow only certain users. + + + +## Properties +* `$users`: `array` Allowed users + +## Method list: +* [`fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination`](#fromRawRule) + +## Methods: +### `fromRawRule(array $rawRule): \danog\MadelineProto\EventHandler\Privacy\RuleDestination` + + + + +Parameters: + +* `$rawRule`: `array` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Query/ButtonQuery.md b/docs/PHP/danog/MadelineProto/EventHandler/Query/ButtonQuery.md new file mode 100644 index 0000000000..cc2ae38af2 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Query/ButtonQuery.md @@ -0,0 +1,46 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Query\\ButtonQuery: Represents a query sent by the user by clicking on a button." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Query\ButtonQuery` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a query sent by the user by clicking on a button. + + + +## Properties +* `$data`: `string` Data associated with the callback button. Be aware that a bad client can send arbitrary data in this field. +* `$matches`: `list` Regex matches, if a filter regex is present. +* `$matchesAll`: `array | mixed)>` +Regex matches, if a filter multiple match regex is present +* `$queryId`: `int` Query ID +* `$userId`: `int` ID of the user that pressed the button +* `$chatInstance`: `int` Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games. + +## Method list: +* [`answer(string $message, bool $alert = false, (string|null) $url = NULL, int $cacheTime = 300): bool`](#answer) + +## Methods: +### `answer(string $message, bool $alert = false, (string|null) $url = NULL, int $cacheTime = 300): bool` + + + + +Parameters: + +* `$message`: `string` Popup to show +* `$alert`: `bool` Whether to show the message as a popup instead of a toast notification +* `$url`: `(string|null)` URL to open +* `$cacheTime`: `int` Cache validity (default set to 5 min based on telegram official docs ...) + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Query/ChatButtonQuery.md b/docs/PHP/danog/MadelineProto/EventHandler/Query/ChatButtonQuery.md new file mode 100644 index 0000000000..231d6dbb42 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Query/ChatButtonQuery.md @@ -0,0 +1,148 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Query\\ChatButtonQuery: Represents a query sent by the user by clicking on a button in a chat." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Query\ChatButtonQuery` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a query sent by the user by clicking on a button in a chat. + + + +## Properties +* `$data`: `string` Data associated with the callback button. Be aware that a bad client can send arbitrary data in this field. +* `$matches`: `list` Regex matches, if a filter regex is present. +* `$matchesAll`: `array | mixed)>` +Regex matches, if a filter multiple match regex is present +* `$queryId`: `int` Query ID +* `$userId`: `int` ID of the user that pressed the button +* `$chatInstance`: `int` Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games. +* `$chatId`: `int` Chat where the inline keyboard was sent +* `$messageId`: `int` Message ID + +## Method list: +* [`answer(string $message, bool $alert = false, (string|null) $url = NULL, int $cacheTime = 300): bool`](#answer) +* [`editText(string $message, (array|null) $replyMarkup = NULL, ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, bool $noWebpage = false, (int|null) $scheduleDate = NULL): \danog\MadelineProto\EventHandler\Message`](#editText) +* [`editReplyMarkup(array $replyMarkup): \danog\MadelineProto\EventHandler\Message`](#editReplyMarkup) +* [`delete(boolean $revoke = true): void`](#delete) +* [`pin(bool $pmOneside = false, bool $silent = false): void`](#pin) +* [`unpin(bool $pmOneside = false, bool $silent = false): ?\danog\MadelineProto\EventHandler\Update`](#unpin) +* [`report(ReportReason $reason, string $message): bool`](#report) + +## Methods: +### `answer(string $message, bool $alert = false, (string|null) $url = NULL, int $cacheTime = 300): bool` + + + + +Parameters: + +* `$message`: `string` Popup to show +* `$alert`: `bool` Whether to show the message as a popup instead of a toast notification +* `$url`: `(string|null)` URL to open +* `$cacheTime`: `int` Cache validity (default set to 5 min based on telegram official docs ...) + + + +### `editText(string $message, (array|null) $replyMarkup = NULL, ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, bool $noWebpage = false, (int|null) $scheduleDate = NULL): \danog\MadelineProto\EventHandler\Message` + +Edit message text. + + +Parameters: + +* `$message`: `string` New message +* `$replyMarkup`: `(array|null)` Reply markup for inline keyboards +* `$parseMode`: `ParseMode` Whether to parse HTML or Markdown markup in the message +* `$noWebpage`: `bool` Disable webpage preview +* `$scheduleDate`: `(int|null)` Scheduled message date for scheduled messages + + +#### See also: +* `ParseMode` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `editReplyMarkup(array $replyMarkup): \danog\MadelineProto\EventHandler\Message` + +Edit message keyboard. + + +Parameters: + +* `$replyMarkup`: `array` Reply markup for inline keyboards + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `pin(bool $pmOneside = false, bool $silent = false): void` + +Pin a message. + + +Parameters: + +* `$pmOneside`: `bool` Whether the message should only be pinned on the local side of a one-to-one chat +* `$silent`: `bool` Pin the message silently, without triggering a notification + + + +### `unpin(bool $pmOneside = false, bool $silent = false): ?\danog\MadelineProto\EventHandler\Update` + +Unpin a message. + + +Parameters: + +* `$pmOneside`: `bool` Whether the message should only be pinned on the local side of a one-to-one chat +* `$silent`: `bool` Pin the message silently, without triggering a notification + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `report(ReportReason $reason, string $message): bool` + +Report a message in a chat for violation of telegram’s Terms of Service. + + +Parameters: + +* `$reason`: `ReportReason` Why are these messages being reported +* `$message`: `string` Comment for report moderation + + +#### See also: +* `ReportReason` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Query/ChatGameQuery.md b/docs/PHP/danog/MadelineProto/EventHandler/Query/ChatGameQuery.md new file mode 100644 index 0000000000..e764073151 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Query/ChatGameQuery.md @@ -0,0 +1,145 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Query\\ChatGameQuery: Represents a query sent by the user by clicking on a \"Play game\" button in a chat." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Query\ChatGameQuery` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a query sent by the user by clicking on a "Play game" button in a chat. + + + +## Properties +* `$gameShortName`: `string` Short name of a Game to be returned, serves as the unique identifier for the game +* `$queryId`: `int` Query ID +* `$userId`: `int` ID of the user that pressed the button +* `$chatInstance`: `int` Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games. +* `$chatId`: `int` Chat where the inline keyboard was sent +* `$messageId`: `int` Message ID + +## Method list: +* [`answer(string $message, bool $alert = false, (string|null) $url = NULL, int $cacheTime = 300): bool`](#answer) +* [`editText(string $message, (array|null) $replyMarkup = NULL, ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, bool $noWebpage = false, (int|null) $scheduleDate = NULL): \danog\MadelineProto\EventHandler\Message`](#editText) +* [`editReplyMarkup(array $replyMarkup): \danog\MadelineProto\EventHandler\Message`](#editReplyMarkup) +* [`delete(boolean $revoke = true): void`](#delete) +* [`pin(bool $pmOneside = false, bool $silent = false): void`](#pin) +* [`unpin(bool $pmOneside = false, bool $silent = false): ?\danog\MadelineProto\EventHandler\Update`](#unpin) +* [`report(ReportReason $reason, string $message): bool`](#report) + +## Methods: +### `answer(string $message, bool $alert = false, (string|null) $url = NULL, int $cacheTime = 300): bool` + + + + +Parameters: + +* `$message`: `string` Popup to show +* `$alert`: `bool` Whether to show the message as a popup instead of a toast notification +* `$url`: `(string|null)` URL to open +* `$cacheTime`: `int` Cache validity (default set to 5 min based on telegram official docs ...) + + + +### `editText(string $message, (array|null) $replyMarkup = NULL, ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, bool $noWebpage = false, (int|null) $scheduleDate = NULL): \danog\MadelineProto\EventHandler\Message` + +Edit message text. + + +Parameters: + +* `$message`: `string` New message +* `$replyMarkup`: `(array|null)` Reply markup for inline keyboards +* `$parseMode`: `ParseMode` Whether to parse HTML or Markdown markup in the message +* `$noWebpage`: `bool` Disable webpage preview +* `$scheduleDate`: `(int|null)` Scheduled message date for scheduled messages + + +#### See also: +* `ParseMode` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `editReplyMarkup(array $replyMarkup): \danog\MadelineProto\EventHandler\Message` + +Edit message keyboard. + + +Parameters: + +* `$replyMarkup`: `array` Reply markup for inline keyboards + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `delete(boolean $revoke = true): void` + +Delete the message. + + +Parameters: + +* `$revoke`: `boolean` Whether to delete the message for all participants of the chat. + + + +### `pin(bool $pmOneside = false, bool $silent = false): void` + +Pin a message. + + +Parameters: + +* `$pmOneside`: `bool` Whether the message should only be pinned on the local side of a one-to-one chat +* `$silent`: `bool` Pin the message silently, without triggering a notification + + + +### `unpin(bool $pmOneside = false, bool $silent = false): ?\danog\MadelineProto\EventHandler\Update` + +Unpin a message. + + +Parameters: + +* `$pmOneside`: `bool` Whether the message should only be pinned on the local side of a one-to-one chat +* `$silent`: `bool` Pin the message silently, without triggering a notification + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `report(ReportReason $reason, string $message): bool` + +Report a message in a chat for violation of telegram’s Terms of Service. + + +Parameters: + +* `$reason`: `ReportReason` Why are these messages being reported +* `$message`: `string` Comment for report moderation + + +#### See also: +* `ReportReason` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Query/GameQuery.md b/docs/PHP/danog/MadelineProto/EventHandler/Query/GameQuery.md new file mode 100644 index 0000000000..4cdd5c467d --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Query/GameQuery.md @@ -0,0 +1,43 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Query\\GameQuery: Represents a query sent by the user by clicking on a \"Play game\" button." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Query\GameQuery` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a query sent by the user by clicking on a "Play game" button. + + + +## Properties +* `$gameShortName`: `string` Short name of a Game to be returned, serves as the unique identifier for the game +* `$queryId`: `int` Query ID +* `$userId`: `int` ID of the user that pressed the button +* `$chatInstance`: `int` Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games. + +## Method list: +* [`answer(string $message, bool $alert = false, (string|null) $url = NULL, int $cacheTime = 300): bool`](#answer) + +## Methods: +### `answer(string $message, bool $alert = false, (string|null) $url = NULL, int $cacheTime = 300): bool` + + + + +Parameters: + +* `$message`: `string` Popup to show +* `$alert`: `bool` Whether to show the message as a popup instead of a toast notification +* `$url`: `(string|null)` URL to open +* `$cacheTime`: `int` Cache validity (default set to 5 min based on telegram official docs ...) + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Query/InlineButtonQuery.md b/docs/PHP/danog/MadelineProto/EventHandler/Query/InlineButtonQuery.md new file mode 100644 index 0000000000..2690b05e10 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Query/InlineButtonQuery.md @@ -0,0 +1,79 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Query\\InlineButtonQuery: Represents a query sent by the user by clicking on a button in an inline message." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Query\InlineButtonQuery` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a query sent by the user by clicking on a button in an inline message. + + + +## Properties +* `$data`: `string` Data associated with the callback button. Be aware that a bad client can send arbitrary data in this field. +* `$matches`: `list` Regex matches, if a filter regex is present. +* `$matchesAll`: `array | mixed)>` +Regex matches, if a filter multiple match regex is present +* `$queryId`: `int` Query ID +* `$userId`: `int` ID of the user that pressed the button +* `$chatInstance`: `int` Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games. +* `$inlineMessageId`: `string` Inline message ID + +## Method list: +* [`answer(string $message, bool $alert = false, (string|null) $url = NULL, int $cacheTime = 300): bool`](#answer) +* [`editText(string $message, (array|null) $replyMarkup = NULL, ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, bool $noWebpage = false): void`](#editText) +* [`editReplyMarkup(array $replyMarkup): void`](#editReplyMarkup) + +## Methods: +### `answer(string $message, bool $alert = false, (string|null) $url = NULL, int $cacheTime = 300): bool` + + + + +Parameters: + +* `$message`: `string` Popup to show +* `$alert`: `bool` Whether to show the message as a popup instead of a toast notification +* `$url`: `(string|null)` URL to open +* `$cacheTime`: `int` Cache validity (default set to 5 min based on telegram official docs ...) + + + +### `editText(string $message, (array|null) $replyMarkup = NULL, ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, bool $noWebpage = false): void` + +Edit message text. + + +Parameters: + +* `$message`: `string` New message +* `$replyMarkup`: `(array|null)` Reply markup for inline keyboards +* `$parseMode`: `ParseMode` Whether to parse HTML or Markdown markup in the message +* `$noWebpage`: `bool` Disable webpage preview + + +#### See also: +* `ParseMode` + + + + +### `editReplyMarkup(array $replyMarkup): void` + +Edit message keyboard. + + +Parameters: + +* `$replyMarkup`: `array` Reply markup for inline keyboards + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Query/InlineGameQuery.md b/docs/PHP/danog/MadelineProto/EventHandler/Query/InlineGameQuery.md new file mode 100644 index 0000000000..92fabec243 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Query/InlineGameQuery.md @@ -0,0 +1,76 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Query\\InlineGameQuery: Represents a query sent by the user by clicking on a \"Play game\" button in an inline message." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Query\InlineGameQuery` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a query sent by the user by clicking on a "Play game" button in an inline message. + + + +## Properties +* `$gameShortName`: `string` Short name of a Game to be returned, serves as the unique identifier for the game +* `$queryId`: `int` Query ID +* `$userId`: `int` ID of the user that pressed the button +* `$chatInstance`: `int` Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games. +* `$inlineMessageId`: `string` Inline message ID + +## Method list: +* [`answer(string $message, bool $alert = false, (string|null) $url = NULL, int $cacheTime = 300): bool`](#answer) +* [`editText(string $message, (array|null) $replyMarkup = NULL, ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, bool $noWebpage = false): void`](#editText) +* [`editReplyMarkup(array $replyMarkup): void`](#editReplyMarkup) + +## Methods: +### `answer(string $message, bool $alert = false, (string|null) $url = NULL, int $cacheTime = 300): bool` + + + + +Parameters: + +* `$message`: `string` Popup to show +* `$alert`: `bool` Whether to show the message as a popup instead of a toast notification +* `$url`: `(string|null)` URL to open +* `$cacheTime`: `int` Cache validity (default set to 5 min based on telegram official docs ...) + + + +### `editText(string $message, (array|null) $replyMarkup = NULL, ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, bool $noWebpage = false): void` + +Edit message text. + + +Parameters: + +* `$message`: `string` New message +* `$replyMarkup`: `(array|null)` Reply markup for inline keyboards +* `$parseMode`: `ParseMode` Whether to parse HTML or Markdown markup in the message +* `$noWebpage`: `bool` Disable webpage preview + + +#### See also: +* `ParseMode` + + + + +### `editReplyMarkup(array $replyMarkup): void` + +Edit message keyboard. + + +Parameters: + +* `$replyMarkup`: `array` Reply markup for inline keyboards + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Ended.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Ended.md new file mode 100644 index 0000000000..f2a3035345 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Ended.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\Ended: Represents an ended call" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\Ended` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents an ended call + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/FromAdmin.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/FromAdmin.md new file mode 100644 index 0000000000..02850c33df --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/FromAdmin.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\FromAdmin: Allows messages from the bot admin" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\FromAdmin` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows messages from the bot admin + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/FromAdminOrOutgoing.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/FromAdminOrOutgoing.md new file mode 100644 index 0000000000..1ce96830ce --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/FromAdminOrOutgoing.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\FromAdminOrOutgoing: Allows messages from the bot admin or outgoing messages" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\FromAdminOrOutgoing` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows messages from the bot admin or outgoing messages + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasAudio.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasAudio.md new file mode 100644 index 0000000000..7374c4fbcb --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasAudio.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\HasAudio: Allows only audio messages" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\HasAudio` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows only audio messages + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasDocument.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasDocument.md new file mode 100644 index 0000000000..34e8ecead6 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasDocument.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\HasDocument: Allows only documents" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\HasDocument` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows only documents + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasDocumentPhoto.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasDocumentPhoto.md new file mode 100644 index 0000000000..e689002b4b --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasDocumentPhoto.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\HasDocumentPhoto: Allows only document photos" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\HasDocumentPhoto` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows only document photos + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasGif.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasGif.md new file mode 100644 index 0000000000..1f18dbdd5b --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasGif.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\HasGif: Allows only GIFs" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\HasGif` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows only GIFs + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasMedia.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasMedia.md new file mode 100644 index 0000000000..c118ade8a7 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasMedia.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\HasMedia: Allows only media messages" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\HasMedia` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows only media messages + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasMultiplePoll.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasMultiplePoll.md new file mode 100644 index 0000000000..d9bdb38b23 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasMultiplePoll.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\HasMultiplePoll: Allows only messages that contain a multiple poll" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\HasMultiplePoll` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows only messages that contain a multiple poll + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasNoMedia.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasNoMedia.md new file mode 100644 index 0000000000..345d42d314 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasNoMedia.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\HasNoMedia: Allows only messages with no media" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\HasNoMedia` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows only messages with no media + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasPhoto.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasPhoto.md new file mode 100644 index 0000000000..3315898203 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasPhoto.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\HasPhoto: Allows only photos" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\HasPhoto` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows only photos + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasPoll.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasPoll.md new file mode 100644 index 0000000000..89d89e2912 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasPoll.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\HasPoll: Allows only messages that contain a poll" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\HasPoll` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows only messages that contain a poll + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasQuizPoll.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasQuizPoll.md new file mode 100644 index 0000000000..917b1333c9 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasQuizPoll.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\HasQuizPoll: Allows only messages that contain a quiz poll" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\HasQuizPoll` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows only messages that contain a quiz poll + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasRoundVideo.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasRoundVideo.md new file mode 100644 index 0000000000..a2c0e1e84d --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasRoundVideo.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\HasRoundVideo: Allows only round videos" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\HasRoundVideo` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows only round videos + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasSinglePoll.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasSinglePoll.md new file mode 100644 index 0000000000..3eaf54b704 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasSinglePoll.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\HasSinglePoll: Allows only messages that contain a single poll" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\HasSinglePoll` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows only messages that contain a single poll + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasSticker.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasSticker.md new file mode 100644 index 0000000000..e442e27585 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasSticker.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\HasSticker: Allows only stickers" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\HasSticker` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows only stickers + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasTopic.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasTopic.md new file mode 100644 index 0000000000..6fa8ed2dba --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasTopic.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\HasTopic: Allow only messages coming from groups that has topics (Supergroups only)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\HasTopic` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only messages coming from groups that has topics (Supergroups only). + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasVideo.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasVideo.md new file mode 100644 index 0000000000..a07206cfc2 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasVideo.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\HasVideo: Allows only videos" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\HasVideo` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows only videos + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasVoice.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasVoice.md new file mode 100644 index 0000000000..ac71ca05a1 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasVoice.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\HasVoice: Allows only voice messages" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\HasVoice` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows only voice messages + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Incoming.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Incoming.md new file mode 100644 index 0000000000..ec9594bab3 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Incoming.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\Incoming: Represents an incoming message" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\Incoming` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents an incoming message + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsEdited.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsEdited.md new file mode 100644 index 0000000000..aefb5b426f --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsEdited.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\IsEdited: Allows messages that were edited." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\IsEdited` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows messages that were edited. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsForwarded.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsForwarded.md new file mode 100644 index 0000000000..4aaf2aca8b --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsForwarded.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\IsForwarded: Allows only forwarded messages" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\IsForwarded` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows only forwarded messages + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsNotEdited.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsNotEdited.md new file mode 100644 index 0000000000..d2e214e89b --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsNotEdited.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\IsNotEdited: Allows messages that weren't edited." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\IsNotEdited` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows messages that weren't edited. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsReply.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsReply.md new file mode 100644 index 0000000000..ed31ee909c --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsReply.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\IsReply: Allows only messages that reply to other messages" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\IsReply` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows only messages that reply to other messages + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsReplyToSelf.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsReplyToSelf.md new file mode 100644 index 0000000000..d46dfb1415 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsReplyToSelf.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\IsReplyToSelf: Allows only messages that reply to one of our messages" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\IsReplyToSelf` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allows only messages that reply to one of our messages + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Outgoing.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Outgoing.md new file mode 100644 index 0000000000..5daf6d295a --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Outgoing.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\Outgoing: Represents an outgoing message" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\Outgoing` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents an outgoing message + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Running.md b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Running.md new file mode 100644 index 0000000000..f5110ae3ab --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Running.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\SimpleFilter\\Running: Allow only currently running calls" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\SimpleFilter\Running` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Allow only currently running calls + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Story/Story.md b/docs/PHP/danog/MadelineProto/EventHandler/Story/Story.md new file mode 100644 index 0000000000..a2148996a3 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Story/Story.md @@ -0,0 +1,173 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Story\\Story: Represents a Telegram story." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Story\Story` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a Telegram story. + + + +## Properties +* `$pinned`: `bool` Whether this story is pinned +* `$public`: `bool` Whether this story is visible to everyone +* `$closeFriends`: `bool` Whether this story is visible to only close friends of the user (@see Privacy::AllowCloseFriends) +* `$contacts`: `bool` Whether this story is only visible to your countacts +* `$selectedContacts`: `bool` Whether this story is only visible to a select list of contacts +* `$protected`: `bool` Whether this media is protected +* `$edited`: `bool` Whether this story was edited +* `$date`: `int` When was the story sent +* `$expireDate`: `int` Expiration date of the story +* `$caption`: `string` Story caption +* `$entities`: `list` Message [entities](https://core.telegram.org/api/entities) for story caption +* `$media`: `(danog\MadelineProto\EventHandler\Media\Gif | danog\MadelineProto\EventHandler\Media\Photo | danog\MadelineProto\EventHandler\Media\Video)` Attached media. +* `$privacy`: `list` +* `$sentReaction`: `(string | int | null)` Our reaction to the story +* `$reactionCount`: `?int` Reaction counter +* `$views`: `?int` View counter +* `$recentViewers`: `list` List of users who recently viewed the story +* `$matches`: `list` +Regex matches, if a filter regex is present +* `$matchesAll`: `array | mixed)>` +Regex matches, if a filter multiple match regex is present +* `$senderId`: `int` ID of the sender of the story +* `$id`: `int` Story ID + +## Method list: +* [`reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, boolean $updateStickersetsOrder = false): \danog\MadelineProto\EventHandler\Message`](#reply) +* [`delete(): void`](#delete) +* [`exportLink(): string`](#exportLink) +* [`report(\danog\MadelineProto\EventHandler\Message\ReportReason $reason, string $message = ''): boolean`](#report) +* [`pin(): void`](#pin) +* [`unpin(): void`](#unpin) +* [`view(): boolean`](#view) +* [`addReaction((integer|string) $reaction, boolean $recent = true): \danog\MadelineProto\EventHandler\Story\StoryReaction`](#addReaction) +* [`delReaction(boolean $recent = true): \danog\MadelineProto\EventHandler\Story\StoryReaction`](#delReaction) +* [`getHTML(bool $allowTelegramTags = false): string`](#getHTML) + +## Methods: +### `reply(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, boolean $updateStickersetsOrder = false): \danog\MadelineProto\EventHandler\Message` + +Reply to the story. + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../../../danog/MadelineProto/ParseMode.html) +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `delete(): void` + +Delete the story. + + + +### `exportLink(): string` + +Export story link e.g: https://t.me/username/s/storyid. + + + +### `report(\danog\MadelineProto\EventHandler\Message\ReportReason $reason, string $message = ''): boolean` + +Report a story for violation of telegram’s Terms of Service. + + +Parameters: + +* `$reason`: `\danog\MadelineProto\EventHandler\Message\ReportReason` Why is story being reported +* `$message`: `string` Comment for report moderation + + +#### See also: +* [\danog\MadelineProto\EventHandler\Message\ReportReason](../../../../danog/MadelineProto/EventHandler/Message/ReportReason.html) + + + + +### `pin(): void` + +Pin a story. + + + +### `unpin(): void` + +Unpin a story. + + + +### `view(): boolean` + +Mark story as read. + + + +### `addReaction((integer|string) $reaction, boolean $recent = true): \danog\MadelineProto\EventHandler\Story\StoryReaction` + +Reaction to story. + + +Parameters: + +* `$reaction`: `(integer|string)` string or int Reaction +* `$recent`: `boolean` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Story\StoryReaction`: Represents a reaction to a story.](../../../../danog/MadelineProto/EventHandler/Story/StoryReaction.html) + + + + +### `delReaction(boolean $recent = true): \danog\MadelineProto\EventHandler\Story\StoryReaction` + +Delete reaction from story. + + +Parameters: + +* `$recent`: `boolean` string or int Reaction + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Story\StoryReaction`: Represents a reaction to a story.](../../../../danog/MadelineProto/EventHandler/Story/StoryReaction.html) + + + + +### `getHTML(bool $allowTelegramTags = false): string` + +Get an HTML version of the story caption. + + +Parameters: + +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Story/StoryDeleted.md b/docs/PHP/danog/MadelineProto/EventHandler/Story/StoryDeleted.md new file mode 100644 index 0000000000..f827ea1ac4 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Story/StoryDeleted.md @@ -0,0 +1,22 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Story\\StoryDeleted: Represents a deleted story." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Story\StoryDeleted` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a deleted story. + + + +## Properties +* `$senderId`: `int` ID of the sender of the story +* `$id`: `int` Story ID +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Story/StoryReaction.md b/docs/PHP/danog/MadelineProto/EventHandler/Story/StoryReaction.md new file mode 100644 index 0000000000..bff08fa379 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Story/StoryReaction.md @@ -0,0 +1,23 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Story\\StoryReaction: Represents a reaction to a story." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Story\StoryReaction` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a reaction to a story. + + + +## Properties +* `$senderId`: `int` ID of the sender of the story +* `$id`: `int` Story ID +* `$reaction`: `(string | int | null)` +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Topic/IconColor.md b/docs/PHP/danog/MadelineProto/EventHandler/Topic/IconColor.md new file mode 100644 index 0000000000..5019077d8e --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Topic/IconColor.md @@ -0,0 +1,73 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Topic\\IconColor: Specifies the color of the fallback topic icon (RGB) if no custom emoji icon is specified." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Topic\IconColor` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Specifies the color of the fallback topic icon (RGB) if no custom emoji icon is specified. + + + + +## Constants +* `danog\MadelineProto\EventHandler\Topic\IconColor::NONE`: + +* `danog\MadelineProto\EventHandler\Topic\IconColor::BLUE`: + +* `danog\MadelineProto\EventHandler\Topic\IconColor::YELLOW`: + +* `danog\MadelineProto\EventHandler\Topic\IconColor::PURPLE`: + +* `danog\MadelineProto\EventHandler\Topic\IconColor::GREEN`: + +* `danog\MadelineProto\EventHandler\Topic\IconColor::PINK`: + +* `danog\MadelineProto\EventHandler\Topic\IconColor::RED`: + +## Properties +* `$name`: `string` +* `$value`: `int` + +## Method list: +* [`cases(): array`](#cases) +* [`from(string|int $value): static`](#from) +* [`tryFrom(string|int $value): ?static`](#tryFrom) + +## Methods: +### `cases(): array` + + + + + +### `from(string|int $value): static` + + + + +Parameters: + +* `$value`: `string|int` + + + +### `tryFrom(string|int $value): ?static` + + + + +Parameters: + +* `$value`: `string|int` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Typing.md b/docs/PHP/danog/MadelineProto/EventHandler/Typing.md new file mode 100644 index 0000000000..b02918d455 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Typing.md @@ -0,0 +1,22 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Typing: A user is typing." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Typing` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +A user is typing. + + + +## Properties +* `$userId`: `int` The peer that is typing. +* `$action`: `danog\MadelineProto\EventHandler\Action` Whether the user is typing, sending a media or doing something else. +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Typing/ChatUserTyping.md b/docs/PHP/danog/MadelineProto/EventHandler/Typing/ChatUserTyping.md new file mode 100644 index 0000000000..b9c713c897 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Typing/ChatUserTyping.md @@ -0,0 +1,23 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Typing\\ChatUserTyping: The user is preparing a message in a group; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Typing\ChatUserTyping` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +The user is preparing a message in a group; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing. + + + +## Properties +* `$chatId`: `int` Group ID. +* `$userId`: `int` The peer that is typing. +* `$action`: `danog\MadelineProto\EventHandler\Action` Whether the user is typing, sending a media or doing something else. +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Typing/SecretUserTyping.md b/docs/PHP/danog/MadelineProto/EventHandler/Typing/SecretUserTyping.md new file mode 100644 index 0000000000..974fc3322d --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Typing/SecretUserTyping.md @@ -0,0 +1,23 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Typing\\SecretUserTyping: The user is preparing a message in a secret chat; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Typing\SecretUserTyping` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +The user is preparing a message in a secret chat; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing. + + + +## Properties +* `$chatId`: `int` Secret chat ID. +* `$userId`: `int` The peer that is typing. +* `$action`: `danog\MadelineProto\EventHandler\Action` Whether the user is typing, sending a media or doing something else. +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Typing/SupergroupUserTyping.md b/docs/PHP/danog/MadelineProto/EventHandler/Typing/SupergroupUserTyping.md new file mode 100644 index 0000000000..3fdbfdbd4d --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Typing/SupergroupUserTyping.md @@ -0,0 +1,24 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Typing\\SupergroupUserTyping: A user is typing in a [supergroup](https://core.telegram.org/api/channel)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Typing\SupergroupUserTyping` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +A user is typing in a [supergroup](https://core.telegram.org/api/channel). + + + +## Properties +* `$chatId`: `int` Channel ID. +* `$topicId`: `?int` [Topic](https://core.telegram.org/api/threads) ID. +* `$userId`: `int` The peer that is typing. +* `$action`: `danog\MadelineProto\EventHandler\Action` Whether the user is typing, sending a media or doing something else. +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Typing/UserTyping.md b/docs/PHP/danog/MadelineProto/EventHandler/Typing/UserTyping.md new file mode 100644 index 0000000000..9588ee894a --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Typing/UserTyping.md @@ -0,0 +1,22 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Typing\\UserTyping: The user is preparing a message; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Typing\UserTyping` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +The user is preparing a message; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing. + + + +## Properties +* `$userId`: `int` The peer that is typing. +* `$action`: `danog\MadelineProto\EventHandler\Action` Whether the user is typing, sending a media or doing something else. +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Update.md b/docs/PHP/danog/MadelineProto/EventHandler/Update.md new file mode 100644 index 0000000000..add974108c --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Update.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Update: Represents a generic update." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Update` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Represents a generic update. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/User/Blocked.md b/docs/PHP/danog/MadelineProto/EventHandler/User/Blocked.md new file mode 100644 index 0000000000..95644b5db4 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/User/Blocked.md @@ -0,0 +1,23 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\User\\Blocked: A peer was blocked." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\User\Blocked` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +A peer was blocked. + + + +## Properties +* `$blocked`: `bool` Whether blocked or unblocked. +* `$stories`: `bool` Whether we hid or unhid stories of this user +* `$userId`: `int` The user ID +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/User/BotStopped.md b/docs/PHP/danog/MadelineProto/EventHandler/User/BotStopped.md new file mode 100644 index 0000000000..62aef0e1b0 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/User/BotStopped.md @@ -0,0 +1,23 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\User\\BotStopped: A bot was stopped or re-started." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\User\BotStopped` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +A bot was stopped or re-started. + + + +## Properties +* `$date`: `int` When did this action occur +* `$stopped`: `bool` Whether the bot was stopped or started. +* `$userId`: `int` The user ID +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/User/Phone.md b/docs/PHP/danog/MadelineProto/EventHandler/User/Phone.md new file mode 100644 index 0000000000..39d35a1d10 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/User/Phone.md @@ -0,0 +1,22 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\User\\Phone: A user’s phone number was changed." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\User\Phone` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +A user’s phone number was changed. + + + +## Properties +* `$userId`: `int` User ID +* `$number`: `string` New phone number. +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/User/Status.md b/docs/PHP/danog/MadelineProto/EventHandler/User/Status.md new file mode 100644 index 0000000000..7aaa0309ab --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/User/Status.md @@ -0,0 +1,43 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\User\\Status: Contains a status update." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\User\Status` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Contains a status update. + + + +## Properties +* `$userId`: `int` User identifier + +## Method list: +* [`fromRawStatus(\danog\MadelineProto\MTProto $API, array $rowUserStatus): ?\danog\MadelineProto\EventHandler\User\Status`](#fromRawStatus) + +## Methods: +### `fromRawStatus(\danog\MadelineProto\MTProto $API, array $rowUserStatus): ?\danog\MadelineProto\EventHandler\User\Status` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rowUserStatus`: `array` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/User/Status/Emoji.md b/docs/PHP/danog/MadelineProto/EventHandler/User/Status/Emoji.md new file mode 100644 index 0000000000..4bea686e77 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/User/Status/Emoji.md @@ -0,0 +1,63 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\User\\Status\\Emoji: The [emoji status](https://core.telegram.org/api/emoji-status) of a certain user has changed or was removed." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\User\Status\Emoji` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +The [emoji status](https://core.telegram.org/api/emoji-status) of a certain user has changed or was removed. + + + +## Properties +* `$emojiId`: `?int` [Custom emoji document ID](https://core.telegram.org/api/custom-emoji) +* `$until`: `?int` This status is valid until this date +* `$userId`: `int` User identifier + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rawEmojiStatus)`](#__construct) +* [`fromRawStatus(\danog\MadelineProto\MTProto $API, array $rowUserStatus): ?\danog\MadelineProto\EventHandler\User\Status`](#fromRawStatus) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rawEmojiStatus)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rawEmojiStatus`: `array` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `fromRawStatus(\danog\MadelineProto\MTProto $API, array $rowUserStatus): ?\danog\MadelineProto\EventHandler\User\Status` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rowUserStatus`: `array` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/User/Status/EmptyStatus.md b/docs/PHP/danog/MadelineProto/EventHandler/User/Status/EmptyStatus.md new file mode 100644 index 0000000000..216b450e8f --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/User/Status/EmptyStatus.md @@ -0,0 +1,43 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\User\\Status\\EmptyStatus: User status has not been set yet." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\User\Status\EmptyStatus` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +User status has not been set yet. + + + +## Properties +* `$userId`: `int` User identifier + +## Method list: +* [`fromRawStatus(\danog\MadelineProto\MTProto $API, array $rowUserStatus): ?\danog\MadelineProto\EventHandler\User\Status`](#fromRawStatus) + +## Methods: +### `fromRawStatus(\danog\MadelineProto\MTProto $API, array $rowUserStatus): ?\danog\MadelineProto\EventHandler\User\Status` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rowUserStatus`: `array` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/User/Status/LastMonth.md b/docs/PHP/danog/MadelineProto/EventHandler/User/Status/LastMonth.md new file mode 100644 index 0000000000..1402cfbdd1 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/User/Status/LastMonth.md @@ -0,0 +1,43 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\User\\Status\\LastMonth: Online status: last seen last month." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\User\Status\LastMonth` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Online status: last seen last month. + + + +## Properties +* `$userId`: `int` User identifier + +## Method list: +* [`fromRawStatus(\danog\MadelineProto\MTProto $API, array $rowUserStatus): ?\danog\MadelineProto\EventHandler\User\Status`](#fromRawStatus) + +## Methods: +### `fromRawStatus(\danog\MadelineProto\MTProto $API, array $rowUserStatus): ?\danog\MadelineProto\EventHandler\User\Status` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rowUserStatus`: `array` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/User/Status/LastWeek.md b/docs/PHP/danog/MadelineProto/EventHandler/User/Status/LastWeek.md new file mode 100644 index 0000000000..ef5250b3f2 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/User/Status/LastWeek.md @@ -0,0 +1,43 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\User\\Status\\LastWeek: Online status: last seen last week." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\User\Status\LastWeek` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Online status: last seen last week. + + + +## Properties +* `$userId`: `int` User identifier + +## Method list: +* [`fromRawStatus(\danog\MadelineProto\MTProto $API, array $rowUserStatus): ?\danog\MadelineProto\EventHandler\User\Status`](#fromRawStatus) + +## Methods: +### `fromRawStatus(\danog\MadelineProto\MTProto $API, array $rowUserStatus): ?\danog\MadelineProto\EventHandler\User\Status` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rowUserStatus`: `array` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/User/Status/Offline.md b/docs/PHP/danog/MadelineProto/EventHandler/User/Status/Offline.md new file mode 100644 index 0000000000..babeb3d497 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/User/Status/Offline.md @@ -0,0 +1,62 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\User\\Status\\Offline: The user’s offline status." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\User\Status\Offline` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +The user’s offline status. + + + +## Properties +* `$wasOnline`: `int` Time the user was last seen online +* `$userId`: `int` User identifier + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rowUserStatus)`](#__construct) +* [`fromRawStatus(\danog\MadelineProto\MTProto $API, array $rowUserStatus): ?\danog\MadelineProto\EventHandler\User\Status`](#fromRawStatus) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rowUserStatus)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rowUserStatus`: `array` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `fromRawStatus(\danog\MadelineProto\MTProto $API, array $rowUserStatus): ?\danog\MadelineProto\EventHandler\User\Status` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rowUserStatus`: `array` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/User/Status/Online.md b/docs/PHP/danog/MadelineProto/EventHandler/User/Status/Online.md new file mode 100644 index 0000000000..20bf0bfcb5 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/User/Status/Online.md @@ -0,0 +1,62 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\User\\Status\\Online: Online status of the user." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\User\Status\Online` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Online status of the user. + + + +## Properties +* `$expires`: `int` Time to expiration of the current online status +* `$userId`: `int` User identifier + +## Method list: +* [`__construct(\danog\MadelineProto\MTProto $API, array $rowUserStatus)`](#__construct) +* [`fromRawStatus(\danog\MadelineProto\MTProto $API, array $rowUserStatus): ?\danog\MadelineProto\EventHandler\User\Status`](#fromRawStatus) + +## Methods: +### `__construct(\danog\MadelineProto\MTProto $API, array $rowUserStatus)` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rowUserStatus`: `array` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +### `fromRawStatus(\danog\MadelineProto\MTProto $API, array $rowUserStatus): ?\danog\MadelineProto\EventHandler\User\Status` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rowUserStatus`: `array` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/User/Status/Recently.md b/docs/PHP/danog/MadelineProto/EventHandler/User/Status/Recently.md new file mode 100644 index 0000000000..a8425adb67 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/User/Status/Recently.md @@ -0,0 +1,43 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\User\\Status\\Recently: Online status: last seen recently." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\User\Status\Recently` +[Back to index](../../../../../index.html) + +> Author: Daniil Gentili + + +Online status: last seen recently. + + + +## Properties +* `$userId`: `int` User identifier + +## Method list: +* [`fromRawStatus(\danog\MadelineProto\MTProto $API, array $rowUserStatus): ?\danog\MadelineProto\EventHandler\User\Status`](#fromRawStatus) + +## Methods: +### `fromRawStatus(\danog\MadelineProto\MTProto $API, array $rowUserStatus): ?\danog\MadelineProto\EventHandler\User\Status` + + + + +Parameters: + +* `$API`: `\danog\MadelineProto\MTProto` +* `$rowUserStatus`: `array` + + +#### See also: +* `\danog\MadelineProto\MTProto` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/User/Username.md b/docs/PHP/danog/MadelineProto/EventHandler/User/Username.md new file mode 100644 index 0000000000..a403543166 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/User/Username.md @@ -0,0 +1,24 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\User\\Username: Changes were made to the user’s first name, last name or username." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\User\Username` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Changes were made to the user’s first name, last name or username. + + + +## Properties +* `$userId`: `int` User identifier +* `$firstName`: `string` New first name. Corresponds to the new value of `real_first_name` field of the [userFull](https://docs.madelineproto.xyz/API_docs/constructors/userFull.html) constructor. +* `$lastName`: `string` New last name. Corresponds to the new value of `real_last_name` field of the [userFull](https://docs.madelineproto.xyz/API_docs/constructors/userFull.html) constructor. +* `$usernames`: `list` +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/User/UsernameInfo.md b/docs/PHP/danog/MadelineProto/EventHandler/User/UsernameInfo.md new file mode 100644 index 0000000000..dad2ceb5b3 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/User/UsernameInfo.md @@ -0,0 +1,23 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\User\\UsernameInfo: Represents an username." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\User\UsernameInfo` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents an username. + + + +## Properties +* `$bought`: `bool` Whether the username is bought, meaning it was bought on [fragment](https://fragment.com). +* `$active`: `bool` Whether the username is active. +* `$username`: `string` The username. +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Wallpaper.md b/docs/PHP/danog/MadelineProto/EventHandler/Wallpaper.md new file mode 100644 index 0000000000..2661158af6 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Wallpaper.md @@ -0,0 +1,29 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Wallpaper: Represents a [wallpaper](https://core.telegram.org/api/wallpapers)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Wallpaper` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Represents a [wallpaper](https://core.telegram.org/api/wallpapers). + + + +## Properties +* `$id`: `int` Identifier +* `$accessHash`: `int` Access hash +* `$creator`: `bool` Whether we created this wallpaper +* `$default`: `bool` Whether this is the default wallpaper +* `$pattern`: `bool` Whether this is a [pattern wallpaper](https://core.telegram.org/api/wallpapers#pattern-wallpapers) +* `$dark`: `bool` Whether this wallpaper should be used in dark mode. +* `$uniqueId`: `string` Unique wallpaper ID, used when generating [wallpaper links](https://core.telegram.org/api/links#wallpaper-links) or [importing wallpaper links](https://core.telegram.org/api/wallpapers). +* `$media`: `danog\MadelineProto\EventHandler\Media\DocumentPhoto` The actual wallpaper +* `$settings`: `?danog\MadelineProto\EventHandler\Wallpaper\WallpaperSettings` Info on how to generate the wallpaper, according to [these instructions](https://core.telegram.org/api/wallpapers). +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandler/Wallpaper/WallpaperSettings.md b/docs/PHP/danog/MadelineProto/EventHandler/Wallpaper/WallpaperSettings.md new file mode 100644 index 0000000000..398f9a8803 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandler/Wallpaper/WallpaperSettings.md @@ -0,0 +1,28 @@ +--- +title: "danog\\MadelineProto\\EventHandler\\Wallpaper\\WallpaperSettings: Info on how to generate a wallpaper, according to [these instructions »](https://core.telegram.org/api/wallpapers)." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandler\Wallpaper\WallpaperSettings` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Info on how to generate a wallpaper, according to [these instructions »](https://core.telegram.org/api/wallpapers). + + + +## Properties +* `$blur`: `bool` For [image wallpapers](https://core.telegram.org/api/wallpapers#image-wallpapers): if set, the JPEG must be downscaled to fit in 450x450 square and then box-blurred with radius 12. +* `$motion`: `bool` If set, the background needs to be slightly moved when the device is rotated. +* `$backgroundColor`: `?int` Used for [solid](https://core.telegram.org/api/wallpapers#solid-fill), [gradient](https://core.telegram.org/api/wallpapers#gradient-fill) and [freeform gradient](https://core.telegram.org/api/wallpapers#freeform-gradient-fill) fills. +* `$secondBackgroundColor`: `?int` Used for [gradient](https://core.telegram.org/api/wallpapers#gradient-fill) and [freeform gradient](https://core.telegram.org/api/wallpapers#freeform-gradient-fill) fills. +* `$thirdBackgroundColor`: `?int` Used for [freeform gradient](https://core.telegram.org/api/wallpapers#freeform-gradient-fill) fills. +* `$fourthBackgroundColor`: `?int` Used for [freeform gradient](https://core.telegram.org/api/wallpapers#freeform-gradient-fill) fills. +* `$intensity`: `int` Used for [pattern wallpapers](https://core.telegram.org/api/wallpapers#pattern-wallpapers). +* `$rotation`: `int` Clockwise rotation angle of the gradient, in degrees; 0-359. Should be always divisible by 45. +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/EventHandlerIssue.md b/docs/PHP/danog/MadelineProto/EventHandlerIssue.md new file mode 100644 index 0000000000..8fdbabdf02 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/EventHandlerIssue.md @@ -0,0 +1,64 @@ +--- +title: "danog\\MadelineProto\\EventHandlerIssue: Represents an event handler issue." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\EventHandlerIssue` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Represents an event handler issue. + + + +## Properties +* `$message`: `string` Issue message +* `$file`: `string` Issue file +* `$line`: `int` Issue line +* `$severe`: `bool` Whether the issue is severe enough to block inclusion + +## Method list: +* [`__construct(string $message, string $file, int $line, bool $severe)`](#__construct) +* [`log(): void`](#log) +* [`getHTML(): string`](#getHTML) +* [`throw(): void`](#throw) + +## Methods: +### `__construct(string $message, string $file, int $line, bool $severe)` + + + + +Parameters: + +* `$message`: `string` +* `$file`: `string` +* `$line`: `int` +* `$severe`: `bool` + + + +### `log(): void` + + + + + +### `getHTML(): string` + + + + + +### `throw(): void` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Exception.md b/docs/PHP/danog/MadelineProto/Exception.md new file mode 100644 index 0000000000..ce1c3a48a0 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Exception.md @@ -0,0 +1,156 @@ +--- +title: "danog\\MadelineProto\\Exception: Basic exception." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Exception` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Basic exception. + + + +## Properties +* `$tlTrace`: `string` TL trace. + +## Method list: +* [`__construct(mixed $message = NULL, mixed $code = 0, ?Throwable $previous = NULL, mixed $file = NULL, mixed $line = NULL)`](#__construct) +* [`extension(string $extensionName): self`](#extension) +* [`getMessage(): string`](#getMessage) +* [`getCode()`](#getCode) +* [`getFile(): string`](#getFile) +* [`getLine(): int`](#getLine) +* [`getTrace(): array`](#getTrace) +* [`getPrevious(): ?Throwable`](#getPrevious) +* [`getTraceAsString(): string`](#getTraceAsString) +* [`updateTLTrace(array $trace): void`](#updateTLTrace) +* [`getTLTrace(): string`](#getTLTrace) +* [`setTLTrace(string $tlTrace): void`](#setTLTrace) +* [`prettifyTL(string $init = '', array $trace = NULL): void`](#prettifyTL) + +## Methods: +### `__construct(mixed $message = NULL, mixed $code = 0, ?Throwable $previous = NULL, mixed $file = NULL, mixed $line = NULL)` + + + + +Parameters: + +* `$message`: `mixed` +* `$code`: `mixed` +* `$previous`: `?Throwable` +* `$file`: `mixed` +* `$line`: `mixed` + + +#### See also: +* `Throwable` + + + + +### `extension(string $extensionName): self` + +Complain about missing extensions. + + +Parameters: + +* `$extensionName`: `string` Extension name + + + +### `getMessage(): string` + + + + + +### `getCode()` + + + + + +### `getFile(): string` + + + + + +### `getLine(): int` + + + + + +### `getTrace(): array` + + + + + +### `getPrevious(): ?Throwable` + + + + +#### See also: +* `Throwable` + + + + +### `getTraceAsString(): string` + + + + + +### `updateTLTrace(array $trace): void` + +Update TL trace. + + +Parameters: + +* `$trace`: `array` + + + +### `getTLTrace(): string` + +Get TL trace. + + + +### `setTLTrace(string $tlTrace): void` + +Set TL trace. + + +Parameters: + +* `$tlTrace`: `string` TL trace + + + +### `prettifyTL(string $init = '', array $trace = NULL): void` + +Generate async trace. + + +Parameters: + +* `$init`: `string` Method name +* `$trace`: `array` Async trace + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/FileCallback.md b/docs/PHP/danog/MadelineProto/FileCallback.md new file mode 100644 index 0000000000..02bdabb37d --- /dev/null +++ b/docs/PHP/danog/MadelineProto/FileCallback.md @@ -0,0 +1,58 @@ +--- +title: "danog\\MadelineProto\\FileCallback: File callback interface." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\FileCallback` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +File callback interface. + + + +## Properties +* `$callback`: `callable` Callback. + +(float, float, float) +* `$file`: `mixed` + +## Method list: +* [`__construct(TT $file, callable $callback)`](#__construct) +* [`getFile(): TT`](#getFile) + +## Methods: +### `__construct(TT $file, callable $callback)` + +Construct file callback. + + +Parameters: + +* `$file`: `TT` File to download/upload +* `$callback`: `callable` + + +#### See also: +* `TT` + + + + +### `getFile(): TT` + +Get file. + + +#### See also: +* `TT` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/FileCallbackInterface.md b/docs/PHP/danog/MadelineProto/FileCallbackInterface.md new file mode 100644 index 0000000000..03d13fff72 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/FileCallbackInterface.md @@ -0,0 +1,30 @@ +--- +title: "danog\\MadelineProto\\FileCallbackInterface: File callback interface." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\FileCallbackInterface` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +File callback interface. + + + + +## Method list: +* [`getFile(): T`](#getFile) + +## Methods: +### `getFile(): T` + +Get file. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/LocalFile.md b/docs/PHP/danog/MadelineProto/LocalFile.md new file mode 100644 index 0000000000..9587aa47eb --- /dev/null +++ b/docs/PHP/danog/MadelineProto/LocalFile.md @@ -0,0 +1,37 @@ +--- +title: "danog\\MadelineProto\\LocalFile: Indicates a local file to upload." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\LocalFile` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Indicates a local file to upload. + + + +## Properties +* `$file`: `string` + +## Method list: +* [`__construct(string $file)`](#__construct) + +## Methods: +### `__construct(string $file)` + + + + +Parameters: + +* `$file`: `string` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Logger.md b/docs/PHP/danog/MadelineProto/Logger.md new file mode 100644 index 0000000000..85baf3c07b --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Logger.md @@ -0,0 +1,156 @@ +--- +title: "danog\\MadelineProto\\Logger: Logger class." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Logger` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Logger class. + + + + +## Constants +* `danog\MadelineProto\Logger::FOREGROUND`: + +* `danog\MadelineProto\Logger::BACKGROUND`: + +* `danog\MadelineProto\Logger::SET`: + +* `danog\MadelineProto\Logger::RESET`: + +* `danog\MadelineProto\Logger::ULTRA_VERBOSE`: Ultra verbose logging. + +* `danog\MadelineProto\Logger::VERBOSE`: Verbose logging. + +* `danog\MadelineProto\Logger::NOTICE`: Notice logging. + +* `danog\MadelineProto\Logger::WARNING`: Warning logging. + +* `danog\MadelineProto\Logger::ERROR`: Error logging. + +* `danog\MadelineProto\Logger::FATAL_ERROR`: Log only fatal errors. + +* `danog\MadelineProto\Logger::DEFAULT_LOGGER`: Default logger (syslog). + +* `danog\MadelineProto\Logger::FILE_LOGGER`: File logger. + +* `danog\MadelineProto\Logger::ECHO_LOGGER`: Echo logger. + +* `danog\MadelineProto\Logger::CALLABLE_LOGGER`: Callable logger. + +* `danog\MadelineProto\Logger::LEVEL_ULTRA_VERBOSE`: Ultra verbose level. + +* `danog\MadelineProto\Logger::LEVEL_VERBOSE`: Verbose level. + +* `danog\MadelineProto\Logger::LEVEL_NOTICE`: Notice level. + +* `danog\MadelineProto\Logger::LEVEL_WARNING`: Warning level. + +* `danog\MadelineProto\Logger::LEVEL_ERROR`: Error level. + +* `danog\MadelineProto\Logger::LEVEL_FATAL`: Fatal error level. + +* `danog\MadelineProto\Logger::LOGGER_DEFAULT`: Default logger (syslog). + +* `danog\MadelineProto\Logger::LOGGER_ECHO`: Echo logger. + +* `danog\MadelineProto\Logger::LOGGER_FILE`: File logger. + +* `danog\MadelineProto\Logger::LOGGER_CALLABLE`: Callable logger. + +## Properties +* `$default`: `?self` Default logger instance. + +## Method list: +* [`constructorFromSettings(\danog\MadelineProto\Settings\Logger $settings): self`](#constructorFromSettings) +* [`__construct(\danog\MadelineProto\Settings\Logger $settings, string $prefix = '')`](#__construct) +* [`truncate(): void`](#truncate) +* [`log(mixed $param, int $level = \self::NOTICE): void`](#log) +* [`logger(mixed $param, int $level = \self::NOTICE, string $file = ''): void`](#logger) +* [`getPsrLogger(): \Psr\Log\LoggerInterface`](#getPsrLogger) + +## Methods: +### `constructorFromSettings(\danog\MadelineProto\Settings\Logger $settings): self` + +Construct global static logger from MadelineProto settings. + + +Parameters: + +* `$settings`: `\danog\MadelineProto\Settings\Logger` Settings instance + + +#### See also: +* [`\danog\MadelineProto\Settings\Logger`: Logger settings.](../../danog/MadelineProto/Settings/Logger.html) + + + + +### `__construct(\danog\MadelineProto\Settings\Logger $settings, string $prefix = '')` + +Construct logger. + + +Parameters: + +* `$settings`: `\danog\MadelineProto\Settings\Logger` +* `$prefix`: `string` + + +#### See also: +* [`\danog\MadelineProto\Settings\Logger`: Logger settings.](../../danog/MadelineProto/Settings/Logger.html) + + + + +### `truncate(): void` + +Truncate logfile. + + + +### `log(mixed $param, int $level = \self::NOTICE): void` + +Log a message. + + +Parameters: + +* `$param`: `mixed` Message +* `$level`: `int` Logging level + + + +### `logger(mixed $param, int $level = \self::NOTICE, string $file = ''): void` + +Log a message. + + +Parameters: + +* `$param`: `mixed` Message to log +* `$level`: `int` Logging level +* `$file`: `string` File that originated the message + + + +### `getPsrLogger(): \Psr\Log\LoggerInterface` + +Get PSR logger. + + +#### See also: +* `\Psr\Log\LoggerInterface` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/MTProtoTools/DialogId.md b/docs/PHP/danog/MadelineProto/MTProtoTools/DialogId.md new file mode 100644 index 0000000000..51a676df4b --- /dev/null +++ b/docs/PHP/danog/MadelineProto/MTProtoTools/DialogId.md @@ -0,0 +1,104 @@ +--- +title: "danog\\MadelineProto\\MTProtoTools\\DialogId: Represents the type of a bot API dialog ID." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\MTProtoTools\DialogId` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Represents the type of a bot API dialog ID. + + + + +## Constants +* `danog\MadelineProto\MTProtoTools\DialogId::USER`: + +* `danog\MadelineProto\MTProtoTools\DialogId::CHAT`: + +* `danog\MadelineProto\MTProtoTools\DialogId::CHANNEL_OR_SUPERGROUP`: + +* `danog\MadelineProto\MTProtoTools\DialogId::SECRET_CHAT`: + +## Properties +* `$name`: `string` + +## Method list: +* [`getType(integer $id): self`](#getType) +* [`isSupergroupOrChannel(int $id): bool`](#isSupergroupOrChannel) +* [`isChat(int $id): bool`](#isChat) +* [`isUser(int $id): bool`](#isUser) +* [`isSecretChat(int $id): bool`](#isSecretChat) +* [`cases(): array`](#cases) + +## Methods: +### `getType(integer $id): self` + +Get the type of a dialog using just its bot API dialog ID. + +For more detailed types, use API::getType, instead. + + +Parameters: + +* `$id`: `integer` Bot API ID. + + + +### `isSupergroupOrChannel(int $id): bool` + +Checks whether the provided bot API ID is a supergroup or channel ID. + + +Parameters: + +* `$id`: `int` + + + +### `isChat(int $id): bool` + +Checks whether the provided bot API ID is a chat ID. + + +Parameters: + +* `$id`: `int` + + + +### `isUser(int $id): bool` + +Checks whether the provided bot API ID is a user ID. + + +Parameters: + +* `$id`: `int` + + + +### `isSecretChat(int $id): bool` + +Checks whether the provided bot API ID is a secret chat ID. + + +Parameters: + +* `$id`: `int` + + + +### `cases(): array` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/MyTelegramOrgWrapper.md b/docs/PHP/danog/MadelineProto/MyTelegramOrgWrapper.md new file mode 100644 index 0000000000..40d71853f5 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/MyTelegramOrgWrapper.md @@ -0,0 +1,97 @@ +--- +title: "danog\\MadelineProto\\MyTelegramOrgWrapper: Wrapper for my.telegram.org." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\MyTelegramOrgWrapper` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Wrapper for my.telegram.org. + + + + +## Method list: +* [`__construct(\danog\MadelineProto\SettingsAbstract $settings)`](#__construct) +* [`login(string $number): void`](#login) +* [`completeLogin(string $password)`](#completeLogin) +* [`loggedIn(): bool`](#loggedIn) +* [`hasApp()`](#hasApp) +* [`getApp()`](#getApp) +* [`createApp(array $settings)`](#createApp) + +## Methods: +### `__construct(\danog\MadelineProto\SettingsAbstract $settings)` + +Constructor. + + +Parameters: + +* `$settings`: `\danog\MadelineProto\SettingsAbstract` + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` + + + + +### `login(string $number): void` + +Login. + + +Parameters: + +* `$number`: `string` Phone number + + + +### `completeLogin(string $password)` + +Complete login. + + +Parameters: + +* `$password`: `string` Password + + + +### `loggedIn(): bool` + +Whether we are logged in. + + + +### `hasApp()` + +Check if an app was already created. + + + +### `getApp()` + +Get the currently created app. + + + +### `createApp(array $settings)` + +Create an app. + + +Parameters: + +* `$settings`: `array` App parameters + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Ogg.md b/docs/PHP/danog/MadelineProto/Ogg.md new file mode 100644 index 0000000000..547747ba60 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Ogg.md @@ -0,0 +1,151 @@ +--- +title: "danog\\MadelineProto\\Ogg: Async OGG stream reader and writer." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Ogg` +[Back to index](../../index.html) + +> Author: Daniil Gentili +> Author: Charles-Édouard Coste + + +Async OGG stream reader and writer. + + + + +## Constants +* `danog\MadelineProto\Ogg::CONTINUATION`: + +* `danog\MadelineProto\Ogg::BOS`: + +* `danog\MadelineProto\Ogg::EOS`: + +* `danog\MadelineProto\Ogg::STATE_READ_HEADER`: + +* `danog\MadelineProto\Ogg::STATE_READ_COMMENT`: + +* `danog\MadelineProto\Ogg::STATE_STREAMING`: + +* `danog\MadelineProto\Ogg::STATE_END`: + +## Properties +* `$opusPackets`: `iterable` Opus packet iterator. +* `$vendorString`: `string` +* `$comments`: `list` + +## Method list: +* [`__construct(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL)`](#__construct) +* [`validate(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $file, ?\Amp\Cancellation $cancellation = NULL): void`](#validate) +* [`convert((\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream) $in, (\danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream) $oggOut, ?\Amp\Cancellation $cancellation = NULL): void`](#convert) +* [`validateOgg(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $f): void`](#validateOgg) +* [`convertWav((\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream) $wavIn, (\danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream) $oggOut, ?\Amp\Cancellation $cancellation = NULL): void`](#convertWav) + +## Methods: +### `__construct(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL)` + +Constructor. + + +Parameters: + +* `$stream`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `validate(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $file, ?\Amp\Cancellation $cancellation = NULL): void` + +Validate that the specified file, URL or stream is a valid VoIP OGG OPUS file. + + +Parameters: + +* `$file`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `convert((\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream) $in, (\danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream) $oggOut, ?\Amp\Cancellation $cancellation = NULL): void` + +Converts a file, URL, or stream of any format (including video) into an OGG audio stream suitable for consumption by MadelineProto's VoIP implementation. + + +Parameters: + +* `$in`: `(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream)` The input file, URL or stream. +* `$oggOut`: `(\danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream)` The output file or stream. +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\ByteStream\WritableStream` +* `\Amp\Cancellation` + + + + +### `validateOgg(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $f): void` + +Validate that the specified OGG OPUS file can be played directly by MadelineProto, without doing any conversion. + + +Parameters: + +* `$f`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` + + + + +### `convertWav((\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream) $wavIn, (\danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream) $oggOut, ?\Amp\Cancellation $cancellation = NULL): void` + +Converts a file, URL, or stream in WAV format @ 48khz into an OGG audio stream suitable for consumption by MadelineProto's VoIP implementation. + + +Parameters: + +* `$wavIn`: `(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream)` The input file, URL or stream. +* `$oggOut`: `(\danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream)` The output file or stream. +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\ByteStream\WritableStream` +* `\Amp\Cancellation` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/OggWriter.md b/docs/PHP/danog/MadelineProto/OggWriter.md new file mode 100644 index 0000000000..c677730c89 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/OggWriter.md @@ -0,0 +1,71 @@ +--- +title: "danog\\MadelineProto\\OggWriter: Async OGG stream writer." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\OggWriter` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Async OGG stream writer. + + + +## Properties +* `$streamId`: `int` + +## Method list: +* [`__construct(\Amp\ByteStream\WritableStream $out, ?int $streamId = NULL)`](#__construct) +* [`writeHeader(int $channels, int $sampleRate, string $opusVersion): void`](#writeHeader) +* [`writeChunk(string $chunk, int $granuleDiff, bool $eos): void`](#writeChunk) + +## Methods: +### `__construct(\Amp\ByteStream\WritableStream $out, ?int $streamId = NULL)` + +Write an ogg OPUS file. + + +Parameters: + +* `$out`: `\Amp\ByteStream\WritableStream` +* `$streamId`: `?int` + + +#### See also: +* `\Amp\ByteStream\WritableStream` + + + + +### `writeHeader(int $channels, int $sampleRate, string $opusVersion): void` + + + + +Parameters: + +* `$channels`: `int` +* `$sampleRate`: `int` +* `$opusVersion`: `string` + + + +### `writeChunk(string $chunk, int $granuleDiff, bool $eos): void` + + + + +Parameters: + +* `$chunk`: `string` +* `$granuleDiff`: `int` +* `$eos`: `bool` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/PTSException.md b/docs/PHP/danog/MadelineProto/PTSException.md new file mode 100644 index 0000000000..bafea80bab --- /dev/null +++ b/docs/PHP/danog/MadelineProto/PTSException.md @@ -0,0 +1,136 @@ +--- +title: "danog\\MadelineProto\\PTSException: Internal error indicating a problem with Telegram's servers." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\PTSException` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Internal error indicating a problem with Telegram's servers. + + + +## Properties +* `$tlTrace`: `string` TL trace. + +## Method list: +* [`__construct(mixed $message, mixed $file = '')`](#__construct) +* [`getMessage(): string`](#getMessage) +* [`getCode()`](#getCode) +* [`getFile(): string`](#getFile) +* [`getLine(): int`](#getLine) +* [`getTrace(): array`](#getTrace) +* [`getPrevious(): ?Throwable`](#getPrevious) +* [`getTraceAsString(): string`](#getTraceAsString) +* [`updateTLTrace(array $trace): void`](#updateTLTrace) +* [`getTLTrace(): string`](#getTLTrace) +* [`setTLTrace(string $tlTrace): void`](#setTLTrace) +* [`prettifyTL(string $init = '', array $trace = NULL): void`](#prettifyTL) + +## Methods: +### `__construct(mixed $message, mixed $file = '')` + + + + +Parameters: + +* `$message`: `mixed` +* `$file`: `mixed` + + + +### `getMessage(): string` + + + + + +### `getCode()` + + + + + +### `getFile(): string` + + + + + +### `getLine(): int` + + + + + +### `getTrace(): array` + + + + + +### `getPrevious(): ?Throwable` + + + + +#### See also: +* `Throwable` + + + + +### `getTraceAsString(): string` + + + + + +### `updateTLTrace(array $trace): void` + +Update TL trace. + + +Parameters: + +* `$trace`: `array` + + + +### `getTLTrace(): string` + +Get TL trace. + + + +### `setTLTrace(string $tlTrace): void` + +Set TL trace. + + +Parameters: + +* `$tlTrace`: `string` TL trace + + + +### `prettifyTL(string $init = '', array $trace = NULL): void` + +Generate async trace. + + +Parameters: + +* `$init`: `string` Method name +* `$trace`: `array` Async trace + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/ParseMode.md b/docs/PHP/danog/MadelineProto/ParseMode.md new file mode 100644 index 0000000000..951cfc1ea8 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/ParseMode.md @@ -0,0 +1,65 @@ +--- +title: "danog\\MadelineProto\\ParseMode: Indicates a parsing mode for text." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\ParseMode` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Indicates a parsing mode for text. + + + + +## Constants +* `danog\MadelineProto\ParseMode::HTML`: + +* `danog\MadelineProto\ParseMode::MARKDOWN`: + +* `danog\MadelineProto\ParseMode::TEXT`: + +## Properties +* `$name`: `string` +* `$value`: `string` + +## Method list: +* [`cases(): array`](#cases) +* [`from(string|int $value): static`](#from) +* [`tryFrom(string|int $value): ?static`](#tryFrom) + +## Methods: +### `cases(): array` + + + + + +### `from(string|int $value): static` + + + + +Parameters: + +* `$value`: `string|int` + + + +### `tryFrom(string|int $value): ?static` + + + + +Parameters: + +* `$value`: `string|int` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/PeerNotInDbException.md b/docs/PHP/danog/MadelineProto/PeerNotInDbException.md new file mode 100644 index 0000000000..dc3a29ec8d --- /dev/null +++ b/docs/PHP/danog/MadelineProto/PeerNotInDbException.md @@ -0,0 +1,144 @@ +--- +title: "danog\\MadelineProto\\PeerNotInDbException: Indicates that a specified peer (user, chat, channel) was not found in the internal MadelineProto peer database." +description: "\nThis can usually be fixed by enabling `setFullFetch(true)` in the [peer database settings](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Peer.html#setfullfetch-bool-fullfetch-self).\n" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\PeerNotInDbException` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Indicates that a specified peer (user, chat, channel) was not found in the internal MadelineProto peer database. + + +This can usually be fixed by enabling `setFullFetch(true)` in the [peer database settings](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Peer.html#setfullfetch-bool-fullfetch-self). + + +## Properties +* `$tlTrace`: `string` TL trace. + +## Method list: +* [`__construct()`](#__construct) +* [`extension(string $extensionName): self`](#extension) +* [`getMessage(): string`](#getMessage) +* [`getCode()`](#getCode) +* [`getFile(): string`](#getFile) +* [`getLine(): int`](#getLine) +* [`getTrace(): array`](#getTrace) +* [`getPrevious(): ?Throwable`](#getPrevious) +* [`getTraceAsString(): string`](#getTraceAsString) +* [`updateTLTrace(array $trace): void`](#updateTLTrace) +* [`getTLTrace(): string`](#getTLTrace) +* [`setTLTrace(string $tlTrace): void`](#setTLTrace) +* [`prettifyTL(string $init = '', array $trace = NULL): void`](#prettifyTL) + +## Methods: +### `__construct()` + + + + + +### `extension(string $extensionName): self` + +Complain about missing extensions. + + +Parameters: + +* `$extensionName`: `string` Extension name + + + +### `getMessage(): string` + + + + + +### `getCode()` + + + + + +### `getFile(): string` + + + + + +### `getLine(): int` + + + + + +### `getTrace(): array` + + + + + +### `getPrevious(): ?Throwable` + + + + +#### See also: +* `Throwable` + + + + +### `getTraceAsString(): string` + + + + + +### `updateTLTrace(array $trace): void` + +Update TL trace. + + +Parameters: + +* `$trace`: `array` + + + +### `getTLTrace(): string` + +Get TL trace. + + + +### `setTLTrace(string $tlTrace): void` + +Set TL trace. + + +Parameters: + +* `$tlTrace`: `string` TL trace + + + +### `prettifyTL(string $init = '', array $trace = NULL): void` + +Generate async trace. + + +Parameters: + +* `$init`: `string` Method name +* `$trace`: `array` Async trace + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/PluginEventHandler.md b/docs/PHP/danog/MadelineProto/PluginEventHandler.md new file mode 100644 index 0000000000..f7f1fb54f9 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/PluginEventHandler.md @@ -0,0 +1,3317 @@ +--- +title: "danog\\MadelineProto\\PluginEventHandler: Plugin event handler class." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\PluginEventHandler` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Plugin event handler class. + + + +## Properties +* `$auth`: `\danog\MadelineProto\Namespace\Auth` +* `$account`: `\danog\MadelineProto\Namespace\Account` +* `$users`: `\danog\MadelineProto\Namespace\Users` +* `$contacts`: `\danog\MadelineProto\Namespace\Contacts` +* `$messages`: `\danog\MadelineProto\Namespace\Messages` +* `$updates`: `\danog\MadelineProto\Namespace\Updates` +* `$photos`: `\danog\MadelineProto\Namespace\Photos` +* `$upload`: `\danog\MadelineProto\Namespace\Upload` +* `$help`: `\danog\MadelineProto\Namespace\Help` +* `$channels`: `\danog\MadelineProto\Namespace\Channels` +* `$bots`: `\danog\MadelineProto\Namespace\Bots` +* `$payments`: `\danog\MadelineProto\Namespace\Payments` +* `$stickers`: `\danog\MadelineProto\Namespace\Stickers` +* `$phone`: `\danog\MadelineProto\Namespace\Phone` +* `$langpack`: `\danog\MadelineProto\Namespace\Langpack` +* `$folders`: `\danog\MadelineProto\Namespace\Folders` +* `$stats`: `\danog\MadelineProto\Namespace\Stats` +* `$chatlists`: `\danog\MadelineProto\Namespace\Chatlists` +* `$stories`: `\danog\MadelineProto\Namespace\Stories` +* `$premium`: `\danog\MadelineProto\Namespace\Premium` +* `$smsjobs`: `\danog\MadelineProto\Namespace\Smsjobs` +* `$fragment`: `\danog\MadelineProto\Namespace\Fragment` + +## Method list: +* [`getPluginPaths(): array|string|null`](#getPluginPaths) +* [`isPluginEnabled(): bool`](#isPluginEnabled) +* [`startAndLoop(string $session, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): void`](#startAndLoop) +* [`startAndLoopBot(string $session, string $token, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): void`](#startAndLoopBot) +* [`getPeriodicLoop(string $name): ?\danog\Loop\PeriodicLoop`](#getPeriodicLoop) +* [`getPeriodicLoops(): array`](#getPeriodicLoops) +* [`getReportPeers(): (string|int|array<(string|int)>)`](#getReportPeers) +* [`getPlugins(): array>`](#getPlugins) +* [`MTProtoToBotAPI(array $data): array`](#MTProtoToBotAPI) +* [`MTProtoToTd(mixed $params): array`](#MTProtoToTd) +* [`MTProtoToTdcli(mixed $params): array`](#MTProtoToTdcli) +* [`acceptCall(int $id): void`](#acceptCall) +* [`acceptSecretChat(array $params): void`](#acceptSecretChat) +* [`arr(mixed ...$params): array`](#arr) +* [`base64urlDecode(string $data): string`](#base64urlDecode) +* [`base64urlEncode(string $data): string`](#base64urlEncode) +* [`botAPIToMTProto(array $arguments): array`](#botAPIToMTProto) +* [`botLogin(string $token): ?array`](#botLogin) +* [`broadcastCustom(\danog\MadelineProto\Broadcast\Action $action, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, (float|null) $delay = NULL): int`](#broadcastCustom) +* [`broadcastForwardMessages(mixed $from_peer, list $message_ids, bool $drop_author = false, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int`](#broadcastForwardMessages) +* [`broadcastMessages(array $messages, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int`](#broadcastMessages) +* [`callFork(\Generator|\Amp\Future|callable $callable, mixed ...$args): \Amp\Future`](#callFork) +* [`callGetCurrent(int $id): \danog\MadelineProto\RemoteUrl|\danog\MadelineProto\LocalFile|string|null`](#callGetCurrent) +* [`callPlay(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $file): void`](#callPlay) +* [`callPlayOnHold(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream ...$files): void`](#callPlayOnHold) +* [`callSetOutput(int $id, \danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream $file): void`](#callSetOutput) +* [`canConvertOgg(): bool`](#canConvertOgg) +* [`canUseFFmpeg(?\Amp\Cancellation $cancellation = NULL): bool`](#canUseFFmpeg) +* [`cancelBroadcast(integer $id): void`](#cancelBroadcast) +* [`closeConnection(string $message): void`](#closeConnection) +* [`complete2faLogin(string $password): array`](#complete2faLogin) +* [`completePhoneLogin(string $code): array`](#completePhoneLogin) +* [`completeSignup(string $first_name, string $last_name = ''): array`](#completeSignup) +* [`discardCall(int $id, \danog\MadelineProto\VoIP\DiscardReason $reason = \danog\MadelineProto\VoIP\DiscardReason::HANGUP, int<1, 5> $rating = NULL, string $comment = NULL): void`](#discardCall) +* [`discardSecretChat(int $chat): void`](#discardSecretChat) +* [`downloadServer(string $session): void`](#downloadServer) +* [`downloadToBrowser((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, (null|callable) $cb = NULL, (null|int) $size = NULL, (null|string) $name = NULL, (null|string) $mime = NULL, ?\Amp\Cancellation $cancellation = NULL): void`](#downloadToBrowser) +* [`downloadToCallable(mixed $messageMedia, (callable|\danog\MadelineProto\FileCallbackInterface) $callable, callable $cb = NULL, bool $seekable = true, int $offset = 0, int $end = -1, int $part_size = NULL, ?\Amp\Cancellation $cancellation = NULL): void`](#downloadToCallable) +* [`downloadToDir(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $dir, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string`](#downloadToDir) +* [`downloadToFile(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $file, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string`](#downloadToFile) +* [`downloadToResponse((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, \Amp\Http\Server\Request $request, callable $cb = NULL, (null|int) $size = NULL, (null|string) $mime = NULL, (null|string) $name = NULL, ?\Amp\Cancellation $cancellation = NULL): \Amp\Http\Server\Response`](#downloadToResponse) +* [`downloadToReturnedStream(mixed $messageMedia, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#downloadToReturnedStream) +* [`downloadToStream(mixed $messageMedia, (mixed|\danog\MadelineProto\FileCallbackInterface|resource|\Amp\ByteStream\WritableStream) $stream, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): void`](#downloadToStream) +* [`echo(string $string): void`](#echo) +* [`end(array $what): T`](#end) +* [`entitiesToHtml(string $message, list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})> $entities, bool $allowTelegramTags = false): string`](#entitiesToHtml) +* [`exportAuthorization(): array{0: (int|string), 1: string}`](#exportAuthorization) +* [`extractBotAPIFile(array $info): ?array`](#extractBotAPIFile) +* [`extractMessage(array $updates): array`](#extractMessage) +* [`extractMessageId(array $updates): int`](#extractMessageId) +* [`extractMessageUpdate(array $updates): array`](#extractMessageUpdate) +* [`extractUpdates(array $updates): array`](#extractUpdates) +* [`fileGetContents(string $url): string`](#fileGetContents) +* [`flock(string $file, integer $operation, float $polling = 0.1, ?\Amp\Cancellation $token = NULL, ?\Closure $failureCb = NULL): ($token is null ? Closure(): void : (Closure(): void | null))`](#flock) +* [`fullChatLastUpdated(mixed $id): int`](#fullChatLastUpdated) +* [`fullGetSelf(): array|false`](#fullGetSelf) +* [`genVectorHash(array $longs): string`](#genVectorHash) +* [`getAdminIds(): array`](#getAdminIds) +* [`getAllCalls(): array`](#getAllCalls) +* [`getAllMethods(): array`](#getAllMethods) +* [`getAuthorization(): (\danog\MadelineProto\API::NOT_LOGGED_IN|\danog\MadelineProto\API::WAITING_CODE|\danog\MadelineProto\API::WAITING_SIGNUP|\danog\MadelineProto\API::WAITING_PASSWORD|\danog\MadelineProto\API::LOGGED_IN|API::LOGGED_OUT)`](#getAuthorization) +* [`getBroadcastProgress(integer $id): ?\danog\MadelineProto\Broadcast\Progress`](#getBroadcastProgress) +* [`getCachedConfig(): array`](#getCachedConfig) +* [`getCall(int $id): ?\danog\MadelineProto\VoIP`](#getCall) +* [`getCallByPeer(int $userId): ?\danog\MadelineProto\VoIP`](#getCallByPeer) +* [`getCallState(int $id): ?\danog\MadelineProto\VoIP\CallState`](#getCallState) +* [`getCdnConfig(): void`](#getCdnConfig) +* [`getConfig(array $config = []): array`](#getConfig) +* [`getDNSClient(): \Amp\Dns\DnsResolver`](#getDNSClient) +* [`getDhConfig(): array`](#getDhConfig) +* [`getDialogIds(): list`](#getDialogIds) +* [`getDownloadInfo(mixed $messageMedia): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string, thumb_size?: string}`](#getDownloadInfo) +* [`getDownloadLink(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|array|string $media, ?string $scriptUrl = NULL, ?int $size = NULL, ?string $name = NULL, ?string $mime = NULL): string`](#getDownloadLink) +* [`getEventHandler((class-string|null) $class = NULL): (T|\danog\MadelineProto\Ipc\EventHandlerProxy|\__PHP_Incomplete_Class|null)`](#getEventHandler) +* [`getExtensionFromLocation(mixed $location, string $default): string`](#getExtensionFromLocation) +* [`getExtensionFromMime(string $mime): string`](#getExtensionFromMime) +* [`getFileInfo(mixed $constructor): array`](#getFileInfo) +* [`getFullDialogs(): array`](#getFullDialogs) +* [`getFullInfo(mixed $id): array`](#getFullInfo) +* [`getHTTPClient(): \Amp\Http\Client\HttpClient`](#getHTTPClient) +* [`getHint(): string`](#getHint) +* [`getId(mixed $id): int`](#getId) +* [`getInfo(mixed $id, \danog\MadelineProto\API::INFO_TYPE_* $type = \danog\MadelineProto\API::INFO_TYPE_ALL): (\$type is \danog\MadelineProto\API::INFO_TYPE_ALL ? array{User?: array, Chat?: array, bot_api_id: int, user_id?: int, chat_id?: int, channel_id?: int, type: string} : ($type is API::INFO_TYPE_TYPE ? string : ($type is \danog\MadelineProto\API::INFO_TYPE_ID ? int : (array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int} | array{_: string, user_id?: int, access_hash?: int, min?: bool} | array{_: string, channel_id: int, access_hash: int, min: bool}))))`](#getInfo) +* [`getLogger(): \danog\MadelineProto\Logger`](#getLogger) +* [`getMaps(): ?int`](#getMaps) +* [`getMaxMaps(): ?int`](#getMaxMaps) +* [`getMethodNamespaces(): array`](#getMethodNamespaces) +* [`getMethodsNamespaced(): array`](#getMethodsNamespaced) +* [`getMimeFromBuffer(string $buffer): string`](#getMimeFromBuffer) +* [`getMimeFromExtension(string $extension, string $default): string`](#getMimeFromExtension) +* [`getMimeFromFile(string $file): string`](#getMimeFromFile) +* [`getPlugin(class-string $class): \danog\MadelineProto\PluginEventHandler|\danog\MadelineProto\Ipc\EventHandlerProxy|null`](#getPlugin) +* [`getPropicInfo(mixed $data): ?\danog\MadelineProto\EventHandler\Media\Photo`](#getPropicInfo) +* [`getPsrLogger(): \Psr\Log\LoggerInterface`](#getPsrLogger) +* [`getPwrChat(mixed $id, bool $fullfetch = true): array`](#getPwrChat) +* [`getSecretChat((array|int) $chat): \danog\MadelineProto\SecretChats\SecretChat`](#getSecretChat) +* [`getSecretMessage(integer $chatId, integer $randomId): \danog\MadelineProto\EventHandler\Message\SecretMessage`](#getSecretMessage) +* [`getSelf(): array|false`](#getSelf) +* [`getSessionName(): string`](#getSessionName) +* [`getSettings(): \danog\MadelineProto\Settings`](#getSettings) +* [`getSponsoredMessages((int|string|array) $peer): ?array`](#getSponsoredMessages) +* [`getStream(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL, ?int $size = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`getStreamPipe(): \Amp\ByteStream\Pipe`](#getStreamPipe) +* [`getTL(): \danog\MadelineProto\TL\TLInterface`](#getTL) +* [`getType(mixed $id): \danog\MadelineProto\API::PEER_TYPE_*`](#getType) +* [`getUpdates(array{offset?: int, limit?: int, timeout?: float} $params = []): list`](#getUpdates) +* [`getWebMessage(string $message): string`](#getWebMessage) +* [`getWebWarnings(): string`](#getWebWarnings) +* [`hasAdmins(): bool`](#hasAdmins) +* [`hasEventHandler(): bool`](#hasEventHandler) +* [`hasPlugin(class-string<\danog\MadelineProto\EventHandler> $class): bool`](#hasPlugin) +* [`hasReportPeers(): bool`](#hasReportPeers) +* [`hasSecretChat((array|int) $chat): bool`](#hasSecretChat) +* [`htmlEscape(string $what): string`](#htmlEscape) +* [`htmlToMessageEntities(string $html): \danog\MadelineProto\TextEntities`](#htmlToMessageEntities) +* [`importAuthorization(array $authorization, int $mainDcID): array`](#importAuthorization) +* [`inflateStripped(string $stripped): string`](#inflateStripped) +* [`initSelfRestart(): void`](#initSelfRestart) +* [`isAltervista(): bool`](#isAltervista) +* [`isArrayOrAlike(mixed $var): bool`](#isArrayOrAlike) +* [`isBot(mixed $peer): bool`](#isBot) +* [`isForum(mixed $peer): bool`](#isForum) +* [`isIpc(): bool`](#isIpc) +* [`isIpcWorker(): bool`](#isIpcWorker) +* [`isPlayPaused(int $id): bool`](#isPlayPaused) +* [`isPremium(): bool`](#isPremium) +* [`isSelfBot(): bool`](#isSelfBot) +* [`isSelfUser(): bool`](#isSelfUser) +* [`isTestMode(): boolean`](#isTestMode) +* [`logger(mixed $param, int $level = \danog\MadelineProto\Logger::NOTICE, string $file = ''): void`](#logger) +* [`logout(): void`](#logout) +* [`markdownCodeEscape(string $what): string`](#markdownCodeEscape) +* [`markdownCodeblockEscape(string $what): string`](#markdownCodeblockEscape) +* [`markdownEscape(string $what): string`](#markdownEscape) +* [`markdownToMessageEntities(string $markdown): \danog\MadelineProto\TextEntities`](#markdownToMessageEntities) +* [`markdownUrlEscape(string $what): string`](#markdownUrlEscape) +* [`mbStrSplit(string $text, integer $length): array`](#mbStrSplit) +* [`mbStrlen(string $text): int`](#mbStrlen) +* [`mbSubstr(string $text, integer $offset, (null|int) $length = NULL): string`](#mbSubstr) +* [`openBuffered(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL): Closure(int): ?string`](#openBuffered) +* [`openFileAppendOnly(string $path): \Amp\File\File`](#openFileAppendOnly) +* [`packDouble(float $value): string`](#packDouble) +* [`packSignedInt(integer $value): string`](#packSignedInt) +* [`packSignedLong(int $value): string`](#packSignedLong) +* [`packUnsignedInt(int $value): string`](#packUnsignedInt) +* [`pausePlay(int $id): void`](#pausePlay) +* [`peerIsset(mixed $id): bool`](#peerIsset) +* [`phoneLogin(string $number, integer $sms_type = 5): array`](#phoneLogin) +* [`posmod(int $a, int $b): int`](#posmod) +* [`processDownloadServerPing(string $path, string $payload): void`](#processDownloadServerPing) +* [`qrLogin(): ?\danog\MadelineProto\TL\Types\LoginQrCode`](#qrLogin) +* [`random(integer $length): string`](#random) +* [`randomInt(integer $modulus = 0): int`](#randomInt) +* [`readLine(string $prompt = '', ?\Amp\Cancellation $cancel = NULL): string`](#readLine) +* [`refreshFullPeerCache(mixed $id): void`](#refreshFullPeerCache) +* [`refreshPeerCache(mixed ...$ids): void`](#refreshPeerCache) +* [`report(string $message, string $parseMode = ''): void`](#report) +* [`reportMemoryProfile(): void`](#reportMemoryProfile) +* [`requestCall(mixed $user): \danog\MadelineProto\VoIP`](#requestCall) +* [`requestSecretChat(mixed $user): int`](#requestSecretChat) +* [`resetUpdateState(): void`](#resetUpdateState) +* [`restart(): void`](#restart) +* [`resumePlay(int $id): void`](#resumePlay) +* [`rethrow(Throwable $e): void`](#rethrow) +* [`rleDecode(string $string): string`](#rleDecode) +* [`rleEncode(string $string): string`](#rleEncode) +* [`sendAudio((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendAudio) +* [`sendCustomEvent(mixed $payload): void`](#sendCustomEvent) +* [`sendDocument((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendDocument) +* [`sendDocumentPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendDocumentPhoto) +* [`sendGif((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, ?int $duration = NULL, ?int $width = NULL, ?int $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendGif) +* [`sendMessage((integer|string) $peer, string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendMessage) +* [`sendMessageToAdmins(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, ?\Amp\Cancellation $cancellation = NULL): list<\danog\MadelineProto\EventHandler\Message>`](#sendMessageToAdmins) +* [`sendPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendPhoto) +* [`sendSticker((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', array $stickerSet = [ '_' => 'inputStickerSetEmpty',], ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendSticker) +* [`sendVideo((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendVideo) +* [`sendVoice((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendVoice) +* [`setNoop(): void`](#setNoop) +* [`setReportPeers((int|string|array<(int|string)>) $userOrId): void`](#setReportPeers) +* [`setWebhook(string $webhookUrl): void`](#setWebhook) +* [`skipPlay(int $id): void`](#skipPlay) +* [`sleep(float $time): void`](#sleep) +* [`start(): array`](#start) +* [`stop(): void`](#stop) +* [`stopPlay(int $id): void`](#stopPlay) +* [`stringToStream(string $str): \Amp\ByteStream\ReadableBuffer`](#stringToStream) +* [`subscribeToUpdates(mixed $channel): bool`](#subscribeToUpdates) +* [`tdToMTProto(array $params): array`](#tdToMTProto) +* [`tdToTdcli(mixed $params): array`](#tdToTdcli) +* [`tdcliToTd(mixed $params, array $key = NULL): array`](#tdcliToTd) +* [`testFibers(int $fiberCount = 100000): array{maxFibers: int, realMemoryMb: int, maps: ?int, maxMaps: ?int}`](#testFibers) +* [`toCamelCase(string $input): string`](#toCamelCase) +* [`toSnakeCase(string $input): string`](#toSnakeCase) +* [`unpackDouble(string $value): float`](#unpackDouble) +* [`unpackFileId(string $fileId): array`](#unpackFileId) +* [`unpackSignedInt(string $value): int`](#unpackSignedInt) +* [`unpackSignedLong(string $value): int`](#unpackSignedLong) +* [`unpackSignedLongString((string|int|array) $value): string`](#unpackSignedLongString) +* [`unsetEventHandler(): void`](#unsetEventHandler) +* [`update2fa(array{password?: string, new_password?: string, email?: string, hint?: string} $params): void`](#update2fa) +* [`updateSettings(\danog\MadelineProto\SettingsAbstract $settings): void`](#updateSettings) +* [`upload((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|string|array|resource) $file, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#upload) +* [`uploadEncrypted((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|string|array|resource) $file, string $fileName = '', callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadEncrypted) +* [`uploadFromCallable(callable(int, int, ?Cancellation): strin) $callable, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable(float, float, float): voi) $cb = NULL, boolean $seekable = true, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromCallable) +* [`uploadFromStream(mixed $stream, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromStream) +* [`uploadFromTgfile(mixed $media, callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromTgfile) +* [`uploadFromUrl((string|\danog\MadelineProto\FileCallbackInterface) $url, integer $size = 0, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromUrl) +* [`validateEventHandlerClass(class-string<\danog\MadelineProto\EventHandler> $class): list<\danog\MadelineProto\EventHandlerIssue>`](#validateEventHandlerClass) +* [`viewSponsoredMessage((int|array) $peer, (string|array{random_id: string}) $message): bool`](#viewSponsoredMessage) +* [`wrapMedia(array $media, bool $protected = false): ?\danog\MadelineProto\EventHandler\Media`](#wrapMedia) +* [`wrapMessage(array $message, bool $scheduled = false): ?\danog\MadelineProto\EventHandler\AbstractMessage`](#wrapMessage) +* [`wrapPin(array $message): ?\danog\MadelineProto\EventHandler\Pinned`](#wrapPin) +* [`wrapUpdate(array $update): ?\danog\MadelineProto\EventHandler\Update`](#wrapUpdate) +* [`initDbProperties(\danog\AsyncOrm\Settings $settings, string $tablePrefix): void`](#initDbProperties) +* [`saveDbProperties(): void`](#saveDbProperties) + +## Methods: +### `getPluginPaths(): array|string|null` + +Plugins can require other plugins ONLY with the getPlugins() method. + + + +### `isPluginEnabled(): bool` + +Whether the plugin is enabled. + + + +### `startAndLoop(string $session, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): void` + +Start MadelineProto and the event handler. + +Also initializes error reporting, catching and reporting all errors surfacing from the event loop. + + +Parameters: + +* `$session`: `string` Session name +* `$settings`: `?\danog\MadelineProto\SettingsAbstract` Settings + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` + + + + +### `startAndLoopBot(string $session, string $token, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): void` + +Start MadelineProto as a bot and the event handler. + +Also initializes error reporting, catching and reporting all errors surfacing from the event loop. + + +Parameters: + +* `$session`: `string` Session name +* `$token`: `string` Bot token +* `$settings`: `?\danog\MadelineProto\SettingsAbstract` Settings + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` + + + + +### `getPeriodicLoop(string $name): ?\danog\Loop\PeriodicLoop` + +Obtain a PeriodicLoop instance created by the Cron attribute. + + +Parameters: + +* `$name`: `string` Method name + + +#### See also: +* `\danog\Loop\PeriodicLoop` + + + + +### `getPeriodicLoops(): array` + +Obtain all PeriodicLoop instances created by the Cron attribute. + + +#### See also: +* `\danog\Loop\PeriodicLoop` + + + + +### `getReportPeers(): (string|int|array<(string|int)>)` + +Get peers where to send error reports. + + + +### `getPlugins(): array>` + +Obtain a list of plugin event handlers to use, in addition with those found by getPluginPath. + + + +### `MTProtoToBotAPI(array $data): array` + +Convert MTProto parameters to bot API parameters. + + +Parameters: + +* `$data`: `array` Data + + + +### `MTProtoToTd(mixed $params): array` + +MTProto to TD params. + + +Parameters: + +* `$params`: `mixed` Params + + + +### `MTProtoToTdcli(mixed $params): array` + +MTProto to TDCLI params. + + +Parameters: + +* `$params`: `mixed` Params + + + +### `acceptCall(int $id): void` + +Accept call. + + +Parameters: + +* `$id`: `int` + + + +### `acceptSecretChat(array $params): void` + +Accept secret chat. + + +Parameters: + +* `$params`: `array` Secret chat ID + + + +### `arr(mixed ...$params): array` + +Create array. + + +Parameters: + +* `...$params`: `mixed` Params + + + +### `base64urlDecode(string $data): string` + +base64URL decode. + + +Parameters: + +* `$data`: `string` Data to decode + + + +### `base64urlEncode(string $data): string` + +Base64URL encode. + + +Parameters: + +* `$data`: `string` Data to encode + + + +### `botAPIToMTProto(array $arguments): array` + +Convert bot API parameters to MTProto parameters. + + +Parameters: + +* `$arguments`: `array` Arguments + + + +### `botLogin(string $token): ?array` + +Login as bot. + + +Parameters: + +* `$token`: `string` Bot token + + + +### `broadcastCustom(\danog\MadelineProto\Broadcast\Action $action, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, (float|null) $delay = NULL): int` + +Executes a custom broadcast action with all peers (users, chats, channels) of the bot. + +Will return an integer ID that can be used to: + +- Get the current broadcast progress with getBroadcastProgress +- Cancel the broadcast using cancelBroadcast + +Note that to avoid manually polling the progress, +MadelineProto will also periodically emit updateBroadcastProgress updates, +containing a Progress object for all broadcasts currently in-progress. + + +Parameters: + +* `$action`: `\danog\MadelineProto\Broadcast\Action` A custom, serializable Action class that will be called once for every peer. +* `$filter`: `?\danog\MadelineProto\Broadcast\Filter` +* `$delay`: `(float|null)` Number of seconds to wait between each peer. + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Action`: Interface that represents a broadcast action.](../../danog/MadelineProto/Broadcast/Action.html) +* [`\danog\MadelineProto\Broadcast\Filter`: Broadcast filter.](../../danog/MadelineProto/Broadcast/Filter.html) + + + + +### `broadcastForwardMessages(mixed $from_peer, list $message_ids, bool $drop_author = false, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int` + +Forwards a list of messages to all peers (users, chats, channels) of the bot. + +Will return an integer ID that can be used to: + +- Get the current broadcast progress with getBroadcastProgress +- Cancel the broadcast using cancelBroadcast + +Note that to avoid manually polling the progress, +MadelineProto will also periodically emit updateBroadcastProgress updates, +containing a Progress object for all broadcasts currently in-progress. + + +Parameters: + +* `$from_peer`: `mixed` Bot API ID or Update, from where to forward the messages. +* `$message_ids`: `list` IDs of the messages to forward. +* `$drop_author`: `bool` If true, will forward messages without quoting the original author. +* `$filter`: `?\danog\MadelineProto\Broadcast\Filter` +* `$pin`: `bool` Whether to also pin the last sent message. +* `$delay`: `(float|null)` Number of seconds to wait between each peer. + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Filter`: Broadcast filter.](../../danog/MadelineProto/Broadcast/Filter.html) + + + + +### `broadcastMessages(array $messages, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int` + +Sends a list of messages to all peers (users, chats, channels) of the bot. + +A simplified version of this method is also available: broadcastForwardMessages can work with pre-prepared messages. + +Will return an integer ID that can be used to: + +- Get the current broadcast progress with getBroadcastProgress +- Cancel the broadcast using cancelBroadcast + +Note that to avoid manually polling the progress, +MadelineProto will also periodically emit updateBroadcastProgress updates, +containing a Progress object for all broadcasts currently in-progress. + + +Parameters: + +* `$messages`: `array` The messages to send: an array of arrays, containing parameters to pass to messages.sendMessage. +* `$filter`: `?\danog\MadelineProto\Broadcast\Filter` +* `$pin`: `bool` Whether to also pin the last sent message. +* `$delay`: `(float|null)` Number of seconds to wait between each peer. + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Filter`: Broadcast filter.](../../danog/MadelineProto/Broadcast/Filter.html) + + + + +### `callFork(\Generator|\Amp\Future|callable $callable, mixed ...$args): \Amp\Future` + +Fork a new green thread and execute the passed function in the background. + + +Parameters: + +* `$callable`: `\Generator|\Amp\Future|callable` +* `...$args`: `mixed` Arguments forwarded to the function when forking the thread. + + +#### See also: +* `\Generator` +* `\Amp\Future` + + + + +### `callGetCurrent(int $id): \danog\MadelineProto\RemoteUrl|\danog\MadelineProto\LocalFile|string|null` + +Get the file that is currently being played. + +Will return a string with the object ID of the stream if we're currently playing a stream, otherwise returns the related LocalFile or RemoteUrl. + + +Parameters: + +* `$id`: `int` + + +#### See also: +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) + + + + +### `callPlay(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $file): void` + +Play file in call. + + +Parameters: + +* `$id`: `int` +* `$file`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` + + + + +### `callPlayOnHold(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream ...$files): void` + +Play files on hold in call. + + +Parameters: + +* `$id`: `int` +* `...$files`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` + + + + +### `callSetOutput(int $id, \danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream $file): void` + +Set output file or stream for incoming OPUS audio packets in a call. + +Will write an OGG OPUS stream to the specified file or stream. + + +Parameters: + +* `$id`: `int` +* `$file`: `\danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* `\Amp\ByteStream\WritableStream` + + + + +### `canConvertOgg(): bool` + +Whether we can convert any audio/video file to a VoIP OGG OPUS file, or the files must be preconverted using @libtgvoipbot. + + + +### `canUseFFmpeg(?\Amp\Cancellation $cancellation = NULL): bool` + +Whether we can convert any audio/video file using ffmpeg. + + +Parameters: + +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `cancelBroadcast(integer $id): void` + +Cancel a running broadcast. + + +Parameters: + +* `$id`: `integer` Broadcast ID + + + +### `closeConnection(string $message): void` + +Close connection with client, connected via web. + + +Parameters: + +* `$message`: `string` Message + + + +### `complete2faLogin(string $password): array` + +Complete 2FA login. + + +Parameters: + +* `$password`: `string` Password + + + +### `completePhoneLogin(string $code): array` + +Complet user login using login code. + + +Parameters: + +* `$code`: `string` Login code + + + +### `completeSignup(string $first_name, string $last_name = ''): array` + +Complete signup to Telegram. + + +Parameters: + +* `$first_name`: `string` First name +* `$last_name`: `string` Last name + + + +### `discardCall(int $id, \danog\MadelineProto\VoIP\DiscardReason $reason = \danog\MadelineProto\VoIP\DiscardReason::HANGUP, int<1, 5> $rating = NULL, string $comment = NULL): void` + +Discard call. + + +Parameters: + +* `$id`: `int` +* `$reason`: `\danog\MadelineProto\VoIP\DiscardReason` +* `$rating`: `int<1, 5>` Call rating in stars +* `$comment`: `string` Additional comment on call quality. + + +#### See also: +* [`\danog\MadelineProto\VoIP\DiscardReason`: Why was the call discarded?](../../danog/MadelineProto/VoIP/DiscardReason.html) + + + + +### `discardSecretChat(int $chat): void` + +Discard secret chat. + + +Parameters: + +* `$chat`: `int` Secret chat ID + + + +### `downloadServer(string $session): void` + +Downloads a file to the browser using the specified session file. + + +Parameters: + +* `$session`: `string` + + + +### `downloadToBrowser((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, (null|callable) $cb = NULL, (null|int) $size = NULL, (null|string) $name = NULL, (null|string) $mime = NULL, ?\Amp\Cancellation $cancellation = NULL): void` + +Download file to browser. + +Supports HEAD requests and content-ranges for parallel and resumed downloads. + + +Parameters: + +* `$messageMedia`: `(array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message)` File to download +* `$cb`: `(null|callable)` Status callback (can also use FileCallback) +* `$size`: `(null|int)` Size of file to download, required for bot API file IDs. +* `$name`: `(null|string)` Name of file to download, required for bot API file IDs. +* `$mime`: `(null|string)` MIME type of file to download, required for bot API file IDs. +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* `\Amp\Cancellation` + + + + +### `downloadToCallable(mixed $messageMedia, (callable|\danog\MadelineProto\FileCallbackInterface) $callable, callable $cb = NULL, bool $seekable = true, int $offset = 0, int $end = -1, int $part_size = NULL, ?\Amp\Cancellation $cancellation = NULL): void` + +Download file to callable. +The callable must accept two parameters: string $payload, int $offset +The callable will be called (possibly out of order, depending on the value of $seekable). + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$callable`: `(callable|\danog\MadelineProto\FileCallbackInterface)` Chunk callback +* `$cb`: `callable` Status callback +* `$seekable`: `bool` Whether the callable can be called out of order +* `$offset`: `int` Offset where to start downloading +* `$end`: `int` Offset where to stop downloading (inclusive) +* `$part_size`: `int` Size of each chunk +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` + + + + +### `downloadToDir(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $dir, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string` + +Download file to directory. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$dir`: `(string|\danog\MadelineProto\FileCallbackInterface)` Directory where to download the file +* `$cb`: `callable` Callback +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: Downloaded file name + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` +* `non-empty-string` + + + + +### `downloadToFile(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $file, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string` + +Download file. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$file`: `(string|\danog\MadelineProto\FileCallbackInterface)` Downloaded file path +* `$cb`: `callable` Callback +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: Downloaded file name + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` +* `non-empty-string` + + + + +### `downloadToResponse((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, \Amp\Http\Server\Request $request, callable $cb = NULL, (null|int) $size = NULL, (null|string) $mime = NULL, (null|string) $name = NULL, ?\Amp\Cancellation $cancellation = NULL): \Amp\Http\Server\Response` + +Download file to amphp/http-server response. + +Supports HEAD requests and content-ranges for parallel and resumed downloads. + + +Parameters: + +* `$messageMedia`: `(array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message)` File to download +* `$request`: `\Amp\Http\Server\Request` Request +* `$cb`: `callable` Status callback (can also use FileCallback) +* `$size`: `(null|int)` Size of file to download, required for bot API file IDs. +* `$mime`: `(null|string)` MIME type of file to download, required for bot API file IDs. +* `$name`: `(null|string)` Name of file to download, required for bot API file IDs. +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* `\Amp\Http\Server\Request` +* `\Amp\Cancellation` +* `\Amp\Http\Server\Response` + + + + +### `downloadToReturnedStream(mixed $messageMedia, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Download file to an amphp stream, returning it. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$cb`: `callable` Callback +* `$offset`: `int` Offset where to start downloading +* `$end`: `int` Offset where to end download +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToStream(mixed $messageMedia, (mixed|\danog\MadelineProto\FileCallbackInterface|resource|\Amp\ByteStream\WritableStream) $stream, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): void` + +Download file to stream. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$stream`: `(mixed|\danog\MadelineProto\FileCallbackInterface|resource|\Amp\ByteStream\WritableStream)` Stream where to download file +* `$cb`: `callable` Callback +* `$offset`: `int` Offset where to start downloading +* `$end`: `int` Offset where to end download +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `resource` +* `\Amp\ByteStream\WritableStream` +* `\Amp\Cancellation` + + + + +### `echo(string $string): void` + +Asynchronously write to stdout/browser. + + +Parameters: + +* `$string`: `string` Message to echo + + + +### `end(array $what): T` + +Get final element of array. + + +Parameters: + +* `$what`: `array` Array + + + +### `entitiesToHtml(string $message, list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})> $entities, bool $allowTelegramTags = false): string` + +Convert a message and a set of entities to HTML. + + +Parameters: + +* `$message`: `string` +* `$entities`: `list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})>` +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity`: Master class for message entities.](../../danog/MadelineProto/EventHandler/Message/Entities/MessageEntity.html) + + + + +### `exportAuthorization(): array{0: (int|string), 1: string}` + +Export authorization. + + + +### `extractBotAPIFile(array $info): ?array` + +Extract file info from bot API message. + + +Parameters: + +* `$info`: `array` Bot API message object + + + +### `extractMessage(array $updates): array` + +Extract a message constructor from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `extractMessageId(array $updates): int` + +Extract a message ID from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `extractMessageUpdate(array $updates): array` + +Extract an update message constructor from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `extractUpdates(array $updates): array` + +Extract Update constructors from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `fileGetContents(string $url): string` + +Get contents of remote file asynchronously. + + +Parameters: + +* `$url`: `string` URL + + + +### `flock(string $file, integer $operation, float $polling = 0.1, ?\Amp\Cancellation $token = NULL, ?\Closure $failureCb = NULL): ($token is null ? Closure(): void : (Closure(): void | null))` + +Asynchronously lock a file +Resolves with a callbable that MUST eventually be called in order to release the lock. + + +Parameters: + +* `$file`: `string` File to lock +* `$operation`: `integer` Locking mode +* `$polling`: `float` Polling interval +* `$token`: `?\Amp\Cancellation` Cancellation token +* `$failureCb`: `?\Closure` Failure callback, called only once if the first locking attempt fails. + + +#### See also: +* `\Amp\Cancellation` +* `\Closure` + + + + +### `fullChatLastUpdated(mixed $id): int` + +When was full info for this chat last cached. + + +Parameters: + +* `$id`: `mixed` Chat ID + + + +### `fullGetSelf(): array|false` + +Get info about the logged-in user, not cached. + + + +### `genVectorHash(array $longs): string` + +Generate MTProto vector hash. + +Returns a vector hash. + + +Parameters: + +* `$longs`: `array` IDs + + + +### `getAdminIds(): array` + +Get admin IDs (equal to all user report peers). + + + +### `getAllCalls(): array` + +Get all pending and running calls, indexed by user ID. + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../danog/MadelineProto/VoIP.html) + + + + +### `getAllMethods(): array` + +Get full list of MTProto and API methods. + + + +### `getAuthorization(): (\danog\MadelineProto\API::NOT_LOGGED_IN|\danog\MadelineProto\API::WAITING_CODE|\danog\MadelineProto\API::WAITING_SIGNUP|\danog\MadelineProto\API::WAITING_PASSWORD|\danog\MadelineProto\API::LOGGED_IN|API::LOGGED_OUT)` + +Get authorization info. + + +#### See also: +* `\danog\MadelineProto\API::NOT_LOGGED_IN` +* `\danog\MadelineProto\API::WAITING_CODE` +* `\danog\MadelineProto\API::WAITING_SIGNUP` +* `\danog\MadelineProto\API::WAITING_PASSWORD` +* `\danog\MadelineProto\API::LOGGED_IN` +* `API::LOGGED_OUT` + + + + +### `getBroadcastProgress(integer $id): ?\danog\MadelineProto\Broadcast\Progress` + +Get the progress of a currently running broadcast. + +Will return null if the broadcast doesn't exist, has already completed or was cancelled. + +Use updateBroadcastProgress updates to get real-time progress status without polling. + + +Parameters: + +* `$id`: `integer` Broadcast ID + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Progress`: Broadcast progress.](../../danog/MadelineProto/Broadcast/Progress.html) + + + + +### `getCachedConfig(): array` + +Get cached server-side config. + + + +### `getCall(int $id): ?\danog\MadelineProto\VoIP` + +Get phone call information. + + +Parameters: + +* `$id`: `int` + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../danog/MadelineProto/VoIP.html) + + + + +### `getCallByPeer(int $userId): ?\danog\MadelineProto\VoIP` + +Get the phone call with the specified user ID. + + +Parameters: + +* `$userId`: `int` + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../danog/MadelineProto/VoIP.html) + + + + +### `getCallState(int $id): ?\danog\MadelineProto\VoIP\CallState` + +Get call state. + + +Parameters: + +* `$id`: `int` + + +#### See also: +* [\danog\MadelineProto\VoIP\CallState](../../danog/MadelineProto/VoIP/CallState.html) + + + + +### `getCdnConfig(): void` + +Store RSA keys for CDN datacenters. + + + +### `getConfig(array $config = []): array` + +Get cached (or eventually re-fetch) server-side config. + + +Parameters: + +* `$config`: `array` Current config + + + +### `getDNSClient(): \Amp\Dns\DnsResolver` + +Get async DNS client. + + +#### See also: +* `\Amp\Dns\DnsResolver` + + + + +### `getDhConfig(): array` + +Get diffie-hellman configuration. + + + +### `getDialogIds(): list` + +Get dialog IDs. + + + +### `getDownloadInfo(mixed $messageMedia): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string, thumb_size?: string}` + +Get download info of file +Returns an array with the following structure:. + +`$info['ext']` - The file extension +`$info['name']` - The file name, without the extension +`$info['mime']` - The file mime type +`$info['size']` - The file size + + +Parameters: + +* `$messageMedia`: `mixed` File ID + + + +### `getDownloadLink(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|array|string $media, ?string $scriptUrl = NULL, ?int $size = NULL, ?string $name = NULL, ?string $mime = NULL): string` + +Get download link of media file. + + +Parameters: + +* `$media`: `\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|array|string` +* `$scriptUrl`: `?string` +* `$size`: `?int` +* `$name`: `?string` +* `$mime`: `?string` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) + + + + +### `getEventHandler((class-string|null) $class = NULL): (T|\danog\MadelineProto\Ipc\EventHandlerProxy|\__PHP_Incomplete_Class|null)` + +Get event handler (or plugin instance). + + +Parameters: + +* `$class`: `(class-string|null)` + + +#### See also: +* `\danog\MadelineProto\Ipc\EventHandlerProxy` +* `\__PHP_Incomplete_Class` + + + + +### `getExtensionFromLocation(mixed $location, string $default): string` + +Get extension from file location. + + +Parameters: + +* `$location`: `mixed` File location +* `$default`: `string` Default extension + + + +### `getExtensionFromMime(string $mime): string` + +Get extension from mime type. + + +Parameters: + +* `$mime`: `string` MIME type + + + +### `getFileInfo(mixed $constructor): array` + +Get info about file. + + +Parameters: + +* `$constructor`: `mixed` File ID + + + +### `getFullDialogs(): array` + +Get full info of all dialogs. + +Bots should use getDialogIds, instead. + + + +### `getFullInfo(mixed $id): array` + +Get full info about peer, returns an FullInfo object. + + +Parameters: + +* `$id`: `mixed` Peer + + +#### See also: +* [https://docs.madelineproto.xyz/FullInfo.html](https://docs.madelineproto.xyz/FullInfo.html) + + + + +### `getHTTPClient(): \Amp\Http\Client\HttpClient` + +Get async HTTP client. + + +#### See also: +* `\Amp\Http\Client\HttpClient` + + + + +### `getHint(): string` + +Get current password hint. + + + +### `getId(mixed $id): int` + +Get the bot API ID of a peer. + + +Parameters: + +* `$id`: `mixed` Peer + + + +### `getInfo(mixed $id, \danog\MadelineProto\API::INFO_TYPE_* $type = \danog\MadelineProto\API::INFO_TYPE_ALL): (\$type is \danog\MadelineProto\API::INFO_TYPE_ALL ? array{User?: array, Chat?: array, bot_api_id: int, user_id?: int, chat_id?: int, channel_id?: int, type: string} : ($type is API::INFO_TYPE_TYPE ? string : ($type is \danog\MadelineProto\API::INFO_TYPE_ID ? int : (array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int} | array{_: string, user_id?: int, access_hash?: int, min?: bool} | array{_: string, channel_id: int, access_hash: int, min: bool}))))` + +Get info about peer, returns an Info object. + +If passed a secret chat ID, returns information about the user, not about the secret chat. +Use getSecretChat to return information about the secret chat. + + +Parameters: + +* `$id`: `mixed` Peer +* `$type`: `\danog\MadelineProto\API::INFO_TYPE_*` Whether to generate an Input*, an InputPeer or the full set of constructors + + +#### See also: +* [https://docs.madelineproto.xyz/Info.html](https://docs.madelineproto.xyz/Info.html) +* `\danog\MadelineProto\API::INFO_TYPE_*` + + + + +### `getLogger(): \danog\MadelineProto\Logger` + +Get logger. + + +#### See also: +* [`\danog\MadelineProto\Logger`: Logger class.](../../danog/MadelineProto/Logger.html) + + + + +### `getMaps(): ?int` + +Get current number of memory-mapped regions, UNIX only. + + + +### `getMaxMaps(): ?int` + +Get maximum number of memory-mapped regions, UNIX only. +Use testFibers to get the maximum number of fibers on any platform. + + + +### `getMethodNamespaces(): array` + +Get TL namespaces. + + + +### `getMethodsNamespaced(): array` + +Get namespaced methods (method => namespace). + + + +### `getMimeFromBuffer(string $buffer): string` + +Get mime type from buffer. + + +Parameters: + +* `$buffer`: `string` Buffer + + + +### `getMimeFromExtension(string $extension, string $default): string` + +Get mime type from file extension. + + +Parameters: + +* `$extension`: `string` File extension +* `$default`: `string` Default mime type + + + +### `getMimeFromFile(string $file): string` + +Get mime type of file. + + +Parameters: + +* `$file`: `string` File + + + +### `getPlugin(class-string $class): \danog\MadelineProto\PluginEventHandler|\danog\MadelineProto\Ipc\EventHandlerProxy|null` + +Obtain a certain event handler plugin instance. + + +Parameters: + +* `$class`: `class-string` + +return T|null + + +#### See also: +* [`\danog\MadelineProto\PluginEventHandler`: Plugin event handler class.](../../danog/MadelineProto/PluginEventHandler.html) +* `\danog\MadelineProto\Ipc\EventHandlerProxy` + + + + +### `getPropicInfo(mixed $data): ?\danog\MadelineProto\EventHandler\Media\Photo` + +Gets info of the propic of a user. + + +Parameters: + +* `$data`: `mixed` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Media\Photo`: Represents a photo.](../../danog/MadelineProto/EventHandler/Media/Photo.html) + + + + +### `getPsrLogger(): \Psr\Log\LoggerInterface` + +Get PSR logger. + + +#### See also: +* `\Psr\Log\LoggerInterface` + + + + +### `getPwrChat(mixed $id, bool $fullfetch = true): array` + +Get full info about peer (including full list of channel members), returns a Chat object. + + +Parameters: + +* `$id`: `mixed` Peer +* `$fullfetch`: `bool` + + +#### See also: +* [https://docs.madelineproto.xyz/Chat.html](https://docs.madelineproto.xyz/Chat.html) + + + + +### `getSecretChat((array|int) $chat): \danog\MadelineProto\SecretChats\SecretChat` + +Get secret chat. + + +Parameters: + +* `$chat`: `(array|int)` Secret chat ID + + +#### See also: +* [`\danog\MadelineProto\SecretChats\SecretChat`: Represents a secret chat.](../../danog/MadelineProto/SecretChats/SecretChat.html) + + + + +### `getSecretMessage(integer $chatId, integer $randomId): \danog\MadelineProto\EventHandler\Message\SecretMessage` + +Gets a secret chat message. + + +Parameters: + +* `$chatId`: `integer` Secret chat ID. +* `$randomId`: `integer` Secret chat message ID. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\SecretMessage`: Represents New encrypted message.](../../danog/MadelineProto/EventHandler/Message/SecretMessage.html) + + + + +### `getSelf(): array|false` + +Get info about the logged-in user, cached. + +Use fullGetSelf to bypass the cache. + + + +### `getSessionName(): string` + +Returns the session name. + + + +### `getSettings(): \danog\MadelineProto\Settings` + +Return current settings. + + +#### See also: +* [`\danog\MadelineProto\Settings`: Settings class used for configuring MadelineProto.](../../danog/MadelineProto/Settings.html) + + + + +### `getSponsoredMessages((int|string|array) $peer): ?array` + +Get sponsored messages for channel. +This method will return an array of [sponsored message objects](https://docs.madelineproto.xyz/API_docs/constructors/sponsoredMessage.html). + +See [the API documentation](https://core.telegram.org/api/sponsored-messages) for more info on how to handle sponsored messages. + + +Parameters: + +* `$peer`: `(int|string|array)` Channel ID, or Update, or Message, or Peer. + + + +### `getStream(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL, ?int $size = NULL): \Amp\ByteStream\ReadableStream` + +Provide a stream for a file, URL or amp stream. + + +Parameters: + +* `$stream`: `\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream` +* `$cancellation`: `?\Amp\Cancellation` +* `$size`: `?int` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `getStreamPipe(): \Amp\ByteStream\Pipe` + +Obtains a pipe that can be used to upload a file from a stream. + + +#### See also: +* `\Amp\ByteStream\Pipe` + + + + +### `getTL(): \danog\MadelineProto\TL\TLInterface` + +Get TL serializer. + + +#### See also: +* [\danog\MadelineProto\TL\TLInterface](../../danog/MadelineProto/TL/TLInterface.html) + + + + +### `getType(mixed $id): \danog\MadelineProto\API::PEER_TYPE_*` + +Get type of peer. + + +Parameters: + +* `$id`: `mixed` Peer + + +#### See also: +* `\danog\MadelineProto\API::PEER_TYPE_*` + + + + +### `getUpdates(array{offset?: int, limit?: int, timeout?: float} $params = []): list` + +Only useful when consuming MadelineProto updates through an API in another language (like Javascript), **absolutely not recommended when directly writing MadelineProto bots**. + +`getUpdates` will **greatly slow down your bot** if used directly inside of PHP code. + +**Only use the [event handler](#async-event-driven) when writing a MadelineProto bot**, because update handling in the **event handler** is completely parallelized and non-blocking. + + +Parameters: + +* `$params`: `array{offset?: int, limit?: int, timeout?: float}` Params + + + +### `getWebMessage(string $message): string` + +Get a message to show to the user when starting the bot. + + +Parameters: + +* `$message`: `string` + + + +### `getWebWarnings(): string` + +Get various warnings to show to the user in the web UI. + + + +### `hasAdmins(): bool` + +Check if has admins. + + + +### `hasEventHandler(): bool` + +Check if an event handler instance is present. + + + +### `hasPlugin(class-string<\danog\MadelineProto\EventHandler> $class): bool` + +Check if a certain event handler plugin is installed. + + +Parameters: + +* `$class`: `class-string<\danog\MadelineProto\EventHandler>` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../danog/MadelineProto/EventHandler.html) + + + + +### `hasReportPeers(): bool` + +Check if has report peers. + + + +### `hasSecretChat((array|int) $chat): bool` + +Check whether secret chat exists. + + +Parameters: + +* `$chat`: `(array|int)` Secret chat ID + + + +### `htmlEscape(string $what): string` + +Escape string for MadelineProto's HTML entity converter. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `htmlToMessageEntities(string $html): \danog\MadelineProto\TextEntities` + +Manually convert HTML to a message and a set of entities. + +NOTE: You don't have to use this method to send HTML messages. + +This method is already called automatically by using parse_mode: "HTML" in messages.sendMessage, messages.sendMedia, et cetera... + + +Parameters: + +* `$html`: `string` + + +Return value: Object containing message and entities + +#### See also: +* [https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode](https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode) +* [`\danog\MadelineProto\TextEntities`: Class that converts HTML or markdown to a message + set of entities.](../../danog/MadelineProto/TextEntities.html) + + + + +### `importAuthorization(array $authorization, int $mainDcID): array` + +Import authorization. + + +Parameters: + +* `$authorization`: `array` Authorization info +* `$mainDcID`: `int` Main DC ID + + + +### `inflateStripped(string $stripped): string` + +Inflate stripped photosize to full JPG payload. + + +Parameters: + +* `$stripped`: `string` Stripped photosize + + + +### `initSelfRestart(): void` + +Initialize self-restart hack. + + + +### `isAltervista(): bool` + +Whether this is altervista. + + + +### `isArrayOrAlike(mixed $var): bool` + +Check if is array or similar (traversable && countable && arrayAccess). + + +Parameters: + +* `$var`: `mixed` Value to check + + + +### `isBot(mixed $peer): bool` + +Check if the specified peer is a bot. + + +Parameters: + +* `$peer`: `mixed` + + + +### `isForum(mixed $peer): bool` + +Check if the specified peer is a forum. + + +Parameters: + +* `$peer`: `mixed` + + + +### `isIpc(): bool` + +Whether we're an IPC client instance. + + + +### `isIpcWorker(): bool` + +Whether we're an IPC server process (as opposed to an event handler). + + + +### `isPlayPaused(int $id): bool` + +Whether the currently playing audio file is paused. + + +Parameters: + +* `$id`: `int` + + + +### `isPremium(): bool` + +Returns whether the current user is a premium user, cached. + + + +### `isSelfBot(): bool` + +Returns whether the current user is a bot. + + + +### `isSelfUser(): bool` + +Returns whether the current user is a user. + + + +### `isTestMode(): boolean` + +Whether we're currently connected to the test DCs. + + + +### `logger(mixed $param, int $level = \danog\MadelineProto\Logger::NOTICE, string $file = ''): void` + +Logger. + + +Parameters: + +* `$param`: `mixed` Parameter +* `$level`: `int` Logging level +* `$file`: `string` File where the message originated + + + +### `logout(): void` + +Logout the session. + + + +### `markdownCodeEscape(string $what): string` + +Escape string for markdown code section. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownCodeblockEscape(string $what): string` + +Escape string for markdown codeblock. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownEscape(string $what): string` + +Escape string for markdown. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownToMessageEntities(string $markdown): \danog\MadelineProto\TextEntities` + +Manually convert markdown to a message and a set of entities. + +NOTE: You don't have to use this method to send Markdown messages. + +This method is already called automatically by using parse_mode: "Markdown" in messages.sendMessage, messages.sendMedia, et cetera... + + +Parameters: + +* `$markdown`: `string` + + +Return value: Object containing message and entities + +#### See also: +* [https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode](https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode) +* [`\danog\MadelineProto\TextEntities`: Class that converts HTML or markdown to a message + set of entities.](../../danog/MadelineProto/TextEntities.html) + + + + +### `markdownUrlEscape(string $what): string` + +Escape string for URL. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `mbStrSplit(string $text, integer $length): array` + +Telegram UTF-8 multibyte split. + + +Parameters: + +* `$text`: `string` Text +* `$length`: `integer` Length + + + +### `mbStrlen(string $text): int` + +Get Telegram UTF-8 length of string. + + +Parameters: + +* `$text`: `string` Text + + + +### `mbSubstr(string $text, integer $offset, (null|int) $length = NULL): string` + +Telegram UTF-8 multibyte substring. + + +Parameters: + +* `$text`: `string` Text to substring +* `$offset`: `integer` Offset +* `$length`: `(null|int)` Length + + + +### `openBuffered(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL): Closure(int): ?string` + +Provide a buffered reader for a file, URL or amp stream. + + +Parameters: + +* `$stream`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `openFileAppendOnly(string $path): \Amp\File\File` + +Opens a file in append-only mode. + + +Parameters: + +* `$path`: `string` File path. + + +#### See also: +* `\Amp\File\File` + + + + +### `packDouble(float $value): string` + +Convert double to binary version. + + +Parameters: + +* `$value`: `float` Value to convert + + + +### `packSignedInt(integer $value): string` + +Convert integer to base256 signed int. + + +Parameters: + +* `$value`: `integer` Value to convert + + + +### `packSignedLong(int $value): string` + +Convert integer to base256 long. + + +Parameters: + +* `$value`: `int` Value to convert + + + +### `packUnsignedInt(int $value): string` + +Convert value to unsigned base256 int. + + +Parameters: + +* `$value`: `int` Value + + + +### `pausePlay(int $id): void` + +Pauses playback of the current audio file in the call. + + +Parameters: + +* `$id`: `int` + + + +### `peerIsset(mixed $id): bool` + +Check if peer is present in internal peer database. + + +Parameters: + +* `$id`: `mixed` Peer + + + +### `phoneLogin(string $number, integer $sms_type = 5): array` + +Login as user. + + +Parameters: + +* `$number`: `string` Phone number +* `$sms_type`: `integer` SMS type + + + +### `posmod(int $a, int $b): int` + +Positive modulo +Works just like the % (modulus) operator, only returns always a postive number. + + +Parameters: + +* `$a`: `int` A +* `$b`: `int` B + + + +### `processDownloadServerPing(string $path, string $payload): void` + +Internal endpoint used by the download server. + + +Parameters: + +* `$path`: `string` +* `$payload`: `string` + + + +### `qrLogin(): ?\danog\MadelineProto\TL\Types\LoginQrCode` + +Initiates QR code login. + +Returns a QR code login helper object, that can be used to render the QR code, display the link directly, wait for login, QR code expiration and much more. + +Returns null if we're already logged in, or if we're waiting for a password (use getAuthorization to distinguish between the two cases). + + +#### See also: +* [`\danog\MadelineProto\TL\Types\LoginQrCode`: Represents a login QR code.](../../danog/MadelineProto/TL/Types/LoginQrCode.html) + + + + +### `random(integer $length): string` + +Get secure random string of specified length. + + +Parameters: + +* `$length`: `integer` Length + + + +### `randomInt(integer $modulus = 0): int` + +Get random integer. + + +Parameters: + +* `$modulus`: `integer` Modulus + + + +### `readLine(string $prompt = '', ?\Amp\Cancellation $cancel = NULL): string` + +Asynchronously read line. + + +Parameters: + +* `$prompt`: `string` Prompt +* `$cancel`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `refreshFullPeerCache(mixed $id): void` + +Refresh full peer cache for a certain peer. + + +Parameters: + +* `$id`: `mixed` The peer to refresh + + + +### `refreshPeerCache(mixed ...$ids): void` + +Refresh peer cache for a certain peer. + + +Parameters: + +* `...$ids`: `mixed` + + + +### `report(string $message, string $parseMode = ''): void` + +Report an error to the previously set peer. + + +Parameters: + +* `$message`: `string` Error to report +* `$parseMode`: `string` Parse mode + + + +### `reportMemoryProfile(): void` + +Report memory profile with memprof. + + + +### `requestCall(mixed $user): \danog\MadelineProto\VoIP` + +Request VoIP call. + + +Parameters: + +* `$user`: `mixed` User + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../danog/MadelineProto/VoIP.html) + + + + +### `requestSecretChat(mixed $user): int` + +Request secret chat. + + +Parameters: + +* `$user`: `mixed` User to start secret chat with + + + +### `resetUpdateState(): void` + +Reset the update state and fetch all updates from the beginning. + + + +### `restart(): void` + +Restart update loop. + + + +### `resumePlay(int $id): void` + +Resumes playback of the current audio file in the call. + + +Parameters: + +* `$id`: `int` + + + +### `rethrow(Throwable $e): void` + +Rethrow exception into event loop. + + +Parameters: + +* `$e`: `Throwable` + + +#### See also: +* `Throwable` + + + + +### `rleDecode(string $string): string` + +null-byte RLE decode. + + +Parameters: + +* `$string`: `string` Data to decode + + + +### `rleEncode(string $string): string` + +null-byte RLE encode. + + +Parameters: + +* `$string`: `string` Data to encode + + + +### `sendAudio((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendCustomEvent(mixed $payload): void` + +Sends an updateCustomEvent update to the event handler. + + +Parameters: + +* `$payload`: `mixed` + + + +### `sendDocument((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendDocumentPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendGif((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, ?int $duration = NULL, ?int $width = NULL, ?int $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$duration`: `?int` +* `$width`: `?int` +* `$height`: `?int` +* `$thumbSeek`: `string` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendMessage((integer|string) $peer, string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a message. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` Cancellation + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `sendMessageToAdmins(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, ?\Amp\Cancellation $cancellation = NULL): list<\danog\MadelineProto\EventHandler\Message>` + +Sends a message to all report peers (admins of the bot). + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `sendPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendSticker((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', array $stickerSet = [ '_' => 'inputStickerSetEmpty',], ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$stickerSet`: `array` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendVideo((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$thumbSeek`: `string` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendVoice((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `setNoop(): void` + +Set NOOP update handler, ignoring all updates. + + + +### `setReportPeers((int|string|array<(int|string)>) $userOrId): void` + +Set peer(s) where to send errors occurred in the event loop. + + +Parameters: + +* `$userOrId`: `(int|string|array<(int|string)>)` Username(s) or peer ID(s) + + + +### `setWebhook(string $webhookUrl): void` + +Set webhook update handler. + + +Parameters: + +* `$webhookUrl`: `string` Webhook URL + + + +### `skipPlay(int $id): void` + +When called, skips to the next file in the playlist. + + +Parameters: + +* `$id`: `int` + + + +### `sleep(float $time): void` + +Asynchronously sleep. + + +Parameters: + +* `$time`: `float` Number of seconds to sleep for + + + +### `start(): array` + +Log in to telegram (via CLI or web). + + + +### `stop(): void` + +Stop update loop. + + + +### `stopPlay(int $id): void` + +Stops playing all files in the call, clears the main and the hold playlist. + + +Parameters: + +* `$id`: `int` + + + +### `stringToStream(string $str): \Amp\ByteStream\ReadableBuffer` + +Converts a string into an async amphp stream. + + +Parameters: + +* `$str`: `string` + + +#### See also: +* `\Amp\ByteStream\ReadableBuffer` + + + + +### `subscribeToUpdates(mixed $channel): bool` + +Subscribe to event handler updates for a channel/supergroup we're not a member of. + + +Parameters: + +* `$channel`: `mixed` Channel/supergroup to subscribe to + + +Return value: False if we were already subscribed + + +### `tdToMTProto(array $params): array` + +Convert TD to MTProto parameters. + + +Parameters: + +* `$params`: `array` Parameters + + + +### `tdToTdcli(mixed $params): array` + +Convert TD parameters to tdcli. + + +Parameters: + +* `$params`: `mixed` Parameters + + + +### `tdcliToTd(mixed $params, array $key = NULL): array` + +Convert tdcli parameters to tdcli. + + +Parameters: + +* `$params`: `mixed` Params +* `$key`: `array` Key + + + +### `testFibers(int $fiberCount = 100000): array{maxFibers: int, realMemoryMb: int, maps: ?int, maxMaps: ?int}` + +Test fibers. + + +Parameters: + +* `$fiberCount`: `int` + + + +### `toCamelCase(string $input): string` + +Convert to camelCase. + + +Parameters: + +* `$input`: `string` String + + + +### `toSnakeCase(string $input): string` + +Convert to snake_case. + + +Parameters: + +* `$input`: `string` String + + + +### `unpackDouble(string $value): float` + +Unpack binary double. + + +Parameters: + +* `$value`: `string` Value to unpack + + + +### `unpackFileId(string $fileId): array` + +Unpack bot API file ID. + + +Parameters: + +* `$fileId`: `string` Bot API file ID + + +Return value: Unpacked file ID + + +### `unpackSignedInt(string $value): int` + +Unpack base256 signed int. + + +Parameters: + +* `$value`: `string` base256 int + + + +### `unpackSignedLong(string $value): int` + +Unpack base256 signed long. + + +Parameters: + +* `$value`: `string` base256 long + + + +### `unpackSignedLongString((string|int|array) $value): string` + +Unpack base256 signed long to string. + + +Parameters: + +* `$value`: `(string|int|array)` base256 long + + + +### `unsetEventHandler(): void` + +Unset event handler. + + + +### `update2fa(array{password?: string, new_password?: string, email?: string, hint?: string} $params): void` + +Update the 2FA password. + +The params array can contain password, new_password, email and hint params. + + +Parameters: + +* `$params`: `array{password?: string, new_password?: string, email?: string, hint?: string}` The params + + + +### `updateSettings(\danog\MadelineProto\SettingsAbstract $settings): void` + +Parse, update and store settings. + + +Parameters: + +* `$settings`: `\danog\MadelineProto\SettingsAbstract` Settings + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` + + + + +### `upload((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|string|array|resource) $file, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|string|array|resource)` File, URL or Telegram file to upload +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `resource` +* `\Amp\Cancellation` + + + + +### `uploadEncrypted((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|string|array|resource) $file, string $fileName = '', callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file to secret chat. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|string|array|resource)` File, URL or Telegram file to upload +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `resource` +* `\Amp\Cancellation` + + + + +### `uploadFromCallable(callable(int, int, ?Cancellation): strin) $callable, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable(float, float, float): voi) $cb = NULL, boolean $seekable = true, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file from callable. + +The callable must accept two parameters: int $offset, int $size +The callable must return a string with the contest of the file at the specified offset and size. + + +Parameters: + +* `$callable`: `callable(int, int, ?Cancellation): strin)` Callable (offset, length) => data +* `$size`: `integer` File size +* `$mime`: `string` Mime type +* `$fileName`: `string` File name +* `$cb`: `callable(float, float, float): voi)` Status callback +* `$seekable`: `boolean` Whether chunks can be fetched out of order +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* `\Amp\Cancellation` + + + + +### `uploadFromStream(mixed $stream, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file from stream. + + +Parameters: + +* `$stream`: `mixed` PHP resource or AMPHP async stream +* `$size`: `integer` File size +* `$mime`: `string` Mime type +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* `\Amp\Cancellation` + + + + +### `uploadFromTgfile(mixed $media, callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Reupload telegram file. + + +Parameters: + +* `$media`: `mixed` Telegram file +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* `\Amp\Cancellation` + + + + +### `uploadFromUrl((string|\danog\MadelineProto\FileCallbackInterface) $url, integer $size = 0, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file from URL. + + +Parameters: + +* `$url`: `(string|\danog\MadelineProto\FileCallbackInterface)` URL of file +* `$size`: `integer` Size of file +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` + + + + +### `validateEventHandlerClass(class-string<\danog\MadelineProto\EventHandler> $class): list<\danog\MadelineProto\EventHandlerIssue>` + +Perform static analysis on a certain event handler class, to make sure it satisfies some performance requirements. + + +Parameters: + +* `$class`: `class-string<\danog\MadelineProto\EventHandler>` Class name + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../danog/MadelineProto/EventHandler.html) +* [`\danog\MadelineProto\EventHandlerIssue`: Represents an event handler issue.](../../danog/MadelineProto/EventHandlerIssue.html) + + + + +### `viewSponsoredMessage((int|array) $peer, (string|array{random_id: string}) $message): bool` + +Mark sponsored message as read. + + +Parameters: + +* `$peer`: `(int|array)` Channel ID, or Update, or Message, or Peer. +* `$message`: `(string|array{random_id: string})` Random ID or sponsored message to mark as read. + + + +### `wrapMedia(array $media, bool $protected = false): ?\danog\MadelineProto\EventHandler\Media` + +Wrap a media constructor into an abstract Media object. + + +Parameters: + +* `$media`: `array` +* `$protected`: `bool` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) + + + + +### `wrapMessage(array $message, bool $scheduled = false): ?\danog\MadelineProto\EventHandler\AbstractMessage` + +Wrap a Message constructor into an abstract Message object. + + +Parameters: + +* `$message`: `array` +* `$scheduled`: `bool` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractMessage`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/AbstractMessage.html) + + + + +### `wrapPin(array $message): ?\danog\MadelineProto\EventHandler\Pinned` + +Wrap a Pin constructor into an abstract Pinned object. + + +Parameters: + +* `$message`: `array` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Pinned`: Indicates that some messages were pinned/unpinned.](../../danog/MadelineProto/EventHandler/Pinned.html) + + + + +### `wrapUpdate(array $update): ?\danog\MadelineProto\EventHandler\Update` + +Wrap an Update constructor into an abstract Update object. + + +Parameters: + +* `$update`: `array` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initDbProperties(\danog\AsyncOrm\Settings $settings, string $tablePrefix): void` + +Initialize database properties. + + +Parameters: + +* `$settings`: `\danog\AsyncOrm\Settings` +* `$tablePrefix`: `string` + + +#### See also: +* `\danog\AsyncOrm\Settings` + + + + +### `saveDbProperties(): void` + +Save all properties. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/PsrLogger.md b/docs/PHP/danog/MadelineProto/PsrLogger.md new file mode 100644 index 0000000000..b9b7b4d605 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/PsrLogger.md @@ -0,0 +1,209 @@ +--- +title: "danog\\MadelineProto\\PsrLogger: PSR-3 wrapper for MadelineProto's Logger." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\PsrLogger` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +PSR-3 wrapper for MadelineProto's Logger. + + + + +## Method list: +* [`__construct(\danog\MadelineProto\Logger $logger)`](#__construct) +* [`log(mixed $level, mixed $message, array $context = []): void`](#log) +* [`emergency((string|\Stringable) $message, array $context = []): void`](#emergency) +* [`alert((string|\Stringable) $message, array $context = []): void`](#alert) +* [`critical((string|\Stringable) $message, array $context = []): void`](#critical) +* [`error((string|\Stringable) $message, array $context = []): void`](#error) +* [`warning((string|\Stringable) $message, array $context = []): void`](#warning) +* [`notice((string|\Stringable) $message, array $context = []): void`](#notice) +* [`info((string|\Stringable) $message, array $context = []): void`](#info) +* [`debug((string|\Stringable) $message, array $context = []): void`](#debug) + +## Methods: +### `__construct(\danog\MadelineProto\Logger $logger)` + +Constructor. + + +Parameters: + +* `$logger`: `\danog\MadelineProto\Logger` + + +#### See also: +* [`\danog\MadelineProto\Logger`: Logger class.](../../danog/MadelineProto/Logger.html) + + + + +### `log(mixed $level, mixed $message, array $context = []): void` + +Logs with an arbitrary level. + + +Parameters: + +* `$level`: `mixed` +* `$message`: `mixed` +* `$context`: `array` + + + +### `emergency((string|\Stringable) $message, array $context = []): void` + +System is unusable. + + +Parameters: + +* `$message`: `(string|\Stringable)` +* `$context`: `array` + + +#### See also: +* `\Stringable` + + + + +### `alert((string|\Stringable) $message, array $context = []): void` + +Action must be taken immediately. + +Example: Entire website down, database unavailable, etc. This should +trigger the SMS alerts and wake you up. + + +Parameters: + +* `$message`: `(string|\Stringable)` +* `$context`: `array` + + +#### See also: +* `\Stringable` + + + + +### `critical((string|\Stringable) $message, array $context = []): void` + +Critical conditions. + +Example: Application component unavailable, unexpected exception. + + +Parameters: + +* `$message`: `(string|\Stringable)` +* `$context`: `array` + + +#### See also: +* `\Stringable` + + + + +### `error((string|\Stringable) $message, array $context = []): void` + +Runtime errors that do not require immediate action but should typically +be logged and monitored. + + +Parameters: + +* `$message`: `(string|\Stringable)` +* `$context`: `array` + + +#### See also: +* `\Stringable` + + + + +### `warning((string|\Stringable) $message, array $context = []): void` + +Exceptional occurrences that are not errors. + +Example: Use of deprecated APIs, poor use of an API, undesirable things +that are not necessarily wrong. + + +Parameters: + +* `$message`: `(string|\Stringable)` +* `$context`: `array` + + +#### See also: +* `\Stringable` + + + + +### `notice((string|\Stringable) $message, array $context = []): void` + +Normal but significant events. + + +Parameters: + +* `$message`: `(string|\Stringable)` +* `$context`: `array` + + +#### See also: +* `\Stringable` + + + + +### `info((string|\Stringable) $message, array $context = []): void` + +Interesting events. + +Example: User logs in, SQL logs. + + +Parameters: + +* `$message`: `(string|\Stringable)` +* `$context`: `array` + + +#### See also: +* `\Stringable` + + + + +### `debug((string|\Stringable) $message, array $context = []): void` + +Detailed debug information. + + +Parameters: + +* `$message`: `(string|\Stringable)` +* `$context`: `array` + + +#### See also: +* `\Stringable` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/RPCError/FloodWaitError.md b/docs/PHP/danog/MadelineProto/RPCError/FloodWaitError.md new file mode 100644 index 0000000000..a17cd181e8 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/RPCError/FloodWaitError.md @@ -0,0 +1,191 @@ +--- +title: "danog\\MadelineProto\\RPCError\\FloodWaitError: Represents a FLOOD_WAIT_ RPC error returned by telegram." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\RPCError\FloodWaitError` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Represents a FLOOD_WAIT_ RPC error returned by telegram. + + + +## Properties +* `$rpc`: `string` RPC error +* `$tlTrace`: `string` TL trace. + +## Method list: +* [`__construct(mixed $message = NULL, mixed $code = 0, mixed $caller = '', ?\Exception $previous = NULL)`](#__construct) +* [`getWaitTime(): int`](#getWaitTime) +* [`wait(): void`](#wait) +* [`localizeMessage(mixed $method, int $code, string $error): string`](#localizeMessage) +* [`getLocalization(): string`](#getLocalization) +* [`setLocalization(string $localization): void`](#setLocalization) +* [`getMessage(): string`](#getMessage) +* [`getCode()`](#getCode) +* [`getFile(): string`](#getFile) +* [`getLine(): int`](#getLine) +* [`getTrace(): array`](#getTrace) +* [`getPrevious(): ?Throwable`](#getPrevious) +* [`getTraceAsString(): string`](#getTraceAsString) +* [`updateTLTrace(array $trace): void`](#updateTLTrace) +* [`getTLTrace(): string`](#getTLTrace) +* [`setTLTrace(string $tlTrace): void`](#setTLTrace) +* [`prettifyTL(string $init = '', array $trace = NULL): void`](#prettifyTL) + +## Methods: +### `__construct(mixed $message = NULL, mixed $code = 0, mixed $caller = '', ?\Exception $previous = NULL)` + + + + +Parameters: + +* `$message`: `mixed` +* `$code`: `mixed` +* `$caller`: `mixed` +* `$previous`: `?\Exception` + + +#### See also: +* `\Exception` + + + + +### `getWaitTime(): int` + +Returns the required waiting period in seconds before repeating the RPC call. + + + +### `wait(): void` + +Waits for the required waiting period. + + + +### `localizeMessage(mixed $method, int $code, string $error): string` + + + + +Parameters: + +* `$method`: `mixed` +* `$code`: `int` +* `$error`: `string` + + + +### `getLocalization(): string` + +Get localized error name. + + + +### `setLocalization(string $localization): void` + +Set localized error name. + + +Parameters: + +* `$localization`: `string` + + + +### `getMessage(): string` + + + + + +### `getCode()` + + + + + +### `getFile(): string` + + + + + +### `getLine(): int` + + + + + +### `getTrace(): array` + + + + + +### `getPrevious(): ?Throwable` + + + + +#### See also: +* `Throwable` + + + + +### `getTraceAsString(): string` + + + + + +### `updateTLTrace(array $trace): void` + +Update TL trace. + + +Parameters: + +* `$trace`: `array` + + + +### `getTLTrace(): string` + +Get TL trace. + + + +### `setTLTrace(string $tlTrace): void` + +Set TL trace. + + +Parameters: + +* `$tlTrace`: `string` TL trace + + + +### `prettifyTL(string $init = '', array $trace = NULL): void` + +Generate async trace. + + +Parameters: + +* `$init`: `string` Method name +* `$trace`: `array` Async trace + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/RPCErrorException.md b/docs/PHP/danog/MadelineProto/RPCErrorException.md new file mode 100644 index 0000000000..fdb443b744 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/RPCErrorException.md @@ -0,0 +1,177 @@ +--- +title: "danog\\MadelineProto\\RPCErrorException: Indicates an error returned by Telegram's API." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\RPCErrorException` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Indicates an error returned by Telegram's API. + + + +## Properties +* `$rpc`: `string` RPC error +* `$tlTrace`: `string` TL trace. + +## Method list: +* [`localizeMessage(mixed $method, int $code, string $error): string`](#localizeMessage) +* [`getLocalization(): string`](#getLocalization) +* [`setLocalization(string $localization): void`](#setLocalization) +* [`__construct(string $rpc, int $code = 0, mixed $caller = '', ?\danog\MadelineProto\Exception $previous = NULL)`](#__construct) +* [`getMessage(): string`](#getMessage) +* [`getCode()`](#getCode) +* [`getFile(): string`](#getFile) +* [`getLine(): int`](#getLine) +* [`getTrace(): array`](#getTrace) +* [`getPrevious(): ?Throwable`](#getPrevious) +* [`getTraceAsString(): string`](#getTraceAsString) +* [`updateTLTrace(array $trace): void`](#updateTLTrace) +* [`getTLTrace(): string`](#getTLTrace) +* [`setTLTrace(string $tlTrace): void`](#setTLTrace) +* [`prettifyTL(string $init = '', array $trace = NULL): void`](#prettifyTL) + +## Methods: +### `localizeMessage(mixed $method, int $code, string $error): string` + + + + +Parameters: + +* `$method`: `mixed` +* `$code`: `int` +* `$error`: `string` + + + +### `getLocalization(): string` + +Get localized error name. + + + +### `setLocalization(string $localization): void` + +Set localized error name. + + +Parameters: + +* `$localization`: `string` + + + +### `__construct(string $rpc, int $code = 0, mixed $caller = '', ?\danog\MadelineProto\Exception $previous = NULL)` + + + + +Parameters: + +* `$rpc`: `string` +* `$code`: `int` +* `$caller`: `mixed` +* `$previous`: `?\danog\MadelineProto\Exception` + + +#### See also: +* [`\danog\MadelineProto\Exception`: Basic exception.](../../danog/MadelineProto/Exception.html) + + + + +### `getMessage(): string` + + + + + +### `getCode()` + + + + + +### `getFile(): string` + + + + + +### `getLine(): int` + + + + + +### `getTrace(): array` + + + + + +### `getPrevious(): ?Throwable` + + + + +#### See also: +* `Throwable` + + + + +### `getTraceAsString(): string` + + + + + +### `updateTLTrace(array $trace): void` + +Update TL trace. + + +Parameters: + +* `$trace`: `array` + + + +### `getTLTrace(): string` + +Get TL trace. + + + +### `setTLTrace(string $tlTrace): void` + +Set TL trace. + + +Parameters: + +* `$tlTrace`: `string` TL trace + + + +### `prettifyTL(string $init = '', array $trace = NULL): void` + +Generate async trace. + + +Parameters: + +* `$init`: `string` Method name +* `$trace`: `array` Async trace + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/RemoteUrl.md b/docs/PHP/danog/MadelineProto/RemoteUrl.md new file mode 100644 index 0000000000..ca22756084 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/RemoteUrl.md @@ -0,0 +1,37 @@ +--- +title: "danog\\MadelineProto\\RemoteUrl: Indicates a remote URL to upload." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\RemoteUrl` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Indicates a remote URL to upload. + + + +## Properties +* `$url`: `string` + +## Method list: +* [`__construct(string $url)`](#__construct) + +## Methods: +### `__construct(string $url)` + + + + +Parameters: + +* `$url`: `string` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/ResponseException.md b/docs/PHP/danog/MadelineProto/ResponseException.md new file mode 100644 index 0000000000..bfe6758c62 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/ResponseException.md @@ -0,0 +1,96 @@ +--- +title: "danog\\MadelineProto\\ResponseException: Indicates an error thrown when an unexpected response is received from telegram's servers." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\ResponseException` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Indicates an error thrown when an unexpected response is received from telegram's servers. + + + + +## Method list: +* [`__construct(string $message = '', int $code = 0, ?Throwable $previous = NULL)`](#__construct) +* [`getMessage(): string`](#getMessage) +* [`getCode()`](#getCode) +* [`getFile(): string`](#getFile) +* [`getLine(): int`](#getLine) +* [`getTrace(): array`](#getTrace) +* [`getPrevious(): ?Throwable`](#getPrevious) +* [`getTraceAsString(): string`](#getTraceAsString) + +## Methods: +### `__construct(string $message = '', int $code = 0, ?Throwable $previous = NULL)` + + + + +Parameters: + +* `$message`: `string` +* `$code`: `int` +* `$previous`: `?Throwable` + + +#### See also: +* `Throwable` + + + + +### `getMessage(): string` + + + + + +### `getCode()` + + + + + +### `getFile(): string` + + + + + +### `getLine(): int` + + + + + +### `getTrace(): array` + + + + + +### `getPrevious(): ?Throwable` + + + + +#### See also: +* `Throwable` + + + + +### `getTraceAsString(): string` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/SecretChats/SecretChat.md b/docs/PHP/danog/MadelineProto/SecretChats/SecretChat.md new file mode 100644 index 0000000000..764da84817 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/SecretChats/SecretChat.md @@ -0,0 +1,45 @@ +--- +title: "danog\\MadelineProto\\SecretChats\\SecretChat: Represents a secret chat." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\SecretChats\SecretChat` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Represents a secret chat. + + + +## Properties +* `$created`: `int` Creation date +* `$chatId`: `int` Secret chat ID +* `$creator`: `bool` Whether we created this chat +* `$otherID`: `int` User ID of the other peer in the chat + +## Method list: +* [`getMessage(integer $randomId): \danog\MadelineProto\EventHandler\Message\SecretMessage`](#getMessage) + +## Methods: +### `getMessage(integer $randomId): \danog\MadelineProto\EventHandler\Message\SecretMessage` + +Gets a secret chat message. + + +Parameters: + +* `$randomId`: `integer` Secret chat message ID. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\SecretMessage`: Represents New encrypted message.](../../../danog/MadelineProto/EventHandler/Message/SecretMessage.html) + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/SecretPeerNotInDbException.md b/docs/PHP/danog/MadelineProto/SecretPeerNotInDbException.md new file mode 100644 index 0000000000..0ca9ccf468 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/SecretPeerNotInDbException.md @@ -0,0 +1,142 @@ +--- +title: "danog\\MadelineProto\\SecretPeerNotInDbException: Indicates that the specified secret chat wasn't found." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\SecretPeerNotInDbException` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Indicates that the specified secret chat wasn't found. + + + +## Properties +* `$tlTrace`: `string` TL trace. + +## Method list: +* [`__construct()`](#__construct) +* [`extension(string $extensionName): self`](#extension) +* [`getMessage(): string`](#getMessage) +* [`getCode()`](#getCode) +* [`getFile(): string`](#getFile) +* [`getLine(): int`](#getLine) +* [`getTrace(): array`](#getTrace) +* [`getPrevious(): ?Throwable`](#getPrevious) +* [`getTraceAsString(): string`](#getTraceAsString) +* [`updateTLTrace(array $trace): void`](#updateTLTrace) +* [`getTLTrace(): string`](#getTLTrace) +* [`setTLTrace(string $tlTrace): void`](#setTLTrace) +* [`prettifyTL(string $init = '', array $trace = NULL): void`](#prettifyTL) + +## Methods: +### `__construct()` + + + + + +### `extension(string $extensionName): self` + +Complain about missing extensions. + + +Parameters: + +* `$extensionName`: `string` Extension name + + + +### `getMessage(): string` + + + + + +### `getCode()` + + + + + +### `getFile(): string` + + + + + +### `getLine(): int` + + + + + +### `getTrace(): array` + + + + + +### `getPrevious(): ?Throwable` + + + + +#### See also: +* `Throwable` + + + + +### `getTraceAsString(): string` + + + + + +### `updateTLTrace(array $trace): void` + +Update TL trace. + + +Parameters: + +* `$trace`: `array` + + + +### `getTLTrace(): string` + +Get TL trace. + + + +### `setTLTrace(string $tlTrace): void` + +Set TL trace. + + +Parameters: + +* `$tlTrace`: `string` TL trace + + + +### `prettifyTL(string $init = '', array $trace = NULL): void` + +Generate async trace. + + +Parameters: + +* `$init`: `string` Method name +* `$trace`: `array` Async trace + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/SecurityException.md b/docs/PHP/danog/MadelineProto/SecurityException.md new file mode 100644 index 0000000000..f51d9befaa --- /dev/null +++ b/docs/PHP/danog/MadelineProto/SecurityException.md @@ -0,0 +1,96 @@ +--- +title: "danog\\MadelineProto\\SecurityException: Indicates a security error." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\SecurityException` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Indicates a security error. + + + + +## Method list: +* [`__construct(string $message = '', int $code = 0, ?Throwable $previous = NULL)`](#__construct) +* [`getMessage(): string`](#getMessage) +* [`getCode()`](#getCode) +* [`getFile(): string`](#getFile) +* [`getLine(): int`](#getLine) +* [`getTrace(): array`](#getTrace) +* [`getPrevious(): ?Throwable`](#getPrevious) +* [`getTraceAsString(): string`](#getTraceAsString) + +## Methods: +### `__construct(string $message = '', int $code = 0, ?Throwable $previous = NULL)` + + + + +Parameters: + +* `$message`: `string` +* `$code`: `int` +* `$previous`: `?Throwable` + + +#### See also: +* `Throwable` + + + + +### `getMessage(): string` + + + + + +### `getCode()` + + + + + +### `getFile(): string` + + + + + +### `getLine(): int` + + + + + +### `getTrace(): array` + + + + + +### `getPrevious(): ?Throwable` + + + + +#### See also: +* `Throwable` + + + + +### `getTraceAsString(): string` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings.md b/docs/PHP/danog/MadelineProto/Settings.md new file mode 100644 index 0000000000..748af7881a --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings.md @@ -0,0 +1,465 @@ +--- +title: "danog\\MadelineProto\\Settings: Settings class used for configuring MadelineProto." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Settings class used for configuring MadelineProto. + + + + +## Method list: +* [`__construct()`](#__construct) +* [`merge(\danog\MadelineProto\SettingsAbstract $settings): void`](#merge) +* [`getAppInfo(): \danog\MadelineProto\Settings\AppInfo`](#getAppInfo) +* [`setAppInfo(\danog\MadelineProto\Settings\AppInfo $appInfo): self`](#setAppInfo) +* [`getAuth(): \danog\MadelineProto\Settings\Auth`](#getAuth) +* [`setAuth(\danog\MadelineProto\Settings\Auth $auth): self`](#setAuth) +* [`getConnection(): \danog\MadelineProto\Settings\Connection`](#getConnection) +* [`setConnection(\danog\MadelineProto\Settings\Connection $connection): self`](#setConnection) +* [`getFiles(): \danog\MadelineProto\Settings\Files`](#getFiles) +* [`setFiles(\danog\MadelineProto\Settings\Files $files): self`](#setFiles) +* [`getLogger(): \danog\MadelineProto\Settings\Logger`](#getLogger) +* [`setLogger(\danog\MadelineProto\Settings\Logger $logger): self`](#setLogger) +* [`getPeer(): \danog\MadelineProto\Settings\Peer`](#getPeer) +* [`setPeer(\danog\MadelineProto\Settings\Peer $peer): self`](#setPeer) +* [`getRpc(): \danog\MadelineProto\Settings\RPC`](#getRpc) +* [`setRpc(\danog\MadelineProto\Settings\RPC $rpc): self`](#setRpc) +* [`getSecretChats(): \danog\MadelineProto\Settings\SecretChats`](#getSecretChats) +* [`setSecretChats(\danog\MadelineProto\Settings\SecretChats $secretChats): self`](#setSecretChats) +* [`getSerialization(): \danog\MadelineProto\Settings\Serialization`](#getSerialization) +* [`setSerialization(\danog\MadelineProto\Settings\Serialization $serialization): self`](#setSerialization) +* [`getSchema(): \danog\MadelineProto\Settings\TLSchema`](#getSchema) +* [`setSchema(\danog\MadelineProto\Settings\TLSchema $schema): self`](#setSchema) +* [`getDb(): \danog\MadelineProto\Settings\DatabaseAbstract`](#getDb) +* [`setDb(\danog\MadelineProto\Settings\DatabaseAbstract $db): self`](#setDb) +* [`getIpc(): \danog\MadelineProto\Settings\Ipc`](#getIpc) +* [`setIpc(\danog\MadelineProto\Settings\Ipc $ipc): self`](#setIpc) +* [`applyChanges(): \danog\MadelineProto\SettingsAbstract`](#applyChanges) +* [`getTemplates(): \danog\MadelineProto\Settings\Templates`](#getTemplates) +* [`setTemplates(\danog\MadelineProto\Settings\Templates $templates): self`](#setTemplates) +* [`getVoip(): \danog\MadelineProto\Settings\VoIP`](#getVoip) +* [`setVoip(\danog\MadelineProto\Settings\VoIP $voip): self`](#setVoip) + +## Methods: +### `__construct()` + +Constructor. + + + +### `merge(\danog\MadelineProto\SettingsAbstract $settings): void` + +Merge another instance of settings. + + +Parameters: + +* `$settings`: `\danog\MadelineProto\SettingsAbstract` Settings + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` + + + + +### `getAppInfo(): \danog\MadelineProto\Settings\AppInfo` + +Get app information. + + +#### See also: +* [`\danog\MadelineProto\Settings\AppInfo`: App information.](../../danog/MadelineProto/Settings/AppInfo.html) + + + + +### `setAppInfo(\danog\MadelineProto\Settings\AppInfo $appInfo): self` + +Set app information. + + +Parameters: + +* `$appInfo`: `\danog\MadelineProto\Settings\AppInfo` App information. + + +#### See also: +* [`\danog\MadelineProto\Settings\AppInfo`: App information.](../../danog/MadelineProto/Settings/AppInfo.html) + + + + +### `getAuth(): \danog\MadelineProto\Settings\Auth` + +Get cryptography settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\Auth`: Cryptography settings.](../../danog/MadelineProto/Settings/Auth.html) + + + + +### `setAuth(\danog\MadelineProto\Settings\Auth $auth): self` + +Set cryptography settings. + + +Parameters: + +* `$auth`: `\danog\MadelineProto\Settings\Auth` Cryptography settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\Auth`: Cryptography settings.](../../danog/MadelineProto/Settings/Auth.html) + + + + +### `getConnection(): \danog\MadelineProto\Settings\Connection` + +Get connection settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\Connection`: Connection settings.](../../danog/MadelineProto/Settings/Connection.html) + + + + +### `setConnection(\danog\MadelineProto\Settings\Connection $connection): self` + +Set connection settings. + + +Parameters: + +* `$connection`: `\danog\MadelineProto\Settings\Connection` Connection settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\Connection`: Connection settings.](../../danog/MadelineProto/Settings/Connection.html) + + + + +### `getFiles(): \danog\MadelineProto\Settings\Files` + +Get file management settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\Files`: File management settings.](../../danog/MadelineProto/Settings/Files.html) + + + + +### `setFiles(\danog\MadelineProto\Settings\Files $files): self` + +Set file management settings. + + +Parameters: + +* `$files`: `\danog\MadelineProto\Settings\Files` File management settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\Files`: File management settings.](../../danog/MadelineProto/Settings/Files.html) + + + + +### `getLogger(): \danog\MadelineProto\Settings\Logger` + +Get logger settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\Logger`: Logger settings.](../../danog/MadelineProto/Settings/Logger.html) + + + + +### `setLogger(\danog\MadelineProto\Settings\Logger $logger): self` + +Set logger settings. + + +Parameters: + +* `$logger`: `\danog\MadelineProto\Settings\Logger` Logger settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\Logger`: Logger settings.](../../danog/MadelineProto/Settings/Logger.html) + + + + +### `getPeer(): \danog\MadelineProto\Settings\Peer` + +Get peer database settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\Peer`: Peer database settings.](../../danog/MadelineProto/Settings/Peer.html) + + + + +### `setPeer(\danog\MadelineProto\Settings\Peer $peer): self` + +Set peer database settings. + + +Parameters: + +* `$peer`: `\danog\MadelineProto\Settings\Peer` Peer database settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\Peer`: Peer database settings.](../../danog/MadelineProto/Settings/Peer.html) + + + + +### `getRpc(): \danog\MadelineProto\Settings\RPC` + +Get RPC settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\RPC`: RPC settings.](../../danog/MadelineProto/Settings/RPC.html) + + + + +### `setRpc(\danog\MadelineProto\Settings\RPC $rpc): self` + +Set RPC settings. + + +Parameters: + +* `$rpc`: `\danog\MadelineProto\Settings\RPC` RPC settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\RPC`: RPC settings.](../../danog/MadelineProto/Settings/RPC.html) + + + + +### `getSecretChats(): \danog\MadelineProto\Settings\SecretChats` + +Get secret chat settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\SecretChats`: Secret chat settings.](../../danog/MadelineProto/Settings/SecretChats.html) + + + + +### `setSecretChats(\danog\MadelineProto\Settings\SecretChats $secretChats): self` + +Set secret chat settings. + + +Parameters: + +* `$secretChats`: `\danog\MadelineProto\Settings\SecretChats` Secret chat settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\SecretChats`: Secret chat settings.](../../danog/MadelineProto/Settings/SecretChats.html) + + + + +### `getSerialization(): \danog\MadelineProto\Settings\Serialization` + +Get serialization settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\Serialization`: Serialization settings.](../../danog/MadelineProto/Settings/Serialization.html) + + + + +### `setSerialization(\danog\MadelineProto\Settings\Serialization $serialization): self` + +Set serialization settings. + + +Parameters: + +* `$serialization`: `\danog\MadelineProto\Settings\Serialization` Serialization settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\Serialization`: Serialization settings.](../../danog/MadelineProto/Settings/Serialization.html) + + + + +### `getSchema(): \danog\MadelineProto\Settings\TLSchema` + +Get TL schema settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\TLSchema`: TL schema settings.](../../danog/MadelineProto/Settings/TLSchema.html) + + + + +### `setSchema(\danog\MadelineProto\Settings\TLSchema $schema): self` + +Set TL schema settings. + + +Parameters: + +* `$schema`: `\danog\MadelineProto\Settings\TLSchema` TL schema settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\TLSchema`: TL schema settings.](../../danog/MadelineProto/Settings/TLSchema.html) + + + + +### `getDb(): \danog\MadelineProto\Settings\DatabaseAbstract` + +Get database settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\DatabaseAbstract`: Base class for storage backends.](../../danog/MadelineProto/Settings/DatabaseAbstract.html) + + + + +### `setDb(\danog\MadelineProto\Settings\DatabaseAbstract $db): self` + +Set database settings. + + +Parameters: + +* `$db`: `\danog\MadelineProto\Settings\DatabaseAbstract` DatabaseAbstract settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\DatabaseAbstract`: Base class for storage backends.](../../danog/MadelineProto/Settings/DatabaseAbstract.html) + + + + +### `getIpc(): \danog\MadelineProto\Settings\Ipc` + +Get IPC server settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\Ipc`: IPC server settings.](../../danog/MadelineProto/Settings/Ipc.html) + + + + +### `setIpc(\danog\MadelineProto\Settings\Ipc $ipc): self` + +Set IPC server settings. + + +Parameters: + +* `$ipc`: `\danog\MadelineProto\Settings\Ipc` IPC server settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\Ipc`: IPC server settings.](../../danog/MadelineProto/Settings/Ipc.html) + + + + +### `applyChanges(): \danog\MadelineProto\SettingsAbstract` + + + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` + + + + +### `getTemplates(): \danog\MadelineProto\Settings\Templates` + +Get template settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\Templates`: Web and CLI template settings for login.](../../danog/MadelineProto/Settings/Templates.html) + + + + +### `setTemplates(\danog\MadelineProto\Settings\Templates $templates): self` + +Set template settings. + + +Parameters: + +* `$templates`: `\danog\MadelineProto\Settings\Templates` Template settings + + +#### See also: +* [`\danog\MadelineProto\Settings\Templates`: Web and CLI template settings for login.](../../danog/MadelineProto/Settings/Templates.html) + + + + +### `getVoip(): \danog\MadelineProto\Settings\VoIP` + +Get voIP settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\VoIP`: VoIP settings.](../../danog/MadelineProto/Settings/VoIP.html) + + + + +### `setVoip(\danog\MadelineProto\Settings\VoIP $voip): self` + +Set voIP settings. + + +Parameters: + +* `$voip`: `\danog\MadelineProto\Settings\VoIP` VoIP settings. + + +#### See also: +* [`\danog\MadelineProto\Settings\VoIP`: VoIP settings.](../../danog/MadelineProto/Settings/VoIP.html) + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/AppInfo.md b/docs/PHP/danog/MadelineProto/Settings/AppInfo.md new file mode 100644 index 0000000000..fd6005982f --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/AppInfo.md @@ -0,0 +1,215 @@ +--- +title: "danog\\MadelineProto\\Settings\\AppInfo: App information." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\AppInfo` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +App information. + + + + +## Method list: +* [`__construct()`](#__construct) +* [`init(): void`](#init) +* [`hasApiInfo(): bool`](#hasApiInfo) +* [`getApiId(): int`](#getApiId) +* [`setApiId(int $apiId): self`](#setApiId) +* [`getApiHash(): string`](#getApiHash) +* [`setApiHash(string $apiHash): self`](#setApiHash) +* [`getDeviceModel(): string`](#getDeviceModel) +* [`setDeviceModel(string $deviceModel): self`](#setDeviceModel) +* [`getSystemVersion(): string`](#getSystemVersion) +* [`setSystemVersion(string $systemVersion): self`](#setSystemVersion) +* [`getAppVersion(): string`](#getAppVersion) +* [`setAppVersion(string $appVersion): self`](#setAppVersion) +* [`getLangCode(): string`](#getLangCode) +* [`setLangCode(string $langCode): self`](#setLangCode) +* [`getSystemLangCode(): string`](#getSystemLangCode) +* [`setSystemLangCode(string $langCode): self`](#setSystemLangCode) +* [`getLangPack(): string`](#getLangPack) +* [`setLangPack(string $langPack): self`](#setLangPack) +* [`getShowPrompt(): bool`](#getShowPrompt) +* [`setShowPrompt(bool $showPrompt): static`](#setShowPrompt) + +## Methods: +### `__construct()` + + + + + +### `init(): void` + + + + + +### `hasApiInfo(): bool` + +Check if the settings have API ID/hash information. + + + +### `getApiId(): int` + +Get API ID. + + + +### `setApiId(int $apiId): self` + +Set API ID. + + +Parameters: + +* `$apiId`: `int` API ID. + + + +### `getApiHash(): string` + +Get API hash. + + + +### `setApiHash(string $apiHash): self` + +Set API hash. + + +Parameters: + +* `$apiHash`: `string` API hash. + + + +### `getDeviceModel(): string` + +Get device model. + + + +### `setDeviceModel(string $deviceModel): self` + +Set device model. + + +Parameters: + +* `$deviceModel`: `string` Device model. + + + +### `getSystemVersion(): string` + +Get system version. + + + +### `setSystemVersion(string $systemVersion): self` + +Set system version. + + +Parameters: + +* `$systemVersion`: `string` System version. + + + +### `getAppVersion(): string` + +Get app version. + + + +### `setAppVersion(string $appVersion): self` + +Set app version. + + +Parameters: + +* `$appVersion`: `string` App version. + + + +### `getLangCode(): string` + +Get language code. + + + +### `setLangCode(string $langCode): self` + +Set language code. + + +Parameters: + +* `$langCode`: `string` Language code. + + + +### `getSystemLangCode(): string` + +Get system language code. + + + +### `setSystemLangCode(string $langCode): self` + +Set system language code. + + +Parameters: + +* `$langCode`: `string` Language code. + + + +### `getLangPack(): string` + +Get language pack. + + + +### `setLangPack(string $langPack): self` + +Set language pack. + + +Parameters: + +* `$langPack`: `string` Language pack. + + + +### `getShowPrompt(): bool` + +Get whether to show a prompt, asking to enter an API ID/API hash if none is provided. + + + +### `setShowPrompt(bool $showPrompt): static` + +Set whether to show a prompt, asking to enter an API ID/API hash if none is provided. + + +Parameters: + +* `$showPrompt`: `bool` Whether to show a prompt, asking to enter an API ID/API hash if none is provided. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/Auth.md b/docs/PHP/danog/MadelineProto/Settings/Auth.md new file mode 100644 index 0000000000..f63452bad6 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/Auth.md @@ -0,0 +1,66 @@ +--- +title: "danog\\MadelineProto\\Settings\\Auth: Cryptography settings." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\Auth` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Cryptography settings. + + + + +## Method list: +* [`getPfs(): bool`](#getPfs) +* [`setPfs(bool $pfs): self`](#setPfs) +* [`getMaxAuthTries(): int`](#getMaxAuthTries) +* [`setMaxAuthTries(int<1, max> $maxAuthTries): self`](#setMaxAuthTries) + +## Methods: +### `getPfs(): bool` + +Get whether to use PFS. + + + +### `setPfs(bool $pfs): self` + +Set whether to use PFS. + + +Parameters: + +* `$pfs`: `bool` Whether to use PFS + + + +### `getMaxAuthTries(): int` + +Get max tries for generating auth key. + + + +### `setMaxAuthTries(int<1, max> $maxAuthTries): self` + +Set max tries for generating auth key. + + +Parameters: + +* `$maxAuthTries`: `int<1, max>` Max tries for generating auth key + + +#### See also: +* `max` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/Connection.md b/docs/PHP/danog/MadelineProto/Settings/Connection.md new file mode 100644 index 0000000000..47f5662f15 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/Connection.md @@ -0,0 +1,468 @@ +--- +title: "danog\\MadelineProto\\Settings\\Connection: Connection settings." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\Connection` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Connection settings. + + + + +## Method list: +* [`__construct()`](#__construct) +* [`init(): void`](#init) +* [`getProtocol(): string`](#getProtocol) +* [`setProtocol(class-string<\danog\MadelineProto\Stream\MTProtoBufferInterface> $protocol): self`](#setProtocol) +* [`getIpv6(): bool`](#getIpv6) +* [`setIpv6(bool $ipv6): self`](#setIpv6) +* [`getSslSubdomains(): array`](#getSslSubdomains) +* [`setSslSubdomains(array $sslSubdomains): self`](#setSslSubdomains) +* [`getMaxMediaSocketCount(): int`](#getMaxMediaSocketCount) +* [`setMaxMediaSocketCount(int $maxMediaSocketCount): self`](#setMaxMediaSocketCount) +* [`getRobinPeriod(): int`](#getRobinPeriod) +* [`setRobinPeriod(int $robinPeriod): self`](#setRobinPeriod) +* [`getProxies(): array, array>`](#getProxies) +* [`addProxy(class-string<\danog\MadelineProto\Stream\StreamInterface> $proxy, array $extra = []): self`](#addProxy) +* [`setProxies(array, list> $proxies): self`](#setProxies) +* [`clearProxies(): self`](#clearProxies) +* [`removeProxy(string $proxy, array $extra): self`](#removeProxy) +* [`getObfuscated(): bool`](#getObfuscated) +* [`setObfuscated(bool $obfuscated): self`](#setObfuscated) +* [`getTestMode(): bool`](#getTestMode) +* [`setTestMode(bool $testMode): self`](#setTestMode) +* [`getTransport(): class-string<\danog\MadelineProto\Stream\RawStreamInterface>`](#getTransport) +* [`setTransport(class-string<\danog\MadelineProto\Stream\RawStreamInterface> $transport): self`](#setTransport) +* [`getRetry(): bool`](#getRetry) +* [`setRetry(bool $retry): self`](#setRetry) +* [`getTimeout(): float`](#getTimeout) +* [`setTimeout(float $timeout): self`](#setTimeout) +* [`getPingInterval(): int`](#getPingInterval) +* [`setPingInterval(int $pingInterval): self`](#setPingInterval) +* [`getUseDoH(): bool`](#getUseDoH) +* [`setUseDoH(bool $useDoH): self`](#setUseDoH) +* [`getBindTo(): ?string`](#getBindTo) +* [`setBindTo((null|string) $bindTo): self`](#setBindTo) +* [`getRsaKeys(): array`](#getRsaKeys) +* [`setRsaKeys(array $rsaKeys): self`](#setRsaKeys) +* [`getTestRsaKeys(): array`](#getTestRsaKeys) +* [`setTestRsaKeys(array $testRsaKeys): self`](#setTestRsaKeys) + +## Methods: +### `__construct()` + + + + + +### `init(): void` + + + + + +### `getProtocol(): string` + +Get protocol identifier. + + + +### `setProtocol(class-string<\danog\MadelineProto\Stream\MTProtoBufferInterface> $protocol): self` + +Set protocol identifier. + +Available MTProto transport protocols (smaller overhead is better): + +* `\danog\MadelineProto\Stream\MTProtoTransport\AbridgedStream`: Lightest protocol available + * Overhead: Very small + * Minimum envelope length: 1 byte (length) + * Maximum envelope length: 4 bytes (length) + +* `\danog\MadelineProto\Stream\MTProtoTransport\IntermediateStream`: I guess they like having multiple protocols + * Overhead: small + * Minimum envelope length: 4 bytes (length) + * Maximum envelope length: 4 bytes (length) + +* `\danog\MadelineProto\Stream\MTProtoTransport\IntermediatePaddedStream`: Padded version of the intermediate protocol, to use with obfuscation enabled to bypass ISP blocks + * Overhead: small-medium + * Minimum envelope length: random + * Maximum envelope length: random + +* `\danog\MadelineProto\Stream\MTProtoTransport\FullStream`: The basic MTProto transport protocol + * Overhead: medium + * Minimum envelope length: 12 bytes (length+seqno+crc) + * Maximum envelope length: 12 bytes (length+seqno+crc) + * Pros: + * Initial integrity check with crc32 + * Transport sequence number check + + * Cons: + * Initial integrity check with crc32 is not that useful since the TCP protocol already uses it internally + * Transport sequence number check is also not that useful since transport sequence numbers are not encrypted and thus cannot be used to avoid replay attacks, and MadelineProto already uses MTProto sequence numbers and message ids for that. + +* `\danog\MadelineProto\Stream\MTProtoTransport\HttpStream`: MTProto over HTTP for browsers and webhosts + * Overhead: medium + * Pros: + * Can be used on restricted webhosts or browsers + * Cons: + * Very big envelope length + +* `\danog\MadelineProto\Stream\MTProtoTransport\HttpsStream`: MTProto over HTTPS for browsers and webhosts, very secure + * Overhead: high + * Pros: + * Can be used on restricted webhosts or browsers + * Provides an additional layer of security by trasmitting data over TLS + * Integrity checks with HMAC built into TLS + * Sequence number checks built into TLS + * Cons: + * Very big envelope length + * Requires an additional round of encryption + + +Parameters: + +* `$protocol`: `class-string<\danog\MadelineProto\Stream\MTProtoBufferInterface>` Protocol identifier + + +#### See also: +* `\danog\MadelineProto\Stream\MTProtoBufferInterface` + + + + +### `getIpv6(): bool` + +Get whether to use ipv6. + + + +### `setIpv6(bool $ipv6): self` + +Set whether to use ipv6. + + +Parameters: + +* `$ipv6`: `bool` Whether to use ipv6 + + + +### `getSslSubdomains(): array` + +Get subdomains of web.telegram.org for https protocol. + + + +### `setSslSubdomains(array $sslSubdomains): self` + +Set subdomains of web.telegram.org for https protocol. + + +Parameters: + +* `$sslSubdomains`: `array` Subdomains of web.telegram.org for https protocol. + + + +### `getMaxMediaSocketCount(): int` + +Get maximum media socket count. + + + +### `setMaxMediaSocketCount(int $maxMediaSocketCount): self` + +Set maximum media socket count. + + +Parameters: + +* `$maxMediaSocketCount`: `int` Maximum media socket count. + + + +### `getRobinPeriod(): int` + +Get robin period (seconds). + + + +### `setRobinPeriod(int $robinPeriod): self` + +Set robin period (seconds). + + +Parameters: + +* `$robinPeriod`: `int` Robin period (seconds). + + + +### `getProxies(): array, array>` + +Get proxy identifiers. + + +#### See also: +* `\danog\MadelineProto\Stream\StreamInterface` + + + + +### `addProxy(class-string<\danog\MadelineProto\Stream\StreamInterface> $proxy, array $extra = []): self` + +Add proxy identifier to list, one of:. + +* `\danog\MadelineProto\Stream\MTProtoTransport\ObfuscatedStream::class` +* `\danog\MadelineProto\Stream\Proxy\HttpProxy::class` +* `\danog\MadelineProto\Stream\Proxy\SocksProxy::class` + + +Parameters: + +* `$proxy`: `class-string<\danog\MadelineProto\Stream\StreamInterface>` Proxy identifier +* `$extra`: `array` Extra + + +#### See also: +* `\danog\MadelineProto\Stream\StreamInterface` + + + + +### `setProxies(array, list> $proxies): self` + +Set proxies. + +The key must be one of: + +* `\danog\MadelineProto\Stream\MTProtoTransport\ObfuscatedStream::class` +* `\danog\MadelineProto\Stream\Proxy\HttpProxy::class` +* `\danog\MadelineProto\Stream\Proxy\SocksProxy::class` + +The value must be a list of extra (URI, username, password) for that proxy. + + +Parameters: + +* `$proxies`: `array, list>` Proxies + + +#### See also: +* `\danog\MadelineProto\Stream\StreamInterface` + + + + +### `clearProxies(): self` + +Clear proxies. + + + +### `removeProxy(string $proxy, array $extra): self` + +Remove specific proxy pair. + + +Parameters: + +* `$proxy`: `string` +* `$extra`: `array` + + + +### `getObfuscated(): bool` + +Get whether to use the obfuscated protocol: useful to bypass ISP blocks. + + + +### `setObfuscated(bool $obfuscated): self` + +Set whether to use the obfuscated protocol: useful to bypass ISP blocks. + + +Parameters: + +* `$obfuscated`: `bool` Whether to use the obfuscated protocol. + + + +### `getTestMode(): bool` + +Get whether we're in test mode. + + + +### `setTestMode(bool $testMode): self` + +Set whether we're in test mode. + + +Parameters: + +* `$testMode`: `bool` Whether we're in test mode. + + + +### `getTransport(): class-string<\danog\MadelineProto\Stream\RawStreamInterface>` + +Get transport identifier. + + +#### See also: +* `\danog\MadelineProto\Stream\RawStreamInterface` + + + + +### `setTransport(class-string<\danog\MadelineProto\Stream\RawStreamInterface> $transport): self` + +Sets the transport protocol to use when connecting to telegram. +Not supported by HTTP and HTTPS protocols, obfuscation must be enabled. + +* `danog\MadelineProto\Stream\Transport`: Default TCP transport +* `danog\MadelineProto\Stream\WsTransport`: Plain websocket transport +* `danog\MadelineProto\Stream\WssTransport`: TLS websocket transport + + +Parameters: + +* `$transport`: `class-string<\danog\MadelineProto\Stream\RawStreamInterface>` Transport identifier. + + +#### See also: +* `\danog\MadelineProto\Stream\RawStreamInterface` + + + + +### `getRetry(): bool` + +Get whether to retry connection. + + + +### `setRetry(bool $retry): self` + +Set whether to retry connection. + + +Parameters: + +* `$retry`: `bool` Whether to retry connection. + + + +### `getTimeout(): float` + +Get connection timeout. + + + +### `setTimeout(float $timeout): self` + +Set connection timeout. + + +Parameters: + +* `$timeout`: `float` Connection timeout. + + + +### `getPingInterval(): int` + +Get ping interval. + + + +### `setPingInterval(int $pingInterval): self` + +Set ping interval. + + +Parameters: + +* `$pingInterval`: `int` Ping interval + + + +### `getUseDoH(): bool` + +Get whether to use DNS over HTTPS. + + + +### `setUseDoH(bool $useDoH): self` + +Set whether to use DNS over HTTPS. + + +Parameters: + +* `$useDoH`: `bool` Whether to use DNS over HTTPS + + + +### `getBindTo(): ?string` + +Get bind on specific address and port. + + + +### `setBindTo((null|string) $bindTo): self` + +Set bind on specific address and port. + + +Parameters: + +* `$bindTo`: `(null|string)` Bind on specific address and port. + + + +### `getRsaKeys(): array` + +Get RSA keys. + + + +### `setRsaKeys(array $rsaKeys): self` + +Set RSA keys. + + +Parameters: + +* `$rsaKeys`: `array` RSA keys + + + +### `getTestRsaKeys(): array` + +Get test RSA keys. + + + +### `setTestRsaKeys(array $testRsaKeys): self` + +Set test RSA keys. + + +Parameters: + +* `$testRsaKeys`: `array` Test RSA keys + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/Database/DriverDatabaseAbstract.md b/docs/PHP/danog/MadelineProto/Settings/Database/DriverDatabaseAbstract.md new file mode 100644 index 0000000000..e362204ea3 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/Database/DriverDatabaseAbstract.md @@ -0,0 +1,270 @@ +--- +title: "danog\\MadelineProto\\Settings\\Database\\DriverDatabaseAbstract: Base class for database backends." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\Database\DriverDatabaseAbstract` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Base class for database backends. + + + + +## Method list: +* [`getEphemeralFilesystemPrefix(): ?string`](#getEphemeralFilesystemPrefix) +* [`setEphemeralFilesystemPrefix(?string $ephemeralFilesystemPrefix): static`](#setEphemeralFilesystemPrefix) +* [`getCacheTtl(): int`](#getCacheTtl) +* [`setCacheTtl((int|string) $cacheTtl): static`](#setCacheTtl) +* [`getPassword(): string`](#getPassword) +* [`setPassword(string $password): static`](#setPassword) +* [`getDatabase(): string|int`](#getDatabase) +* [`getUri(): string`](#getUri) +* [`setUri(string $uri): static`](#setUri) +* [`getSerializer(): ?\danog\MadelineProto\Settings\Database\SerializerType`](#getSerializer) +* [`setSerializer(?\danog\MadelineProto\Settings\Database\SerializerType $serializer): static`](#setSerializer) +* [`getEnableFileReferenceDb(): bool`](#getEnableFileReferenceDb) +* [`setEnableFileReferenceDb(bool $enableFileReferenceDb): static`](#setEnableFileReferenceDb) +* [`getEnableMinDb(): bool`](#getEnableMinDb) +* [`setEnableMinDb(bool $enableMinDb): static`](#setEnableMinDb) +* [`getEnableUsernameDb(): bool`](#getEnableUsernameDb) +* [`setEnableUsernameDb(bool $enableUsernameDb): static`](#setEnableUsernameDb) +* [`getEnableFullPeerDb(): bool`](#getEnableFullPeerDb) +* [`setEnableFullPeerDb(bool $enableFullPeerDb): static`](#setEnableFullPeerDb) +* [`getEnablePeerInfoDb(): bool`](#getEnablePeerInfoDb) +* [`setEnablePeerInfoDb(bool $enablePeerInfoDb): static`](#setEnablePeerInfoDb) +* [`getOrmSettings(): \danog\AsyncOrm\Settings`](#getOrmSettings) + +## Methods: +### `getEphemeralFilesystemPrefix(): ?string` + +If set, indicates that the filesystem is ephemeral, and thus session files will not be used to store persistent data. + +Must contain a unique string, used as prefix for database tables, different for every session. +The prefix may be the same if different databases are used. + +This is useful when running MadelineProto inside docker containers without volumes, using just a database. + +Note that the session folder must still NEVER be deleted *if* MadelineProto is running, +or else the session will be dropped from the database due to AUTH_KEY_DUPLICATED errors. + +Stopping the container and then deleting the session folder is 100% OK though. + + + +### `setEphemeralFilesystemPrefix(?string $ephemeralFilesystemPrefix): static` + +If set, indicates that the filesystem is ephemeral, and thus session files will not be used to store persistent data. + +Must contain a unique string, used as prefix for database tables, different for every session. +The prefix may be the same if different databases are used. + +This is useful when running MadelineProto inside docker containers without volumes, using just a database. + +Note that the session folder must still NEVER be deleted *if* MadelineProto is running, +or else the session will be dropped from the database due to AUTH_KEY_DUPLICATED errors. + +Stopping the container and then deleting the session folder is 100% OK though. + + +Parameters: + +* `$ephemeralFilesystemPrefix`: `?string` The database prefix + + + +### `getCacheTtl(): int` + +Get for how long to keep records in memory after last read, for cached backends. + + + +### `setCacheTtl((int|string) $cacheTtl): static` + +Set for how long to keep records in memory after last read, for cached backends. + +The cache TTL identifier can be a string like '+5 minutes'. +When data is retrieved from a database it is stored in memory. +This helps to reduce latency, improve speed and reduce mysql/postgres/redis load. +Data will be removed from the cache if last access was more than this amount of time. +Clean up is done once per minute. + + +Parameters: + +* `$cacheTtl`: `(int|string)` For how long to keep records in memory after last read, for cached backends. + + + +### `getPassword(): string` + +Get password. + + + +### `setPassword(string $password): static` + +Set password. + + +Parameters: + +* `$password`: `string` Password. + + + +### `getDatabase(): string|int` + +Get database name/ID. + + + +### `getUri(): string` + +Get database URI. + + + +### `setUri(string $uri): static` + +Set database URI. + + +Parameters: + +* `$uri`: `string` + + + +### `getSerializer(): ?\danog\MadelineProto\Settings\Database\SerializerType` + + + + +#### See also: +* [\danog\MadelineProto\Settings\Database\SerializerType](../../../../danog/MadelineProto/Settings/Database/SerializerType.html) + + + + +### `setSerializer(?\danog\MadelineProto\Settings\Database\SerializerType $serializer): static` + +Which serializer to use by default. + +If null, the best serializer is chosen. + + +Parameters: + +* `$serializer`: `?\danog\MadelineProto\Settings\Database\SerializerType` + + +#### See also: +* [\danog\MadelineProto\Settings\Database\SerializerType](../../../../danog/MadelineProto/Settings/Database/SerializerType.html) + + + + +### `getEnableFileReferenceDb(): bool` + +Get whether to enable the file reference database. If disabled, will break file downloads. + + + +### `setEnableFileReferenceDb(bool $enableFileReferenceDb): static` + +Set whether to enable the file reference database. If disabled, will break file downloads. + + +Parameters: + +* `$enableFileReferenceDb`: `bool` Whether to enable the file reference database. If disabled, will break file downloads. + + + +### `getEnableMinDb(): bool` + +Get whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + + +### `setEnableMinDb(bool $enableMinDb): static` + +Set whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + +Parameters: + +* `$enableMinDb`: `bool` Whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + + +### `getEnableUsernameDb(): bool` + +Get whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + + +### `setEnableUsernameDb(bool $enableUsernameDb): static` + +Set whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + +Parameters: + +* `$enableUsernameDb`: `bool` Whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + + +### `getEnableFullPeerDb(): bool` + +Get whether to enable the full peer info database. If disabled, will break getFullInfo. + + + +### `setEnableFullPeerDb(bool $enableFullPeerDb): static` + +Set whether to enable the full peer info database. If disabled, will break getFullInfo. + + +Parameters: + +* `$enableFullPeerDb`: `bool` Whether to enable the full peer info database. If disabled, will break getFullInfo. + + + +### `getEnablePeerInfoDb(): bool` + +Get whether to enable the peer info database. If disabled, will break getInfo. + + + +### `setEnablePeerInfoDb(bool $enablePeerInfoDb): static` + +Set whether to enable the peer info database. If disabled, will break getInfo. + + +Parameters: + +* `$enablePeerInfoDb`: `bool` Whether to enable the peer info database. If disabled, will break getInfo. + + + +### `getOrmSettings(): \danog\AsyncOrm\Settings` + + + + +#### See also: +* `\danog\AsyncOrm\Settings` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/Database/Memory.md b/docs/PHP/danog/MadelineProto/Settings/Database/Memory.md new file mode 100644 index 0000000000..b4f97ec77b --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/Database/Memory.md @@ -0,0 +1,130 @@ +--- +title: "danog\\MadelineProto\\Settings\\Database\\Memory: Memory backend settings." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\Database\Memory` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Memory backend settings. + + + + +## Method list: +* [`getOrmSettings(): \danog\AsyncOrm\Settings`](#getOrmSettings) +* [`getEnableFileReferenceDb(): bool`](#getEnableFileReferenceDb) +* [`setEnableFileReferenceDb(bool $enableFileReferenceDb): static`](#setEnableFileReferenceDb) +* [`getEnableMinDb(): bool`](#getEnableMinDb) +* [`setEnableMinDb(bool $enableMinDb): static`](#setEnableMinDb) +* [`getEnableUsernameDb(): bool`](#getEnableUsernameDb) +* [`setEnableUsernameDb(bool $enableUsernameDb): static`](#setEnableUsernameDb) +* [`getEnableFullPeerDb(): bool`](#getEnableFullPeerDb) +* [`setEnableFullPeerDb(bool $enableFullPeerDb): static`](#setEnableFullPeerDb) +* [`getEnablePeerInfoDb(): bool`](#getEnablePeerInfoDb) +* [`setEnablePeerInfoDb(bool $enablePeerInfoDb): static`](#setEnablePeerInfoDb) + +## Methods: +### `getOrmSettings(): \danog\AsyncOrm\Settings` + + + + +#### See also: +* `\danog\AsyncOrm\Settings` + + + + +### `getEnableFileReferenceDb(): bool` + +Get whether to enable the file reference database. If disabled, will break file downloads. + + + +### `setEnableFileReferenceDb(bool $enableFileReferenceDb): static` + +Set whether to enable the file reference database. If disabled, will break file downloads. + + +Parameters: + +* `$enableFileReferenceDb`: `bool` Whether to enable the file reference database. If disabled, will break file downloads. + + + +### `getEnableMinDb(): bool` + +Get whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + + +### `setEnableMinDb(bool $enableMinDb): static` + +Set whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + +Parameters: + +* `$enableMinDb`: `bool` Whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + + +### `getEnableUsernameDb(): bool` + +Get whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + + +### `setEnableUsernameDb(bool $enableUsernameDb): static` + +Set whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + +Parameters: + +* `$enableUsernameDb`: `bool` Whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + + +### `getEnableFullPeerDb(): bool` + +Get whether to enable the full peer info database. If disabled, will break getFullInfo. + + + +### `setEnableFullPeerDb(bool $enableFullPeerDb): static` + +Set whether to enable the full peer info database. If disabled, will break getFullInfo. + + +Parameters: + +* `$enableFullPeerDb`: `bool` Whether to enable the full peer info database. If disabled, will break getFullInfo. + + + +### `getEnablePeerInfoDb(): bool` + +Get whether to enable the peer info database. If disabled, will break getInfo. + + + +### `setEnablePeerInfoDb(bool $enablePeerInfoDb): static` + +Set whether to enable the peer info database. If disabled, will break getInfo. + + +Parameters: + +* `$enablePeerInfoDb`: `bool` Whether to enable the peer info database. If disabled, will break getInfo. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/Database/Mysql.md b/docs/PHP/danog/MadelineProto/Settings/Database/Mysql.md new file mode 100644 index 0000000000..89a4e2b6ec --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/Database/Mysql.md @@ -0,0 +1,361 @@ +--- +title: "danog\\MadelineProto\\Settings\\Database\\Mysql: MySQL backend settings." +description: "\nMariaDb 10.2+ or Mysql 5.6+ required.\n" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\Database\Mysql` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +MySQL backend settings. + + +MariaDb 10.2+ or Mysql 5.6+ required. + + + +## Method list: +* [`getOrmSettings(): \danog\AsyncOrm\Settings`](#getOrmSettings) +* [`getMaxConnections(): positive-int`](#getMaxConnections) +* [`setMaxConnections(positive-int $maxConnections): static`](#setMaxConnections) +* [`getIdleTimeout(): positive-int`](#getIdleTimeout) +* [`setIdleTimeout(positive-int $idleTimeout): static`](#setIdleTimeout) +* [`getDatabase(): string`](#getDatabase) +* [`setDatabase(string $database): static`](#setDatabase) +* [`getUsername(): string`](#getUsername) +* [`setUsername(string $username): static`](#setUsername) +* [`getUri(): string`](#getUri) +* [`setUri(string $uri): static`](#setUri) +* [`getEphemeralFilesystemPrefix(): ?string`](#getEphemeralFilesystemPrefix) +* [`setEphemeralFilesystemPrefix(?string $ephemeralFilesystemPrefix): static`](#setEphemeralFilesystemPrefix) +* [`getCacheTtl(): int`](#getCacheTtl) +* [`setCacheTtl((int|string) $cacheTtl): static`](#setCacheTtl) +* [`getPassword(): string`](#getPassword) +* [`setPassword(string $password): static`](#setPassword) +* [`getSerializer(): ?\danog\MadelineProto\Settings\Database\SerializerType`](#getSerializer) +* [`setSerializer(?\danog\MadelineProto\Settings\Database\SerializerType $serializer): static`](#setSerializer) +* [`getEnableFileReferenceDb(): bool`](#getEnableFileReferenceDb) +* [`setEnableFileReferenceDb(bool $enableFileReferenceDb): static`](#setEnableFileReferenceDb) +* [`getEnableMinDb(): bool`](#getEnableMinDb) +* [`setEnableMinDb(bool $enableMinDb): static`](#setEnableMinDb) +* [`getEnableUsernameDb(): bool`](#getEnableUsernameDb) +* [`setEnableUsernameDb(bool $enableUsernameDb): static`](#setEnableUsernameDb) +* [`getEnableFullPeerDb(): bool`](#getEnableFullPeerDb) +* [`setEnableFullPeerDb(bool $enableFullPeerDb): static`](#setEnableFullPeerDb) +* [`getEnablePeerInfoDb(): bool`](#getEnablePeerInfoDb) +* [`setEnablePeerInfoDb(bool $enablePeerInfoDb): static`](#setEnablePeerInfoDb) + +## Methods: +### `getOrmSettings(): \danog\AsyncOrm\Settings` + + + + +#### See also: +* `\danog\AsyncOrm\Settings` + + + + +### `getMaxConnections(): positive-int` + +Get maximum connection limit. + + +#### See also: +* `positive-int` + + + + +### `setMaxConnections(positive-int $maxConnections): static` + +Set maximum connection limit. + + +Parameters: + +* `$maxConnections`: `positive-int` Maximum connection limit. + + +#### See also: +* `positive-int` + + + + +### `getIdleTimeout(): positive-int` + +Get idle timeout. + + +#### See also: +* `positive-int` + + + + +### `setIdleTimeout(positive-int $idleTimeout): static` + +Set idle timeout. + + +Parameters: + +* `$idleTimeout`: `positive-int` Idle timeout. + + +#### See also: +* `positive-int` + + + + +### `getDatabase(): string` + +Get database name. + + + +### `setDatabase(string $database): static` + +Set database name. + + +Parameters: + +* `$database`: `string` Database name. + + + +### `getUsername(): string` + +Get username. + + + +### `setUsername(string $username): static` + +Set username. + + +Parameters: + +* `$username`: `string` Username. + + + +### `getUri(): string` + +Get database URI. + + + +### `setUri(string $uri): static` + +Set database URI. + + +Parameters: + +* `$uri`: `string` Database URI. + + + +### `getEphemeralFilesystemPrefix(): ?string` + +If set, indicates that the filesystem is ephemeral, and thus session files will not be used to store persistent data. + +Must contain a unique string, used as prefix for database tables, different for every session. +The prefix may be the same if different databases are used. + +This is useful when running MadelineProto inside docker containers without volumes, using just a database. + +Note that the session folder must still NEVER be deleted *if* MadelineProto is running, +or else the session will be dropped from the database due to AUTH_KEY_DUPLICATED errors. + +Stopping the container and then deleting the session folder is 100% OK though. + + + +### `setEphemeralFilesystemPrefix(?string $ephemeralFilesystemPrefix): static` + +If set, indicates that the filesystem is ephemeral, and thus session files will not be used to store persistent data. + +Must contain a unique string, used as prefix for database tables, different for every session. +The prefix may be the same if different databases are used. + +This is useful when running MadelineProto inside docker containers without volumes, using just a database. + +Note that the session folder must still NEVER be deleted *if* MadelineProto is running, +or else the session will be dropped from the database due to AUTH_KEY_DUPLICATED errors. + +Stopping the container and then deleting the session folder is 100% OK though. + + +Parameters: + +* `$ephemeralFilesystemPrefix`: `?string` The database prefix + + + +### `getCacheTtl(): int` + +Get for how long to keep records in memory after last read, for cached backends. + + + +### `setCacheTtl((int|string) $cacheTtl): static` + +Set for how long to keep records in memory after last read, for cached backends. + +The cache TTL identifier can be a string like '+5 minutes'. +When data is retrieved from a database it is stored in memory. +This helps to reduce latency, improve speed and reduce mysql/postgres/redis load. +Data will be removed from the cache if last access was more than this amount of time. +Clean up is done once per minute. + + +Parameters: + +* `$cacheTtl`: `(int|string)` For how long to keep records in memory after last read, for cached backends. + + + +### `getPassword(): string` + +Get password. + + + +### `setPassword(string $password): static` + +Set password. + + +Parameters: + +* `$password`: `string` Password. + + + +### `getSerializer(): ?\danog\MadelineProto\Settings\Database\SerializerType` + + + + +#### See also: +* [\danog\MadelineProto\Settings\Database\SerializerType](../../../../danog/MadelineProto/Settings/Database/SerializerType.html) + + + + +### `setSerializer(?\danog\MadelineProto\Settings\Database\SerializerType $serializer): static` + +Which serializer to use by default. + +If null, the best serializer is chosen. + + +Parameters: + +* `$serializer`: `?\danog\MadelineProto\Settings\Database\SerializerType` + + +#### See also: +* [\danog\MadelineProto\Settings\Database\SerializerType](../../../../danog/MadelineProto/Settings/Database/SerializerType.html) + + + + +### `getEnableFileReferenceDb(): bool` + +Get whether to enable the file reference database. If disabled, will break file downloads. + + + +### `setEnableFileReferenceDb(bool $enableFileReferenceDb): static` + +Set whether to enable the file reference database. If disabled, will break file downloads. + + +Parameters: + +* `$enableFileReferenceDb`: `bool` Whether to enable the file reference database. If disabled, will break file downloads. + + + +### `getEnableMinDb(): bool` + +Get whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + + +### `setEnableMinDb(bool $enableMinDb): static` + +Set whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + +Parameters: + +* `$enableMinDb`: `bool` Whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + + +### `getEnableUsernameDb(): bool` + +Get whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + + +### `setEnableUsernameDb(bool $enableUsernameDb): static` + +Set whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + +Parameters: + +* `$enableUsernameDb`: `bool` Whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + + +### `getEnableFullPeerDb(): bool` + +Get whether to enable the full peer info database. If disabled, will break getFullInfo. + + + +### `setEnableFullPeerDb(bool $enableFullPeerDb): static` + +Set whether to enable the full peer info database. If disabled, will break getFullInfo. + + +Parameters: + +* `$enableFullPeerDb`: `bool` Whether to enable the full peer info database. If disabled, will break getFullInfo. + + + +### `getEnablePeerInfoDb(): bool` + +Get whether to enable the peer info database. If disabled, will break getInfo. + + + +### `setEnablePeerInfoDb(bool $enablePeerInfoDb): static` + +Set whether to enable the peer info database. If disabled, will break getInfo. + + +Parameters: + +* `$enablePeerInfoDb`: `bool` Whether to enable the peer info database. If disabled, will break getInfo. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/Database/Postgres.md b/docs/PHP/danog/MadelineProto/Settings/Database/Postgres.md new file mode 100644 index 0000000000..c3f0f8ef21 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/Database/Postgres.md @@ -0,0 +1,359 @@ +--- +title: "danog\\MadelineProto\\Settings\\Database\\Postgres: Postgres backend settings." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\Database\Postgres` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Postgres backend settings. + + + + +## Method list: +* [`getOrmSettings(): \danog\AsyncOrm\Settings`](#getOrmSettings) +* [`getMaxConnections(): positive-int`](#getMaxConnections) +* [`setMaxConnections(positive-int $maxConnections): static`](#setMaxConnections) +* [`getIdleTimeout(): positive-int`](#getIdleTimeout) +* [`setIdleTimeout(positive-int $idleTimeout): static`](#setIdleTimeout) +* [`getDatabase(): string`](#getDatabase) +* [`setDatabase(string $database): static`](#setDatabase) +* [`getUsername(): string`](#getUsername) +* [`setUsername(string $username): static`](#setUsername) +* [`getUri(): string`](#getUri) +* [`setUri(string $uri): static`](#setUri) +* [`getEphemeralFilesystemPrefix(): ?string`](#getEphemeralFilesystemPrefix) +* [`setEphemeralFilesystemPrefix(?string $ephemeralFilesystemPrefix): static`](#setEphemeralFilesystemPrefix) +* [`getCacheTtl(): int`](#getCacheTtl) +* [`setCacheTtl((int|string) $cacheTtl): static`](#setCacheTtl) +* [`getPassword(): string`](#getPassword) +* [`setPassword(string $password): static`](#setPassword) +* [`getSerializer(): ?\danog\MadelineProto\Settings\Database\SerializerType`](#getSerializer) +* [`setSerializer(?\danog\MadelineProto\Settings\Database\SerializerType $serializer): static`](#setSerializer) +* [`getEnableFileReferenceDb(): bool`](#getEnableFileReferenceDb) +* [`setEnableFileReferenceDb(bool $enableFileReferenceDb): static`](#setEnableFileReferenceDb) +* [`getEnableMinDb(): bool`](#getEnableMinDb) +* [`setEnableMinDb(bool $enableMinDb): static`](#setEnableMinDb) +* [`getEnableUsernameDb(): bool`](#getEnableUsernameDb) +* [`setEnableUsernameDb(bool $enableUsernameDb): static`](#setEnableUsernameDb) +* [`getEnableFullPeerDb(): bool`](#getEnableFullPeerDb) +* [`setEnableFullPeerDb(bool $enableFullPeerDb): static`](#setEnableFullPeerDb) +* [`getEnablePeerInfoDb(): bool`](#getEnablePeerInfoDb) +* [`setEnablePeerInfoDb(bool $enablePeerInfoDb): static`](#setEnablePeerInfoDb) + +## Methods: +### `getOrmSettings(): \danog\AsyncOrm\Settings` + + + + +#### See also: +* `\danog\AsyncOrm\Settings` + + + + +### `getMaxConnections(): positive-int` + +Get maximum connection limit. + + +#### See also: +* `positive-int` + + + + +### `setMaxConnections(positive-int $maxConnections): static` + +Set maximum connection limit. + + +Parameters: + +* `$maxConnections`: `positive-int` Maximum connection limit. + + +#### See also: +* `positive-int` + + + + +### `getIdleTimeout(): positive-int` + +Get idle timeout. + + +#### See also: +* `positive-int` + + + + +### `setIdleTimeout(positive-int $idleTimeout): static` + +Set idle timeout. + + +Parameters: + +* `$idleTimeout`: `positive-int` Idle timeout. + + +#### See also: +* `positive-int` + + + + +### `getDatabase(): string` + +Get database name. + + + +### `setDatabase(string $database): static` + +Set database name. + + +Parameters: + +* `$database`: `string` Database name. + + + +### `getUsername(): string` + +Get username. + + + +### `setUsername(string $username): static` + +Set username. + + +Parameters: + +* `$username`: `string` Username. + + + +### `getUri(): string` + +Get database URI. + + + +### `setUri(string $uri): static` + +Set database URI. + + +Parameters: + +* `$uri`: `string` Database URI. + + + +### `getEphemeralFilesystemPrefix(): ?string` + +If set, indicates that the filesystem is ephemeral, and thus session files will not be used to store persistent data. + +Must contain a unique string, used as prefix for database tables, different for every session. +The prefix may be the same if different databases are used. + +This is useful when running MadelineProto inside docker containers without volumes, using just a database. + +Note that the session folder must still NEVER be deleted *if* MadelineProto is running, +or else the session will be dropped from the database due to AUTH_KEY_DUPLICATED errors. + +Stopping the container and then deleting the session folder is 100% OK though. + + + +### `setEphemeralFilesystemPrefix(?string $ephemeralFilesystemPrefix): static` + +If set, indicates that the filesystem is ephemeral, and thus session files will not be used to store persistent data. + +Must contain a unique string, used as prefix for database tables, different for every session. +The prefix may be the same if different databases are used. + +This is useful when running MadelineProto inside docker containers without volumes, using just a database. + +Note that the session folder must still NEVER be deleted *if* MadelineProto is running, +or else the session will be dropped from the database due to AUTH_KEY_DUPLICATED errors. + +Stopping the container and then deleting the session folder is 100% OK though. + + +Parameters: + +* `$ephemeralFilesystemPrefix`: `?string` The database prefix + + + +### `getCacheTtl(): int` + +Get for how long to keep records in memory after last read, for cached backends. + + + +### `setCacheTtl((int|string) $cacheTtl): static` + +Set for how long to keep records in memory after last read, for cached backends. + +The cache TTL identifier can be a string like '+5 minutes'. +When data is retrieved from a database it is stored in memory. +This helps to reduce latency, improve speed and reduce mysql/postgres/redis load. +Data will be removed from the cache if last access was more than this amount of time. +Clean up is done once per minute. + + +Parameters: + +* `$cacheTtl`: `(int|string)` For how long to keep records in memory after last read, for cached backends. + + + +### `getPassword(): string` + +Get password. + + + +### `setPassword(string $password): static` + +Set password. + + +Parameters: + +* `$password`: `string` Password. + + + +### `getSerializer(): ?\danog\MadelineProto\Settings\Database\SerializerType` + + + + +#### See also: +* [\danog\MadelineProto\Settings\Database\SerializerType](../../../../danog/MadelineProto/Settings/Database/SerializerType.html) + + + + +### `setSerializer(?\danog\MadelineProto\Settings\Database\SerializerType $serializer): static` + +Which serializer to use by default. + +If null, the best serializer is chosen. + + +Parameters: + +* `$serializer`: `?\danog\MadelineProto\Settings\Database\SerializerType` + + +#### See also: +* [\danog\MadelineProto\Settings\Database\SerializerType](../../../../danog/MadelineProto/Settings/Database/SerializerType.html) + + + + +### `getEnableFileReferenceDb(): bool` + +Get whether to enable the file reference database. If disabled, will break file downloads. + + + +### `setEnableFileReferenceDb(bool $enableFileReferenceDb): static` + +Set whether to enable the file reference database. If disabled, will break file downloads. + + +Parameters: + +* `$enableFileReferenceDb`: `bool` Whether to enable the file reference database. If disabled, will break file downloads. + + + +### `getEnableMinDb(): bool` + +Get whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + + +### `setEnableMinDb(bool $enableMinDb): static` + +Set whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + +Parameters: + +* `$enableMinDb`: `bool` Whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + + +### `getEnableUsernameDb(): bool` + +Get whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + + +### `setEnableUsernameDb(bool $enableUsernameDb): static` + +Set whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + +Parameters: + +* `$enableUsernameDb`: `bool` Whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + + +### `getEnableFullPeerDb(): bool` + +Get whether to enable the full peer info database. If disabled, will break getFullInfo. + + + +### `setEnableFullPeerDb(bool $enableFullPeerDb): static` + +Set whether to enable the full peer info database. If disabled, will break getFullInfo. + + +Parameters: + +* `$enableFullPeerDb`: `bool` Whether to enable the full peer info database. If disabled, will break getFullInfo. + + + +### `getEnablePeerInfoDb(): bool` + +Get whether to enable the peer info database. If disabled, will break getInfo. + + + +### `setEnablePeerInfoDb(bool $enablePeerInfoDb): static` + +Set whether to enable the peer info database. If disabled, will break getInfo. + + +Parameters: + +* `$enablePeerInfoDb`: `bool` Whether to enable the peer info database. If disabled, will break getInfo. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/Database/Redis.md b/docs/PHP/danog/MadelineProto/Settings/Database/Redis.md new file mode 100644 index 0000000000..2e958bb408 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/Database/Redis.md @@ -0,0 +1,282 @@ +--- +title: "danog\\MadelineProto\\Settings\\Database\\Redis: Redis backend settings." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\Database\Redis` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Redis backend settings. + + + + +## Method list: +* [`getOrmSettings(): \danog\AsyncOrm\Settings`](#getOrmSettings) +* [`getDatabase(): int`](#getDatabase) +* [`setDatabase(int $database): self`](#setDatabase) +* [`getUri(): string`](#getUri) +* [`setUri(string $uri): static`](#setUri) +* [`getEphemeralFilesystemPrefix(): ?string`](#getEphemeralFilesystemPrefix) +* [`setEphemeralFilesystemPrefix(?string $ephemeralFilesystemPrefix): static`](#setEphemeralFilesystemPrefix) +* [`getCacheTtl(): int`](#getCacheTtl) +* [`setCacheTtl((int|string) $cacheTtl): static`](#setCacheTtl) +* [`getPassword(): string`](#getPassword) +* [`setPassword(string $password): static`](#setPassword) +* [`getSerializer(): ?\danog\MadelineProto\Settings\Database\SerializerType`](#getSerializer) +* [`setSerializer(?\danog\MadelineProto\Settings\Database\SerializerType $serializer): static`](#setSerializer) +* [`getEnableFileReferenceDb(): bool`](#getEnableFileReferenceDb) +* [`setEnableFileReferenceDb(bool $enableFileReferenceDb): static`](#setEnableFileReferenceDb) +* [`getEnableMinDb(): bool`](#getEnableMinDb) +* [`setEnableMinDb(bool $enableMinDb): static`](#setEnableMinDb) +* [`getEnableUsernameDb(): bool`](#getEnableUsernameDb) +* [`setEnableUsernameDb(bool $enableUsernameDb): static`](#setEnableUsernameDb) +* [`getEnableFullPeerDb(): bool`](#getEnableFullPeerDb) +* [`setEnableFullPeerDb(bool $enableFullPeerDb): static`](#setEnableFullPeerDb) +* [`getEnablePeerInfoDb(): bool`](#getEnablePeerInfoDb) +* [`setEnablePeerInfoDb(bool $enablePeerInfoDb): static`](#setEnablePeerInfoDb) + +## Methods: +### `getOrmSettings(): \danog\AsyncOrm\Settings` + + + + +#### See also: +* `\danog\AsyncOrm\Settings` + + + + +### `getDatabase(): int` + +Get database number. + + + +### `setDatabase(int $database): self` + +Set database number. + + +Parameters: + +* `$database`: `int` Database number. + + + +### `getUri(): string` + +Get database URI. + + + +### `setUri(string $uri): static` + +Set database URI. + + +Parameters: + +* `$uri`: `string` Database URI. + + + +### `getEphemeralFilesystemPrefix(): ?string` + +If set, indicates that the filesystem is ephemeral, and thus session files will not be used to store persistent data. + +Must contain a unique string, used as prefix for database tables, different for every session. +The prefix may be the same if different databases are used. + +This is useful when running MadelineProto inside docker containers without volumes, using just a database. + +Note that the session folder must still NEVER be deleted *if* MadelineProto is running, +or else the session will be dropped from the database due to AUTH_KEY_DUPLICATED errors. + +Stopping the container and then deleting the session folder is 100% OK though. + + + +### `setEphemeralFilesystemPrefix(?string $ephemeralFilesystemPrefix): static` + +If set, indicates that the filesystem is ephemeral, and thus session files will not be used to store persistent data. + +Must contain a unique string, used as prefix for database tables, different for every session. +The prefix may be the same if different databases are used. + +This is useful when running MadelineProto inside docker containers without volumes, using just a database. + +Note that the session folder must still NEVER be deleted *if* MadelineProto is running, +or else the session will be dropped from the database due to AUTH_KEY_DUPLICATED errors. + +Stopping the container and then deleting the session folder is 100% OK though. + + +Parameters: + +* `$ephemeralFilesystemPrefix`: `?string` The database prefix + + + +### `getCacheTtl(): int` + +Get for how long to keep records in memory after last read, for cached backends. + + + +### `setCacheTtl((int|string) $cacheTtl): static` + +Set for how long to keep records in memory after last read, for cached backends. + +The cache TTL identifier can be a string like '+5 minutes'. +When data is retrieved from a database it is stored in memory. +This helps to reduce latency, improve speed and reduce mysql/postgres/redis load. +Data will be removed from the cache if last access was more than this amount of time. +Clean up is done once per minute. + + +Parameters: + +* `$cacheTtl`: `(int|string)` For how long to keep records in memory after last read, for cached backends. + + + +### `getPassword(): string` + +Get password. + + + +### `setPassword(string $password): static` + +Set password. + + +Parameters: + +* `$password`: `string` Password. + + + +### `getSerializer(): ?\danog\MadelineProto\Settings\Database\SerializerType` + + + + +#### See also: +* [\danog\MadelineProto\Settings\Database\SerializerType](../../../../danog/MadelineProto/Settings/Database/SerializerType.html) + + + + +### `setSerializer(?\danog\MadelineProto\Settings\Database\SerializerType $serializer): static` + +Which serializer to use by default. + +If null, the best serializer is chosen. + + +Parameters: + +* `$serializer`: `?\danog\MadelineProto\Settings\Database\SerializerType` + + +#### See also: +* [\danog\MadelineProto\Settings\Database\SerializerType](../../../../danog/MadelineProto/Settings/Database/SerializerType.html) + + + + +### `getEnableFileReferenceDb(): bool` + +Get whether to enable the file reference database. If disabled, will break file downloads. + + + +### `setEnableFileReferenceDb(bool $enableFileReferenceDb): static` + +Set whether to enable the file reference database. If disabled, will break file downloads. + + +Parameters: + +* `$enableFileReferenceDb`: `bool` Whether to enable the file reference database. If disabled, will break file downloads. + + + +### `getEnableMinDb(): bool` + +Get whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + + +### `setEnableMinDb(bool $enableMinDb): static` + +Set whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + +Parameters: + +* `$enableMinDb`: `bool` Whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + + +### `getEnableUsernameDb(): bool` + +Get whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + + +### `setEnableUsernameDb(bool $enableUsernameDb): static` + +Set whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + +Parameters: + +* `$enableUsernameDb`: `bool` Whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + + +### `getEnableFullPeerDb(): bool` + +Get whether to enable the full peer info database. If disabled, will break getFullInfo. + + + +### `setEnableFullPeerDb(bool $enableFullPeerDb): static` + +Set whether to enable the full peer info database. If disabled, will break getFullInfo. + + +Parameters: + +* `$enableFullPeerDb`: `bool` Whether to enable the full peer info database. If disabled, will break getFullInfo. + + + +### `getEnablePeerInfoDb(): bool` + +Get whether to enable the peer info database. If disabled, will break getInfo. + + + +### `setEnablePeerInfoDb(bool $enablePeerInfoDb): static` + +Set whether to enable the peer info database. If disabled, will break getInfo. + + +Parameters: + +* `$enablePeerInfoDb`: `bool` Whether to enable the peer info database. If disabled, will break getInfo. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/Database/SerializerType.md b/docs/PHP/danog/MadelineProto/Settings/Database/SerializerType.md new file mode 100644 index 0000000000..0eb760a3f3 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/Database/SerializerType.md @@ -0,0 +1,63 @@ +--- +title: "danog\\MadelineProto\\Settings\\Database\\SerializerType: " +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\Database\SerializerType` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + + + + + + +## Constants +* `danog\MadelineProto\Settings\Database\SerializerType::SERIALIZE`: + +* `danog\MadelineProto\Settings\Database\SerializerType::IGBINARY`: + +## Properties +* `$name`: `string` +* `$value`: `string` + +## Method list: +* [`cases(): array`](#cases) +* [`from(string|int $value): static`](#from) +* [`tryFrom(string|int $value): ?static`](#tryFrom) + +## Methods: +### `cases(): array` + + + + + +### `from(string|int $value): static` + + + + +Parameters: + +* `$value`: `string|int` + + + +### `tryFrom(string|int $value): ?static` + + + + +Parameters: + +* `$value`: `string|int` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/Database/SqlAbstract.md b/docs/PHP/danog/MadelineProto/Settings/Database/SqlAbstract.md new file mode 100644 index 0000000000..99d5941fc4 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/Database/SqlAbstract.md @@ -0,0 +1,359 @@ +--- +title: "danog\\MadelineProto\\Settings\\Database\\SqlAbstract: Generic db backend settings." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\Database\SqlAbstract` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Generic db backend settings. + + + + +## Method list: +* [`getMaxConnections(): positive-int`](#getMaxConnections) +* [`setMaxConnections(positive-int $maxConnections): static`](#setMaxConnections) +* [`getIdleTimeout(): positive-int`](#getIdleTimeout) +* [`setIdleTimeout(positive-int $idleTimeout): static`](#setIdleTimeout) +* [`getDatabase(): string`](#getDatabase) +* [`setDatabase(string $database): static`](#setDatabase) +* [`getUsername(): string`](#getUsername) +* [`setUsername(string $username): static`](#setUsername) +* [`getUri(): string`](#getUri) +* [`setUri(string $uri): static`](#setUri) +* [`getEphemeralFilesystemPrefix(): ?string`](#getEphemeralFilesystemPrefix) +* [`setEphemeralFilesystemPrefix(?string $ephemeralFilesystemPrefix): static`](#setEphemeralFilesystemPrefix) +* [`getCacheTtl(): int`](#getCacheTtl) +* [`setCacheTtl((int|string) $cacheTtl): static`](#setCacheTtl) +* [`getPassword(): string`](#getPassword) +* [`setPassword(string $password): static`](#setPassword) +* [`getSerializer(): ?\danog\MadelineProto\Settings\Database\SerializerType`](#getSerializer) +* [`setSerializer(?\danog\MadelineProto\Settings\Database\SerializerType $serializer): static`](#setSerializer) +* [`getEnableFileReferenceDb(): bool`](#getEnableFileReferenceDb) +* [`setEnableFileReferenceDb(bool $enableFileReferenceDb): static`](#setEnableFileReferenceDb) +* [`getEnableMinDb(): bool`](#getEnableMinDb) +* [`setEnableMinDb(bool $enableMinDb): static`](#setEnableMinDb) +* [`getEnableUsernameDb(): bool`](#getEnableUsernameDb) +* [`setEnableUsernameDb(bool $enableUsernameDb): static`](#setEnableUsernameDb) +* [`getEnableFullPeerDb(): bool`](#getEnableFullPeerDb) +* [`setEnableFullPeerDb(bool $enableFullPeerDb): static`](#setEnableFullPeerDb) +* [`getEnablePeerInfoDb(): bool`](#getEnablePeerInfoDb) +* [`setEnablePeerInfoDb(bool $enablePeerInfoDb): static`](#setEnablePeerInfoDb) +* [`getOrmSettings(): \danog\AsyncOrm\Settings`](#getOrmSettings) + +## Methods: +### `getMaxConnections(): positive-int` + +Get maximum connection limit. + + +#### See also: +* `positive-int` + + + + +### `setMaxConnections(positive-int $maxConnections): static` + +Set maximum connection limit. + + +Parameters: + +* `$maxConnections`: `positive-int` Maximum connection limit. + + +#### See also: +* `positive-int` + + + + +### `getIdleTimeout(): positive-int` + +Get idle timeout. + + +#### See also: +* `positive-int` + + + + +### `setIdleTimeout(positive-int $idleTimeout): static` + +Set idle timeout. + + +Parameters: + +* `$idleTimeout`: `positive-int` Idle timeout. + + +#### See also: +* `positive-int` + + + + +### `getDatabase(): string` + +Get database name. + + + +### `setDatabase(string $database): static` + +Set database name. + + +Parameters: + +* `$database`: `string` Database name. + + + +### `getUsername(): string` + +Get username. + + + +### `setUsername(string $username): static` + +Set username. + + +Parameters: + +* `$username`: `string` Username. + + + +### `getUri(): string` + +Get database URI. + + + +### `setUri(string $uri): static` + +Set database URI. + + +Parameters: + +* `$uri`: `string` Database URI. + + + +### `getEphemeralFilesystemPrefix(): ?string` + +If set, indicates that the filesystem is ephemeral, and thus session files will not be used to store persistent data. + +Must contain a unique string, used as prefix for database tables, different for every session. +The prefix may be the same if different databases are used. + +This is useful when running MadelineProto inside docker containers without volumes, using just a database. + +Note that the session folder must still NEVER be deleted *if* MadelineProto is running, +or else the session will be dropped from the database due to AUTH_KEY_DUPLICATED errors. + +Stopping the container and then deleting the session folder is 100% OK though. + + + +### `setEphemeralFilesystemPrefix(?string $ephemeralFilesystemPrefix): static` + +If set, indicates that the filesystem is ephemeral, and thus session files will not be used to store persistent data. + +Must contain a unique string, used as prefix for database tables, different for every session. +The prefix may be the same if different databases are used. + +This is useful when running MadelineProto inside docker containers without volumes, using just a database. + +Note that the session folder must still NEVER be deleted *if* MadelineProto is running, +or else the session will be dropped from the database due to AUTH_KEY_DUPLICATED errors. + +Stopping the container and then deleting the session folder is 100% OK though. + + +Parameters: + +* `$ephemeralFilesystemPrefix`: `?string` The database prefix + + + +### `getCacheTtl(): int` + +Get for how long to keep records in memory after last read, for cached backends. + + + +### `setCacheTtl((int|string) $cacheTtl): static` + +Set for how long to keep records in memory after last read, for cached backends. + +The cache TTL identifier can be a string like '+5 minutes'. +When data is retrieved from a database it is stored in memory. +This helps to reduce latency, improve speed and reduce mysql/postgres/redis load. +Data will be removed from the cache if last access was more than this amount of time. +Clean up is done once per minute. + + +Parameters: + +* `$cacheTtl`: `(int|string)` For how long to keep records in memory after last read, for cached backends. + + + +### `getPassword(): string` + +Get password. + + + +### `setPassword(string $password): static` + +Set password. + + +Parameters: + +* `$password`: `string` Password. + + + +### `getSerializer(): ?\danog\MadelineProto\Settings\Database\SerializerType` + + + + +#### See also: +* [\danog\MadelineProto\Settings\Database\SerializerType](../../../../danog/MadelineProto/Settings/Database/SerializerType.html) + + + + +### `setSerializer(?\danog\MadelineProto\Settings\Database\SerializerType $serializer): static` + +Which serializer to use by default. + +If null, the best serializer is chosen. + + +Parameters: + +* `$serializer`: `?\danog\MadelineProto\Settings\Database\SerializerType` + + +#### See also: +* [\danog\MadelineProto\Settings\Database\SerializerType](../../../../danog/MadelineProto/Settings/Database/SerializerType.html) + + + + +### `getEnableFileReferenceDb(): bool` + +Get whether to enable the file reference database. If disabled, will break file downloads. + + + +### `setEnableFileReferenceDb(bool $enableFileReferenceDb): static` + +Set whether to enable the file reference database. If disabled, will break file downloads. + + +Parameters: + +* `$enableFileReferenceDb`: `bool` Whether to enable the file reference database. If disabled, will break file downloads. + + + +### `getEnableMinDb(): bool` + +Get whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + + +### `setEnableMinDb(bool $enableMinDb): static` + +Set whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + +Parameters: + +* `$enableMinDb`: `bool` Whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + + +### `getEnableUsernameDb(): bool` + +Get whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + + +### `setEnableUsernameDb(bool $enableUsernameDb): static` + +Set whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + +Parameters: + +* `$enableUsernameDb`: `bool` Whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + + +### `getEnableFullPeerDb(): bool` + +Get whether to enable the full peer info database. If disabled, will break getFullInfo. + + + +### `setEnableFullPeerDb(bool $enableFullPeerDb): static` + +Set whether to enable the full peer info database. If disabled, will break getFullInfo. + + +Parameters: + +* `$enableFullPeerDb`: `bool` Whether to enable the full peer info database. If disabled, will break getFullInfo. + + + +### `getEnablePeerInfoDb(): bool` + +Get whether to enable the peer info database. If disabled, will break getInfo. + + + +### `setEnablePeerInfoDb(bool $enablePeerInfoDb): static` + +Set whether to enable the peer info database. If disabled, will break getInfo. + + +Parameters: + +* `$enablePeerInfoDb`: `bool` Whether to enable the peer info database. If disabled, will break getInfo. + + + +### `getOrmSettings(): \danog\AsyncOrm\Settings` + + + + +#### See also: +* `\danog\AsyncOrm\Settings` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/DatabaseAbstract.md b/docs/PHP/danog/MadelineProto/Settings/DatabaseAbstract.md new file mode 100644 index 0000000000..d8901a8fee --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/DatabaseAbstract.md @@ -0,0 +1,130 @@ +--- +title: "danog\\MadelineProto\\Settings\\DatabaseAbstract: Base class for storage backends." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\DatabaseAbstract` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Base class for storage backends. + + + + +## Method list: +* [`getEnableFileReferenceDb(): bool`](#getEnableFileReferenceDb) +* [`setEnableFileReferenceDb(bool $enableFileReferenceDb): static`](#setEnableFileReferenceDb) +* [`getEnableMinDb(): bool`](#getEnableMinDb) +* [`setEnableMinDb(bool $enableMinDb): static`](#setEnableMinDb) +* [`getEnableUsernameDb(): bool`](#getEnableUsernameDb) +* [`setEnableUsernameDb(bool $enableUsernameDb): static`](#setEnableUsernameDb) +* [`getEnableFullPeerDb(): bool`](#getEnableFullPeerDb) +* [`setEnableFullPeerDb(bool $enableFullPeerDb): static`](#setEnableFullPeerDb) +* [`getEnablePeerInfoDb(): bool`](#getEnablePeerInfoDb) +* [`setEnablePeerInfoDb(bool $enablePeerInfoDb): static`](#setEnablePeerInfoDb) +* [`getOrmSettings(): \danog\AsyncOrm\Settings`](#getOrmSettings) + +## Methods: +### `getEnableFileReferenceDb(): bool` + +Get whether to enable the file reference database. If disabled, will break file downloads. + + + +### `setEnableFileReferenceDb(bool $enableFileReferenceDb): static` + +Set whether to enable the file reference database. If disabled, will break file downloads. + + +Parameters: + +* `$enableFileReferenceDb`: `bool` Whether to enable the file reference database. If disabled, will break file downloads. + + + +### `getEnableMinDb(): bool` + +Get whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + + +### `setEnableMinDb(bool $enableMinDb): static` + +Set whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + +Parameters: + +* `$enableMinDb`: `bool` Whether to enable the min database. If disabled, will break sendMessage (and other methods) in certain conditions. + + + +### `getEnableUsernameDb(): bool` + +Get whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + + +### `setEnableUsernameDb(bool $enableUsernameDb): static` + +Set whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + +Parameters: + +* `$enableUsernameDb`: `bool` Whether to enable the username database. If disabled, will break sendMessage (and other methods) with usernames. + + + +### `getEnableFullPeerDb(): bool` + +Get whether to enable the full peer info database. If disabled, will break getFullInfo. + + + +### `setEnableFullPeerDb(bool $enableFullPeerDb): static` + +Set whether to enable the full peer info database. If disabled, will break getFullInfo. + + +Parameters: + +* `$enableFullPeerDb`: `bool` Whether to enable the full peer info database. If disabled, will break getFullInfo. + + + +### `getEnablePeerInfoDb(): bool` + +Get whether to enable the peer info database. If disabled, will break getInfo. + + + +### `setEnablePeerInfoDb(bool $enablePeerInfoDb): static` + +Set whether to enable the peer info database. If disabled, will break getInfo. + + +Parameters: + +* `$enablePeerInfoDb`: `bool` Whether to enable the peer info database. If disabled, will break getInfo. + + + +### `getOrmSettings(): \danog\AsyncOrm\Settings` + + + + +#### See also: +* `\danog\AsyncOrm\Settings` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/Files.md b/docs/PHP/danog/MadelineProto/Settings/Files.md new file mode 100644 index 0000000000..ad2971e4b9 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/Files.md @@ -0,0 +1,122 @@ +--- +title: "danog\\MadelineProto\\Settings\\Files: File management settings." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\Files` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +File management settings. + + + + +## Method list: +* [`getAllowAutomaticUpload(): bool`](#getAllowAutomaticUpload) +* [`setAllowAutomaticUpload(bool $allowAutomaticUpload): self`](#setAllowAutomaticUpload) +* [`getUploadParallelChunks(): int`](#getUploadParallelChunks) +* [`setUploadParallelChunks(int $uploadParallelChunks): self`](#setUploadParallelChunks) +* [`getDownloadParallelChunks(): int`](#getDownloadParallelChunks) +* [`setDownloadParallelChunks(int $downloadParallelChunks): self`](#setDownloadParallelChunks) +* [`getReportBrokenMedia(): bool`](#getReportBrokenMedia) +* [`setReportBrokenMedia(bool $reportBrokenMedia): self`](#setReportBrokenMedia) +* [`getDownloadLink(): ?string`](#getDownloadLink) +* [`setDownloadLink(?string $downloadLink): self`](#setDownloadLink) + +## Methods: +### `getAllowAutomaticUpload(): bool` + +Get allow automatic upload of files from file paths present in constructors? + + + +### `setAllowAutomaticUpload(bool $allowAutomaticUpload): self` + +Set allow automatic upload of files from file paths present in constructors? + + +Parameters: + +* `$allowAutomaticUpload`: `bool` Allow automatic upload of files from file paths present in constructors? + + + +### `getUploadParallelChunks(): int` + +Get upload parallel chunk count. + + + +### `setUploadParallelChunks(int $uploadParallelChunks): self` + +Set upload parallel chunk count. + + +Parameters: + +* `$uploadParallelChunks`: `int` Upload parallel chunk count + + + +### `getDownloadParallelChunks(): int` + +Get download parallel chunk count. + + + +### `setDownloadParallelChunks(int $downloadParallelChunks): self` + +Set download parallel chunk count. + + +Parameters: + +* `$downloadParallelChunks`: `int` Download parallel chunk count + + + +### `getReportBrokenMedia(): bool` + +Get whether to report undownloadable media to TSF. + + + +### `setReportBrokenMedia(bool $reportBrokenMedia): self` + +Set whether to report undownloadable media to TSF. + + +Parameters: + +* `$reportBrokenMedia`: `bool` Whether to report undownloadable media to TSF + + + +### `getDownloadLink(): ?string` + +Get custom download link URL for CLI bots, used by `getDownloadLink`. + + + +### `setDownloadLink(?string $downloadLink): self` + +Only needed for CLI bots, not bots started via web. + +Sets custom download link URL for CLI bots, used by `getDownloadLink`. + +Can be null, in which case MadelineProto will automatically generate a download link. + + +Parameters: + +* `$downloadLink`: `?string` Custom download link URL for CLI bots, used by `getDownloadLink`. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/Ipc.md b/docs/PHP/danog/MadelineProto/Settings/Ipc.md new file mode 100644 index 0000000000..d85ebb0427 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/Ipc.md @@ -0,0 +1,37 @@ +--- +title: "danog\\MadelineProto\\Settings\\Ipc: IPC server settings." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\Ipc` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +IPC server settings. + + + + +## Method list: +* [`__construct()`](#__construct) +* [`getSlow(): bool`](#getSlow) + +## Methods: +### `__construct()` + + + + + +### `getSlow(): bool` + +Get WARNING: this will cause slow startup if enabled. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/Logger.md b/docs/PHP/danog/MadelineProto/Settings/Logger.md new file mode 100644 index 0000000000..e9a85d921e --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/Logger.md @@ -0,0 +1,126 @@ +--- +title: "danog\\MadelineProto\\Settings\\Logger: Logger settings." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\Logger` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Logger settings. + + + + +## Method list: +* [`__construct()`](#__construct) +* [`getType(): MadelineProtoLogger::LOGGER_*`](#getType) +* [`setType(MadelineProtoLogger::LOGGER_* $type): self`](#setType) +* [`getExtra(): callable|string|null`](#getExtra) +* [`setExtra((null|callable|string) $extra): self`](#setExtra) +* [`getLevel(): MadelineProtoLogger::LEVEL_*`](#getLevel) +* [`setLevel(MadelineProtoLogger::LEVEL_* $level): self`](#setLevel) +* [`getMaxSize(): int`](#getMaxSize) +* [`setMaxSize(int $maxSize): self`](#setMaxSize) + +## Methods: +### `__construct()` + + + + + +### `getType(): MadelineProtoLogger::LOGGER_*` + +Get $type Logger type. + + +#### See also: +* `MadelineProtoLogger::LOGGER_*` + + + + +### `setType(MadelineProtoLogger::LOGGER_* $type): self` + +Set $type Logger type. + + +Parameters: + +* `$type`: `MadelineProtoLogger::LOGGER_*` $type Logger type. + + +#### See also: +* `MadelineProtoLogger::LOGGER_*` + + + + +### `getExtra(): callable|string|null` + +Get extra parameter for logger. + + + +### `setExtra((null|callable|string) $extra): self` + +Set extra parameter for logger. + + +Parameters: + +* `$extra`: `(null|callable|string)` Extra parameter for logger. + + + +### `getLevel(): MadelineProtoLogger::LEVEL_*` + +Get logging level. + + +#### See also: +* `MadelineProtoLogger::LEVEL_*` + + + + +### `setLevel(MadelineProtoLogger::LEVEL_* $level): self` + +Set logging level. + + +Parameters: + +* `$level`: `MadelineProtoLogger::LEVEL_*` Logging level. + + +#### See also: +* `MadelineProtoLogger::LEVEL_*` + + + + +### `getMaxSize(): int` + +Get maximum filesize for logger, in case of file logging. + + + +### `setMaxSize(int $maxSize): self` + +Set maximum filesize for logger, in case of file logging. + + +Parameters: + +* `$maxSize`: `int` Maximum filesize for logger, in case of file logging. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/Peer.md b/docs/PHP/danog/MadelineProto/Settings/Peer.md new file mode 100644 index 0000000000..438e2a6c74 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/Peer.md @@ -0,0 +1,80 @@ +--- +title: "danog\\MadelineProto\\Settings\\Peer: Peer database settings." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\Peer` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Peer database settings. + + + + +## Method list: +* [`getFullInfoCacheTime(): int`](#getFullInfoCacheTime) +* [`setFullInfoCacheTime(int $fullInfoCacheTime): self`](#setFullInfoCacheTime) +* [`getFullFetch(): bool`](#getFullFetch) +* [`setFullFetch(bool $fullFetch): self`](#setFullFetch) +* [`getCacheAllPeersOnStartup(): bool`](#getCacheAllPeersOnStartup) +* [`setCacheAllPeersOnStartup(bool $cacheAllPeersOnStartup): self`](#setCacheAllPeersOnStartup) + +## Methods: +### `getFullInfoCacheTime(): int` + +Get cache time for full peer information (seconds). + + + +### `setFullInfoCacheTime(int $fullInfoCacheTime): self` + +Set cache time for full peer information (seconds). + + +Parameters: + +* `$fullInfoCacheTime`: `int` Cache time for full peer information (seconds). + + + +### `getFullFetch(): bool` + +Get should madeline fetch the full member list of every group it meets? + + + +### `setFullFetch(bool $fullFetch): self` + +Set should madeline fetch the full member list of every group it meets? + + +Parameters: + +* `$fullFetch`: `bool` Should madeline fetch the full member list of every group it meets? + + + +### `getCacheAllPeersOnStartup(): bool` + +Get whether to cache all peers on startup for userbots. + + + +### `setCacheAllPeersOnStartup(bool $cacheAllPeersOnStartup): self` + +Set whether to cache all peers on startup for userbots. + + +Parameters: + +* `$cacheAllPeersOnStartup`: `bool` Whether to cache all peers on startup for userbots. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/Pwr.md b/docs/PHP/danog/MadelineProto/Settings/Pwr.md new file mode 100644 index 0000000000..f81f97f6ad --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/Pwr.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\Settings\\Pwr: PWRTelegram settings." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\Pwr` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +PWRTelegram settings. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/RPC.md b/docs/PHP/danog/MadelineProto/Settings/RPC.md new file mode 100644 index 0000000000..414b581de6 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/RPC.md @@ -0,0 +1,101 @@ +--- +title: "danog\\MadelineProto\\Settings\\RPC: RPC settings." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\RPC` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +RPC settings. + + + + +## Method list: +* [`getRpcDropTimeout(): int`](#getRpcDropTimeout) +* [`setRpcDropTimeout(int $rpcDropTimeout): self`](#setRpcDropTimeout) +* [`getRpcResendTimeout(): int`](#getRpcResendTimeout) +* [`setRpcResendTimeout(int $rpcResendTimeout): self`](#setRpcResendTimeout) +* [`getFloodTimeout(): int`](#getFloodTimeout) +* [`setFloodTimeout(int $floodTimeout): self`](#setFloodTimeout) +* [`getGzipEncodeIfGt(): int`](#getGzipEncodeIfGt) +* [`setGzipEncodeIfGt(int $gzipEncodeIfGt): self`](#setGzipEncodeIfGt) + +## Methods: +### `getRpcDropTimeout(): int` + +Get RPC drop timeout. + + + +### `setRpcDropTimeout(int $rpcDropTimeout): self` + +Set RPC drop timeout. + + +Parameters: + +* `$rpcDropTimeout`: `int` RPC timeout + + + +### `getRpcResendTimeout(): int` + +Get RPC resend timeout. + + + +### `setRpcResendTimeout(int $rpcResendTimeout): self` + +Set RPC resend timeout. + + +Parameters: + +* `$rpcResendTimeout`: `int` RPC timeout. + + + +### `getFloodTimeout(): int` + +Get flood timeout: if FLOOD_WAIT_ time is bigger than this, throw exception instead of waiting asynchronously. + + + +### `setFloodTimeout(int $floodTimeout): self` + +Set flood timeout: if FLOOD_WAIT_ time is bigger than this, throw exception instead of waiting asynchronously. + +Must be bigger than 5. + + +Parameters: + +* `$floodTimeout`: `int` Flood timeout: if FLOOD_WAIT_ time is bigger than this, throw exception instead of waiting asynchronously + + + +### `getGzipEncodeIfGt(): int` + +Get encode payload with GZIP if bigger than. + + + +### `setGzipEncodeIfGt(int $gzipEncodeIfGt): self` + +Set encode payload with GZIP if bigger than. + + +Parameters: + +* `$gzipEncodeIfGt`: `int` Encode payload with GZIP if bigger than + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/SecretChats.md b/docs/PHP/danog/MadelineProto/Settings/SecretChats.md new file mode 100644 index 0000000000..70b3ee6e03 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/SecretChats.md @@ -0,0 +1,42 @@ +--- +title: "danog\\MadelineProto\\Settings\\SecretChats: Secret chat settings." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\SecretChats` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Secret chat settings. + + + + +## Method list: +* [`getAccept(): (bool|array)`](#getAccept) +* [`setAccept((bool|array) $accept): self`](#setAccept) + +## Methods: +### `getAccept(): (bool|array)` + +Get boolean or array of IDs. + + + +### `setAccept((bool|array) $accept): self` + +Set boolean or array of IDs. + + +Parameters: + +* `$accept`: `(bool|array)` Boolean or array of IDs + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/Serialization.md b/docs/PHP/danog/MadelineProto/Settings/Serialization.md new file mode 100644 index 0000000000..441c7d1b0e --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/Serialization.md @@ -0,0 +1,42 @@ +--- +title: "danog\\MadelineProto\\Settings\\Serialization: Serialization settings." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\Serialization` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Serialization settings. + + + + +## Method list: +* [`getInterval(): int`](#getInterval) +* [`setInterval(int $interval): self`](#setInterval) + +## Methods: +### `getInterval(): int` + +Get serialization interval, in seconds. + + + +### `setInterval(int $interval): self` + +Set serialization interval, in seconds. + + +Parameters: + +* `$interval`: `int` Serialization interval, in seconds (minimum 10 seconds). + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/TLSchema.md b/docs/PHP/danog/MadelineProto/Settings/TLSchema.md new file mode 100644 index 0000000000..d0bf788ca5 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/TLSchema.md @@ -0,0 +1,151 @@ +--- +title: "danog\\MadelineProto\\Settings\\TLSchema: TL schema settings." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\TLSchema` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +TL schema settings. + + + + +## Method list: +* [`needsUpgrade(): bool`](#needsUpgrade) +* [`upgrade(): void`](#upgrade) +* [`getLayer(): int`](#getLayer) +* [`setLayer(int $layer): self`](#setLayer) +* [`getMTProtoSchema(): string`](#getMTProtoSchema) +* [`setMTProtoSchema(string $MTProtoSchema): self`](#setMTProtoSchema) +* [`getAPISchema(): string`](#getAPISchema) +* [`setAPISchema(string $APISchema): self`](#setAPISchema) +* [`getSecretSchema(): string`](#getSecretSchema) +* [`setSecretSchema(string $secretSchema): self`](#setSecretSchema) +* [`getOther(): array`](#getOther) +* [`setOther(array $other): self`](#setOther) +* [`getFuzzMode(): bool`](#getFuzzMode) +* [`setFuzzMode(bool $fuzz): self`](#setFuzzMode) + +## Methods: +### `needsUpgrade(): bool` + +Returns whether the TL parser should re-parse the TL schemes. + + + +### `upgrade(): void` + +Signal that scheme was re-parsed. + + + +### `getLayer(): int` + +Get TL layer version. + + + +### `setLayer(int $layer): self` + +Set TL layer version. + + +Parameters: + +* `$layer`: `int` TL layer version. + + + +### `getMTProtoSchema(): string` + +Get MTProto schema path. + + + +### `setMTProtoSchema(string $MTProtoSchema): self` + +Set MTProto schema path. + + +Parameters: + +* `$MTProtoSchema`: `string` MTProto schema path. + + + +### `getAPISchema(): string` + +Get API schema path. + + + +### `setAPISchema(string $APISchema): self` + +Set API schema path. + + +Parameters: + +* `$APISchema`: `string` API schema path. + + + +### `getSecretSchema(): string` + +Get secret schema path. + + + +### `setSecretSchema(string $secretSchema): self` + +Set secret schema path. + + +Parameters: + +* `$secretSchema`: `string` Secret schema path. + + + +### `getOther(): array` + +Get the value of other. + + + +### `setOther(array $other): self` + +Set the value of other. + + +Parameters: + +* `$other`: `array` + + + +### `getFuzzMode(): bool` + +Get the value of the fuzz mode. + + + +### `setFuzzMode(bool $fuzz): self` + +Set the value of the fuzz mode. + + +Parameters: + +* `$fuzz`: `bool` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/Templates.md b/docs/PHP/danog/MadelineProto/Settings/Templates.md new file mode 100644 index 0000000000..4019de089a --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/Templates.md @@ -0,0 +1,42 @@ +--- +title: "danog\\MadelineProto\\Settings\\Templates: Web and CLI template settings for login." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\Templates` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Web and CLI template settings for login. + + + + +## Method list: +* [`getHtmlTemplate(): string`](#getHtmlTemplate) +* [`setHtmlTemplate(string $htmlTemplate): self`](#setHtmlTemplate) + +## Methods: +### `getHtmlTemplate(): string` + +Get web template used for querying app information. + + + +### `setHtmlTemplate(string $htmlTemplate): self` + +Set web template used for querying app information. + + +Parameters: + +* `$htmlTemplate`: `string` Web template used for querying app information. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Settings/VoIP.md b/docs/PHP/danog/MadelineProto/Settings/VoIP.md new file mode 100644 index 0000000000..65d50e14f1 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Settings/VoIP.md @@ -0,0 +1,19 @@ +--- +title: "danog\\MadelineProto\\Settings\\VoIP: VoIP settings." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Settings\VoIP` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +VoIP settings. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Shutdown.md b/docs/PHP/danog/MadelineProto/Shutdown.md new file mode 100644 index 0000000000..c66f3eeda6 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Shutdown.md @@ -0,0 +1,59 @@ +--- +title: "danog\\MadelineProto\\Shutdown: Class that controls script shutdown." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Shutdown` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Class that controls script shutdown. + + + + +## Method list: +* [`init(): void`](#init) +* [`addCallback(callable $callback, (null|string) $id = NULL): (int|string)`](#addCallback) +* [`removeCallback((null|string|int) $id): bool`](#removeCallback) + +## Methods: +### `init(): void` + +Register shutdown function. + + + +### `addCallback(callable $callback, (null|string) $id = NULL): (int|string)` + +Add a callback for script shutdown. + + +Parameters: + +* `$callback`: `callable` The callback to set +* `$id`: `(null|string)` The optional callback ID + + +Return value: The callback ID + + +### `removeCallback((null|string|int) $id): bool` + +Remove a callback from the script shutdown callable list. + + +Parameters: + +* `$id`: `(null|string|int)` The optional callback ID + + +Return value: true if the callback was removed correctly, false otherwise + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/SimpleEventHandler.md b/docs/PHP/danog/MadelineProto/SimpleEventHandler.md new file mode 100644 index 0000000000..538c43a9f6 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/SimpleEventHandler.md @@ -0,0 +1,3318 @@ +--- +title: "danog\\MadelineProto\\SimpleEventHandler: Simple event handler class: by extending this class, you can use filters, crons and the simplified event handler API." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\SimpleEventHandler` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Simple event handler class: by extending this class, you can use filters, crons and the simplified event handler API. + + + +## Properties +* `$auth`: `\danog\MadelineProto\Namespace\Auth` +* `$account`: `\danog\MadelineProto\Namespace\Account` +* `$users`: `\danog\MadelineProto\Namespace\Users` +* `$contacts`: `\danog\MadelineProto\Namespace\Contacts` +* `$messages`: `\danog\MadelineProto\Namespace\Messages` +* `$updates`: `\danog\MadelineProto\Namespace\Updates` +* `$photos`: `\danog\MadelineProto\Namespace\Photos` +* `$upload`: `\danog\MadelineProto\Namespace\Upload` +* `$help`: `\danog\MadelineProto\Namespace\Help` +* `$channels`: `\danog\MadelineProto\Namespace\Channels` +* `$bots`: `\danog\MadelineProto\Namespace\Bots` +* `$payments`: `\danog\MadelineProto\Namespace\Payments` +* `$stickers`: `\danog\MadelineProto\Namespace\Stickers` +* `$phone`: `\danog\MadelineProto\Namespace\Phone` +* `$langpack`: `\danog\MadelineProto\Namespace\Langpack` +* `$folders`: `\danog\MadelineProto\Namespace\Folders` +* `$stats`: `\danog\MadelineProto\Namespace\Stats` +* `$chatlists`: `\danog\MadelineProto\Namespace\Chatlists` +* `$stories`: `\danog\MadelineProto\Namespace\Stories` +* `$premium`: `\danog\MadelineProto\Namespace\Premium` +* `$smsjobs`: `\danog\MadelineProto\Namespace\Smsjobs` +* `$fragment`: `\danog\MadelineProto\Namespace\Fragment` + +## Method list: +* [`startAndLoop(string $session, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): void`](#startAndLoop) +* [`startAndLoopBot(string $session, string $token, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): void`](#startAndLoopBot) +* [`getPeriodicLoop(string $name): ?\danog\Loop\PeriodicLoop`](#getPeriodicLoop) +* [`getPeriodicLoops(): array`](#getPeriodicLoops) +* [`getReportPeers(): (string|int|array<(string|int)>)`](#getReportPeers) +* [`getPluginPaths(): (non-empty-string|non-empty-list|null)`](#getPluginPaths) +* [`getPlugins(): array>`](#getPlugins) +* [`MTProtoToBotAPI(array $data): array`](#MTProtoToBotAPI) +* [`MTProtoToTd(mixed $params): array`](#MTProtoToTd) +* [`MTProtoToTdcli(mixed $params): array`](#MTProtoToTdcli) +* [`acceptCall(int $id): void`](#acceptCall) +* [`acceptSecretChat(array $params): void`](#acceptSecretChat) +* [`arr(mixed ...$params): array`](#arr) +* [`base64urlDecode(string $data): string`](#base64urlDecode) +* [`base64urlEncode(string $data): string`](#base64urlEncode) +* [`botAPIToMTProto(array $arguments): array`](#botAPIToMTProto) +* [`botLogin(string $token): ?array`](#botLogin) +* [`broadcastCustom(\danog\MadelineProto\Broadcast\Action $action, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, (float|null) $delay = NULL): int`](#broadcastCustom) +* [`broadcastForwardMessages(mixed $from_peer, list $message_ids, bool $drop_author = false, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int`](#broadcastForwardMessages) +* [`broadcastMessages(array $messages, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int`](#broadcastMessages) +* [`callFork(\Generator|\Amp\Future|callable $callable, mixed ...$args): \Amp\Future`](#callFork) +* [`callGetCurrent(int $id): \danog\MadelineProto\RemoteUrl|\danog\MadelineProto\LocalFile|string|null`](#callGetCurrent) +* [`callPlay(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $file): void`](#callPlay) +* [`callPlayOnHold(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream ...$files): void`](#callPlayOnHold) +* [`callSetOutput(int $id, \danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream $file): void`](#callSetOutput) +* [`canConvertOgg(): bool`](#canConvertOgg) +* [`canUseFFmpeg(?\Amp\Cancellation $cancellation = NULL): bool`](#canUseFFmpeg) +* [`cancelBroadcast(integer $id): void`](#cancelBroadcast) +* [`closeConnection(string $message): void`](#closeConnection) +* [`complete2faLogin(string $password): array`](#complete2faLogin) +* [`completePhoneLogin(string $code): array`](#completePhoneLogin) +* [`completeSignup(string $first_name, string $last_name = ''): array`](#completeSignup) +* [`discardCall(int $id, \danog\MadelineProto\VoIP\DiscardReason $reason = \danog\MadelineProto\VoIP\DiscardReason::HANGUP, int<1, 5> $rating = NULL, string $comment = NULL): void`](#discardCall) +* [`discardSecretChat(int $chat): void`](#discardSecretChat) +* [`downloadServer(string $session): void`](#downloadServer) +* [`downloadToBrowser((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, (null|callable) $cb = NULL, (null|int) $size = NULL, (null|string) $name = NULL, (null|string) $mime = NULL, ?\Amp\Cancellation $cancellation = NULL): void`](#downloadToBrowser) +* [`downloadToCallable(mixed $messageMedia, (callable|\danog\MadelineProto\FileCallbackInterface) $callable, callable $cb = NULL, bool $seekable = true, int $offset = 0, int $end = -1, int $part_size = NULL, ?\Amp\Cancellation $cancellation = NULL): void`](#downloadToCallable) +* [`downloadToDir(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $dir, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string`](#downloadToDir) +* [`downloadToFile(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $file, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string`](#downloadToFile) +* [`downloadToResponse((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, \Amp\Http\Server\Request $request, callable $cb = NULL, (null|int) $size = NULL, (null|string) $mime = NULL, (null|string) $name = NULL, ?\Amp\Cancellation $cancellation = NULL): \Amp\Http\Server\Response`](#downloadToResponse) +* [`downloadToReturnedStream(mixed $messageMedia, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream`](#downloadToReturnedStream) +* [`downloadToStream(mixed $messageMedia, (mixed|\danog\MadelineProto\FileCallbackInterface|resource|\Amp\ByteStream\WritableStream) $stream, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): void`](#downloadToStream) +* [`echo(string $string): void`](#echo) +* [`end(array $what): T`](#end) +* [`entitiesToHtml(string $message, list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})> $entities, bool $allowTelegramTags = false): string`](#entitiesToHtml) +* [`exportAuthorization(): array{0: (int|string), 1: string}`](#exportAuthorization) +* [`extractBotAPIFile(array $info): ?array`](#extractBotAPIFile) +* [`extractMessage(array $updates): array`](#extractMessage) +* [`extractMessageId(array $updates): int`](#extractMessageId) +* [`extractMessageUpdate(array $updates): array`](#extractMessageUpdate) +* [`extractUpdates(array $updates): array`](#extractUpdates) +* [`fileGetContents(string $url): string`](#fileGetContents) +* [`flock(string $file, integer $operation, float $polling = 0.1, ?\Amp\Cancellation $token = NULL, ?\Closure $failureCb = NULL): ($token is null ? Closure(): void : (Closure(): void | null))`](#flock) +* [`fullChatLastUpdated(mixed $id): int`](#fullChatLastUpdated) +* [`fullGetSelf(): array|false`](#fullGetSelf) +* [`genVectorHash(array $longs): string`](#genVectorHash) +* [`getAdminIds(): array`](#getAdminIds) +* [`getAllCalls(): array`](#getAllCalls) +* [`getAllMethods(): array`](#getAllMethods) +* [`getAuthorization(): (\danog\MadelineProto\API::NOT_LOGGED_IN|\danog\MadelineProto\API::WAITING_CODE|\danog\MadelineProto\API::WAITING_SIGNUP|\danog\MadelineProto\API::WAITING_PASSWORD|\danog\MadelineProto\API::LOGGED_IN|API::LOGGED_OUT)`](#getAuthorization) +* [`getBroadcastProgress(integer $id): ?\danog\MadelineProto\Broadcast\Progress`](#getBroadcastProgress) +* [`getCachedConfig(): array`](#getCachedConfig) +* [`getCall(int $id): ?\danog\MadelineProto\VoIP`](#getCall) +* [`getCallByPeer(int $userId): ?\danog\MadelineProto\VoIP`](#getCallByPeer) +* [`getCallState(int $id): ?\danog\MadelineProto\VoIP\CallState`](#getCallState) +* [`getCdnConfig(): void`](#getCdnConfig) +* [`getConfig(array $config = []): array`](#getConfig) +* [`getDNSClient(): \Amp\Dns\DnsResolver`](#getDNSClient) +* [`getDhConfig(): array`](#getDhConfig) +* [`getDialogIds(): list`](#getDialogIds) +* [`getDownloadInfo(mixed $messageMedia): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string, thumb_size?: string}`](#getDownloadInfo) +* [`getDownloadLink(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|array|string $media, ?string $scriptUrl = NULL, ?int $size = NULL, ?string $name = NULL, ?string $mime = NULL): string`](#getDownloadLink) +* [`getEventHandler((class-string|null) $class = NULL): (T|\danog\MadelineProto\Ipc\EventHandlerProxy|\__PHP_Incomplete_Class|null)`](#getEventHandler) +* [`getExtensionFromLocation(mixed $location, string $default): string`](#getExtensionFromLocation) +* [`getExtensionFromMime(string $mime): string`](#getExtensionFromMime) +* [`getFileInfo(mixed $constructor): array`](#getFileInfo) +* [`getFullDialogs(): array`](#getFullDialogs) +* [`getFullInfo(mixed $id): array`](#getFullInfo) +* [`getHTTPClient(): \Amp\Http\Client\HttpClient`](#getHTTPClient) +* [`getHint(): string`](#getHint) +* [`getId(mixed $id): int`](#getId) +* [`getInfo(mixed $id, \danog\MadelineProto\API::INFO_TYPE_* $type = \danog\MadelineProto\API::INFO_TYPE_ALL): (\$type is \danog\MadelineProto\API::INFO_TYPE_ALL ? array{User?: array, Chat?: array, bot_api_id: int, user_id?: int, chat_id?: int, channel_id?: int, type: string} : ($type is API::INFO_TYPE_TYPE ? string : ($type is \danog\MadelineProto\API::INFO_TYPE_ID ? int : (array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int} | array{_: string, user_id?: int, access_hash?: int, min?: bool} | array{_: string, channel_id: int, access_hash: int, min: bool}))))`](#getInfo) +* [`getLogger(): \danog\MadelineProto\Logger`](#getLogger) +* [`getMaps(): ?int`](#getMaps) +* [`getMaxMaps(): ?int`](#getMaxMaps) +* [`getMethodNamespaces(): array`](#getMethodNamespaces) +* [`getMethodsNamespaced(): array`](#getMethodsNamespaced) +* [`getMimeFromBuffer(string $buffer): string`](#getMimeFromBuffer) +* [`getMimeFromExtension(string $extension, string $default): string`](#getMimeFromExtension) +* [`getMimeFromFile(string $file): string`](#getMimeFromFile) +* [`getPlugin(class-string $class): \danog\MadelineProto\PluginEventHandler|\danog\MadelineProto\Ipc\EventHandlerProxy|null`](#getPlugin) +* [`getPropicInfo(mixed $data): ?\danog\MadelineProto\EventHandler\Media\Photo`](#getPropicInfo) +* [`getPsrLogger(): \Psr\Log\LoggerInterface`](#getPsrLogger) +* [`getPwrChat(mixed $id, bool $fullfetch = true): array`](#getPwrChat) +* [`getSecretChat((array|int) $chat): \danog\MadelineProto\SecretChats\SecretChat`](#getSecretChat) +* [`getSecretMessage(integer $chatId, integer $randomId): \danog\MadelineProto\EventHandler\Message\SecretMessage`](#getSecretMessage) +* [`getSelf(): array|false`](#getSelf) +* [`getSessionName(): string`](#getSessionName) +* [`getSettings(): \danog\MadelineProto\Settings`](#getSettings) +* [`getSponsoredMessages((int|string|array) $peer): ?array`](#getSponsoredMessages) +* [`getStream(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL, ?int $size = NULL): \Amp\ByteStream\ReadableStream`](#getStream) +* [`getStreamPipe(): \Amp\ByteStream\Pipe`](#getStreamPipe) +* [`getTL(): \danog\MadelineProto\TL\TLInterface`](#getTL) +* [`getType(mixed $id): \danog\MadelineProto\API::PEER_TYPE_*`](#getType) +* [`getUpdates(array{offset?: int, limit?: int, timeout?: float} $params = []): list`](#getUpdates) +* [`getWebMessage(string $message): string`](#getWebMessage) +* [`getWebWarnings(): string`](#getWebWarnings) +* [`hasAdmins(): bool`](#hasAdmins) +* [`hasEventHandler(): bool`](#hasEventHandler) +* [`hasPlugin(class-string<\danog\MadelineProto\EventHandler> $class): bool`](#hasPlugin) +* [`hasReportPeers(): bool`](#hasReportPeers) +* [`hasSecretChat((array|int) $chat): bool`](#hasSecretChat) +* [`htmlEscape(string $what): string`](#htmlEscape) +* [`htmlToMessageEntities(string $html): \danog\MadelineProto\TextEntities`](#htmlToMessageEntities) +* [`importAuthorization(array $authorization, int $mainDcID): array`](#importAuthorization) +* [`inflateStripped(string $stripped): string`](#inflateStripped) +* [`initSelfRestart(): void`](#initSelfRestart) +* [`isAltervista(): bool`](#isAltervista) +* [`isArrayOrAlike(mixed $var): bool`](#isArrayOrAlike) +* [`isBot(mixed $peer): bool`](#isBot) +* [`isForum(mixed $peer): bool`](#isForum) +* [`isIpc(): bool`](#isIpc) +* [`isIpcWorker(): bool`](#isIpcWorker) +* [`isPlayPaused(int $id): bool`](#isPlayPaused) +* [`isPremium(): bool`](#isPremium) +* [`isSelfBot(): bool`](#isSelfBot) +* [`isSelfUser(): bool`](#isSelfUser) +* [`isTestMode(): boolean`](#isTestMode) +* [`logger(mixed $param, int $level = \danog\MadelineProto\Logger::NOTICE, string $file = ''): void`](#logger) +* [`logout(): void`](#logout) +* [`markdownCodeEscape(string $what): string`](#markdownCodeEscape) +* [`markdownCodeblockEscape(string $what): string`](#markdownCodeblockEscape) +* [`markdownEscape(string $what): string`](#markdownEscape) +* [`markdownToMessageEntities(string $markdown): \danog\MadelineProto\TextEntities`](#markdownToMessageEntities) +* [`markdownUrlEscape(string $what): string`](#markdownUrlEscape) +* [`mbStrSplit(string $text, integer $length): array`](#mbStrSplit) +* [`mbStrlen(string $text): int`](#mbStrlen) +* [`mbSubstr(string $text, integer $offset, (null|int) $length = NULL): string`](#mbSubstr) +* [`openBuffered(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL): Closure(int): ?string`](#openBuffered) +* [`openFileAppendOnly(string $path): \Amp\File\File`](#openFileAppendOnly) +* [`packDouble(float $value): string`](#packDouble) +* [`packSignedInt(integer $value): string`](#packSignedInt) +* [`packSignedLong(int $value): string`](#packSignedLong) +* [`packUnsignedInt(int $value): string`](#packUnsignedInt) +* [`pausePlay(int $id): void`](#pausePlay) +* [`peerIsset(mixed $id): bool`](#peerIsset) +* [`phoneLogin(string $number, integer $sms_type = 5): array`](#phoneLogin) +* [`posmod(int $a, int $b): int`](#posmod) +* [`processDownloadServerPing(string $path, string $payload): void`](#processDownloadServerPing) +* [`qrLogin(): ?\danog\MadelineProto\TL\Types\LoginQrCode`](#qrLogin) +* [`random(integer $length): string`](#random) +* [`randomInt(integer $modulus = 0): int`](#randomInt) +* [`readLine(string $prompt = '', ?\Amp\Cancellation $cancel = NULL): string`](#readLine) +* [`refreshFullPeerCache(mixed $id): void`](#refreshFullPeerCache) +* [`refreshPeerCache(mixed ...$ids): void`](#refreshPeerCache) +* [`report(string $message, string $parseMode = ''): void`](#report) +* [`reportMemoryProfile(): void`](#reportMemoryProfile) +* [`requestCall(mixed $user): \danog\MadelineProto\VoIP`](#requestCall) +* [`requestSecretChat(mixed $user): int`](#requestSecretChat) +* [`resetUpdateState(): void`](#resetUpdateState) +* [`restart(): void`](#restart) +* [`resumePlay(int $id): void`](#resumePlay) +* [`rethrow(Throwable $e): void`](#rethrow) +* [`rleDecode(string $string): string`](#rleDecode) +* [`rleEncode(string $string): string`](#rleEncode) +* [`sendAudio((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendAudio) +* [`sendCustomEvent(mixed $payload): void`](#sendCustomEvent) +* [`sendDocument((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendDocument) +* [`sendDocumentPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendDocumentPhoto) +* [`sendGif((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, ?int $duration = NULL, ?int $width = NULL, ?int $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendGif) +* [`sendMessage((integer|string) $peer, string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendMessage) +* [`sendMessageToAdmins(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, ?\Amp\Cancellation $cancellation = NULL): list<\danog\MadelineProto\EventHandler\Message>`](#sendMessageToAdmins) +* [`sendPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendPhoto) +* [`sendSticker((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', array $stickerSet = [ '_' => 'inputStickerSetEmpty',], ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendSticker) +* [`sendVideo((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendVideo) +* [`sendVoice((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message`](#sendVoice) +* [`setNoop(): void`](#setNoop) +* [`setReportPeers((int|string|array<(int|string)>) $userOrId): void`](#setReportPeers) +* [`setWebhook(string $webhookUrl): void`](#setWebhook) +* [`skipPlay(int $id): void`](#skipPlay) +* [`sleep(float $time): void`](#sleep) +* [`start(): array`](#start) +* [`stop(): void`](#stop) +* [`stopPlay(int $id): void`](#stopPlay) +* [`stringToStream(string $str): \Amp\ByteStream\ReadableBuffer`](#stringToStream) +* [`subscribeToUpdates(mixed $channel): bool`](#subscribeToUpdates) +* [`tdToMTProto(array $params): array`](#tdToMTProto) +* [`tdToTdcli(mixed $params): array`](#tdToTdcli) +* [`tdcliToTd(mixed $params, array $key = NULL): array`](#tdcliToTd) +* [`testFibers(int $fiberCount = 100000): array{maxFibers: int, realMemoryMb: int, maps: ?int, maxMaps: ?int}`](#testFibers) +* [`toCamelCase(string $input): string`](#toCamelCase) +* [`toSnakeCase(string $input): string`](#toSnakeCase) +* [`unpackDouble(string $value): float`](#unpackDouble) +* [`unpackFileId(string $fileId): array`](#unpackFileId) +* [`unpackSignedInt(string $value): int`](#unpackSignedInt) +* [`unpackSignedLong(string $value): int`](#unpackSignedLong) +* [`unpackSignedLongString((string|int|array) $value): string`](#unpackSignedLongString) +* [`unsetEventHandler(): void`](#unsetEventHandler) +* [`update2fa(array{password?: string, new_password?: string, email?: string, hint?: string} $params): void`](#update2fa) +* [`updateSettings(\danog\MadelineProto\SettingsAbstract $settings): void`](#updateSettings) +* [`upload((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|string|array|resource) $file, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#upload) +* [`uploadEncrypted((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|string|array|resource) $file, string $fileName = '', callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadEncrypted) +* [`uploadFromCallable(callable(int, int, ?Cancellation): strin) $callable, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable(float, float, float): voi) $cb = NULL, boolean $seekable = true, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromCallable) +* [`uploadFromStream(mixed $stream, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromStream) +* [`uploadFromTgfile(mixed $media, callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromTgfile) +* [`uploadFromUrl((string|\danog\MadelineProto\FileCallbackInterface) $url, integer $size = 0, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array`](#uploadFromUrl) +* [`validateEventHandlerClass(class-string<\danog\MadelineProto\EventHandler> $class): list<\danog\MadelineProto\EventHandlerIssue>`](#validateEventHandlerClass) +* [`viewSponsoredMessage((int|array) $peer, (string|array{random_id: string}) $message): bool`](#viewSponsoredMessage) +* [`wrapMedia(array $media, bool $protected = false): ?\danog\MadelineProto\EventHandler\Media`](#wrapMedia) +* [`wrapMessage(array $message, bool $scheduled = false): ?\danog\MadelineProto\EventHandler\AbstractMessage`](#wrapMessage) +* [`wrapPin(array $message): ?\danog\MadelineProto\EventHandler\Pinned`](#wrapPin) +* [`wrapUpdate(array $update): ?\danog\MadelineProto\EventHandler\Update`](#wrapUpdate) +* [`initDbProperties(\danog\AsyncOrm\Settings $settings, string $tablePrefix): void`](#initDbProperties) +* [`saveDbProperties(): void`](#saveDbProperties) + +## Methods: +### `startAndLoop(string $session, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): void` + +Start MadelineProto and the event handler. + +Also initializes error reporting, catching and reporting all errors surfacing from the event loop. + + +Parameters: + +* `$session`: `string` Session name +* `$settings`: `?\danog\MadelineProto\SettingsAbstract` Settings + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` + + + + +### `startAndLoopBot(string $session, string $token, ?\danog\MadelineProto\SettingsAbstract $settings = NULL): void` + +Start MadelineProto as a bot and the event handler. + +Also initializes error reporting, catching and reporting all errors surfacing from the event loop. + + +Parameters: + +* `$session`: `string` Session name +* `$token`: `string` Bot token +* `$settings`: `?\danog\MadelineProto\SettingsAbstract` Settings + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` + + + + +### `getPeriodicLoop(string $name): ?\danog\Loop\PeriodicLoop` + +Obtain a PeriodicLoop instance created by the Cron attribute. + + +Parameters: + +* `$name`: `string` Method name + + +#### See also: +* `\danog\Loop\PeriodicLoop` + + + + +### `getPeriodicLoops(): array` + +Obtain all PeriodicLoop instances created by the Cron attribute. + + +#### See also: +* `\danog\Loop\PeriodicLoop` + + + + +### `getReportPeers(): (string|int|array<(string|int)>)` + +Get peers where to send error reports. + + + +### `getPluginPaths(): (non-empty-string|non-empty-list|null)` + +Obtain a path or a list of paths that will be recursively searched for plugins. + +Plugin filenames end with Plugin.php, and will be included automatically. + + +#### See also: +* `non-empty-string` +* `non-empty-list` + + + + +### `getPlugins(): array>` + +Obtain a list of plugin event handlers to use, in addition with those found by getPluginPath. + + + +### `MTProtoToBotAPI(array $data): array` + +Convert MTProto parameters to bot API parameters. + + +Parameters: + +* `$data`: `array` Data + + + +### `MTProtoToTd(mixed $params): array` + +MTProto to TD params. + + +Parameters: + +* `$params`: `mixed` Params + + + +### `MTProtoToTdcli(mixed $params): array` + +MTProto to TDCLI params. + + +Parameters: + +* `$params`: `mixed` Params + + + +### `acceptCall(int $id): void` + +Accept call. + + +Parameters: + +* `$id`: `int` + + + +### `acceptSecretChat(array $params): void` + +Accept secret chat. + + +Parameters: + +* `$params`: `array` Secret chat ID + + + +### `arr(mixed ...$params): array` + +Create array. + + +Parameters: + +* `...$params`: `mixed` Params + + + +### `base64urlDecode(string $data): string` + +base64URL decode. + + +Parameters: + +* `$data`: `string` Data to decode + + + +### `base64urlEncode(string $data): string` + +Base64URL encode. + + +Parameters: + +* `$data`: `string` Data to encode + + + +### `botAPIToMTProto(array $arguments): array` + +Convert bot API parameters to MTProto parameters. + + +Parameters: + +* `$arguments`: `array` Arguments + + + +### `botLogin(string $token): ?array` + +Login as bot. + + +Parameters: + +* `$token`: `string` Bot token + + + +### `broadcastCustom(\danog\MadelineProto\Broadcast\Action $action, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, (float|null) $delay = NULL): int` + +Executes a custom broadcast action with all peers (users, chats, channels) of the bot. + +Will return an integer ID that can be used to: + +- Get the current broadcast progress with getBroadcastProgress +- Cancel the broadcast using cancelBroadcast + +Note that to avoid manually polling the progress, +MadelineProto will also periodically emit updateBroadcastProgress updates, +containing a Progress object for all broadcasts currently in-progress. + + +Parameters: + +* `$action`: `\danog\MadelineProto\Broadcast\Action` A custom, serializable Action class that will be called once for every peer. +* `$filter`: `?\danog\MadelineProto\Broadcast\Filter` +* `$delay`: `(float|null)` Number of seconds to wait between each peer. + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Action`: Interface that represents a broadcast action.](../../danog/MadelineProto/Broadcast/Action.html) +* [`\danog\MadelineProto\Broadcast\Filter`: Broadcast filter.](../../danog/MadelineProto/Broadcast/Filter.html) + + + + +### `broadcastForwardMessages(mixed $from_peer, list $message_ids, bool $drop_author = false, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int` + +Forwards a list of messages to all peers (users, chats, channels) of the bot. + +Will return an integer ID that can be used to: + +- Get the current broadcast progress with getBroadcastProgress +- Cancel the broadcast using cancelBroadcast + +Note that to avoid manually polling the progress, +MadelineProto will also periodically emit updateBroadcastProgress updates, +containing a Progress object for all broadcasts currently in-progress. + + +Parameters: + +* `$from_peer`: `mixed` Bot API ID or Update, from where to forward the messages. +* `$message_ids`: `list` IDs of the messages to forward. +* `$drop_author`: `bool` If true, will forward messages without quoting the original author. +* `$filter`: `?\danog\MadelineProto\Broadcast\Filter` +* `$pin`: `bool` Whether to also pin the last sent message. +* `$delay`: `(float|null)` Number of seconds to wait between each peer. + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Filter`: Broadcast filter.](../../danog/MadelineProto/Broadcast/Filter.html) + + + + +### `broadcastMessages(array $messages, ?\danog\MadelineProto\Broadcast\Filter $filter = NULL, bool $pin = false, (float|null) $delay = NULL): int` + +Sends a list of messages to all peers (users, chats, channels) of the bot. + +A simplified version of this method is also available: broadcastForwardMessages can work with pre-prepared messages. + +Will return an integer ID that can be used to: + +- Get the current broadcast progress with getBroadcastProgress +- Cancel the broadcast using cancelBroadcast + +Note that to avoid manually polling the progress, +MadelineProto will also periodically emit updateBroadcastProgress updates, +containing a Progress object for all broadcasts currently in-progress. + + +Parameters: + +* `$messages`: `array` The messages to send: an array of arrays, containing parameters to pass to messages.sendMessage. +* `$filter`: `?\danog\MadelineProto\Broadcast\Filter` +* `$pin`: `bool` Whether to also pin the last sent message. +* `$delay`: `(float|null)` Number of seconds to wait between each peer. + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Filter`: Broadcast filter.](../../danog/MadelineProto/Broadcast/Filter.html) + + + + +### `callFork(\Generator|\Amp\Future|callable $callable, mixed ...$args): \Amp\Future` + +Fork a new green thread and execute the passed function in the background. + + +Parameters: + +* `$callable`: `\Generator|\Amp\Future|callable` +* `...$args`: `mixed` Arguments forwarded to the function when forking the thread. + + +#### See also: +* `\Generator` +* `\Amp\Future` + + + + +### `callGetCurrent(int $id): \danog\MadelineProto\RemoteUrl|\danog\MadelineProto\LocalFile|string|null` + +Get the file that is currently being played. + +Will return a string with the object ID of the stream if we're currently playing a stream, otherwise returns the related LocalFile or RemoteUrl. + + +Parameters: + +* `$id`: `int` + + +#### See also: +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) + + + + +### `callPlay(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $file): void` + +Play file in call. + + +Parameters: + +* `$id`: `int` +* `$file`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` + + + + +### `callPlayOnHold(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream ...$files): void` + +Play files on hold in call. + + +Parameters: + +* `$id`: `int` +* `...$files`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` + + + + +### `callSetOutput(int $id, \danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream $file): void` + +Set output file or stream for incoming OPUS audio packets in a call. + +Will write an OGG OPUS stream to the specified file or stream. + + +Parameters: + +* `$id`: `int` +* `$file`: `\danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* `\Amp\ByteStream\WritableStream` + + + + +### `canConvertOgg(): bool` + +Whether we can convert any audio/video file to a VoIP OGG OPUS file, or the files must be preconverted using @libtgvoipbot. + + + +### `canUseFFmpeg(?\Amp\Cancellation $cancellation = NULL): bool` + +Whether we can convert any audio/video file using ffmpeg. + + +Parameters: + +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `cancelBroadcast(integer $id): void` + +Cancel a running broadcast. + + +Parameters: + +* `$id`: `integer` Broadcast ID + + + +### `closeConnection(string $message): void` + +Close connection with client, connected via web. + + +Parameters: + +* `$message`: `string` Message + + + +### `complete2faLogin(string $password): array` + +Complete 2FA login. + + +Parameters: + +* `$password`: `string` Password + + + +### `completePhoneLogin(string $code): array` + +Complet user login using login code. + + +Parameters: + +* `$code`: `string` Login code + + + +### `completeSignup(string $first_name, string $last_name = ''): array` + +Complete signup to Telegram. + + +Parameters: + +* `$first_name`: `string` First name +* `$last_name`: `string` Last name + + + +### `discardCall(int $id, \danog\MadelineProto\VoIP\DiscardReason $reason = \danog\MadelineProto\VoIP\DiscardReason::HANGUP, int<1, 5> $rating = NULL, string $comment = NULL): void` + +Discard call. + + +Parameters: + +* `$id`: `int` +* `$reason`: `\danog\MadelineProto\VoIP\DiscardReason` +* `$rating`: `int<1, 5>` Call rating in stars +* `$comment`: `string` Additional comment on call quality. + + +#### See also: +* [`\danog\MadelineProto\VoIP\DiscardReason`: Why was the call discarded?](../../danog/MadelineProto/VoIP/DiscardReason.html) + + + + +### `discardSecretChat(int $chat): void` + +Discard secret chat. + + +Parameters: + +* `$chat`: `int` Secret chat ID + + + +### `downloadServer(string $session): void` + +Downloads a file to the browser using the specified session file. + + +Parameters: + +* `$session`: `string` + + + +### `downloadToBrowser((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, (null|callable) $cb = NULL, (null|int) $size = NULL, (null|string) $name = NULL, (null|string) $mime = NULL, ?\Amp\Cancellation $cancellation = NULL): void` + +Download file to browser. + +Supports HEAD requests and content-ranges for parallel and resumed downloads. + + +Parameters: + +* `$messageMedia`: `(array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message)` File to download +* `$cb`: `(null|callable)` Status callback (can also use FileCallback) +* `$size`: `(null|int)` Size of file to download, required for bot API file IDs. +* `$name`: `(null|string)` Name of file to download, required for bot API file IDs. +* `$mime`: `(null|string)` MIME type of file to download, required for bot API file IDs. +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* `\Amp\Cancellation` + + + + +### `downloadToCallable(mixed $messageMedia, (callable|\danog\MadelineProto\FileCallbackInterface) $callable, callable $cb = NULL, bool $seekable = true, int $offset = 0, int $end = -1, int $part_size = NULL, ?\Amp\Cancellation $cancellation = NULL): void` + +Download file to callable. +The callable must accept two parameters: string $payload, int $offset +The callable will be called (possibly out of order, depending on the value of $seekable). + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$callable`: `(callable|\danog\MadelineProto\FileCallbackInterface)` Chunk callback +* `$cb`: `callable` Status callback +* `$seekable`: `bool` Whether the callable can be called out of order +* `$offset`: `int` Offset where to start downloading +* `$end`: `int` Offset where to stop downloading (inclusive) +* `$part_size`: `int` Size of each chunk +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` + + + + +### `downloadToDir(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $dir, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string` + +Download file to directory. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$dir`: `(string|\danog\MadelineProto\FileCallbackInterface)` Directory where to download the file +* `$cb`: `callable` Callback +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: Downloaded file name + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` +* `non-empty-string` + + + + +### `downloadToFile(mixed $messageMedia, (string|\danog\MadelineProto\FileCallbackInterface) $file, callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): non-empty-string` + +Download file. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$file`: `(string|\danog\MadelineProto\FileCallbackInterface)` Downloaded file path +* `$cb`: `callable` Callback +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: Downloaded file name + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` +* `non-empty-string` + + + + +### `downloadToResponse((array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message) $messageMedia, \Amp\Http\Server\Request $request, callable $cb = NULL, (null|int) $size = NULL, (null|string) $mime = NULL, (null|string) $name = NULL, ?\Amp\Cancellation $cancellation = NULL): \Amp\Http\Server\Response` + +Download file to amphp/http-server response. + +Supports HEAD requests and content-ranges for parallel and resumed downloads. + + +Parameters: + +* `$messageMedia`: `(array|string|\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message)` File to download +* `$request`: `\Amp\Http\Server\Request` Request +* `$cb`: `callable` Status callback (can also use FileCallback) +* `$size`: `(null|int)` Size of file to download, required for bot API file IDs. +* `$mime`: `(null|string)` MIME type of file to download, required for bot API file IDs. +* `$name`: `(null|string)` Name of file to download, required for bot API file IDs. +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* `\Amp\Http\Server\Request` +* `\Amp\Cancellation` +* `\Amp\Http\Server\Response` + + + + +### `downloadToReturnedStream(mixed $messageMedia, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): \Amp\ByteStream\ReadableStream` + +Download file to an amphp stream, returning it. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$cb`: `callable` Callback +* `$offset`: `int` Offset where to start downloading +* `$end`: `int` Offset where to end download +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` +* `\Amp\ByteStream\ReadableStream` + + + + +### `downloadToStream(mixed $messageMedia, (mixed|\danog\MadelineProto\FileCallbackInterface|resource|\Amp\ByteStream\WritableStream) $stream, callable $cb = NULL, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = NULL): void` + +Download file to stream. + + +Parameters: + +* `$messageMedia`: `mixed` File to download +* `$stream`: `(mixed|\danog\MadelineProto\FileCallbackInterface|resource|\Amp\ByteStream\WritableStream)` Stream where to download file +* `$cb`: `callable` Callback +* `$offset`: `int` Offset where to start downloading +* `$end`: `int` Offset where to end download +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `resource` +* `\Amp\ByteStream\WritableStream` +* `\Amp\Cancellation` + + + + +### `echo(string $string): void` + +Asynchronously write to stdout/browser. + + +Parameters: + +* `$string`: `string` Message to echo + + + +### `end(array $what): T` + +Get final element of array. + + +Parameters: + +* `$what`: `array` Array + + + +### `entitiesToHtml(string $message, list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})> $entities, bool $allowTelegramTags = false): string` + +Convert a message and a set of entities to HTML. + + +Parameters: + +* `$message`: `string` +* `$entities`: `list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})>` +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity`: Master class for message entities.](../../danog/MadelineProto/EventHandler/Message/Entities/MessageEntity.html) + + + + +### `exportAuthorization(): array{0: (int|string), 1: string}` + +Export authorization. + + + +### `extractBotAPIFile(array $info): ?array` + +Extract file info from bot API message. + + +Parameters: + +* `$info`: `array` Bot API message object + + + +### `extractMessage(array $updates): array` + +Extract a message constructor from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `extractMessageId(array $updates): int` + +Extract a message ID from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `extractMessageUpdate(array $updates): array` + +Extract an update message constructor from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `extractUpdates(array $updates): array` + +Extract Update constructors from an Updates constructor. + + +Parameters: + +* `$updates`: `array` + + + +### `fileGetContents(string $url): string` + +Get contents of remote file asynchronously. + + +Parameters: + +* `$url`: `string` URL + + + +### `flock(string $file, integer $operation, float $polling = 0.1, ?\Amp\Cancellation $token = NULL, ?\Closure $failureCb = NULL): ($token is null ? Closure(): void : (Closure(): void | null))` + +Asynchronously lock a file +Resolves with a callbable that MUST eventually be called in order to release the lock. + + +Parameters: + +* `$file`: `string` File to lock +* `$operation`: `integer` Locking mode +* `$polling`: `float` Polling interval +* `$token`: `?\Amp\Cancellation` Cancellation token +* `$failureCb`: `?\Closure` Failure callback, called only once if the first locking attempt fails. + + +#### See also: +* `\Amp\Cancellation` +* `\Closure` + + + + +### `fullChatLastUpdated(mixed $id): int` + +When was full info for this chat last cached. + + +Parameters: + +* `$id`: `mixed` Chat ID + + + +### `fullGetSelf(): array|false` + +Get info about the logged-in user, not cached. + + + +### `genVectorHash(array $longs): string` + +Generate MTProto vector hash. + +Returns a vector hash. + + +Parameters: + +* `$longs`: `array` IDs + + + +### `getAdminIds(): array` + +Get admin IDs (equal to all user report peers). + + + +### `getAllCalls(): array` + +Get all pending and running calls, indexed by user ID. + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../danog/MadelineProto/VoIP.html) + + + + +### `getAllMethods(): array` + +Get full list of MTProto and API methods. + + + +### `getAuthorization(): (\danog\MadelineProto\API::NOT_LOGGED_IN|\danog\MadelineProto\API::WAITING_CODE|\danog\MadelineProto\API::WAITING_SIGNUP|\danog\MadelineProto\API::WAITING_PASSWORD|\danog\MadelineProto\API::LOGGED_IN|API::LOGGED_OUT)` + +Get authorization info. + + +#### See also: +* `\danog\MadelineProto\API::NOT_LOGGED_IN` +* `\danog\MadelineProto\API::WAITING_CODE` +* `\danog\MadelineProto\API::WAITING_SIGNUP` +* `\danog\MadelineProto\API::WAITING_PASSWORD` +* `\danog\MadelineProto\API::LOGGED_IN` +* `API::LOGGED_OUT` + + + + +### `getBroadcastProgress(integer $id): ?\danog\MadelineProto\Broadcast\Progress` + +Get the progress of a currently running broadcast. + +Will return null if the broadcast doesn't exist, has already completed or was cancelled. + +Use updateBroadcastProgress updates to get real-time progress status without polling. + + +Parameters: + +* `$id`: `integer` Broadcast ID + + +#### See also: +* [`\danog\MadelineProto\Broadcast\Progress`: Broadcast progress.](../../danog/MadelineProto/Broadcast/Progress.html) + + + + +### `getCachedConfig(): array` + +Get cached server-side config. + + + +### `getCall(int $id): ?\danog\MadelineProto\VoIP` + +Get phone call information. + + +Parameters: + +* `$id`: `int` + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../danog/MadelineProto/VoIP.html) + + + + +### `getCallByPeer(int $userId): ?\danog\MadelineProto\VoIP` + +Get the phone call with the specified user ID. + + +Parameters: + +* `$userId`: `int` + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../danog/MadelineProto/VoIP.html) + + + + +### `getCallState(int $id): ?\danog\MadelineProto\VoIP\CallState` + +Get call state. + + +Parameters: + +* `$id`: `int` + + +#### See also: +* [\danog\MadelineProto\VoIP\CallState](../../danog/MadelineProto/VoIP/CallState.html) + + + + +### `getCdnConfig(): void` + +Store RSA keys for CDN datacenters. + + + +### `getConfig(array $config = []): array` + +Get cached (or eventually re-fetch) server-side config. + + +Parameters: + +* `$config`: `array` Current config + + + +### `getDNSClient(): \Amp\Dns\DnsResolver` + +Get async DNS client. + + +#### See also: +* `\Amp\Dns\DnsResolver` + + + + +### `getDhConfig(): array` + +Get diffie-hellman configuration. + + + +### `getDialogIds(): list` + +Get dialog IDs. + + + +### `getDownloadInfo(mixed $messageMedia): array{ext: string, name: string, mime: string, size: int, InputFileLocation: array, key_fingerprint?: string, key?: string, iv?: string, thumb_size?: string}` + +Get download info of file +Returns an array with the following structure:. + +`$info['ext']` - The file extension +`$info['name']` - The file name, without the extension +`$info['mime']` - The file mime type +`$info['size']` - The file size + + +Parameters: + +* `$messageMedia`: `mixed` File ID + + + +### `getDownloadLink(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|array|string $media, ?string $scriptUrl = NULL, ?int $size = NULL, ?string $name = NULL, ?string $mime = NULL): string` + +Get download link of media file. + + +Parameters: + +* `$media`: `\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|array|string` +* `$scriptUrl`: `?string` +* `$size`: `?int` +* `$name`: `?string` +* `$mime`: `?string` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) + + + + +### `getEventHandler((class-string|null) $class = NULL): (T|\danog\MadelineProto\Ipc\EventHandlerProxy|\__PHP_Incomplete_Class|null)` + +Get event handler (or plugin instance). + + +Parameters: + +* `$class`: `(class-string|null)` + + +#### See also: +* `\danog\MadelineProto\Ipc\EventHandlerProxy` +* `\__PHP_Incomplete_Class` + + + + +### `getExtensionFromLocation(mixed $location, string $default): string` + +Get extension from file location. + + +Parameters: + +* `$location`: `mixed` File location +* `$default`: `string` Default extension + + + +### `getExtensionFromMime(string $mime): string` + +Get extension from mime type. + + +Parameters: + +* `$mime`: `string` MIME type + + + +### `getFileInfo(mixed $constructor): array` + +Get info about file. + + +Parameters: + +* `$constructor`: `mixed` File ID + + + +### `getFullDialogs(): array` + +Get full info of all dialogs. + +Bots should use getDialogIds, instead. + + + +### `getFullInfo(mixed $id): array` + +Get full info about peer, returns an FullInfo object. + + +Parameters: + +* `$id`: `mixed` Peer + + +#### See also: +* [https://docs.madelineproto.xyz/FullInfo.html](https://docs.madelineproto.xyz/FullInfo.html) + + + + +### `getHTTPClient(): \Amp\Http\Client\HttpClient` + +Get async HTTP client. + + +#### See also: +* `\Amp\Http\Client\HttpClient` + + + + +### `getHint(): string` + +Get current password hint. + + + +### `getId(mixed $id): int` + +Get the bot API ID of a peer. + + +Parameters: + +* `$id`: `mixed` Peer + + + +### `getInfo(mixed $id, \danog\MadelineProto\API::INFO_TYPE_* $type = \danog\MadelineProto\API::INFO_TYPE_ALL): (\$type is \danog\MadelineProto\API::INFO_TYPE_ALL ? array{User?: array, Chat?: array, bot_api_id: int, user_id?: int, chat_id?: int, channel_id?: int, type: string} : ($type is API::INFO_TYPE_TYPE ? string : ($type is \danog\MadelineProto\API::INFO_TYPE_ID ? int : (array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int} | array{_: string, user_id?: int, access_hash?: int, min?: bool} | array{_: string, channel_id: int, access_hash: int, min: bool}))))` + +Get info about peer, returns an Info object. + +If passed a secret chat ID, returns information about the user, not about the secret chat. +Use getSecretChat to return information about the secret chat. + + +Parameters: + +* `$id`: `mixed` Peer +* `$type`: `\danog\MadelineProto\API::INFO_TYPE_*` Whether to generate an Input*, an InputPeer or the full set of constructors + + +#### See also: +* [https://docs.madelineproto.xyz/Info.html](https://docs.madelineproto.xyz/Info.html) +* `\danog\MadelineProto\API::INFO_TYPE_*` + + + + +### `getLogger(): \danog\MadelineProto\Logger` + +Get logger. + + +#### See also: +* [`\danog\MadelineProto\Logger`: Logger class.](../../danog/MadelineProto/Logger.html) + + + + +### `getMaps(): ?int` + +Get current number of memory-mapped regions, UNIX only. + + + +### `getMaxMaps(): ?int` + +Get maximum number of memory-mapped regions, UNIX only. +Use testFibers to get the maximum number of fibers on any platform. + + + +### `getMethodNamespaces(): array` + +Get TL namespaces. + + + +### `getMethodsNamespaced(): array` + +Get namespaced methods (method => namespace). + + + +### `getMimeFromBuffer(string $buffer): string` + +Get mime type from buffer. + + +Parameters: + +* `$buffer`: `string` Buffer + + + +### `getMimeFromExtension(string $extension, string $default): string` + +Get mime type from file extension. + + +Parameters: + +* `$extension`: `string` File extension +* `$default`: `string` Default mime type + + + +### `getMimeFromFile(string $file): string` + +Get mime type of file. + + +Parameters: + +* `$file`: `string` File + + + +### `getPlugin(class-string $class): \danog\MadelineProto\PluginEventHandler|\danog\MadelineProto\Ipc\EventHandlerProxy|null` + +Obtain a certain event handler plugin instance. + + +Parameters: + +* `$class`: `class-string` + +return T|null + + +#### See also: +* [`\danog\MadelineProto\PluginEventHandler`: Plugin event handler class.](../../danog/MadelineProto/PluginEventHandler.html) +* `\danog\MadelineProto\Ipc\EventHandlerProxy` + + + + +### `getPropicInfo(mixed $data): ?\danog\MadelineProto\EventHandler\Media\Photo` + +Gets info of the propic of a user. + + +Parameters: + +* `$data`: `mixed` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Media\Photo`: Represents a photo.](../../danog/MadelineProto/EventHandler/Media/Photo.html) + + + + +### `getPsrLogger(): \Psr\Log\LoggerInterface` + +Get PSR logger. + + +#### See also: +* `\Psr\Log\LoggerInterface` + + + + +### `getPwrChat(mixed $id, bool $fullfetch = true): array` + +Get full info about peer (including full list of channel members), returns a Chat object. + + +Parameters: + +* `$id`: `mixed` Peer +* `$fullfetch`: `bool` + + +#### See also: +* [https://docs.madelineproto.xyz/Chat.html](https://docs.madelineproto.xyz/Chat.html) + + + + +### `getSecretChat((array|int) $chat): \danog\MadelineProto\SecretChats\SecretChat` + +Get secret chat. + + +Parameters: + +* `$chat`: `(array|int)` Secret chat ID + + +#### See also: +* [`\danog\MadelineProto\SecretChats\SecretChat`: Represents a secret chat.](../../danog/MadelineProto/SecretChats/SecretChat.html) + + + + +### `getSecretMessage(integer $chatId, integer $randomId): \danog\MadelineProto\EventHandler\Message\SecretMessage` + +Gets a secret chat message. + + +Parameters: + +* `$chatId`: `integer` Secret chat ID. +* `$randomId`: `integer` Secret chat message ID. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\SecretMessage`: Represents New encrypted message.](../../danog/MadelineProto/EventHandler/Message/SecretMessage.html) + + + + +### `getSelf(): array|false` + +Get info about the logged-in user, cached. + +Use fullGetSelf to bypass the cache. + + + +### `getSessionName(): string` + +Returns the session name. + + + +### `getSettings(): \danog\MadelineProto\Settings` + +Return current settings. + + +#### See also: +* [`\danog\MadelineProto\Settings`: Settings class used for configuring MadelineProto.](../../danog/MadelineProto/Settings.html) + + + + +### `getSponsoredMessages((int|string|array) $peer): ?array` + +Get sponsored messages for channel. +This method will return an array of [sponsored message objects](https://docs.madelineproto.xyz/API_docs/constructors/sponsoredMessage.html). + +See [the API documentation](https://core.telegram.org/api/sponsored-messages) for more info on how to handle sponsored messages. + + +Parameters: + +* `$peer`: `(int|string|array)` Channel ID, or Update, or Message, or Peer. + + + +### `getStream(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL, ?int $size = NULL): \Amp\ByteStream\ReadableStream` + +Provide a stream for a file, URL or amp stream. + + +Parameters: + +* `$stream`: `\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream` +* `$cancellation`: `?\Amp\Cancellation` +* `$size`: `?int` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `getStreamPipe(): \Amp\ByteStream\Pipe` + +Obtains a pipe that can be used to upload a file from a stream. + + +#### See also: +* `\Amp\ByteStream\Pipe` + + + + +### `getTL(): \danog\MadelineProto\TL\TLInterface` + +Get TL serializer. + + +#### See also: +* [\danog\MadelineProto\TL\TLInterface](../../danog/MadelineProto/TL/TLInterface.html) + + + + +### `getType(mixed $id): \danog\MadelineProto\API::PEER_TYPE_*` + +Get type of peer. + + +Parameters: + +* `$id`: `mixed` Peer + + +#### See also: +* `\danog\MadelineProto\API::PEER_TYPE_*` + + + + +### `getUpdates(array{offset?: int, limit?: int, timeout?: float} $params = []): list` + +Only useful when consuming MadelineProto updates through an API in another language (like Javascript), **absolutely not recommended when directly writing MadelineProto bots**. + +`getUpdates` will **greatly slow down your bot** if used directly inside of PHP code. + +**Only use the [event handler](#async-event-driven) when writing a MadelineProto bot**, because update handling in the **event handler** is completely parallelized and non-blocking. + + +Parameters: + +* `$params`: `array{offset?: int, limit?: int, timeout?: float}` Params + + + +### `getWebMessage(string $message): string` + +Get a message to show to the user when starting the bot. + + +Parameters: + +* `$message`: `string` + + + +### `getWebWarnings(): string` + +Get various warnings to show to the user in the web UI. + + + +### `hasAdmins(): bool` + +Check if has admins. + + + +### `hasEventHandler(): bool` + +Check if an event handler instance is present. + + + +### `hasPlugin(class-string<\danog\MadelineProto\EventHandler> $class): bool` + +Check if a certain event handler plugin is installed. + + +Parameters: + +* `$class`: `class-string<\danog\MadelineProto\EventHandler>` + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../danog/MadelineProto/EventHandler.html) + + + + +### `hasReportPeers(): bool` + +Check if has report peers. + + + +### `hasSecretChat((array|int) $chat): bool` + +Check whether secret chat exists. + + +Parameters: + +* `$chat`: `(array|int)` Secret chat ID + + + +### `htmlEscape(string $what): string` + +Escape string for MadelineProto's HTML entity converter. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `htmlToMessageEntities(string $html): \danog\MadelineProto\TextEntities` + +Manually convert HTML to a message and a set of entities. + +NOTE: You don't have to use this method to send HTML messages. + +This method is already called automatically by using parse_mode: "HTML" in messages.sendMessage, messages.sendMedia, et cetera... + + +Parameters: + +* `$html`: `string` + + +Return value: Object containing message and entities + +#### See also: +* [https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode](https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode) +* [`\danog\MadelineProto\TextEntities`: Class that converts HTML or markdown to a message + set of entities.](../../danog/MadelineProto/TextEntities.html) + + + + +### `importAuthorization(array $authorization, int $mainDcID): array` + +Import authorization. + + +Parameters: + +* `$authorization`: `array` Authorization info +* `$mainDcID`: `int` Main DC ID + + + +### `inflateStripped(string $stripped): string` + +Inflate stripped photosize to full JPG payload. + + +Parameters: + +* `$stripped`: `string` Stripped photosize + + + +### `initSelfRestart(): void` + +Initialize self-restart hack. + + + +### `isAltervista(): bool` + +Whether this is altervista. + + + +### `isArrayOrAlike(mixed $var): bool` + +Check if is array or similar (traversable && countable && arrayAccess). + + +Parameters: + +* `$var`: `mixed` Value to check + + + +### `isBot(mixed $peer): bool` + +Check if the specified peer is a bot. + + +Parameters: + +* `$peer`: `mixed` + + + +### `isForum(mixed $peer): bool` + +Check if the specified peer is a forum. + + +Parameters: + +* `$peer`: `mixed` + + + +### `isIpc(): bool` + +Whether we're an IPC client instance. + + + +### `isIpcWorker(): bool` + +Whether we're an IPC server process (as opposed to an event handler). + + + +### `isPlayPaused(int $id): bool` + +Whether the currently playing audio file is paused. + + +Parameters: + +* `$id`: `int` + + + +### `isPremium(): bool` + +Returns whether the current user is a premium user, cached. + + + +### `isSelfBot(): bool` + +Returns whether the current user is a bot. + + + +### `isSelfUser(): bool` + +Returns whether the current user is a user. + + + +### `isTestMode(): boolean` + +Whether we're currently connected to the test DCs. + + + +### `logger(mixed $param, int $level = \danog\MadelineProto\Logger::NOTICE, string $file = ''): void` + +Logger. + + +Parameters: + +* `$param`: `mixed` Parameter +* `$level`: `int` Logging level +* `$file`: `string` File where the message originated + + + +### `logout(): void` + +Logout the session. + + + +### `markdownCodeEscape(string $what): string` + +Escape string for markdown code section. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownCodeblockEscape(string $what): string` + +Escape string for markdown codeblock. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownEscape(string $what): string` + +Escape string for markdown. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownToMessageEntities(string $markdown): \danog\MadelineProto\TextEntities` + +Manually convert markdown to a message and a set of entities. + +NOTE: You don't have to use this method to send Markdown messages. + +This method is already called automatically by using parse_mode: "Markdown" in messages.sendMessage, messages.sendMedia, et cetera... + + +Parameters: + +* `$markdown`: `string` + + +Return value: Object containing message and entities + +#### See also: +* [https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode](https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode) +* [`\danog\MadelineProto\TextEntities`: Class that converts HTML or markdown to a message + set of entities.](../../danog/MadelineProto/TextEntities.html) + + + + +### `markdownUrlEscape(string $what): string` + +Escape string for URL. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `mbStrSplit(string $text, integer $length): array` + +Telegram UTF-8 multibyte split. + + +Parameters: + +* `$text`: `string` Text +* `$length`: `integer` Length + + + +### `mbStrlen(string $text): int` + +Get Telegram UTF-8 length of string. + + +Parameters: + +* `$text`: `string` Text + + + +### `mbSubstr(string $text, integer $offset, (null|int) $length = NULL): string` + +Telegram UTF-8 multibyte substring. + + +Parameters: + +* `$text`: `string` Text to substring +* `$offset`: `integer` Offset +* `$length`: `(null|int)` Length + + + +### `openBuffered(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL): Closure(int): ?string` + +Provide a buffered reader for a file, URL or amp stream. + + +Parameters: + +* `$stream`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `openFileAppendOnly(string $path): \Amp\File\File` + +Opens a file in append-only mode. + + +Parameters: + +* `$path`: `string` File path. + + +#### See also: +* `\Amp\File\File` + + + + +### `packDouble(float $value): string` + +Convert double to binary version. + + +Parameters: + +* `$value`: `float` Value to convert + + + +### `packSignedInt(integer $value): string` + +Convert integer to base256 signed int. + + +Parameters: + +* `$value`: `integer` Value to convert + + + +### `packSignedLong(int $value): string` + +Convert integer to base256 long. + + +Parameters: + +* `$value`: `int` Value to convert + + + +### `packUnsignedInt(int $value): string` + +Convert value to unsigned base256 int. + + +Parameters: + +* `$value`: `int` Value + + + +### `pausePlay(int $id): void` + +Pauses playback of the current audio file in the call. + + +Parameters: + +* `$id`: `int` + + + +### `peerIsset(mixed $id): bool` + +Check if peer is present in internal peer database. + + +Parameters: + +* `$id`: `mixed` Peer + + + +### `phoneLogin(string $number, integer $sms_type = 5): array` + +Login as user. + + +Parameters: + +* `$number`: `string` Phone number +* `$sms_type`: `integer` SMS type + + + +### `posmod(int $a, int $b): int` + +Positive modulo +Works just like the % (modulus) operator, only returns always a postive number. + + +Parameters: + +* `$a`: `int` A +* `$b`: `int` B + + + +### `processDownloadServerPing(string $path, string $payload): void` + +Internal endpoint used by the download server. + + +Parameters: + +* `$path`: `string` +* `$payload`: `string` + + + +### `qrLogin(): ?\danog\MadelineProto\TL\Types\LoginQrCode` + +Initiates QR code login. + +Returns a QR code login helper object, that can be used to render the QR code, display the link directly, wait for login, QR code expiration and much more. + +Returns null if we're already logged in, or if we're waiting for a password (use getAuthorization to distinguish between the two cases). + + +#### See also: +* [`\danog\MadelineProto\TL\Types\LoginQrCode`: Represents a login QR code.](../../danog/MadelineProto/TL/Types/LoginQrCode.html) + + + + +### `random(integer $length): string` + +Get secure random string of specified length. + + +Parameters: + +* `$length`: `integer` Length + + + +### `randomInt(integer $modulus = 0): int` + +Get random integer. + + +Parameters: + +* `$modulus`: `integer` Modulus + + + +### `readLine(string $prompt = '', ?\Amp\Cancellation $cancel = NULL): string` + +Asynchronously read line. + + +Parameters: + +* `$prompt`: `string` Prompt +* `$cancel`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `refreshFullPeerCache(mixed $id): void` + +Refresh full peer cache for a certain peer. + + +Parameters: + +* `$id`: `mixed` The peer to refresh + + + +### `refreshPeerCache(mixed ...$ids): void` + +Refresh peer cache for a certain peer. + + +Parameters: + +* `...$ids`: `mixed` + + + +### `report(string $message, string $parseMode = ''): void` + +Report an error to the previously set peer. + + +Parameters: + +* `$message`: `string` Error to report +* `$parseMode`: `string` Parse mode + + + +### `reportMemoryProfile(): void` + +Report memory profile with memprof. + + + +### `requestCall(mixed $user): \danog\MadelineProto\VoIP` + +Request VoIP call. + + +Parameters: + +* `$user`: `mixed` User + + +#### See also: +* [`\danog\MadelineProto\VoIP`: This update represents a VoIP Telegram call.](../../danog/MadelineProto/VoIP.html) + + + + +### `requestSecretChat(mixed $user): int` + +Request secret chat. + + +Parameters: + +* `$user`: `mixed` User to start secret chat with + + + +### `resetUpdateState(): void` + +Reset the update state and fetch all updates from the beginning. + + + +### `restart(): void` + +Restart update loop. + + + +### `resumePlay(int $id): void` + +Resumes playback of the current audio file in the call. + + +Parameters: + +* `$id`: `int` + + + +### `rethrow(Throwable $e): void` + +Rethrow exception into event loop. + + +Parameters: + +* `$e`: `Throwable` + + +#### See also: +* `Throwable` + + + + +### `rleDecode(string $string): string` + +null-byte RLE decode. + + +Parameters: + +* `$string`: `string` Data to decode + + + +### `rleEncode(string $string): string` + +null-byte RLE encode. + + +Parameters: + +* `$string`: `string` Data to encode + + + +### `sendAudio((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, (integer|null) $duration = NULL, (string|null) $title = NULL, (string|null) $performer = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends an audio. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$duration`: `(integer|null)` Duration of the audio +* `$title`: `(string|null)` Title of the audio +* `$performer`: `(string|null)` Performer of the audio +* `$ttl`: `?int` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendCustomEvent(mixed $payload): void` + +Sends an updateCustomEvent update to the event handler. + + +Parameters: + +* `$payload`: `mixed` + + + +### `sendDocument((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?string $mimeType = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a document. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `?string` +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendDocumentPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendGif((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, boolean $spoiler = false, ?int $duration = NULL, ?int $width = NULL, ?int $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a gif. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$duration`: `?int` +* `$width`: `?int` +* `$height`: `?int` +* `$thumbSeek`: `string` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendMessage((integer|string) $peer, string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, boolean $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a message. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$cancellation`: `?\Amp\Cancellation` Cancellation + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `sendMessageToAdmins(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, (array|null) $replyMarkup = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $noWebpage = false, ?\Amp\Cancellation $cancellation = NULL): list<\danog\MadelineProto\EventHandler\Message>` + +Sends a message to all report peers (admins of the bot). + + +Parameters: + +* `$message`: `string` Message to send +* `$parseMode`: `\danog\MadelineProto\ParseMode` Parse mode +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$noWebpage`: `boolean` Set this flag to disable generation of the webpage preview +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) + + + + +### `sendPhoto((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, bool $spoiler = false, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, bool $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a photo. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$spoiler`: `bool` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `bool` +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendSticker((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $mimeType, string $emoji = '', array $stickerSet = [ '_' => 'inputStickerSetEmpty',], ?callable $callback = NULL, ?string $fileName = NULL, ?int $ttl = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $updateStickersetsOrder = false, boolean $forceResend = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a sticker. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$mimeType`: `string` +* `$emoji`: `string` +* `$stickerSet`: `array` +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `?int` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$updateStickersetsOrder`: `boolean` Whether to move used stickersets to top +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `sendVideo((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null) $thumb = NULL, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, string $mimeType = 'video/mp4', (integer|null) $ttl = NULL, boolean $spoiler = false, boolean $roundMessage = false, boolean $supportsStreaming = true, boolean $noSound = false, (integer|null) $duration = NULL, (integer|null) $width = NULL, (integer|null) $height = NULL, string $thumbSeek = '00:00:01.000', (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, bool $updateStickersetsOrder = false, \Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a video. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$thumb`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null)` Optional: Thumbnail to upload +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$mimeType`: `string` +* `$ttl`: `(integer|null)` Time to live +* `$spoiler`: `boolean` Whether the message is a spoiler +* `$roundMessage`: `boolean` Whether the message should be round +* `$supportsStreaming`: `boolean` Whether the video supports streaming +* `$noSound`: `boolean` Whether the video has no sound +* `$duration`: `(integer|null)` Duration of the video +* `$width`: `(integer|null)` Width of the video +* `$height`: `(integer|null)` Height of the video +* `$thumbSeek`: `string` +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$updateStickersetsOrder`: `bool` +* `$cancellation`: `\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `sendVoice((integer|string) $peer, (\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream) $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = NULL, ?string $fileName = NULL, (integer|null) $ttl = NULL, (integer|null) $duration = NULL, (array|null) $waveform = NULL, (integer|null) $replyToMsgId = NULL, (integer|null) $topMsgId = NULL, (array|null) $replyMarkup = NULL, (integer|string|null) $sendAs = NULL, (integer|null) $scheduleDate = NULL, boolean $silent = false, boolean $noForwards = false, boolean $background = false, boolean $clearDraft = false, boolean $forceResend = false, ?\Amp\Cancellation $cancellation = NULL): \danog\MadelineProto\EventHandler\Message` + +Sends a voice. + +Please use named arguments to call this method. + + +Parameters: + +* `$peer`: `(integer|string)` Destination peer or username. +* `$file`: `(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream)` File to upload: can be a message to reuse media present in a message. +* `$caption`: `string` Caption of document +* `$parseMode`: `\danog\MadelineProto\ParseMode` Text parse mode for the caption +* `$callback`: `?callable` +* `$fileName`: `?string` Optional file name, if absent will be extracted from the passed $file. +* `$ttl`: `(integer|null)` Time to live +* `$duration`: `(integer|null)` Duration of the voice +* `$waveform`: `(array|null)` Waveform of the voice +* `$replyToMsgId`: `(integer|null)` ID of message to reply to. +* `$topMsgId`: `(integer|null)` ID of thread where to send the message. +* `$replyMarkup`: `(array|null)` Keyboard information. +* `$sendAs`: `(integer|string|null)` Peer to send the message as. +* `$scheduleDate`: `(integer|null)` Schedule date. +* `$silent`: `boolean` Whether to send the message silently, without triggering notifications. +* `$noForwards`: `boolean` Whether to disable forwards for this message. +* `$background`: `boolean` Send this message as background message +* `$clearDraft`: `boolean` Clears the draft field +* `$forceResend`: `boolean` Whether to forcefully resend the file, even if its type and name are the same. +* `$cancellation`: `?\Amp\Cancellation` Cancellation. + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/Message.html) +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* [`\danog\MadelineProto\ParseMode`: Indicates a parsing mode for text.](../../danog/MadelineProto/ParseMode.html) +* `\Amp\Cancellation` + + + + +### `setNoop(): void` + +Set NOOP update handler, ignoring all updates. + + + +### `setReportPeers((int|string|array<(int|string)>) $userOrId): void` + +Set peer(s) where to send errors occurred in the event loop. + + +Parameters: + +* `$userOrId`: `(int|string|array<(int|string)>)` Username(s) or peer ID(s) + + + +### `setWebhook(string $webhookUrl): void` + +Set webhook update handler. + + +Parameters: + +* `$webhookUrl`: `string` Webhook URL + + + +### `skipPlay(int $id): void` + +When called, skips to the next file in the playlist. + + +Parameters: + +* `$id`: `int` + + + +### `sleep(float $time): void` + +Asynchronously sleep. + + +Parameters: + +* `$time`: `float` Number of seconds to sleep for + + + +### `start(): array` + +Log in to telegram (via CLI or web). + + + +### `stop(): void` + +Stop update loop. + + + +### `stopPlay(int $id): void` + +Stops playing all files in the call, clears the main and the hold playlist. + + +Parameters: + +* `$id`: `int` + + + +### `stringToStream(string $str): \Amp\ByteStream\ReadableBuffer` + +Converts a string into an async amphp stream. + + +Parameters: + +* `$str`: `string` + + +#### See also: +* `\Amp\ByteStream\ReadableBuffer` + + + + +### `subscribeToUpdates(mixed $channel): bool` + +Subscribe to event handler updates for a channel/supergroup we're not a member of. + + +Parameters: + +* `$channel`: `mixed` Channel/supergroup to subscribe to + + +Return value: False if we were already subscribed + + +### `tdToMTProto(array $params): array` + +Convert TD to MTProto parameters. + + +Parameters: + +* `$params`: `array` Parameters + + + +### `tdToTdcli(mixed $params): array` + +Convert TD parameters to tdcli. + + +Parameters: + +* `$params`: `mixed` Parameters + + + +### `tdcliToTd(mixed $params, array $key = NULL): array` + +Convert tdcli parameters to tdcli. + + +Parameters: + +* `$params`: `mixed` Params +* `$key`: `array` Key + + + +### `testFibers(int $fiberCount = 100000): array{maxFibers: int, realMemoryMb: int, maps: ?int, maxMaps: ?int}` + +Test fibers. + + +Parameters: + +* `$fiberCount`: `int` + + + +### `toCamelCase(string $input): string` + +Convert to camelCase. + + +Parameters: + +* `$input`: `string` String + + + +### `toSnakeCase(string $input): string` + +Convert to snake_case. + + +Parameters: + +* `$input`: `string` String + + + +### `unpackDouble(string $value): float` + +Unpack binary double. + + +Parameters: + +* `$value`: `string` Value to unpack + + + +### `unpackFileId(string $fileId): array` + +Unpack bot API file ID. + + +Parameters: + +* `$fileId`: `string` Bot API file ID + + +Return value: Unpacked file ID + + +### `unpackSignedInt(string $value): int` + +Unpack base256 signed int. + + +Parameters: + +* `$value`: `string` base256 int + + + +### `unpackSignedLong(string $value): int` + +Unpack base256 signed long. + + +Parameters: + +* `$value`: `string` base256 long + + + +### `unpackSignedLongString((string|int|array) $value): string` + +Unpack base256 signed long to string. + + +Parameters: + +* `$value`: `(string|int|array)` base256 long + + + +### `unsetEventHandler(): void` + +Unset event handler. + + + +### `update2fa(array{password?: string, new_password?: string, email?: string, hint?: string} $params): void` + +Update the 2FA password. + +The params array can contain password, new_password, email and hint params. + + +Parameters: + +* `$params`: `array{password?: string, new_password?: string, email?: string, hint?: string}` The params + + + +### `updateSettings(\danog\MadelineProto\SettingsAbstract $settings): void` + +Parse, update and store settings. + + +Parameters: + +* `$settings`: `\danog\MadelineProto\SettingsAbstract` Settings + + +#### See also: +* `\danog\MadelineProto\SettingsAbstract` + + + + +### `upload((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|string|array|resource) $file, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|string|array|resource)` File, URL or Telegram file to upload +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `\Amp\ByteStream\ReadableStream` +* `resource` +* `\Amp\Cancellation` + + + + +### `uploadEncrypted((\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|string|array|resource) $file, string $fileName = '', callable $cb = NULL, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file to secret chat. + + +Parameters: + +* `$file`: `(\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|string|array|resource)` File, URL or Telegram file to upload +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\BotApiFileId`: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](../../danog/MadelineProto/BotApiFileId.html) +* `resource` +* `\Amp\Cancellation` + + + + +### `uploadFromCallable(callable(int, int, ?Cancellation): strin) $callable, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable(float, float, float): voi) $cb = NULL, boolean $seekable = true, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file from callable. + +The callable must accept two parameters: int $offset, int $size +The callable must return a string with the contest of the file at the specified offset and size. + + +Parameters: + +* `$callable`: `callable(int, int, ?Cancellation): strin)` Callable (offset, length) => data +* `$size`: `integer` File size +* `$mime`: `string` Mime type +* `$fileName`: `string` File name +* `$cb`: `callable(float, float, float): voi)` Status callback +* `$seekable`: `boolean` Whether chunks can be fetched out of order +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* `\Amp\Cancellation` + + + + +### `uploadFromStream(mixed $stream, integer $size = 0, string $mime = 'application/octet-stream', string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file from stream. + + +Parameters: + +* `$stream`: `mixed` PHP resource or AMPHP async stream +* `$size`: `integer` File size +* `$mime`: `string` Mime type +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* `\Amp\Cancellation` + + + + +### `uploadFromTgfile(mixed $media, callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Reupload telegram file. + + +Parameters: + +* `$media`: `mixed` Telegram file +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* `\Amp\Cancellation` + + + + +### `uploadFromUrl((string|\danog\MadelineProto\FileCallbackInterface) $url, integer $size = 0, string $fileName = '', callable $cb = NULL, boolean $encrypted = false, ?\Amp\Cancellation $cancellation = NULL): array` + +Upload file from URL. + + +Parameters: + +* `$url`: `(string|\danog\MadelineProto\FileCallbackInterface)` URL of file +* `$size`: `integer` Size of file +* `$fileName`: `string` File name +* `$cb`: `callable` Callback +* `$encrypted`: `boolean` Whether to encrypt file for secret chats +* `$cancellation`: `?\Amp\Cancellation` + + +Return value: InputFile constructor + +#### See also: +* [`\danog\MadelineProto\FileCallbackInterface`: File callback interface.](../../danog/MadelineProto/FileCallbackInterface.html) +* `\Amp\Cancellation` + + + + +### `validateEventHandlerClass(class-string<\danog\MadelineProto\EventHandler> $class): list<\danog\MadelineProto\EventHandlerIssue>` + +Perform static analysis on a certain event handler class, to make sure it satisfies some performance requirements. + + +Parameters: + +* `$class`: `class-string<\danog\MadelineProto\EventHandler>` Class name + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../danog/MadelineProto/EventHandler.html) +* [`\danog\MadelineProto\EventHandlerIssue`: Represents an event handler issue.](../../danog/MadelineProto/EventHandlerIssue.html) + + + + +### `viewSponsoredMessage((int|array) $peer, (string|array{random_id: string}) $message): bool` + +Mark sponsored message as read. + + +Parameters: + +* `$peer`: `(int|array)` Channel ID, or Update, or Message, or Peer. +* `$message`: `(string|array{random_id: string})` Random ID or sponsored message to mark as read. + + + +### `wrapMedia(array $media, bool $protected = false): ?\danog\MadelineProto\EventHandler\Media` + +Wrap a media constructor into an abstract Media object. + + +Parameters: + +* `$media`: `array` +* `$protected`: `bool` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Media`: Represents a generic media.](../../danog/MadelineProto/EventHandler/Media.html) + + + + +### `wrapMessage(array $message, bool $scheduled = false): ?\danog\MadelineProto\EventHandler\AbstractMessage` + +Wrap a Message constructor into an abstract Message object. + + +Parameters: + +* `$message`: `array` +* `$scheduled`: `bool` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\AbstractMessage`: Represents an incoming or outgoing message.](../../danog/MadelineProto/EventHandler/AbstractMessage.html) + + + + +### `wrapPin(array $message): ?\danog\MadelineProto\EventHandler\Pinned` + +Wrap a Pin constructor into an abstract Pinned object. + + +Parameters: + +* `$message`: `array` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Pinned`: Indicates that some messages were pinned/unpinned.](../../danog/MadelineProto/EventHandler/Pinned.html) + + + + +### `wrapUpdate(array $update): ?\danog\MadelineProto\EventHandler\Update` + +Wrap an Update constructor into an abstract Update object. + + +Parameters: + +* `$update`: `array` + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Update`: Represents a generic update.](../../danog/MadelineProto/EventHandler/Update.html) + + + + +### `initDbProperties(\danog\AsyncOrm\Settings $settings, string $tablePrefix): void` + +Initialize database properties. + + +Parameters: + +* `$settings`: `\danog\AsyncOrm\Settings` +* `$tablePrefix`: `string` + + +#### See also: +* `\danog\AsyncOrm\Settings` + + + + +### `saveDbProperties(): void` + +Save all properties. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/StrTools.md b/docs/PHP/danog/MadelineProto/StrTools.md new file mode 100644 index 0000000000..dc3eb20816 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/StrTools.md @@ -0,0 +1,279 @@ +--- +title: "danog\\MadelineProto\\StrTools: Some tools." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\StrTools` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Some tools. + + + + +## Constants +* `danog\MadelineProto\StrTools::ALL_MIMES`: + + +## Method list: +* [`mbStrlen(string $text): int`](#mbStrlen) +* [`mbSubstr(string $text, integer $offset, (null|int) $length = NULL): string`](#mbSubstr) +* [`mbStrSplit(string $text, integer $length): array`](#mbStrSplit) +* [`htmlToMessageEntities(string $html): \danog\MadelineProto\TextEntities`](#htmlToMessageEntities) +* [`markdownToMessageEntities(string $markdown): \danog\MadelineProto\TextEntities`](#markdownToMessageEntities) +* [`entitiesToHtml(string $message, list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})> $entities, bool $allowTelegramTags = false): string`](#entitiesToHtml) +* [`toCamelCase(string $input): string`](#toCamelCase) +* [`toSnakeCase(string $input): string`](#toSnakeCase) +* [`htmlEscape(string $what): string`](#htmlEscape) +* [`markdownEscape(string $what): string`](#markdownEscape) +* [`markdownCodeblockEscape(string $what): string`](#markdownCodeblockEscape) +* [`markdownCodeEscape(string $what): string`](#markdownCodeEscape) +* [`markdownUrlEscape(string $what): string`](#markdownUrlEscape) +* [`getMimeFromExtension(string $extension, string $default): string`](#getMimeFromExtension) +* [`getExtensionFromMime(string $mime): string`](#getExtensionFromMime) +* [`getExtensionFromLocation(mixed $location, string $default): string`](#getExtensionFromLocation) +* [`getMimeFromFile(string $file): string`](#getMimeFromFile) +* [`getMimeFromBuffer(string $buffer): string`](#getMimeFromBuffer) + +## Methods: +### `mbStrlen(string $text): int` + +Get Telegram UTF-8 length of string. + + +Parameters: + +* `$text`: `string` Text + + + +### `mbSubstr(string $text, integer $offset, (null|int) $length = NULL): string` + +Telegram UTF-8 multibyte substring. + + +Parameters: + +* `$text`: `string` Text to substring +* `$offset`: `integer` Offset +* `$length`: `(null|int)` Length + + + +### `mbStrSplit(string $text, integer $length): array` + +Telegram UTF-8 multibyte split. + + +Parameters: + +* `$text`: `string` Text +* `$length`: `integer` Length + + + +### `htmlToMessageEntities(string $html): \danog\MadelineProto\TextEntities` + +Manually convert HTML to a message and a set of entities. + +NOTE: You don't have to use this method to send HTML messages. + +This method is already called automatically by using parse_mode: "HTML" in messages.sendMessage, messages.sendMedia, et cetera... + + +Parameters: + +* `$html`: `string` + + +Return value: Object containing message and entities + +#### See also: +* [https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode](https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode) +* [`\danog\MadelineProto\TextEntities`: Class that converts HTML or markdown to a message + set of entities.](../../danog/MadelineProto/TextEntities.html) + + + + +### `markdownToMessageEntities(string $markdown): \danog\MadelineProto\TextEntities` + +Manually convert markdown to a message and a set of entities. + +NOTE: You don't have to use this method to send Markdown messages. + +This method is already called automatically by using parse_mode: "Markdown" in messages.sendMessage, messages.sendMedia, et cetera... + + +Parameters: + +* `$markdown`: `string` + + +Return value: Object containing message and entities + +#### See also: +* [https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode](https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode) +* [`\danog\MadelineProto\TextEntities`: Class that converts HTML or markdown to a message + set of entities.](../../danog/MadelineProto/TextEntities.html) + + + + +### `entitiesToHtml(string $message, list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})> $entities, bool $allowTelegramTags = false): string` + +Convert a message and a set of entities to HTML. + + +Parameters: + +* `$message`: `string` +* `$entities`: `list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})>` +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity`: Master class for message entities.](../../danog/MadelineProto/EventHandler/Message/Entities/MessageEntity.html) + + + + +### `toCamelCase(string $input): string` + +Convert to camelCase. + + +Parameters: + +* `$input`: `string` String + + + +### `toSnakeCase(string $input): string` + +Convert to snake_case. + + +Parameters: + +* `$input`: `string` String + + + +### `htmlEscape(string $what): string` + +Escape string for MadelineProto's HTML entity converter. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownEscape(string $what): string` + +Escape string for markdown. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownCodeblockEscape(string $what): string` + +Escape string for markdown codeblock. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownCodeEscape(string $what): string` + +Escape string for markdown code section. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownUrlEscape(string $what): string` + +Escape string for URL. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `getMimeFromExtension(string $extension, string $default): string` + +Get mime type from file extension. + + +Parameters: + +* `$extension`: `string` File extension +* `$default`: `string` Default mime type + + + +### `getExtensionFromMime(string $mime): string` + +Get extension from mime type. + + +Parameters: + +* `$mime`: `string` MIME type + + + +### `getExtensionFromLocation(mixed $location, string $default): string` + +Get extension from file location. + + +Parameters: + +* `$location`: `mixed` File location +* `$default`: `string` Default extension + + + +### `getMimeFromFile(string $file): string` + +Get mime type of file. + + +Parameters: + +* `$file`: `string` File + + + +### `getMimeFromBuffer(string $buffer): string` + +Get mime type from buffer. + + +Parameters: + +* `$buffer`: `string` Buffer + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/TL/Conversion/Exception.md b/docs/PHP/danog/MadelineProto/TL/Conversion/Exception.md new file mode 100644 index 0000000000..c7a8378e2c --- /dev/null +++ b/docs/PHP/danog/MadelineProto/TL/Conversion/Exception.md @@ -0,0 +1,136 @@ +--- +title: "danog\\MadelineProto\\TL\\Conversion\\Exception: TL conversion exception." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\TL\Conversion\Exception` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +TL conversion exception. + + + +## Properties +* `$tlTrace`: `string` TL trace. + +## Method list: +* [`__construct(mixed $message, mixed $file = '')`](#__construct) +* [`getMessage(): string`](#getMessage) +* [`getCode()`](#getCode) +* [`getFile(): string`](#getFile) +* [`getLine(): int`](#getLine) +* [`getTrace(): array`](#getTrace) +* [`getPrevious(): ?Throwable`](#getPrevious) +* [`getTraceAsString(): string`](#getTraceAsString) +* [`updateTLTrace(array $trace): void`](#updateTLTrace) +* [`getTLTrace(): string`](#getTLTrace) +* [`setTLTrace(string $tlTrace): void`](#setTLTrace) +* [`prettifyTL(string $init = '', array $trace = NULL): void`](#prettifyTL) + +## Methods: +### `__construct(mixed $message, mixed $file = '')` + + + + +Parameters: + +* `$message`: `mixed` +* `$file`: `mixed` + + + +### `getMessage(): string` + + + + + +### `getCode()` + + + + + +### `getFile(): string` + + + + + +### `getLine(): int` + + + + + +### `getTrace(): array` + + + + + +### `getPrevious(): ?Throwable` + + + + +#### See also: +* `Throwable` + + + + +### `getTraceAsString(): string` + + + + + +### `updateTLTrace(array $trace): void` + +Update TL trace. + + +Parameters: + +* `$trace`: `array` + + + +### `getTLTrace(): string` + +Get TL trace. + + + +### `setTLTrace(string $tlTrace): void` + +Set TL trace. + + +Parameters: + +* `$tlTrace`: `string` TL trace + + + +### `prettifyTL(string $init = '', array $trace = NULL): void` + +Generate async trace. + + +Parameters: + +* `$init`: `string` Method name +* `$trace`: `array` Async trace + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/TL/Conversion/Extension.md b/docs/PHP/danog/MadelineProto/TL/Conversion/Extension.md new file mode 100644 index 0000000000..e31c0fb157 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/TL/Conversion/Extension.md @@ -0,0 +1,89 @@ +--- +title: "danog\\MadelineProto\\TL\\Conversion\\Extension: Manages generation of extensions for files." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\TL\Conversion\Extension` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Manages generation of extensions for files. + + + + +## Constants +* `danog\MadelineProto\TL\Conversion\Extension::ALL_MIMES`: + + +## Method list: +* [`getMimeFromExtension(string $extension, string $default): string`](#getMimeFromExtension) +* [`getExtensionFromMime(string $mime): string`](#getExtensionFromMime) +* [`getExtensionFromLocation(mixed $location, string $default): string`](#getExtensionFromLocation) +* [`getMimeFromFile(string $file): string`](#getMimeFromFile) +* [`getMimeFromBuffer(string $buffer): string`](#getMimeFromBuffer) + +## Methods: +### `getMimeFromExtension(string $extension, string $default): string` + +Get mime type from file extension. + + +Parameters: + +* `$extension`: `string` File extension +* `$default`: `string` Default mime type + + + +### `getExtensionFromMime(string $mime): string` + +Get extension from mime type. + + +Parameters: + +* `$mime`: `string` MIME type + + + +### `getExtensionFromLocation(mixed $location, string $default): string` + +Get extension from file location. + + +Parameters: + +* `$location`: `mixed` File location +* `$default`: `string` Default extension + + + +### `getMimeFromFile(string $file): string` + +Get mime type of file. + + +Parameters: + +* `$file`: `string` File + + + +### `getMimeFromBuffer(string $buffer): string` + +Get mime type from buffer. + + +Parameters: + +* `$buffer`: `string` Buffer + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/TL/Exception.md b/docs/PHP/danog/MadelineProto/TL/Exception.md new file mode 100644 index 0000000000..61d447d8a2 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/TL/Exception.md @@ -0,0 +1,136 @@ +--- +title: "danog\\MadelineProto\\TL\\Exception: TL deserialization exception." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\TL\Exception` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +TL deserialization exception. + + + +## Properties +* `$tlTrace`: `string` TL trace. + +## Method list: +* [`__construct(mixed $message, mixed $file = '')`](#__construct) +* [`getMessage(): string`](#getMessage) +* [`getCode()`](#getCode) +* [`getFile(): string`](#getFile) +* [`getLine(): int`](#getLine) +* [`getTrace(): array`](#getTrace) +* [`getPrevious(): ?Throwable`](#getPrevious) +* [`getTraceAsString(): string`](#getTraceAsString) +* [`updateTLTrace(array $trace): void`](#updateTLTrace) +* [`getTLTrace(): string`](#getTLTrace) +* [`setTLTrace(string $tlTrace): void`](#setTLTrace) +* [`prettifyTL(string $init = '', array $trace = NULL): void`](#prettifyTL) + +## Methods: +### `__construct(mixed $message, mixed $file = '')` + + + + +Parameters: + +* `$message`: `mixed` +* `$file`: `mixed` + + + +### `getMessage(): string` + + + + + +### `getCode()` + + + + + +### `getFile(): string` + + + + + +### `getLine(): int` + + + + + +### `getTrace(): array` + + + + + +### `getPrevious(): ?Throwable` + + + + +#### See also: +* `Throwable` + + + + +### `getTraceAsString(): string` + + + + + +### `updateTLTrace(array $trace): void` + +Update TL trace. + + +Parameters: + +* `$trace`: `array` + + + +### `getTLTrace(): string` + +Get TL trace. + + + +### `setTLTrace(string $tlTrace): void` + +Set TL trace. + + +Parameters: + +* `$tlTrace`: `string` TL trace + + + +### `prettifyTL(string $init = '', array $trace = NULL): void` + +Generate async trace. + + +Parameters: + +* `$init`: `string` Method name +* `$trace`: `array` Async trace + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/TL/TLInterface.md b/docs/PHP/danog/MadelineProto/TL/TLInterface.md new file mode 100644 index 0000000000..fdd11faafd --- /dev/null +++ b/docs/PHP/danog/MadelineProto/TL/TLInterface.md @@ -0,0 +1,139 @@ +--- +title: "danog\\MadelineProto\\TL\\TLInterface: " +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\TL\TLInterface` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + + + + + + +## Method list: +* [`getConstructors(): \danog\MadelineProto\TL\TLConstructors`](#getConstructors) +* [`getMethods(): \danog\MadelineProto\TL\TLMethods`](#getMethods) +* [`getDescriptions(): array`](#getDescriptions) +* [`getMethodNamespaces(): array`](#getMethodNamespaces) +* [`getMethodsNamespaced(): array`](#getMethodsNamespaced) +* [`serializeObject(array $type, mixed $object, string $ctx, integer $layer = -1)`](#serializeObject) +* [`serializeMethod(string $method, mixed $arguments)`](#serializeMethod) +* [`getLength((resource|string) $stream, array $type = [ 'type' => '',]): int`](#getLength) +* [`deserialize((string|resource) $stream, array $type)`](#deserialize) +* [`getSecretLayer(): int`](#getSecretLayer) + +## Methods: +### `getConstructors(): \danog\MadelineProto\TL\TLConstructors` + +Get constructors. + + +#### See also: +* `\danog\MadelineProto\TL\TLConstructors` + + + + +### `getMethods(): \danog\MadelineProto\TL\TLMethods` + +Get methods. + + +#### See also: +* `\danog\MadelineProto\TL\TLMethods` + + + + +### `getDescriptions(): array` + +Get descriptions. + + + +### `getMethodNamespaces(): array` + +Get TL namespaces. + + + +### `getMethodsNamespaced(): array` + +Get namespaced methods (method => namespace). + + + +### `serializeObject(array $type, mixed $object, string $ctx, integer $layer = -1)` + +Serialize TL object. + + +Parameters: + +* `$type`: `array` TL type definition +* `$object`: `mixed` Object to serialize +* `$ctx`: `string` Context +* `$layer`: `integer` Layer version + + + +### `serializeMethod(string $method, mixed $arguments)` + +Serialize method. + + +Parameters: + +* `$method`: `string` Method name +* `$arguments`: `mixed` Arguments + + + +### `getLength((resource|string) $stream, array $type = [ 'type' => '',]): int` + +Get length of TL payload. + + +Parameters: + +* `$stream`: `(resource|string)` Stream +* `$type`: `array` Type identifier + + +#### See also: +* `resource` + + + + +### `deserialize((string|resource) $stream, array $type)` + +Deserialize TL object. + + +Parameters: + +* `$stream`: `(string|resource)` Stream +* `$type`: `array` Type identifier + + +#### See also: +* `resource` + + + + +### `getSecretLayer(): int` + +Get secret chat layer version. + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/TL/Types/Button.md b/docs/PHP/danog/MadelineProto/TL/Types/Button.md new file mode 100644 index 0000000000..cff1037df6 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/TL/Types/Button.md @@ -0,0 +1,93 @@ +--- +title: "danog\\MadelineProto\\TL\\Types\\Button: Clickable button." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\TL\Types\Button` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Clickable button. + + + +## Properties +* `$label`: `string` Button label + +## Method list: +* [`click(boolean $donotwait = true)`](#click) +* [`jsonSerialize(): array`](#jsonSerialize) +* [`offsetSet(mixed $name, mixed $value): void`](#offsetSet) +* [`offsetGet(mixed $name): mixed`](#offsetGet) +* [`offsetUnset(mixed $name): void`](#offsetUnset) +* [`offsetExists(mixed $name): bool`](#offsetExists) + +## Methods: +### `click(boolean $donotwait = true)` + +Click on button. + + +Parameters: + +* `$donotwait`: `boolean` Whether to wait for the result of the method + + + +### `jsonSerialize(): array` + +Serialize button. + + + +### `offsetSet(mixed $name, mixed $value): void` + +Set button info. + + +Parameters: + +* `$name`: `mixed` Offset +* `$value`: `mixed` Value + + + +### `offsetGet(mixed $name): mixed` + +Get button info. + + +Parameters: + +* `$name`: `mixed` Field name + + + +### `offsetUnset(mixed $name): void` + +Unset button info. + + +Parameters: + +* `$name`: `mixed` Offset + + + +### `offsetExists(mixed $name): bool` + +Check if button field exists. + + +Parameters: + +* `$name`: `mixed` Offset + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/TL/Types/Bytes.md b/docs/PHP/danog/MadelineProto/TL/Types/Bytes.md new file mode 100644 index 0000000000..ae626ea5ca --- /dev/null +++ b/docs/PHP/danog/MadelineProto/TL/Types/Bytes.md @@ -0,0 +1,93 @@ +--- +title: "danog\\MadelineProto\\TL\\Types\\Bytes: Bytes wrapper." +description: "\nCast this object to a string ((string) $bytes) to obtain the inner bytes.\n" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\TL\Types\Bytes` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Bytes wrapper. + + +Cast this object to a string ((string) $bytes) to obtain the inner bytes. + + + +## Method list: +* [`__construct(string $bytes)`](#__construct) +* [`jsonSerialize(): array`](#jsonSerialize) +* [`offsetSet((integer|null) $offset, string $value): void`](#offsetSet) +* [`offsetGet(integer $offset): string`](#offsetGet) +* [`offsetUnset(integer $offset): void`](#offsetUnset) +* [`offsetExists(integer $offset): bool`](#offsetExists) + +## Methods: +### `__construct(string $bytes)` + +Constructor function. + + +Parameters: + +* `$bytes`: `string` Contents + + + +### `jsonSerialize(): array` + +Obtain values for JSON-encoding. + + + +### `offsetSet((integer|null) $offset, string $value): void` + +Set char at offset. + + +Parameters: + +* `$offset`: `(integer|null)` Offset +* `$value`: `string` Char + + + +### `offsetGet(integer $offset): string` + +Get char at offset. + + +Parameters: + +* `$offset`: `integer` Name + + + +### `offsetUnset(integer $offset): void` + +Unset char at offset. + + +Parameters: + +* `$offset`: `integer` Offset + + + +### `offsetExists(integer $offset): bool` + +Check if char at offset exists. + + +Parameters: + +* `$offset`: `integer` Offset + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/TL/Types/LoginQrCode.md b/docs/PHP/danog/MadelineProto/TL/Types/LoginQrCode.md new file mode 100644 index 0000000000..26e4701c2c --- /dev/null +++ b/docs/PHP/danog/MadelineProto/TL/Types/LoginQrCode.md @@ -0,0 +1,122 @@ +--- +title: "danog\\MadelineProto\\TL\\Types\\LoginQrCode: Represents a login QR code." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\TL\Types\LoginQrCode` +[Back to index](../../../../index.html) + +> Author: Daniil Gentili + + +Represents a login QR code. + + + +## Properties +* `$link`: `non-empty-string` The [QR code login link](https://core.telegram.org/api/links#qr-code-login-links) +* `$expiry`: `positive-int` The expiry date of the link + +## Method list: +* [`isExpired(): bool`](#isExpired) +* [`expiresIn(): non-negative-int`](#expiresIn) +* [`getExpirationCancellation(): \Amp\Cancellation`](#getExpirationCancellation) +* [`getLoginCancellation(): \Amp\Cancellation`](#getLoginCancellation) +* [`waitForLoginOrQrCodeExpiration((\Amp\Cancellation|null) $customCancellation = NULL): ?self`](#waitForLoginOrQrCodeExpiration) +* [`getQRSvg(int $size = 400, int $margin = 4): string`](#getQRSvg) +* [`getQRText(non-negative-int $margin = 2): string`](#getQRText) + +## Methods: +### `isExpired(): bool` + +Returns true if the QR code has expired and a new one should be fetched. + + + +### `expiresIn(): non-negative-int` + +Returns the number of seconds until the QR code expires. + + +#### See also: +* `non-negative-int` + + + + +### `getExpirationCancellation(): \Amp\Cancellation` + + + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getLoginCancellation(): \Amp\Cancellation` + + + + +#### See also: +* `\Amp\Cancellation` + + + + +### `waitForLoginOrQrCodeExpiration((\Amp\Cancellation|null) $customCancellation = NULL): ?self` + +Waits for the user to login or for the QR code to expire. + +If the user logins, null is returned. + +If the QR code expires, the new QR code is returned. + +If cancellation is requested externally through $cancellation, a CancelledException is thrown. + + +Parameters: + +* `$customCancellation`: `(\Amp\Cancellation|null)` Optional additional cancellation + + +#### See also: +* `\Amp\Cancellation` + + + + +### `getQRSvg(int $size = 400, int $margin = 4): string` + +Render and return SVG version of QR code. + + +Parameters: + +* `$size`: `int` +* `$margin`: `int` + + + +### `getQRText(non-negative-int $margin = 2): string` + +Render and return plain text version of QR code. + + +Parameters: + +* `$margin`: `non-negative-int` Text margin + + +#### See also: +* `non-negative-int` + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/TextEntities.md b/docs/PHP/danog/MadelineProto/TextEntities.md new file mode 100644 index 0000000000..9ffe22a69b --- /dev/null +++ b/docs/PHP/danog/MadelineProto/TextEntities.md @@ -0,0 +1,67 @@ +--- +title: "danog\\MadelineProto\\TextEntities: Class that converts HTML or markdown to a message + set of entities." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\TextEntities` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Class that converts HTML or markdown to a message + set of entities. + + + +## Properties +* `$message`: `string` Converted message +* `$entities`: `list` Converted entities. + +## Method list: +* [`__construct(string $message, array $entities)`](#__construct) +* [`fromMarkdown(string $markdown): self`](#fromMarkdown) +* [`fromHtml(string $html): self`](#fromHtml) + +## Methods: +### `__construct(string $message, array $entities)` + +Creates an Entities container using a message and a list of entities. + + +Parameters: + +* `$message`: `string` +* `$entities`: `array` + + + +### `fromMarkdown(string $markdown): self` + +Manually convert markdown to a message and a set of entities. + + +Parameters: + +* `$markdown`: `string` + + +Return value: Object containing message and entities + + +### `fromHtml(string $html): self` + +Manually convert HTML to a message and a set of entities. + + +Parameters: + +* `$html`: `string` + + +Return value: Object containing message and entities + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/Tools.md b/docs/PHP/danog/MadelineProto/Tools.md new file mode 100644 index 0000000000..b6b5182c63 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/Tools.md @@ -0,0 +1,779 @@ +--- +title: "danog\\MadelineProto\\Tools: Some tools." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\Tools` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +Some tools. + + + + +## Constants +* `danog\MadelineProto\Tools::ALL_MIMES`: + + +## Method list: +* [`testFibers(int $fiberCount = 100000): array{maxFibers: int, realMemoryMb: int, maps: ?int, maxMaps: ?int}`](#testFibers) +* [`getMaps(): ?int`](#getMaps) +* [`getMaxMaps(): ?int`](#getMaxMaps) +* [`stringToStream(string $str): \Amp\ByteStream\ReadableBuffer`](#stringToStream) +* [`genVectorHash(array $longs): string`](#genVectorHash) +* [`randomInt(integer $modulus = 0): int`](#randomInt) +* [`random(integer $length): string`](#random) +* [`posmod(int $a, int $b): int`](#posmod) +* [`unpackSignedInt(string $value): int`](#unpackSignedInt) +* [`unpackSignedLong(string $value): int`](#unpackSignedLong) +* [`unpackSignedLongString((string|int|array) $value): string`](#unpackSignedLongString) +* [`packSignedInt(integer $value): string`](#packSignedInt) +* [`packSignedLong(int $value): string`](#packSignedLong) +* [`packUnsignedInt(int $value): string`](#packUnsignedInt) +* [`packDouble(float $value): string`](#packDouble) +* [`unpackDouble(string $value): float`](#unpackDouble) +* [`isArrayOrAlike(mixed $var): bool`](#isArrayOrAlike) +* [`arr(mixed ...$params): array`](#arr) +* [`base64urlDecode(string $data): string`](#base64urlDecode) +* [`base64urlEncode(string $data): string`](#base64urlEncode) +* [`rleDecode(string $string): string`](#rleDecode) +* [`rleEncode(string $string): string`](#rleEncode) +* [`inflateStripped(string $stripped): string`](#inflateStripped) +* [`closeConnection(string $message): void`](#closeConnection) +* [`end(array $what): T`](#end) +* [`isAltervista(): bool`](#isAltervista) +* [`openFileAppendOnly(string $path): \Amp\File\File`](#openFileAppendOnly) +* [`getStreamPipe(): \Amp\ByteStream\Pipe`](#getStreamPipe) +* [`openBuffered(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL): Closure(int): ?string`](#openBuffered) +* [`validateEventHandlerClass(class-string<\danog\MadelineProto\EventHandler> $class): list<\danog\MadelineProto\EventHandlerIssue>`](#validateEventHandlerClass) +* [`canConvertOgg(): bool`](#canConvertOgg) +* [`canUseFFmpeg(?\Amp\Cancellation $cancellation = NULL): bool`](#canUseFFmpeg) +* [`rethrow(\Throwable $e): void`](#rethrow) +* [`callFork(\Generator|\Amp\Future|callable $callable, mixed ...$args): \Amp\Future`](#callFork) +* [`flock(string $file, integer $operation, float $polling = 0.1, ?\Amp\Cancellation $token = NULL, ?\Closure $failureCb = NULL): ($token is null ? Closure(): void : (Closure(): void | null))`](#flock) +* [`sleep(float $time): void`](#sleep) +* [`readLine(string $prompt = '', ?\Amp\Cancellation $cancel = NULL): string`](#readLine) +* [`echo(string $string): void`](#echo) +* [`mbStrlen(string $text): int`](#mbStrlen) +* [`mbSubstr(string $text, integer $offset, (null|int) $length = NULL): string`](#mbSubstr) +* [`mbStrSplit(string $text, integer $length): array`](#mbStrSplit) +* [`htmlToMessageEntities(string $html): \danog\MadelineProto\TextEntities`](#htmlToMessageEntities) +* [`markdownToMessageEntities(string $markdown): \danog\MadelineProto\TextEntities`](#markdownToMessageEntities) +* [`entitiesToHtml(string $message, list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})> $entities, bool $allowTelegramTags = false): string`](#entitiesToHtml) +* [`toCamelCase(string $input): string`](#toCamelCase) +* [`toSnakeCase(string $input): string`](#toSnakeCase) +* [`htmlEscape(string $what): string`](#htmlEscape) +* [`markdownEscape(string $what): string`](#markdownEscape) +* [`markdownCodeblockEscape(string $what): string`](#markdownCodeblockEscape) +* [`markdownCodeEscape(string $what): string`](#markdownCodeEscape) +* [`markdownUrlEscape(string $what): string`](#markdownUrlEscape) +* [`getMimeFromExtension(string $extension, string $default): string`](#getMimeFromExtension) +* [`getExtensionFromMime(string $mime): string`](#getExtensionFromMime) +* [`getExtensionFromLocation(mixed $location, string $default): string`](#getExtensionFromLocation) +* [`getMimeFromFile(string $file): string`](#getMimeFromFile) +* [`getMimeFromBuffer(string $buffer): string`](#getMimeFromBuffer) + +## Methods: +### `testFibers(int $fiberCount = 100000): array{maxFibers: int, realMemoryMb: int, maps: ?int, maxMaps: ?int}` + +Test fibers. + + +Parameters: + +* `$fiberCount`: `int` + + + +### `getMaps(): ?int` + +Get current number of memory-mapped regions, UNIX only. + + + +### `getMaxMaps(): ?int` + +Get maximum number of memory-mapped regions, UNIX only. +Use testFibers to get the maximum number of fibers on any platform. + + + +### `stringToStream(string $str): \Amp\ByteStream\ReadableBuffer` + +Converts a string into an async amphp stream. + + +Parameters: + +* `$str`: `string` + + +#### See also: +* `\Amp\ByteStream\ReadableBuffer` + + + + +### `genVectorHash(array $longs): string` + +Generate MTProto vector hash. + +Returns a vector hash. + + +Parameters: + +* `$longs`: `array` IDs + + + +### `randomInt(integer $modulus = 0): int` + +Get random integer. + + +Parameters: + +* `$modulus`: `integer` Modulus + + + +### `random(integer $length): string` + +Get secure random string of specified length. + + +Parameters: + +* `$length`: `integer` Length + + + +### `posmod(int $a, int $b): int` + +Positive modulo +Works just like the % (modulus) operator, only returns always a postive number. + + +Parameters: + +* `$a`: `int` A +* `$b`: `int` B + + + +### `unpackSignedInt(string $value): int` + +Unpack base256 signed int. + + +Parameters: + +* `$value`: `string` base256 int + + + +### `unpackSignedLong(string $value): int` + +Unpack base256 signed long. + + +Parameters: + +* `$value`: `string` base256 long + + + +### `unpackSignedLongString((string|int|array) $value): string` + +Unpack base256 signed long to string. + + +Parameters: + +* `$value`: `(string|int|array)` base256 long + + + +### `packSignedInt(integer $value): string` + +Convert integer to base256 signed int. + + +Parameters: + +* `$value`: `integer` Value to convert + + + +### `packSignedLong(int $value): string` + +Convert integer to base256 long. + + +Parameters: + +* `$value`: `int` Value to convert + + + +### `packUnsignedInt(int $value): string` + +Convert value to unsigned base256 int. + + +Parameters: + +* `$value`: `int` Value + + + +### `packDouble(float $value): string` + +Convert double to binary version. + + +Parameters: + +* `$value`: `float` Value to convert + + + +### `unpackDouble(string $value): float` + +Unpack binary double. + + +Parameters: + +* `$value`: `string` Value to unpack + + + +### `isArrayOrAlike(mixed $var): bool` + +Check if is array or similar (traversable && countable && arrayAccess). + + +Parameters: + +* `$var`: `mixed` Value to check + + + +### `arr(mixed ...$params): array` + +Create array. + + +Parameters: + +* `...$params`: `mixed` Params + + + +### `base64urlDecode(string $data): string` + +base64URL decode. + + +Parameters: + +* `$data`: `string` Data to decode + + + +### `base64urlEncode(string $data): string` + +Base64URL encode. + + +Parameters: + +* `$data`: `string` Data to encode + + + +### `rleDecode(string $string): string` + +null-byte RLE decode. + + +Parameters: + +* `$string`: `string` Data to decode + + + +### `rleEncode(string $string): string` + +null-byte RLE encode. + + +Parameters: + +* `$string`: `string` Data to encode + + + +### `inflateStripped(string $stripped): string` + +Inflate stripped photosize to full JPG payload. + + +Parameters: + +* `$stripped`: `string` Stripped photosize + + + +### `closeConnection(string $message): void` + +Close connection with client, connected via web. + + +Parameters: + +* `$message`: `string` Message + + + +### `end(array $what): T` + +Get final element of array. + + +Parameters: + +* `$what`: `array` Array + + + +### `isAltervista(): bool` + +Whether this is altervista. + + + +### `openFileAppendOnly(string $path): \Amp\File\File` + +Opens a file in append-only mode. + + +Parameters: + +* `$path`: `string` File path. + + +#### See also: +* `\Amp\File\File` + + + + +### `getStreamPipe(): \Amp\ByteStream\Pipe` + +Obtains a pipe that can be used to upload a file from a stream. + + +#### See also: +* `\Amp\ByteStream\Pipe` + + + + +### `openBuffered(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = NULL): Closure(int): ?string` + +Provide a buffered reader for a file, URL or amp stream. + + +Parameters: + +* `$stream`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` +* `\Amp\Cancellation` + + + + +### `validateEventHandlerClass(class-string<\danog\MadelineProto\EventHandler> $class): list<\danog\MadelineProto\EventHandlerIssue>` + +Perform static analysis on a certain event handler class, to make sure it satisfies some performance requirements. + + +Parameters: + +* `$class`: `class-string<\danog\MadelineProto\EventHandler>` Class name + + +#### See also: +* [`\danog\MadelineProto\EventHandler`: Event handler.](../../danog/MadelineProto/EventHandler.html) +* [`\danog\MadelineProto\EventHandlerIssue`: Represents an event handler issue.](../../danog/MadelineProto/EventHandlerIssue.html) + + + + +### `canConvertOgg(): bool` + +Whether we can convert any audio/video file to a VoIP OGG OPUS file, or the files must be preconverted using @libtgvoipbot. + + + +### `canUseFFmpeg(?\Amp\Cancellation $cancellation = NULL): bool` + +Whether we can convert any audio/video file using ffmpeg. + + +Parameters: + +* `$cancellation`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `rethrow(\Throwable $e): void` + +Rethrow exception into event loop. + + +Parameters: + +* `$e`: `\Throwable` + + +#### See also: +* `\Throwable` + + + + +### `callFork(\Generator|\Amp\Future|callable $callable, mixed ...$args): \Amp\Future` + +Fork a new green thread and execute the passed function in the background. + + +Parameters: + +* `$callable`: `\Generator|\Amp\Future|callable` +* `...$args`: `mixed` Arguments forwarded to the function when forking the thread. + + +#### See also: +* `\Generator` +* `\Amp\Future` + + + + +### `flock(string $file, integer $operation, float $polling = 0.1, ?\Amp\Cancellation $token = NULL, ?\Closure $failureCb = NULL): ($token is null ? Closure(): void : (Closure(): void | null))` + +Asynchronously lock a file +Resolves with a callbable that MUST eventually be called in order to release the lock. + + +Parameters: + +* `$file`: `string` File to lock +* `$operation`: `integer` Locking mode +* `$polling`: `float` Polling interval +* `$token`: `?\Amp\Cancellation` Cancellation token +* `$failureCb`: `?\Closure` Failure callback, called only once if the first locking attempt fails. + + +#### See also: +* `\Amp\Cancellation` +* `\Closure` + + + + +### `sleep(float $time): void` + +Asynchronously sleep. + + +Parameters: + +* `$time`: `float` Number of seconds to sleep for + + + +### `readLine(string $prompt = '', ?\Amp\Cancellation $cancel = NULL): string` + +Asynchronously read line. + + +Parameters: + +* `$prompt`: `string` Prompt +* `$cancel`: `?\Amp\Cancellation` + + +#### See also: +* `\Amp\Cancellation` + + + + +### `echo(string $string): void` + +Asynchronously write to stdout/browser. + + +Parameters: + +* `$string`: `string` Message to echo + + + +### `mbStrlen(string $text): int` + +Get Telegram UTF-8 length of string. + + +Parameters: + +* `$text`: `string` Text + + + +### `mbSubstr(string $text, integer $offset, (null|int) $length = NULL): string` + +Telegram UTF-8 multibyte substring. + + +Parameters: + +* `$text`: `string` Text to substring +* `$offset`: `integer` Offset +* `$length`: `(null|int)` Length + + + +### `mbStrSplit(string $text, integer $length): array` + +Telegram UTF-8 multibyte split. + + +Parameters: + +* `$text`: `string` Text +* `$length`: `integer` Length + + + +### `htmlToMessageEntities(string $html): \danog\MadelineProto\TextEntities` + +Manually convert HTML to a message and a set of entities. + +NOTE: You don't have to use this method to send HTML messages. + +This method is already called automatically by using parse_mode: "HTML" in messages.sendMessage, messages.sendMedia, et cetera... + + +Parameters: + +* `$html`: `string` + + +Return value: Object containing message and entities + +#### See also: +* [https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode](https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode) +* [`\danog\MadelineProto\TextEntities`: Class that converts HTML or markdown to a message + set of entities.](../../danog/MadelineProto/TextEntities.html) + + + + +### `markdownToMessageEntities(string $markdown): \danog\MadelineProto\TextEntities` + +Manually convert markdown to a message and a set of entities. + +NOTE: You don't have to use this method to send Markdown messages. + +This method is already called automatically by using parse_mode: "Markdown" in messages.sendMessage, messages.sendMedia, et cetera... + + +Parameters: + +* `$markdown`: `string` + + +Return value: Object containing message and entities + +#### See also: +* [https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode](https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode) +* [`\danog\MadelineProto\TextEntities`: Class that converts HTML or markdown to a message + set of entities.](../../danog/MadelineProto/TextEntities.html) + + + + +### `entitiesToHtml(string $message, list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})> $entities, bool $allowTelegramTags = false): string` + +Convert a message and a set of entities to HTML. + + +Parameters: + +* `$message`: `string` +* `$entities`: `list<(\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity|array{_: string, offset: int, length: int})>` +* `$allowTelegramTags`: `bool` Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on... + + +#### See also: +* [`\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity`: Master class for message entities.](../../danog/MadelineProto/EventHandler/Message/Entities/MessageEntity.html) + + + + +### `toCamelCase(string $input): string` + +Convert to camelCase. + + +Parameters: + +* `$input`: `string` String + + + +### `toSnakeCase(string $input): string` + +Convert to snake_case. + + +Parameters: + +* `$input`: `string` String + + + +### `htmlEscape(string $what): string` + +Escape string for MadelineProto's HTML entity converter. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownEscape(string $what): string` + +Escape string for markdown. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownCodeblockEscape(string $what): string` + +Escape string for markdown codeblock. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownCodeEscape(string $what): string` + +Escape string for markdown code section. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `markdownUrlEscape(string $what): string` + +Escape string for URL. + + +Parameters: + +* `$what`: `string` String to escape + + + +### `getMimeFromExtension(string $extension, string $default): string` + +Get mime type from file extension. + + +Parameters: + +* `$extension`: `string` File extension +* `$default`: `string` Default mime type + + + +### `getExtensionFromMime(string $mime): string` + +Get extension from mime type. + + +Parameters: + +* `$mime`: `string` MIME type + + + +### `getExtensionFromLocation(mixed $location, string $default): string` + +Get extension from file location. + + +Parameters: + +* `$location`: `mixed` File location +* `$default`: `string` Default extension + + + +### `getMimeFromFile(string $file): string` + +Get mime type of file. + + +Parameters: + +* `$file`: `string` File + + + +### `getMimeFromBuffer(string $buffer): string` + +Get mime type from buffer. + + +Parameters: + +* `$buffer`: `string` Buffer + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/VoIP.md b/docs/PHP/danog/MadelineProto/VoIP.md new file mode 100644 index 0000000000..484eff32d6 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/VoIP.md @@ -0,0 +1,200 @@ +--- +title: "danog\\MadelineProto\\VoIP: This update represents a VoIP Telegram call." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\VoIP` +[Back to index](../../index.html) + +> Author: Daniil Gentili + + +This update represents a VoIP Telegram call. + + + +## Properties +* `$callID`: `int` Phone call ID +* `$outgoing`: `bool` Whether the call is an outgoing call +* `$otherID`: `int` ID of the other user in the call +* `$date`: `int` When was the call created + +## Method list: +* [`accept(): self`](#accept) +* [`discard(\danog\MadelineProto\VoIP\DiscardReason $reason = \danog\MadelineProto\VoIP\DiscardReason::HANGUP, int<1, 5> $rating = NULL, string $comment = NULL): self`](#discard) +* [`getVisualization(): ?list{string, string, string, string}`](#getVisualization) +* [`play(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $file): self`](#play) +* [`setOutput(\danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream $file): self`](#setOutput) +* [`then(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $file): self`](#then) +* [`skip(): self`](#skip) +* [`stop(): self`](#stop) +* [`pause(): self`](#pause) +* [`isPaused(): boolean`](#isPaused) +* [`resume(): self`](#resume) +* [`playOnHold(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream ...$files): self`](#playOnHold) +* [`getCurrent(): \danog\MadelineProto\RemoteUrl|\danog\MadelineProto\LocalFile|string|null`](#getCurrent) +* [`getCallState(): \danog\MadelineProto\VoIP\CallState`](#getCallState) + +## Methods: +### `accept(): self` + +Accept call. + + + +### `discard(\danog\MadelineProto\VoIP\DiscardReason $reason = \danog\MadelineProto\VoIP\DiscardReason::HANGUP, int<1, 5> $rating = NULL, string $comment = NULL): self` + +Discard call. + + +Parameters: + +* `$reason`: `\danog\MadelineProto\VoIP\DiscardReason` +* `$rating`: `int<1, 5>` Call rating in stars +* `$comment`: `string` Additional comment on call quality. + + +#### See also: +* [`\danog\MadelineProto\VoIP\DiscardReason`: Why was the call discarded?](../../danog/MadelineProto/VoIP/DiscardReason.html) + + + + +### `getVisualization(): ?list{string, string, string, string}` + +Get call emojis (will return null if the call is not inited yet). + + + +### `play(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $file): self` + +Play file. + + +Parameters: + +* `$file`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` + + + + +### `setOutput(\danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream $file): self` + +Set output file or stream for incoming OPUS audio packets. + +Will write an OGG OPUS stream to the specified file or stream. + + +Parameters: + +* `$file`: `\danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* `\Amp\ByteStream\WritableStream` + + + + +### `then(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $file): self` + +Play file. + + +Parameters: + +* `$file`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` + + + + +### `skip(): self` + +When called, skips to the next file in the playlist. + + + +### `stop(): self` + +Stops playing all files, clears the main and the hold playlist. + + + +### `pause(): self` + +Pauses the currently playing file. + + + +### `isPaused(): boolean` + +Whether the currently playing file is paused. + + + +### `resume(): self` + +Resumes the currently playing file. + + + +### `playOnHold(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream ...$files): self` + +Files to play on hold. + + +Parameters: + +* `...$files`: `\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream` + + +#### See also: +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* `\Amp\ByteStream\ReadableStream` + + + + +### `getCurrent(): \danog\MadelineProto\RemoteUrl|\danog\MadelineProto\LocalFile|string|null` + +Get the file that is currently being played. + +Will return a string with the object ID of the stream if we're currently playing a stream, otherwise returns the related LocalFile or RemoteUrl. + + +#### See also: +* [`\danog\MadelineProto\RemoteUrl`: Indicates a remote URL to upload.](../../danog/MadelineProto/RemoteUrl.html) +* [`\danog\MadelineProto\LocalFile`: Indicates a local file to upload.](../../danog/MadelineProto/LocalFile.html) + + + + +### `getCallState(): \danog\MadelineProto\VoIP\CallState` + +Get call state. + + +#### See also: +* [\danog\MadelineProto\VoIP\CallState](../../danog/MadelineProto/VoIP/CallState.html) + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/VoIP/CallState.md b/docs/PHP/danog/MadelineProto/VoIP/CallState.md new file mode 100644 index 0000000000..e31ee029c8 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/VoIP/CallState.md @@ -0,0 +1,46 @@ +--- +title: "danog\\MadelineProto\\VoIP\\CallState: " +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\VoIP\CallState` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + + + + + + +## Constants +* `danog\MadelineProto\VoIP\CallState::REQUESTED`: The call was requested + +* `danog\MadelineProto\VoIP\CallState::INCOMING`: An incoming call + +* `danog\MadelineProto\VoIP\CallState::ACCEPTED`: The call was accepted + +* `danog\MadelineProto\VoIP\CallState::CONFIRMED`: The call was confirmed + +* `danog\MadelineProto\VoIP\CallState::RUNNING`: The call is ongoing + +* `danog\MadelineProto\VoIP\CallState::ENDED`: The call has ended + +## Properties +* `$name`: `string` + +## Method list: +* [`cases(): array`](#cases) + +## Methods: +### `cases(): array` + + + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/VoIP/DiscardReason.md b/docs/PHP/danog/MadelineProto/VoIP/DiscardReason.md new file mode 100644 index 0000000000..e1d2c3397a --- /dev/null +++ b/docs/PHP/danog/MadelineProto/VoIP/DiscardReason.md @@ -0,0 +1,67 @@ +--- +title: "danog\\MadelineProto\\VoIP\\DiscardReason: Why was the call discarded?" +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\VoIP\DiscardReason` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +Why was the call discarded? + + + + +## Constants +* `danog\MadelineProto\VoIP\DiscardReason::MISSED`: We missed the call + +* `danog\MadelineProto\VoIP\DiscardReason::DISCONNECTED`: The phone call was disconnected + +* `danog\MadelineProto\VoIP\DiscardReason::HANGUP`: The phone call ended normally + +* `danog\MadelineProto\VoIP\DiscardReason::BUSY`: The phone call was discarded because the user is busy in another call + +## Properties +* `$name`: `string` +* `$value`: `string` + +## Method list: +* [`cases(): array`](#cases) +* [`from(string|int $value): static`](#from) +* [`tryFrom(string|int $value): ?static`](#tryFrom) + +## Methods: +### `cases(): array` + + + + + +### `from(string|int $value): static` + + + + +Parameters: + +* `$value`: `string|int` + + + +### `tryFrom(string|int $value): ?static` + + + + +Parameters: + +* `$value`: `string|int` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/danog/MadelineProto/VoIP/VoIPState.md b/docs/PHP/danog/MadelineProto/VoIP/VoIPState.md new file mode 100644 index 0000000000..781a9efbb7 --- /dev/null +++ b/docs/PHP/danog/MadelineProto/VoIP/VoIPState.md @@ -0,0 +1,71 @@ +--- +title: "danog\\MadelineProto\\VoIP\\VoIPState: VoIP protcol state." +description: "" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +parent: "MadelineProto API" + +--- +# `danog\MadelineProto\VoIP\VoIPState` +[Back to index](../../../index.html) + +> Author: Daniil Gentili + + +VoIP protcol state. + + + + +## Constants +* `danog\MadelineProto\VoIP\VoIPState::CREATED`: + +* `danog\MadelineProto\VoIP\VoIPState::WAIT_INIT`: + +* `danog\MadelineProto\VoIP\VoIPState::WAIT_INIT_ACK`: + +* `danog\MadelineProto\VoIP\VoIPState::WAIT_PONG`: + +* `danog\MadelineProto\VoIP\VoIPState::WAIT_STREAM_INIT`: + +* `danog\MadelineProto\VoIP\VoIPState::ESTABLISHED`: + +## Properties +* `$name`: `string` +* `$value`: `int` + +## Method list: +* [`cases(): array`](#cases) +* [`from(string|int $value): static`](#from) +* [`tryFrom(string|int $value): ?static`](#tryFrom) + +## Methods: +### `cases(): array` + + + + + +### `from(string|int $value): static` + + + + +Parameters: + +* `$value`: `string|int` + + + +### `tryFrom(string|int $value): ?static` + + + + +Parameters: + +* `$value`: `string|int` + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it) diff --git a/docs/PHP/index.md b/docs/PHP/index.md new file mode 100644 index 0000000000..d0d53ea7d3 --- /dev/null +++ b/docs/PHP/index.md @@ -0,0 +1,372 @@ +--- +description: "MadelineProto PHP API reference" +title: "MadelineProto API" +image: "https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png" +has_children: "true" +has_toc: "false" +nav_order: "2" + +--- +# `danog/madelineproto` + +PHP implementation of telegram's MTProto protocol. + + +## Interfaces +* [\danog\MadelineProto\EventHandler\SimpleFilter\Ended: Represents an ended call](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Ended.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\FromAdmin: Allows messages from the bot admin](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/FromAdmin.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\FromAdminOrOutgoing: Allows messages from the bot admin or outgoing messages](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/FromAdminOrOutgoing.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\HasAudio: Allows only audio messages](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasAudio.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\HasDocument: Allows only documents](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasDocument.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\HasDocumentPhoto: Allows only document photos](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasDocumentPhoto.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\HasGif: Allows only GIFs](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasGif.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\HasMedia: Allows only media messages](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasMedia.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\HasMultiplePoll: Allows only messages that contain a multiple poll](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasMultiplePoll.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\HasNoMedia: Allows only messages with no media](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasNoMedia.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\HasPhoto: Allows only photos](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasPhoto.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\HasPoll: Allows only messages that contain a poll](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasPoll.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\HasQuizPoll: Allows only messages that contain a quiz poll](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasQuizPoll.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\HasRoundVideo: Allows only round videos](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasRoundVideo.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\HasSinglePoll: Allows only messages that contain a single poll](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasSinglePoll.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\HasSticker: Allows only stickers](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasSticker.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\HasTopic: Allow only messages coming from groups that has topics (Supergroups only).](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasTopic.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\HasVideo: Allows only videos](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasVideo.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\HasVoice: Allows only voice messages](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasVoice.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\Incoming: Represents an incoming message](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Incoming.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\IsEdited: Allows messages that were edited.](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsEdited.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\IsForwarded: Allows only forwarded messages](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsForwarded.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\IsNotEdited: Allows messages that weren't edited.](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsNotEdited.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\IsReply: Allows only messages that reply to other messages](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsReply.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\IsReplyToSelf: Allows only messages that reply to one of our messages](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsReplyToSelf.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\Outgoing: Represents an outgoing message](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Outgoing.html) +* [\danog\MadelineProto\EventHandler\SimpleFilter\Running: Allow only currently running calls](/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Running.html) + +## Abstract classes +* [\danog\MadelineProto\AsyncTools: Async tools.](/PHP/danog/MadelineProto/AsyncTools.html) +* [\danog\MadelineProto\EventHandler: Event handler.](/PHP/danog/MadelineProto/EventHandler.html) +* [\danog\MadelineProto\FileCallbackInterface: File callback interface.](/PHP/danog/MadelineProto/FileCallbackInterface.html) +* [\danog\MadelineProto\PluginEventHandler: Plugin event handler class.](/PHP/danog/MadelineProto/PluginEventHandler.html) +* [\danog\MadelineProto\SimpleEventHandler: Simple event handler class: by extending this class, you can use filters, crons and the simplified event handler API.](/PHP/danog/MadelineProto/SimpleEventHandler.html) +* [\danog\MadelineProto\StrTools: Some tools.](/PHP/danog/MadelineProto/StrTools.html) +* [\danog\MadelineProto\Tools: Some tools.](/PHP/danog/MadelineProto/Tools.html) +* [\danog\MadelineProto\Broadcast\Action: Interface that represents a broadcast action.](/PHP/danog/MadelineProto/Broadcast/Action.html) +* [\danog\MadelineProto\EventHandler\AbstractMessage: Represents an incoming or outgoing message.](/PHP/danog/MadelineProto/EventHandler/AbstractMessage.html) +* [\danog\MadelineProto\EventHandler\AbstractPoll: Poll](/PHP/danog/MadelineProto/EventHandler/AbstractPoll.html) +* [\danog\MadelineProto\EventHandler\AbstractPrivateMessage: Represents a private or secret chat message.](/PHP/danog/MadelineProto/EventHandler/AbstractPrivateMessage.html) +* [\danog\MadelineProto\EventHandler\AbstractStory: Represents a Telegram Story.](/PHP/danog/MadelineProto/EventHandler/AbstractStory.html) +* [\danog\MadelineProto\EventHandler\Action: In-progress actions.](/PHP/danog/MadelineProto/EventHandler/Action.html) +* [\danog\MadelineProto\EventHandler\CallbackQuery: Represents a query sent by the user by clicking on a button.](/PHP/danog/MadelineProto/EventHandler/CallbackQuery.html) +* [\danog\MadelineProto\EventHandler\ChatInvite: Chat invite link that was used by the user to send the [join request »](https://core.telegram.org/api/invites#join-requests).](/PHP/danog/MadelineProto/EventHandler/ChatInvite.html) +* [\danog\MadelineProto\EventHandler\ChatInviteRequester: Indicates someone has requested to join a chat or channel.](/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester.html) +* [\danog\MadelineProto\EventHandler\Delete: Indicates that some messages were deleted.](/PHP/danog/MadelineProto/EventHandler/Delete.html) +* [\danog\MadelineProto\EventHandler\Keyboard: Represents an inline or reply keyboard.](/PHP/danog/MadelineProto/EventHandler/Keyboard.html) +* [\danog\MadelineProto\EventHandler\Media: Represents a generic media.](/PHP/danog/MadelineProto/EventHandler/Media.html) +* [\danog\MadelineProto\EventHandler\Message: Represents an incoming or outgoing message.](/PHP/danog/MadelineProto/EventHandler/Message.html) +* [\danog\MadelineProto\EventHandler\Participant: Info about a channel participant.](/PHP/danog/MadelineProto/EventHandler/Participant.html) +* [\danog\MadelineProto\EventHandler\Pinned: Indicates that some messages were pinned/unpinned.](/PHP/danog/MadelineProto/EventHandler/Pinned.html) +* [\danog\MadelineProto\EventHandler\Typing: A user is typing.](/PHP/danog/MadelineProto/EventHandler/Typing.html) +* [\danog\MadelineProto\EventHandler\Update: Represents a generic update.](/PHP/danog/MadelineProto/EventHandler/Update.html) +* [\danog\MadelineProto\EventHandler\Filter\Filter](/PHP/danog/MadelineProto/EventHandler/Filter/Filter.html) +* [\danog\MadelineProto\EventHandler\Media\AbstractAudio: Represents a generic audio file.](/PHP/danog/MadelineProto/EventHandler/Media/AbstractAudio.html) +* [\danog\MadelineProto\EventHandler\Media\AbstractSticker: Represents a generic sticker.](/PHP/danog/MadelineProto/EventHandler/Media/AbstractSticker.html) +* [\danog\MadelineProto\EventHandler\Media\AbstractVideo: Represents a generic video.](/PHP/danog/MadelineProto/EventHandler/Media/AbstractVideo.html) +* [\danog\MadelineProto\EventHandler\Media\MediaStory: Represents a forwarded story.](/PHP/danog/MadelineProto/EventHandler/Media/MediaStory.html) +* [\danog\MadelineProto\EventHandler\Media\Sticker: Represents a sticker.](/PHP/danog/MadelineProto/EventHandler/Media/Sticker.html) +* [\danog\MadelineProto\EventHandler\Message\ServiceMessage: Represents info about a service message.](/PHP/danog/MadelineProto/EventHandler/Message/ServiceMessage.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\MessageEntity: Master class for message entities.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/MessageEntity.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall: Represents a service message about a group call.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall.html) +* [\danog\MadelineProto\EventHandler\Participant\Rights](/PHP/danog/MadelineProto/EventHandler/Participant/Rights.html) +* [\danog\MadelineProto\EventHandler\Privacy\RuleDestination: To whom does a privacy rule apply?](/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination.html) +* [\danog\MadelineProto\EventHandler\Query\ButtonQuery: Represents a query sent by the user by clicking on a button.](/PHP/danog/MadelineProto/EventHandler/Query/ButtonQuery.html) +* [\danog\MadelineProto\EventHandler\Query\GameQuery: Represents a query sent by the user by clicking on a "Play game" button.](/PHP/danog/MadelineProto/EventHandler/Query/GameQuery.html) +* [\danog\MadelineProto\EventHandler\User\Status: Contains a status update.](/PHP/danog/MadelineProto/EventHandler/User/Status.html) +* [\danog\MadelineProto\Settings\DatabaseAbstract: Base class for storage backends.](/PHP/danog/MadelineProto/Settings/DatabaseAbstract.html) +* [\danog\MadelineProto\Settings\Database\DriverDatabaseAbstract: Base class for database backends.](/PHP/danog/MadelineProto/Settings/Database/DriverDatabaseAbstract.html) +* [\danog\MadelineProto\Settings\Database\SqlAbstract: Generic db backend settings.](/PHP/danog/MadelineProto/Settings/Database/SqlAbstract.html) +* [\danog\MadelineProto\TL\TLInterface](/PHP/danog/MadelineProto/TL/TLInterface.html) +* [\danog\MadelineProto\TL\Conversion\Extension: Manages generation of extensions for files.](/PHP/danog/MadelineProto/TL/Conversion/Extension.html) + +## Classes +* [\danog\MadelineProto\API: Main API wrapper for MadelineProto.](/PHP/danog/MadelineProto/API.html) +* [\danog\MadelineProto\BotApiFileId: Indicates a bot API file ID to upload using sendDocument, sendPhoto etc...](/PHP/danog/MadelineProto/BotApiFileId.html) +* [\danog\MadelineProto\Conversion](/PHP/danog/MadelineProto/Conversion.html) +* [\danog\MadelineProto\EventHandlerIssue: Represents an event handler issue.](/PHP/danog/MadelineProto/EventHandlerIssue.html) +* [\danog\MadelineProto\Exception: Basic exception.](/PHP/danog/MadelineProto/Exception.html) +* [\danog\MadelineProto\FileCallback: File callback interface.](/PHP/danog/MadelineProto/FileCallback.html) +* [\danog\MadelineProto\LocalFile: Indicates a local file to upload.](/PHP/danog/MadelineProto/LocalFile.html) +* [\danog\MadelineProto\Logger: Logger class.](/PHP/danog/MadelineProto/Logger.html) +* [\danog\MadelineProto\MyTelegramOrgWrapper: Wrapper for my.telegram.org.](/PHP/danog/MadelineProto/MyTelegramOrgWrapper.html) +* [\danog\MadelineProto\Ogg: Async OGG stream reader and writer.](/PHP/danog/MadelineProto/Ogg.html) +* [\danog\MadelineProto\OggWriter: Async OGG stream writer.](/PHP/danog/MadelineProto/OggWriter.html) +* [\danog\MadelineProto\PTSException: Internal error indicating a problem with Telegram's servers.](/PHP/danog/MadelineProto/PTSException.html) +* [\danog\MadelineProto\ParseMode: Indicates a parsing mode for text.](/PHP/danog/MadelineProto/ParseMode.html) +* [\danog\MadelineProto\PeerNotInDbException: Indicates that a specified peer (user, chat, channel) was not found in the internal MadelineProto peer database.](/PHP/danog/MadelineProto/PeerNotInDbException.html) +* [\danog\MadelineProto\PsrLogger: PSR-3 wrapper for MadelineProto's Logger.](/PHP/danog/MadelineProto/PsrLogger.html) +* [\danog\MadelineProto\RPCErrorException: Indicates an error returned by Telegram's API.](/PHP/danog/MadelineProto/RPCErrorException.html) +* [\danog\MadelineProto\RemoteUrl: Indicates a remote URL to upload.](/PHP/danog/MadelineProto/RemoteUrl.html) +* [\danog\MadelineProto\ResponseException: Indicates an error thrown when an unexpected response is received from telegram's servers.](/PHP/danog/MadelineProto/ResponseException.html) +* [\danog\MadelineProto\SecretPeerNotInDbException: Indicates that the specified secret chat wasn't found.](/PHP/danog/MadelineProto/SecretPeerNotInDbException.html) +* [\danog\MadelineProto\SecurityException: Indicates a security error.](/PHP/danog/MadelineProto/SecurityException.html) +* [\danog\MadelineProto\Settings: Settings class used for configuring MadelineProto.](/PHP/danog/MadelineProto/Settings.html) +* [\danog\MadelineProto\Shutdown: Class that controls script shutdown.](/PHP/danog/MadelineProto/Shutdown.html) +* [\danog\MadelineProto\TextEntities: Class that converts HTML or markdown to a message + set of entities.](/PHP/danog/MadelineProto/TextEntities.html) +* [\danog\MadelineProto\VoIP: This update represents a VoIP Telegram call.](/PHP/danog/MadelineProto/VoIP.html) +* [\danog\MadelineProto\Broadcast\Filter: Broadcast filter.](/PHP/danog/MadelineProto/Broadcast/Filter.html) +* [\danog\MadelineProto\Broadcast\Progress: Broadcast progress.](/PHP/danog/MadelineProto/Broadcast/Progress.html) +* [\danog\MadelineProto\Broadcast\Status: Broadcast status.](/PHP/danog/MadelineProto/Broadcast/Status.html) +* [\danog\MadelineProto\EventHandler\BotApp: Represents information about a [named bot web app](https://core.telegram.org/api/bots/webapps#named-bot-web-apps).](/PHP/danog/MadelineProto/EventHandler/BotApp.html) +* [\danog\MadelineProto\EventHandler\BotCommands: The [command set](https://core.telegram.org/api/bots/commands) of a certain bot in a certain chat has changed.](/PHP/danog/MadelineProto/EventHandler/BotCommands.html) +* [\danog\MadelineProto\EventHandler\Command: Represents a bot command that can be used in a chat.](/PHP/danog/MadelineProto/EventHandler/Command.html) +* [\danog\MadelineProto\EventHandler\CommandType](/PHP/danog/MadelineProto/EventHandler/CommandType.html) +* [\danog\MadelineProto\EventHandler\ForwardedInfo: Info about a forwarded message.](/PHP/danog/MadelineProto/EventHandler/ForwardedInfo.html) +* [\danog\MadelineProto\EventHandler\InlineQuery: An incoming inline query.](/PHP/danog/MadelineProto/EventHandler/InlineQuery.html) +* [\danog\MadelineProto\EventHandler\Privacy: Indicates some privacy rules for a user or set of users.](/PHP/danog/MadelineProto/EventHandler/Privacy.html) +* [\danog\MadelineProto\EventHandler\Wallpaper: Represents a [wallpaper](https://core.telegram.org/api/wallpapers).](/PHP/danog/MadelineProto/EventHandler/Wallpaper.html) +* [\danog\MadelineProto\EventHandler\Action\Cancel: Invalidate all previous action updates. E.g. when user deletes entered text or aborts a video upload.](/PHP/danog/MadelineProto/EventHandler/Action/Cancel.html) +* [\danog\MadelineProto\EventHandler\Action\ChooseContact: User is selecting a contact to share.](/PHP/danog/MadelineProto/EventHandler/Action/ChooseContact.html) +* [\danog\MadelineProto\EventHandler\Action\ChooseSticker: User is choosing a sticker.](/PHP/danog/MadelineProto/EventHandler/Action/ChooseSticker.html) +* [\danog\MadelineProto\EventHandler\Action\EmojiSeen: User is watching an animated emoji reaction triggered by another user, [click here for more info »](https://core.telegram.org/api/animated-emojis#emoji-reactions).](/PHP/danog/MadelineProto/EventHandler/Action/EmojiSeen.html) +* [\danog\MadelineProto\EventHandler\Action\EmojiTap: User has clicked on an animated emoji triggering a [reaction, click here for more info »](https://core.telegram.org/api/animated-emojis#emoji-reactions).](/PHP/danog/MadelineProto/EventHandler/Action/EmojiTap.html) +* [\danog\MadelineProto\EventHandler\Action\GamePlay: User is playing a game.](/PHP/danog/MadelineProto/EventHandler/Action/GamePlay.html) +* [\danog\MadelineProto\EventHandler\Action\GeoLocation: User is selecting a location to share.](/PHP/danog/MadelineProto/EventHandler/Action/GeoLocation.html) +* [\danog\MadelineProto\EventHandler\Action\GroupCallSpeaking: User is currently speaking in the group call.](/PHP/danog/MadelineProto/EventHandler/Action/GroupCallSpeaking.html) +* [\danog\MadelineProto\EventHandler\Action\HistoryImport: Chat history is being imported.](/PHP/danog/MadelineProto/EventHandler/Action/HistoryImport.html) +* [\danog\MadelineProto\EventHandler\Action\RecordAudio: User is recording a voice message.](/PHP/danog/MadelineProto/EventHandler/Action/RecordAudio.html) +* [\danog\MadelineProto\EventHandler\Action\RecordRound: User is recording a round video to share.](/PHP/danog/MadelineProto/EventHandler/Action/RecordRound.html) +* [\danog\MadelineProto\EventHandler\Action\RecordVideo: User is recording a video.](/PHP/danog/MadelineProto/EventHandler/Action/RecordVideo.html) +* [\danog\MadelineProto\EventHandler\Action\Typing: User is typing.](/PHP/danog/MadelineProto/EventHandler/Action/Typing.html) +* [\danog\MadelineProto\EventHandler\Action\UploadAudio: User is uploading a voice message.](/PHP/danog/MadelineProto/EventHandler/Action/UploadAudio.html) +* [\danog\MadelineProto\EventHandler\Action\UploadDocument: User is uploading a file.](/PHP/danog/MadelineProto/EventHandler/Action/UploadDocument.html) +* [\danog\MadelineProto\EventHandler\Action\UploadPhoto: User is uploading a photo.](/PHP/danog/MadelineProto/EventHandler/Action/UploadPhoto.html) +* [\danog\MadelineProto\EventHandler\Action\UploadRound: User is uploading a round video.](/PHP/danog/MadelineProto/EventHandler/Action/UploadRound.html) +* [\danog\MadelineProto\EventHandler\Action\UploadVideo: User is uploading a video.](/PHP/danog/MadelineProto/EventHandler/Action/UploadVideo.html) +* [\danog\MadelineProto\EventHandler\Attributes\Cron: Attribute that enables periodic execution of a certain method.](/PHP/danog/MadelineProto/EventHandler/Attributes/Cron.html) +* [\danog\MadelineProto\EventHandler\Attributes\Handler: Attribute that marks a handler method.](/PHP/danog/MadelineProto/EventHandler/Attributes/Handler.html) +* [\danog\MadelineProto\EventHandler\Channel\ChannelParticipant: A participant has left, joined, was banned or admined in a [channel or supergroup](https://core.telegram.org/api/channel).](/PHP/danog/MadelineProto/EventHandler/Channel/ChannelParticipant.html) +* [\danog\MadelineProto\EventHandler\Channel\MessageForwards: Indicates that the forward counter of a message in a channel has changed.](/PHP/danog/MadelineProto/EventHandler/Channel/MessageForwards.html) +* [\danog\MadelineProto\EventHandler\Channel\MessageViewsChanged: Indicates that the view counter of a message in a channel has changed.](/PHP/danog/MadelineProto/EventHandler/Channel/MessageViewsChanged.html) +* [\danog\MadelineProto\EventHandler\Channel\UpdateChannel: A new channel is available, or info about an existing channel was changed.](/PHP/danog/MadelineProto/EventHandler/Channel/UpdateChannel.html) +* [\danog\MadelineProto\EventHandler\ChatInvite\ChatInviteExported: Represents an exported chat invite.](/PHP/danog/MadelineProto/EventHandler/ChatInvite/ChatInviteExported.html) +* [\danog\MadelineProto\EventHandler\ChatInvite\ChatInvitePublicJoin: Used in updates and in the channel log to indicate when a user is requesting to join or has joined a [discussion group](https://core.telegram.org/api/discussion#requiring-users-to-join-the-group).](/PHP/danog/MadelineProto/EventHandler/ChatInvite/ChatInvitePublicJoin.html) +* [\danog\MadelineProto\EventHandler\ChatInviteRequester\BotChatInviteRequest: Indicates someone has requested to join a chat or channel (bots only).](/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/BotChatInviteRequest.html) +* [\danog\MadelineProto\EventHandler\ChatInviteRequester\PendingJoinRequests: Someone has requested to join a chat or channel.](/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/PendingJoinRequests.html) +* [\danog\MadelineProto\EventHandler\Delete\DeleteChannelMessages: Some messages in a [supergroup/channel](https://core.telegram.org/api/channel) were deleted.](/PHP/danog/MadelineProto/EventHandler/Delete/DeleteChannelMessages.html) +* [\danog\MadelineProto\EventHandler\Delete\DeleteMessages: Some messages were deleted in a private chat or simple group.](/PHP/danog/MadelineProto/EventHandler/Delete/DeleteMessages.html) +* [\danog\MadelineProto\EventHandler\Delete\DeleteScheduledMessages: Some [scheduled messages](https://core.telegram.org/api/scheduled-messages) were deleted from the schedule queue of a chat.](/PHP/danog/MadelineProto/EventHandler/Delete/DeleteScheduledMessages.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterAllowAll: Allow all updates.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterAllowAll.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterButtonQueryData: Filters based on the content of a button query.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterButtonQueryData.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterChannel: Allow only updates coming from channels.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterChannel.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterCommand: Allow only messages containing the specified command.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterCommand.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterCommandCaseInsensitive: Allow only messages containing the specified case-insensitive command.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterCommandCaseInsensitive.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterEdited: Allows messages that were edited.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterEdited.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterEnded: Allow only ended calls.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterEnded.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterForwarded: Allow only forwarded messages.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterForwarded.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterForwardedFrom: Allow only forwarded messages from a certain sender.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterForwardedFrom.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterFromAdmin: Allow only messages coming from the admin (defined as the peers returned by getReportPeers).](/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromAdmin.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterFromBot: Allow only messages coming from bots.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromBot.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterFromSender: Allow incoming or outgoing group messages made by a certain sender.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromSender.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterFromSenders: Allow incoming or outgoing group messages made by a certain list of senders.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromSenders.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterGroup: Allow only updates coming from groups.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterGroup.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterIncoming: Allow only incoming messages.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterIncoming.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterMedia: Allow any media messages.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterMedia.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterMessage: Allow any non-service message.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterMessage.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterNoMedia: Allow any messages except media messages.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterNoMedia.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterNotEdited: Allows messages that weren't edited.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterNotEdited.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterOutgoing: Allow only outgoing messages.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterOutgoing.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterPeer: Allow messages coming from or sent to a certain peer.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterPeer.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterPoll: Allow only messages that contain a poll.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterPoll.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterPrivate: Allow only updates coming from private chats.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterPrivate.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterRegex: Allow only messages or button queries matching the specified regex.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterRegex.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterRegexMatchAll: Allow only messages or button queries matching the specified regex.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterRegexMatchAll.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterReply: Allow messages that reply to other messages.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterReply.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterReplyToSelf: Allow messages that reply to one of our messages.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterReplyToSelf.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterRunning: Allow only running calls.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterRunning.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterSecret: Allow only updates coming from secret chats.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterSecret.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterSender: Allow incoming or outgoing group messages made by a certain sender.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterSender.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterSenders: Allow incoming or outgoing group messages made by a certain list of senders.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterSenders.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterService: Allow only service messages of any type.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterService.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterText: Allow only messages with a specific content.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterText.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterTextCaseInsensitive: Allow only messages with a specific case-insensitive content.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextCaseInsensitive.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterTextContains: Allow only messages that contain a specific content.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextContains.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterTextContainsCaseInsensitive: Allow only messages that contain a specific case-insensitive content.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextContainsCaseInsensitive.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterTextEnds: Allow only messages that ends with a specific content.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextEnds.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterTextEndsCaseInsensitive: Allow only messages that ends with a specific case-insensitive content.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextEndsCaseInsensitive.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterTextStarts: Allow only messages that start with a specific content.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextStarts.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterTextStartsCaseInsensitive: Allow only messages that start with a specific case-insensitive content.](/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextStartsCaseInsensitive.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterTopic: Allow only messages coming from groups that has topics (Supergroups only).](/PHP/danog/MadelineProto/EventHandler/Filter/FilterTopic.html) +* [\danog\MadelineProto\EventHandler\Filter\FilterTopicId: Allow only messages with a specific topic id (Supergroups only).](/PHP/danog/MadelineProto/EventHandler/Filter/FilterTopicId.html) +* [\danog\MadelineProto\EventHandler\Filter\Combinator\FilterNot: NOTs a filter.](/PHP/danog/MadelineProto/EventHandler/Filter/Combinator/FilterNot.html) +* [\danog\MadelineProto\EventHandler\Filter\Combinator\FiltersAnd: ANDs multiple filters.](/PHP/danog/MadelineProto/EventHandler/Filter/Combinator/FiltersAnd.html) +* [\danog\MadelineProto\EventHandler\Filter\Combinator\FiltersOr: ORs multiple filters.](/PHP/danog/MadelineProto/EventHandler/Filter/Combinator/FiltersOr.html) +* [\danog\MadelineProto\EventHandler\Filter\Media\FilterAudio: Allow only audio files.](/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterAudio.html) +* [\danog\MadelineProto\EventHandler\Filter\Media\FilterDocument: Allow only documents.](/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterDocument.html) +* [\danog\MadelineProto\EventHandler\Filter\Media\FilterDocumentPhoto: Allow only documents containing an image.](/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterDocumentPhoto.html) +* [\danog\MadelineProto\EventHandler\Filter\Media\FilterGif: Allow only GIFs.](/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterGif.html) +* [\danog\MadelineProto\EventHandler\Filter\Media\FilterPhoto: Allow only photos.](/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterPhoto.html) +* [\danog\MadelineProto\EventHandler\Filter\Media\FilterRoundVideo: Allow only round videos.](/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterRoundVideo.html) +* [\danog\MadelineProto\EventHandler\Filter\Media\FilterSticker: Allow only stickers.](/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterSticker.html) +* [\danog\MadelineProto\EventHandler\Filter\Media\FilterVideo: Allow only videos.](/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterVideo.html) +* [\danog\MadelineProto\EventHandler\Filter\Media\FilterVoice: Allow only voice messages.](/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterVoice.html) +* [\danog\MadelineProto\EventHandler\Filter\Poll\FilterMultiplePoll: Allow only messages that contain a multiple poll.](/PHP/danog/MadelineProto/EventHandler/Filter/Poll/FilterMultiplePoll.html) +* [\danog\MadelineProto\EventHandler\Filter\Poll\FilterQuizPoll: Allow only messages that contain a quiz poll.](/PHP/danog/MadelineProto/EventHandler/Filter/Poll/FilterQuizPoll.html) +* [\danog\MadelineProto\EventHandler\Filter\Poll\FilterSinglePoll: Allow only messages that contain a single poll.](/PHP/danog/MadelineProto/EventHandler/Filter/Poll/FilterSinglePoll.html) +* [\danog\MadelineProto\EventHandler\Keyboard\InlineKeyboard: Represents an inline keyboard.](/PHP/danog/MadelineProto/EventHandler/Keyboard/InlineKeyboard.html) +* [\danog\MadelineProto\EventHandler\Keyboard\ReplyKeyboard: Represents a reply keyboard.](/PHP/danog/MadelineProto/EventHandler/Keyboard/ReplyKeyboard.html) +* [\danog\MadelineProto\EventHandler\Media\AnimatedSticker: Represents an animated sticker.](/PHP/danog/MadelineProto/EventHandler/Media/AnimatedSticker.html) +* [\danog\MadelineProto\EventHandler\Media\Audio: Represents an audio file.](/PHP/danog/MadelineProto/EventHandler/Media/Audio.html) +* [\danog\MadelineProto\EventHandler\Media\CustomEmoji: Represents a custom emoji sticker.](/PHP/danog/MadelineProto/EventHandler/Media/CustomEmoji.html) +* [\danog\MadelineProto\EventHandler\Media\Document: Represents a document.](/PHP/danog/MadelineProto/EventHandler/Media/Document.html) +* [\danog\MadelineProto\EventHandler\Media\DocumentPhoto: Represents a photo uploaded as a document.](/PHP/danog/MadelineProto/EventHandler/Media/DocumentPhoto.html) +* [\danog\MadelineProto\EventHandler\Media\GeoPoint](/PHP/danog/MadelineProto/EventHandler/Media/GeoPoint.html) +* [\danog\MadelineProto\EventHandler\Media\Gif: Represents a GIF (or an MPEG4 file without sound).](/PHP/danog/MadelineProto/EventHandler/Media/Gif.html) +* [\danog\MadelineProto\EventHandler\Media\MaskPosition: Position of the mask](/PHP/danog/MadelineProto/EventHandler/Media/MaskPosition.html) +* [\danog\MadelineProto\EventHandler\Media\MaskSticker: Represents a mask sticker.](/PHP/danog/MadelineProto/EventHandler/Media/MaskSticker.html) +* [\danog\MadelineProto\EventHandler\Media\Photo: Represents a photo.](/PHP/danog/MadelineProto/EventHandler/Media/Photo.html) +* [\danog\MadelineProto\EventHandler\Media\RoundVideo: Represents a round video.](/PHP/danog/MadelineProto/EventHandler/Media/RoundVideo.html) +* [\danog\MadelineProto\EventHandler\Media\StaticSticker: Represents a static sticker.](/PHP/danog/MadelineProto/EventHandler/Media/StaticSticker.html) +* [\danog\MadelineProto\EventHandler\Media\Video: Represents a video.](/PHP/danog/MadelineProto/EventHandler/Media/Video.html) +* [\danog\MadelineProto\EventHandler\Media\VideoSticker: Represents a video sticker.](/PHP/danog/MadelineProto/EventHandler/Media/VideoSticker.html) +* [\danog\MadelineProto\EventHandler\Media\Voice: Represents a voice message.](/PHP/danog/MadelineProto/EventHandler/Media/Voice.html) +* [\danog\MadelineProto\EventHandler\Message\ChannelMessage: Represents an incoming or outgoing channel message.](/PHP/danog/MadelineProto/EventHandler/Message/ChannelMessage.html) +* [\danog\MadelineProto\EventHandler\Message\GroupMessage: Represents an incoming or outgoing group message.](/PHP/danog/MadelineProto/EventHandler/Message/GroupMessage.html) +* [\danog\MadelineProto\EventHandler\Message\PrivateMessage: Represents an incoming or outgoing private message.](/PHP/danog/MadelineProto/EventHandler/Message/PrivateMessage.html) +* [\danog\MadelineProto\EventHandler\Message\ReportReason](/PHP/danog/MadelineProto/EventHandler/Message/ReportReason.html) +* [\danog\MadelineProto\EventHandler\Message\SecretMessage: Represents New encrypted message.](/PHP/danog/MadelineProto/EventHandler/Message/SecretMessage.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\BankCard: Indicates a credit card number.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/BankCard.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\Blockquote: Message entity representing a block quote.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/Blockquote.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\Bold: Message entity representing bold text.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/Bold.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\BotCommand: Message entity representing a bot /command.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/BotCommand.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\Cashtag: Message entity representing a $cashtag.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/Cashtag.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\Code: Message entity representing a codeblock.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/Code.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\CustomEmoji: Represents a custom emoji.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/CustomEmoji.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\Email: Message entity representing an email@example.com.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/Email.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\Hashtag: #hashtag message entity.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/Hashtag.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\InputMentionName: Message entity representing a [user mention](https://core.telegram.org/api/mentions) created by the user, not returned by the API.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/InputMentionName.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\Italic: Message entity representing italic text.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/Italic.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\Mention: Message entity mentioning the current user.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/Mention.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\MentionName: Message entity representing a [user mention](https://core.telegram.org/api/mentions).](/PHP/danog/MadelineProto/EventHandler/Message/Entities/MentionName.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\Phone: Message entity representing a phone number.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/Phone.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\Pre: Message entity representing a preformatted codeblock, allowing the user to specify a programming language for the codeblock.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/Pre.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\Spoiler: Message entity representing a spoiler.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/Spoiler.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\Strike: Message entity representing strikethrough text.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/Strike.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\TextUrl: Message entity representing a text url: for in-text urls like https://google.com use Url.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/TextUrl.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\Underline: Message entity representing underlined text.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/Underline.html) +* [\danog\MadelineProto\EventHandler\Message\Entities\Url: Message entity representing an in-text url: https://google.com; for text urls, use TextUrl.](/PHP/danog/MadelineProto/EventHandler/Message/Entities/Url.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogBotAllowed: We have given the bot permission to send us direct messages.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogBotAllowed.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogChannelCreated: The channel was created.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelCreated.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogChannelMigrateFrom: Indicates the channel was [migrated](https://core.telegram.org/api/channel) from the specified chat.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelMigrateFrom.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogChatJoinedByLink: A user joined the chat via an invite link.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatJoinedByLink.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogChatMigrateTo: Indicates the chat was [migrated](https://core.telegram.org/api/channel) to the specified supergroup.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatMigrateTo.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogContactSignUp: A contact just signed up to telegram.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogContactSignUp.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogCreated: A chat or channel was created.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogCreated.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogDeleteMessages: Deleted messages.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogDeleteMessages.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogGameScore: Someone scored in a game.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGameScore.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogGeoProximityReached: A user of the chat is now in proximity of another user.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGeoProximityReached.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogGiftPremium: Info about a gifted Telegram Premium subscription.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGiftPremium.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogHistoryCleared: Chat history was cleared.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogHistoryCleared.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogMemberJoinedByRequest: A user was accepted into the group by an admin.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberJoinedByRequest.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogMemberLeft: A member left the chat or channel.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberLeft.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogMembersJoined: Some members joined the chat or channel.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMembersJoined.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogMessagePinned: A message was pinned in a chat.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMessagePinned.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogPeerRequested: Contains info about a peer that the user shared with the bot after clicking on a [keyboardButtonRequestPeer](https://docs.madelineproto.xyz/API_docs/constructors/keyboardButtonRequestPeer.html) button.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPeerRequested.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogPhoneCall: A phone call.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhoneCall.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogPhotoChanged: The photo of the dialog was changed or deleted.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhotoChanged.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogReadMessages: Messages marked as read.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogReadMessages.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogScreenshotTaken: A screenshot of the chat was taken.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogScreenshotTaken.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogSetChatTheme: The chat theme was changed.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatTheme.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogSetChatWallPaper: The [wallpaper](https://core.telegram.org/api/wallpapers) of the current chat was changed.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatWallPaper.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL: The Time-To-Live of messages in this chat was changed.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogSuggestProfilePhoto: A new profile picture was suggested using [photos.uploadContactProfilePhoto](https://docs.madelineproto.xyz/API_docs/methods/photos.uploadContactProfilePhoto.html).](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSuggestProfilePhoto.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogTitleChanged: The title of a channel or group has changed.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTitleChanged.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogTopicCreated: A [forum topic](https://core.telegram.org/api/forum#forum-topics) was created.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicCreated.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogTopicEdited: [Forum topic](https://core.telegram.org/api/forum#forum-topics) information was edited.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicEdited.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogWebView: Data from an opened [reply keyboard bot web app](https://core.telegram.org/api/bots/webapps) was relayed to the bot that owns it (user & bot side service message).](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogWebView.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall\GroupCall: The group call has started or ended.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCall.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall\GroupCallInvited: A set of users was invited to the group call.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallInvited.html) +* [\danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall\GroupCallScheduled: A group call was scheduled.](/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallScheduled.html) +* [\danog\MadelineProto\EventHandler\Participant\Admin: Admin.](/PHP/danog/MadelineProto/EventHandler/Participant/Admin.html) +* [\danog\MadelineProto\EventHandler\Participant\Banned: Banned/kicked user.](/PHP/danog/MadelineProto/EventHandler/Participant/Banned.html) +* [\danog\MadelineProto\EventHandler\Participant\Creator: Channel/supergroup creator.](/PHP/danog/MadelineProto/EventHandler/Participant/Creator.html) +* [\danog\MadelineProto\EventHandler\Participant\Left: A participant that left the channel/supergroup.](/PHP/danog/MadelineProto/EventHandler/Participant/Left.html) +* [\danog\MadelineProto\EventHandler\Participant\Member: Channel/supergroup participant.](/PHP/danog/MadelineProto/EventHandler/Participant/Member.html) +* [\danog\MadelineProto\EventHandler\Participant\MySelf: Myself.](/PHP/danog/MadelineProto/EventHandler/Participant/MySelf.html) +* [\danog\MadelineProto\EventHandler\Participant\Rights\Admin: Represents the rights of an admin in a [channel/supergroup](https://core.telegram.org/api/channel).](/PHP/danog/MadelineProto/EventHandler/Participant/Rights/Admin.html) +* [\danog\MadelineProto\EventHandler\Participant\Rights\Banned: Represents the rights of a normal user in a [supergroup/channel/chat](https://core.telegram.org/api/channel). In this case, the flags are inverted: if set, a flag does not allow a user to do X.](/PHP/danog/MadelineProto/EventHandler/Participant/Rights/Banned.html) +* [\danog\MadelineProto\EventHandler\Pinned\PinnedChannelMessages: Represents messages that were pinned/unpinned in a [channel](https://core.telegram.org/api/channel).](/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedChannelMessages.html) +* [\danog\MadelineProto\EventHandler\Pinned\PinnedGroupMessages: Represents messages that were pinned/unpinned in a [chat/supergroup](https://core.telegram.org/api/channel).](/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedGroupMessages.html) +* [\danog\MadelineProto\EventHandler\Pinned\PinnedPrivateMessages: Some messages were pinned in a private chat.](/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedPrivateMessages.html) +* [\danog\MadelineProto\EventHandler\Plugin\RestartPlugin: Plugin that offers a /restart command to admins that can be used to restart the bot, applying changes.](/PHP/danog/MadelineProto/EventHandler/Plugin/RestartPlugin.html) +* [\danog\MadelineProto\EventHandler\Poll\MultiplePoll: Represents a poll with multiple options can be chosen as answer](/PHP/danog/MadelineProto/EventHandler/Poll/MultiplePoll.html) +* [\danog\MadelineProto\EventHandler\Poll\PollAnswer: Represents a possible answer of a poll](/PHP/danog/MadelineProto/EventHandler/Poll/PollAnswer.html) +* [\danog\MadelineProto\EventHandler\Poll\QuizPoll: Represents a quiz (with wrong and correct answers, results shown in the return type) poll](/PHP/danog/MadelineProto/EventHandler/Poll/QuizPoll.html) +* [\danog\MadelineProto\EventHandler\Poll\SinglePoll: Represents a poll with a option can be chosen as answer](/PHP/danog/MadelineProto/EventHandler/Poll/SinglePoll.html) +* [\danog\MadelineProto\EventHandler\Privacy\Rule: Represents a privacy rule.](/PHP/danog/MadelineProto/EventHandler/Privacy/Rule.html) +* [\danog\MadelineProto\EventHandler\Privacy\RuleDestination\AllowAll: Allow all users.](/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowAll.html) +* [\danog\MadelineProto\EventHandler\Privacy\RuleDestination\AllowChatParticipants: Allow all participants of certain chats.](/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowChatParticipants.html) +* [\danog\MadelineProto\EventHandler\Privacy\RuleDestination\AllowCloseFriends](/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowCloseFriends.html) +* [\danog\MadelineProto\EventHandler\Privacy\RuleDestination\AllowContacts: Allow all contacts.](/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowContacts.html) +* [\danog\MadelineProto\EventHandler\Privacy\RuleDestination\AllowUsers: Allow only certain user.](/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/AllowUsers.html) +* [\danog\MadelineProto\EventHandler\Privacy\RuleDestination\DisallowAll: Disallow all users.](/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowAll.html) +* [\danog\MadelineProto\EventHandler\Privacy\RuleDestination\DisallowChatParticipants: Disallow only participants of certain chats.](/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowChatParticipants.html) +* [\danog\MadelineProto\EventHandler\Privacy\RuleDestination\DisallowContacts: Disallow only contacts.](/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowContacts.html) +* [\danog\MadelineProto\EventHandler\Privacy\RuleDestination\DisallowUsers: Disallow only certain users.](/PHP/danog/MadelineProto/EventHandler/Privacy/RuleDestination/DisallowUsers.html) +* [\danog\MadelineProto\EventHandler\Query\ChatButtonQuery: Represents a query sent by the user by clicking on a button in a chat.](/PHP/danog/MadelineProto/EventHandler/Query/ChatButtonQuery.html) +* [\danog\MadelineProto\EventHandler\Query\ChatGameQuery: Represents a query sent by the user by clicking on a "Play game" button in a chat.](/PHP/danog/MadelineProto/EventHandler/Query/ChatGameQuery.html) +* [\danog\MadelineProto\EventHandler\Query\InlineButtonQuery: Represents a query sent by the user by clicking on a button in an inline message.](/PHP/danog/MadelineProto/EventHandler/Query/InlineButtonQuery.html) +* [\danog\MadelineProto\EventHandler\Query\InlineGameQuery: Represents a query sent by the user by clicking on a "Play game" button in an inline message.](/PHP/danog/MadelineProto/EventHandler/Query/InlineGameQuery.html) +* [\danog\MadelineProto\EventHandler\Story\Story: Represents a Telegram story.](/PHP/danog/MadelineProto/EventHandler/Story/Story.html) +* [\danog\MadelineProto\EventHandler\Story\StoryDeleted: Represents a deleted story.](/PHP/danog/MadelineProto/EventHandler/Story/StoryDeleted.html) +* [\danog\MadelineProto\EventHandler\Story\StoryReaction: Represents a reaction to a story.](/PHP/danog/MadelineProto/EventHandler/Story/StoryReaction.html) +* [\danog\MadelineProto\EventHandler\Topic\IconColor: Specifies the color of the fallback topic icon (RGB) if no custom emoji icon is specified.](/PHP/danog/MadelineProto/EventHandler/Topic/IconColor.html) +* [\danog\MadelineProto\EventHandler\Typing\ChatUserTyping: The user is preparing a message in a group; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing.](/PHP/danog/MadelineProto/EventHandler/Typing/ChatUserTyping.html) +* [\danog\MadelineProto\EventHandler\Typing\SecretUserTyping: The user is preparing a message in a secret chat; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing.](/PHP/danog/MadelineProto/EventHandler/Typing/SecretUserTyping.html) +* [\danog\MadelineProto\EventHandler\Typing\SupergroupUserTyping: A user is typing in a [supergroup](https://core.telegram.org/api/channel).](/PHP/danog/MadelineProto/EventHandler/Typing/SupergroupUserTyping.html) +* [\danog\MadelineProto\EventHandler\Typing\UserTyping: The user is preparing a message; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing.](/PHP/danog/MadelineProto/EventHandler/Typing/UserTyping.html) +* [\danog\MadelineProto\EventHandler\User\Blocked: A peer was blocked.](/PHP/danog/MadelineProto/EventHandler/User/Blocked.html) +* [\danog\MadelineProto\EventHandler\User\BotStopped: A bot was stopped or re-started.](/PHP/danog/MadelineProto/EventHandler/User/BotStopped.html) +* [\danog\MadelineProto\EventHandler\User\Phone: A user’s phone number was changed.](/PHP/danog/MadelineProto/EventHandler/User/Phone.html) +* [\danog\MadelineProto\EventHandler\User\Username: Changes were made to the user’s first name, last name or username.](/PHP/danog/MadelineProto/EventHandler/User/Username.html) +* [\danog\MadelineProto\EventHandler\User\UsernameInfo: Represents an username.](/PHP/danog/MadelineProto/EventHandler/User/UsernameInfo.html) +* [\danog\MadelineProto\EventHandler\User\Status\Emoji: The [emoji status](https://core.telegram.org/api/emoji-status) of a certain user has changed or was removed.](/PHP/danog/MadelineProto/EventHandler/User/Status/Emoji.html) +* [\danog\MadelineProto\EventHandler\User\Status\EmptyStatus: User status has not been set yet.](/PHP/danog/MadelineProto/EventHandler/User/Status/EmptyStatus.html) +* [\danog\MadelineProto\EventHandler\User\Status\LastMonth: Online status: last seen last month.](/PHP/danog/MadelineProto/EventHandler/User/Status/LastMonth.html) +* [\danog\MadelineProto\EventHandler\User\Status\LastWeek: Online status: last seen last week.](/PHP/danog/MadelineProto/EventHandler/User/Status/LastWeek.html) +* [\danog\MadelineProto\EventHandler\User\Status\Offline: The user’s offline status.](/PHP/danog/MadelineProto/EventHandler/User/Status/Offline.html) +* [\danog\MadelineProto\EventHandler\User\Status\Online: Online status of the user.](/PHP/danog/MadelineProto/EventHandler/User/Status/Online.html) +* [\danog\MadelineProto\EventHandler\User\Status\Recently: Online status: last seen recently.](/PHP/danog/MadelineProto/EventHandler/User/Status/Recently.html) +* [\danog\MadelineProto\EventHandler\Wallpaper\WallpaperSettings: Info on how to generate a wallpaper, according to [these instructions »](https://core.telegram.org/api/wallpapers).](/PHP/danog/MadelineProto/EventHandler/Wallpaper/WallpaperSettings.html) +* [\danog\MadelineProto\MTProtoTools\DialogId: Represents the type of a bot API dialog ID.](/PHP/danog/MadelineProto/MTProtoTools/DialogId.html) +* [\danog\MadelineProto\RPCError\FloodWaitError: Represents a FLOOD_WAIT_ RPC error returned by telegram.](/PHP/danog/MadelineProto/RPCError/FloodWaitError.html) +* [\danog\MadelineProto\SecretChats\SecretChat: Represents a secret chat.](/PHP/danog/MadelineProto/SecretChats/SecretChat.html) +* [\danog\MadelineProto\Settings\AppInfo: App information.](/PHP/danog/MadelineProto/Settings/AppInfo.html) +* [\danog\MadelineProto\Settings\Auth: Cryptography settings.](/PHP/danog/MadelineProto/Settings/Auth.html) +* [\danog\MadelineProto\Settings\Connection: Connection settings.](/PHP/danog/MadelineProto/Settings/Connection.html) +* [\danog\MadelineProto\Settings\Files: File management settings.](/PHP/danog/MadelineProto/Settings/Files.html) +* [\danog\MadelineProto\Settings\Ipc: IPC server settings.](/PHP/danog/MadelineProto/Settings/Ipc.html) +* [\danog\MadelineProto\Settings\Logger: Logger settings.](/PHP/danog/MadelineProto/Settings/Logger.html) +* [\danog\MadelineProto\Settings\Peer: Peer database settings.](/PHP/danog/MadelineProto/Settings/Peer.html) +* [\danog\MadelineProto\Settings\Pwr: PWRTelegram settings.](/PHP/danog/MadelineProto/Settings/Pwr.html) +* [\danog\MadelineProto\Settings\RPC: RPC settings.](/PHP/danog/MadelineProto/Settings/RPC.html) +* [\danog\MadelineProto\Settings\SecretChats: Secret chat settings.](/PHP/danog/MadelineProto/Settings/SecretChats.html) +* [\danog\MadelineProto\Settings\Serialization: Serialization settings.](/PHP/danog/MadelineProto/Settings/Serialization.html) +* [\danog\MadelineProto\Settings\TLSchema: TL schema settings.](/PHP/danog/MadelineProto/Settings/TLSchema.html) +* [\danog\MadelineProto\Settings\Templates: Web and CLI template settings for login.](/PHP/danog/MadelineProto/Settings/Templates.html) +* [\danog\MadelineProto\Settings\VoIP: VoIP settings.](/PHP/danog/MadelineProto/Settings/VoIP.html) +* [\danog\MadelineProto\Settings\Database\Memory: Memory backend settings.](/PHP/danog/MadelineProto/Settings/Database/Memory.html) +* [\danog\MadelineProto\Settings\Database\Mysql: MySQL backend settings.](/PHP/danog/MadelineProto/Settings/Database/Mysql.html) +* [\danog\MadelineProto\Settings\Database\Postgres: Postgres backend settings.](/PHP/danog/MadelineProto/Settings/Database/Postgres.html) +* [\danog\MadelineProto\Settings\Database\Redis: Redis backend settings.](/PHP/danog/MadelineProto/Settings/Database/Redis.html) +* [\danog\MadelineProto\Settings\Database\SerializerType](/PHP/danog/MadelineProto/Settings/Database/SerializerType.html) +* [\danog\MadelineProto\TL\Exception: TL deserialization exception.](/PHP/danog/MadelineProto/TL/Exception.html) +* [\danog\MadelineProto\TL\Conversion\Exception: TL conversion exception.](/PHP/danog/MadelineProto/TL/Conversion/Exception.html) +* [\danog\MadelineProto\TL\Types\Button: Clickable button.](/PHP/danog/MadelineProto/TL/Types/Button.html) +* [\danog\MadelineProto\TL\Types\Bytes: Bytes wrapper.](/PHP/danog/MadelineProto/TL/Types/Bytes.html) +* [\danog\MadelineProto\TL\Types\LoginQrCode: Represents a login QR code.](/PHP/danog/MadelineProto/TL/Types/LoginQrCode.html) +* [\danog\MadelineProto\VoIP\CallState](/PHP/danog/MadelineProto/VoIP/CallState.html) +* [\danog\MadelineProto\VoIP\DiscardReason: Why was the call discarded?](/PHP/danog/MadelineProto/VoIP/DiscardReason.html) +* [\danog\MadelineProto\VoIP\VoIPState: VoIP protcol state.](/PHP/danog/MadelineProto/VoIP/VoIPState.html) + + + +--- +Generated by [danog/phpdoc](https://phpdoc.daniil.it). \ No newline at end of file diff --git a/docs/Participant.md b/docs/Participant.md new file mode 100644 index 0000000000..2d0b044fa6 --- /dev/null +++ b/docs/Participant.md @@ -0,0 +1,24 @@ +--- +title: Participant +description: PWRTelegram participant attributes, type and example +nav_exclude: true +--- +## Constructor: PWRTelegram chat participant + + + +### Attributes: + +| Name | Type | Required | Description| +|----------|---------------|----------|------------| +|user|[Chat](Chat.html) | Yes| The participant| +|inviter|[Chat](Chat.html) | Optional|The user that invited this participant| +|promoted_by|[Chat](Chat.html) | Optional|The user that promoted this participant| +|kicked_by|[Chat](Chat.html) | Optional|The user that kicked this participant| +|date|[int](API_docs/types/int.html) | Yes|When was the user invited| +|role|[string](API_docs/types/string.html) | Yes|user, admin, creator, banned| +|rank|[string](API_docs/types/string.html) | Optional|A custom rank string for admins and creators| +|can_edit|[Bool](API_docs/types/Bool.html) | Optional|Can the user edit messages in the channel| +|left|[Bool](API_docs/types/Bool.html) | Optional|Has this user left| +|admin_rights|[ChatAdminRights](API_docs/types/ChatAdminRights.html) | Optional|Admin rights| +|banned_rights|[ChatBannedRights](API_docs/types/ChatBannedRights.html) | Optional|Banned rights| diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000000..142d1310f6 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,3 @@ +# Documentation for MadelineProto + +This is the documentation repo for [MadelineProto](https://github.com/danog/MadelineProto). diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 0000000000..f88f868320 --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1,38 @@ +color_scheme: dark + +plugins: + - jekyll-sitemap + - jekyll-redirect-from + - jekyll-seo-tag + - jekyll-default-layout + +url: https://docs.madelineproto.xyz +logo: logo.png + +twitter: + username: DaniilGentili + card: summary + +author: + twitter: DaniilGentili + +include: [".well-known"] +repository: danog/madelineproto + +aux_links_new_tab: true + +gh_edit_link: true # show or hide edit this page link +gh_edit_link_text: "Edit this page on GitHub" +gh_edit_repository: "https://github.com/danog/MadelineProtoDocs" # the github URL for your repo +gh_edit_branch: "master" # the branch that your docs is served from +gh_edit_source: docs # the source that your files originate from +gh_edit_view_mode: "edit" # "tree" or "edit" if you want the user to jump into the editor immediately + + +compress_html: + clippings: all + comments: all + endings: all + startings: [] + blanklines: false + profile: false \ No newline at end of file diff --git a/docs/_includes/fix_linenos.html b/docs/_includes/fix_linenos.html new file mode 100644 index 0000000000..6243fb093e --- /dev/null +++ b/docs/_includes/fix_linenos.html @@ -0,0 +1,65 @@ +{%- comment -%} +This file can be used to fix the HTML produced by Jekyll for highlighted +code with line numbers. + +It works with `{% highlight some_language linenos %}...{% endhighlight %}` +and with the Kramdown option to add line numbers to fenced code. + +The implementation was derived from the workaround provided by +Dmitry Hrabrov (DeXP) at +https://github.com/penibelst/jekyll-compress-html/issues/71#issuecomment-188144901 + +EXPLANATION + +The HTML produced by Rouge highlighting with lie numbers is of the form +`code table`. Jekyll (<= 4.1.1) always wraps the highlighted HTML +with `pre`. This wrapping is not only unnecessary, but also transforms +the conforming HTML produced by Rouge to non-conforming HTML, which +results in HTML validation error reports. + +The fix removes the outer `pre` tags whenever they contain the pattern +``. + +Apart from avoiding HTML validation errors, the fix allows the use of +the [Jekyll layout for compressing HTML](http://jch.penibelst.de), +which relies on `pre` tags not being nested, according to +https://github.com/penibelst/jekyll-compress-html/issues/71#issuecomment-172069842 + +USAGE + +(Any names can be used for `some_var` and `some_language`.) + +{% capture some_var %} +{% highlight some_language linenos %} +Some code +{% endhighlight %} +{% endcapture %} +{% include fix_linenos.html code=some_var %} + +For code fences: + +{% capture some_var %} +```some_language +Some code +``` +{% endcapture %} +{% assign some_var = some_var | markdownify %} +{% include fix_linenos.html code=some_var %} + +CAVEATS + +The above does not work when `Some code` happens to contain the matched string +`
`. + +The use of this file overwrites the variable `fix_linenos_code` with `nil`. + +{%- endcomment -%} + +{% assign fix_linenos_code = include.code %} +{% if fix_linenos_code contains '
' %} + {% assign fix_linenos_code = fix_linenos_code | replace: '
', '
' %}
+  {% assign fix_linenos_code = fix_linenos_code | replace: "
", "" %} +{% endif %} +{{ fix_linenos_code }} +{% assign fix_linenos_code = nil %} diff --git a/docs/_includes/footer_custom.html b/docs/_includes/footer_custom.html new file mode 100644 index 0000000000..64e08c290f --- /dev/null +++ b/docs/_includes/footer_custom.html @@ -0,0 +1,3 @@ +{%- if site.footer_content -%} +

{{ site.footer_content }}

+{%- endif -%} diff --git a/docs/_includes/head.html b/docs/_includes/head.html new file mode 100644 index 0000000000..d50b2a59ad --- /dev/null +++ b/docs/_includes/head.html @@ -0,0 +1,33 @@ + + + + + {{ page.title }} + + + + + + + + + + + + + + + + + {% seo %} + + {% include head_custom.html %} + + + + + diff --git a/docs/_includes/head_custom.html b/docs/_includes/head_custom.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/_includes/header_custom.html b/docs/_includes/header_custom.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/_includes/nav.html b/docs/_includes/nav.html new file mode 100644 index 0000000000..8b6a3550db --- /dev/null +++ b/docs/_includes/nav.html @@ -0,0 +1,101 @@ + diff --git a/docs/_includes/title.html b/docs/_includes/title.html new file mode 100644 index 0000000000..8bd3fa83da --- /dev/null +++ b/docs/_includes/title.html @@ -0,0 +1,5 @@ +{% if site.logo %} + +{% else %} + {{ site.title }} +{% endif %} diff --git a/docs/_includes/vendor/anchor_headings.html b/docs/_includes/vendor/anchor_headings.html new file mode 100755 index 0000000000..8b12751559 --- /dev/null +++ b/docs/_includes/vendor/anchor_headings.html @@ -0,0 +1,175 @@ +{% capture headingsWorkspace %} + {% comment %} + Copyright (c) 2018 Vladimir "allejo" Jimenez + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following + conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + {% endcomment %} + {% comment %} + Version 1.0.13 + https://github.com/allejo/jekyll-anchor-headings + + "Be the pull request you wish to see in the world." ~Ben Balter + + Usage: + {% include anchor_headings.html html=content anchorBody="#" %} + + Parameters: + * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll + + Optional Parameters: + * beforeHeading (bool) : false - Set to true if the anchor should be placed _before_ the heading's content + * headerAttrs (string) : '' - Any custom HTML attributes that will be added to the heading tag; you may NOT use `id`; + the `%heading%` and `%html_id%` placeholders are available + * anchorAttrs (string) : '' - Any custom HTML attributes that will be added to the `` tag; you may NOT use `href`, `class` or `title`; + the `%heading%` and `%html_id%` placeholders are available + * anchorBody (string) : '' - The content that will be placed inside the anchor; the `%heading%` placeholder is available + * anchorClass (string) : '' - The class(es) that will be used for each anchor. Separate multiple classes with a space + * anchorTitle (string) : '' - The `title` attribute that will be used for anchors + * h_min (int) : 1 - The minimum header level to build an anchor for; any header lower than this value will be ignored + * h_max (int) : 6 - The maximum header level to build an anchor for; any header greater than this value will be ignored + * bodyPrefix (string) : '' - Anything that should be inserted inside of the heading tag _before_ its anchor and content + * bodySuffix (string) : '' - Anything that should be inserted inside of the heading tag _after_ its anchor and content + * generateId (true) : false - Set to true if a header without id should generate an id to use. + + Output: + The original HTML with the addition of anchors inside of all of the h1-h6 headings. + {% endcomment %} + + {% assign minHeader = include.h_min | default: 1 %} + {% assign maxHeader = include.h_max | default: 6 %} + {% assign beforeHeading = include.beforeHeading %} + {% assign headerAttrs = include.headerAttrs %} + {% assign nodes = include.html | split: ' + {% if headerLevel != "1" and headerLevel != "2" and headerLevel != "3" and headerLevel != "4" and headerLevel != "5" and headerLevel != "6" %} + + {% assign firstChunk = node | split: '>' | first %} + + + {% unless firstChunk contains '<' %} + {% capture node %}{% endcapture %} + {% assign _workspace = node | split: _closingTag %} + {% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %} + {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} + {% assign escaped_header = header | strip_html | strip %} + + {% assign _classWorkspace = _workspace[0] | split: 'class="' %} + {% assign _classWorkspace = _classWorkspace[1] | split: '"' %} + {% assign _html_class = _classWorkspace[0] %} + + {% if _html_class contains "no_anchor" %} + {% assign skip_anchor = true %} + {% else %} + {% assign skip_anchor = false %} + {% endif %} + + {% assign _idWorkspace = _workspace[0] | split: 'id="' %} + {% if _idWorkspace[1] %} + {% assign _idWorkspace = _idWorkspace[1] | split: '"' %} + {% assign html_id = _idWorkspace[0] %} + {% assign h_attrs = headerAttrs %} + {% elsif include.generateId %} + + {% assign html_id = escaped_header | slugify %} + {% if html_id == "" %} + {% assign html_id = false %} + {% endif %} + + {% capture h_attrs %}{{ headerAttrs }} id="%html_id%"{% endcapture %} + {% endif %} + + + {% capture anchor %}{% endcapture %} + + {% if skip_anchor == false and html_id and headerLevel >= minHeader and headerLevel <= maxHeader %} + {% if h_attrs %} + {% capture _hAttrToStrip %}{{ _hAttrToStrip | split: '>' | first }} {{ h_attrs | strip | replace: '%heading%', escaped_header | replace: '%html_id%', html_id }}>{% endcapture %} + {% endif %} + + {% capture anchor %}href="#{{ html_id }}"{% endcapture %} + + {% if include.anchorClass %} + {% capture anchor %}{{ anchor }} class="{{ include.anchorClass }}"{% endcapture %} + {% endif %} + + {% if include.anchorTitle %} + {% capture anchor %}{{ anchor }} title="{{ include.anchorTitle | replace: '%heading%', escaped_header }}"{% endcapture %} + {% endif %} + + {% if include.anchorAttrs %} + {% capture anchor %}{{ anchor }} {{ include.anchorAttrs | replace: '%heading%', escaped_header | replace: '%html_id%', html_id }}{% endcapture %} + {% endif %} + + {% capture anchor %}{{ include.anchorBody | replace: '%heading%', escaped_header | default: '' }}{% endcapture %} + + + {% if beforeHeading %} + {% capture anchor %}{{ anchor }} {% endcapture %} + {% else %} + {% capture anchor %} {{ anchor }}{% endcapture %} + {% endif %} + {% endif %} + + {% capture new_heading %} + + {% endcapture %} + + + {% assign chunkCount = _workspace | size %} + {% if chunkCount > 1 %} + {% capture new_heading %}{{ new_heading }}{{ _workspace | last }}{% endcapture %} + {% endif %} + + {% capture edited_headings %}{{ edited_headings }}{{ new_heading }}{% endcapture %} + {% endfor %} +{% endcapture %}{% assign headingsWorkspace = '' %}{{ edited_headings | strip }} diff --git a/docs/_layouts/about.html b/docs/_layouts/about.html new file mode 100644 index 0000000000..5e7112684a --- /dev/null +++ b/docs/_layouts/about.html @@ -0,0 +1,5 @@ +--- +layout: default +--- + +{{ content }} diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html new file mode 100644 index 0000000000..4b31def537 --- /dev/null +++ b/docs/_layouts/default.html @@ -0,0 +1,195 @@ +--- +layout: table_wrappers +--- + + + + +{% include head.html %} + + + + Link + + + + + + Search + + + + + + Menu + + + + + + Expand + + + + + + Document + + + + + + + +
+
+ + {% include header_custom.html %} + {% if site.aux_links %} + + {% endif %} +
+
+ {% unless page.url == "/" %} + {% if page.parent %} + {%- for node in pages_list -%} + {%- if node.parent == nil -%} + {%- if page.parent == node.title or page.grand_parent == node.title -%} + {%- assign first_level_url = node.url | absolute_url -%} + {%- endif -%} + {%- if node.has_children -%} + {%- assign children_list = pages_list | where: "parent", node.title -%} + {%- for child in children_list -%} + {%- if page.url == child.url or page.parent == child.title -%} + {%- assign second_level_url = child.url | absolute_url -%} + {%- endif -%} + {%- endfor -%} + {%- endif -%} + {%- endif -%} + {%- endfor -%} + + {% endif %} + {% endunless %} +
+ {% include vendor/anchor_headings.html html=content beforeHeading="true" anchorBody='' anchorClass="anchor-heading" anchorAttrs='aria-labelledby="%html_id%"' %} + + {% if page.has_children == true and page.has_toc != false %} +
+

Table of contents

+
    + {%- assign children_list = pages_list | where: "parent", page.title | where: "grand_parent", page.parent -%} + {% for child in children_list %} +
  • + {{ child.title }}{% if child.summary %} - {{ child.summary }}{% endif %} +
  • + {% endfor %} +
+ {% endif %} + + {% capture footer_custom %} + {%- include footer_custom.html -%} + {% endcapture %} + {% if footer_custom != "" or site.last_edit_timestamp or site.gh_edit_link %} +
+
+ {% if site.back_to_top %} +

{{ site.back_to_top_text }}

+ {% endif %} + + {{ footer_custom }} + + {% if site.last_edit_timestamp or site.gh_edit_link %} +
+ {% if site.last_edit_timestamp and site.last_edit_time_format and page.last_modified_date %} +

+ Page last modified: {{ page.last_modified_date | date: site.last_edit_time_format }}. +

+ {% endif %} + {% if + site.gh_edit_link and + site.gh_edit_link_text and + site.gh_edit_repository and + site.gh_edit_branch and + site.gh_edit_view_mode + %} +

+ {{ site.gh_edit_link_text }} +

+ {% endif %} +
+ {% endif %} +
+ {% endif %} + +
+
+ + + + + +
+
+ + diff --git a/docs/_layouts/empty.html b/docs/_layouts/empty.html new file mode 100644 index 0000000000..7f63ffdeb6 --- /dev/null +++ b/docs/_layouts/empty.html @@ -0,0 +1,3 @@ +--- +--- +{{ content }} \ No newline at end of file diff --git a/docs/_layouts/home.html b/docs/_layouts/home.html new file mode 100644 index 0000000000..5e7112684a --- /dev/null +++ b/docs/_layouts/home.html @@ -0,0 +1,5 @@ +--- +layout: default +--- + +{{ content }} diff --git a/docs/_layouts/page.html b/docs/_layouts/page.html new file mode 100644 index 0000000000..5e7112684a --- /dev/null +++ b/docs/_layouts/page.html @@ -0,0 +1,5 @@ +--- +layout: default +--- + +{{ content }} diff --git a/docs/_layouts/post.html b/docs/_layouts/post.html new file mode 100644 index 0000000000..5e7112684a --- /dev/null +++ b/docs/_layouts/post.html @@ -0,0 +1,5 @@ +--- +layout: default +--- + +{{ content }} diff --git a/docs/_layouts/table_wrappers.html b/docs/_layouts/table_wrappers.html new file mode 100644 index 0000000000..3f8f226a12 --- /dev/null +++ b/docs/_layouts/table_wrappers.html @@ -0,0 +1,7 @@ +--- +layout: vendor/compress +--- + +{% assign content_ = content | replace: '', '
' %} +{{ content_ }} diff --git a/docs/_layouts/vendor/compress.html b/docs/_layouts/vendor/compress.html new file mode 100644 index 0000000000..bb34487d2a --- /dev/null +++ b/docs/_layouts/vendor/compress.html @@ -0,0 +1,10 @@ +--- +# Jekyll layout that compresses HTML +# v3.1.0 +# http://jch.penibelst.de/ +# © 2014–2015 Anatol Broder +# MIT License +--- + +{% capture _LINE_FEED %} +{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment or site.compress_html.ignore.envs == "all" %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "
" %}{% endif %}{% unless _pre_before contains "
" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " ;; ;" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %}
Step Bytes
raw {{ content | size }}{% if _profile_endings %}
endings {{ _profile_endings }}{% endif %}{% if _profile_startings %}
startings {{ _profile_startings }}{% endif %}{% if _profile_comments %}
comments {{ _profile_comments }}{% endif %}{% if _profile_collapse %}
collapse {{ _profile_collapse }}{% endif %}{% if _profile_clippings %}
clippings {{ _profile_clippings }}{% endif %}
{% endif %}{% endif %} diff --git a/docs/_sass/base.scss b/docs/_sass/base.scss new file mode 100644 index 0000000000..c3b6698722 --- /dev/null +++ b/docs/_sass/base.scss @@ -0,0 +1,108 @@ +// +// Base element style overrides +// +// stylelint-disable selector-no-type, selector-max-type + +* { + box-sizing: border-box; +} + +::selection { + color: $white; + background: $link-color; +} + +html { + @include fs-4; + scroll-behavior: smooth; +} + +body { + font-family: $body-font-family; + font-size: inherit; + line-height: $body-line-height; + color: $body-text-color; + background-color: $body-background-color; +} + +ol, +ul, +dl, +pre, +address, +blockquote, +table, +div, +hr, +form, +fieldset, +noscript .table-wrapper { + margin-top: 0; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin-top: 0; + margin-bottom: 1em; + font-weight: 500; + line-height: $body-heading-line-height; + color: $body-heading-color; +} + +p { + margin-top: 1em; + margin-bottom: 1em; +} + +a { + color: $link-color; + text-decoration: none; +} + +a:not([class]) { + text-decoration: none; + background-image: linear-gradient($border-color 0%, $border-color 100%); + background-repeat: repeat-x; + background-position: 0 100%; + background-size: 1px 1px; + + &:hover { + background-image: linear-gradient( + rgba($link-color, 0.45) 0%, + rgba($link-color, 0.45) 100% + ); + background-size: 1px 1px; + } +} + +code { + font-family: $mono-font-family; + font-size: 0.75em; + line-height: $body-line-height; +} + +figure, +pre { + margin: 0; +} + +li { + margin: 0.25em 0; +} + +img { + max-width: 100%; + height: auto; +} + +hr { + height: 1px; + padding: 0; + margin: $sp-6 0; + background-color: $border-color; + border: 0; +} diff --git a/docs/_sass/buttons.scss b/docs/_sass/buttons.scss new file mode 100644 index 0000000000..4a1b2d6a3b --- /dev/null +++ b/docs/_sass/buttons.scss @@ -0,0 +1,119 @@ +// +// Buttons and things that look like buttons +// +// stylelint-disable color-named + +.btn { + display: inline-block; + box-sizing: border-box; + padding-top: 0.3em; + padding-right: 1em; + padding-bottom: 0.3em; + padding-left: 1em; + margin: 0; + margin-right: 0.15em; + font-family: inherit; + font-size: inherit; + font-weight: 500; + line-height: 1.5; + color: $link-color; + text-decoration: none; + vertical-align: baseline; + cursor: pointer; + background-color: $base-button-color; + border-width: 0; + border-radius: $border-radius; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + appearance: none; + + &:focus { + text-decoration: none; + outline: none; + box-shadow: 0 0 0 3px rgba(blue, 0.25); + } + + &:focus:hover, + &.selected:focus { + box-shadow: 0 0 0 3px rgba(blue, 0.25); + } + + &:hover, + &.zeroclipboard-is-hover { + color: darken($link-color, 2%); + } + + &:hover, + &:active, + &.zeroclipboard-is-hover, + &.zeroclipboard-is-active { + text-decoration: none; + background-color: darken($base-button-color, 1%); + } + + &:active, + &.selected, + &.zeroclipboard-is-active { + background-color: darken($base-button-color, 3%); + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); + } + + &.selected:hover { + background-color: darken(#dcdcdc, 5%); + } + + &:disabled, + &.disabled { + &, + &:hover { + color: rgba(102, 102, 102, 0.5); + cursor: default; + background-color: rgba(229, 229, 229, 0.5); + background-image: none; + box-shadow: none; + } + } +} + +.btn-outline { + color: $link-color; + background: transparent; + box-shadow: inset 0 0 0 2px $grey-lt-300; + + &:hover, + &:active, + &.zeroclipboard-is-hover, + &.zeroclipboard-is-active { + color: darken($link-color, 4%); + text-decoration: none; + background-color: transparent; + box-shadow: inset 0 0 0 3px $grey-lt-300; + } + + &:focus { + text-decoration: none; + outline: none; + box-shadow: inset 0 0 0 2px $grey-dk-100, 0 0 0 3px rgba(blue, 0.25); + } + + &:focus:hover, + &.selected:focus { + box-shadow: inset 0 0 0 2px $grey-dk-100; + } +} + +.btn-primary { + @include btn-color($white, $btn-primary-color); +} + +.btn-purple { + @include btn-color($white, $purple-100); +} + +.btn-blue { + @include btn-color($white, $blue-000); +} + +.btn-green { + @include btn-color($white, $green-100); +} diff --git a/docs/_sass/code.scss b/docs/_sass/code.scss new file mode 100644 index 0000000000..f038912909 --- /dev/null +++ b/docs/_sass/code.scss @@ -0,0 +1,340 @@ +// +// Code and syntax highlighting +// +// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type + +code { + padding: 0.2em 0.15em; + font-weight: 400; + background-color: $code-background-color; + border: $border $border-color; + border-radius: $border-radius; +} + +// Avoid appearance of dark border around visited code links in Safari +a:visited code { + border-color: $border-color; +} + +// Content structure for highlighted code blocks using fences or Liquid +// +// ```[LANG]...```, no kramdown line_numbers: +// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code +// +// ```[LANG]...```, kramdown line_numbers = true: +// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code +// > div.table-wrapper > table.rouge-table > tbody > tr +// > td.rouge-gutter.gl > pre.lineno +// | td.rouge-code > pre +// +// {% highlight LANG %}...{% endhighlight %}: +// figure.highlight > pre > code.language-LANG +// +// {% highlight LANG linenos %}...{% endhighlight %}: +// figure.highlight > pre > code.language-LANG +// > div.table-wrapper > table.rouge-table > tbody > tr +// > td.gutter.gl > pre.lineno +// | td.code > pre +// +// fix_linenos removes the outermost pre when it encloses table.rouge-table +// +// See docs/index-test.md for some tests. +// +// No kramdown line_numbers: fences and Liquid highlighting look the same. +// Kramdown line_numbers = true: fences have a wider gutter than with Liquid? + +// ```[LANG]...``` +div.highlighter-rouge { + padding: $sp-3; + margin-top: 0; + margin-bottom: $sp-3; + overflow-x: auto; + background-color: $code-background-color; + border-radius: $border-radius; + box-shadow: none; + -webkit-overflow-scrolling: touch; + + div.highlight, + pre.highlight, + code { + padding: 0; + margin: 0; + border: 0; + } +} + +// {% highlight LANG %}...{% endhighlight %}, +// {% highlight LANG linenos %}...{% endhighlight %}: +figure.highlight { + padding: $sp-3; + margin-top: 0; + margin-bottom: $sp-3; + background-color: $code-background-color; + border-radius: $border-radius; + box-shadow: none; + -webkit-overflow-scrolling: touch; + + pre, + code { + padding: 0; + margin: 0; + border: 0; + } +} + +// ```[LANG]...```, kramdown line_numbers = true, +// {% highlight LANG linenos %}...{% endhighlight %}: +.highlight .table-wrapper { + padding: 0; + margin: 0; + border: 0; + box-shadow: none; + + td, + pre { + @include fs-2; + min-width: 0; + padding: 0; + background-color: $code-background-color; + border: 0; + } + + td.gl { + padding-right: $sp-3; + } + + pre { + margin: 0; + line-height: 2; + } +} + +.highlight .c { + color: #586e75; +} // comment // +.highlight .err { + color: #93a1a1; +} // error // +.highlight .g { + color: #93a1a1; +} // generic // +.highlight .k { + color: #859900; +} // keyword // +.highlight .l { + color: #93a1a1; +} // literal // +.highlight .n { + color: #93a1a1; +} // name // +.highlight .o { + color: #859900; +} // operator // +.highlight .x { + color: #cb4b16; +} // other // +.highlight .p { + color: #93a1a1; +} // punctuation // +.highlight .cm { + color: #586e75; +} // comment.multiline // +.highlight .cp { + color: #859900; +} // comment.preproc // +.highlight .c1 { + color: #586e75; +} // comment.single // +.highlight .cs { + color: #859900; +} // comment.special // +.highlight .gd { + color: #2aa198; +} // generic.deleted // +.highlight .ge { + font-style: italic; + color: #93a1a1; +} // generic.emph // +.highlight .gr { + color: #dc322f; +} // generic.error // +.highlight .gh { + color: #cb4b16; +} // generic.heading // +.highlight .gi { + color: #859900; +} // generic.inserted // +.highlight .go { + color: #93a1a1; +} // generic.output // +.highlight .gp { + color: #93a1a1; +} // generic.prompt // +.highlight .gs { + font-weight: bold; + color: #93a1a1; +} // generic.strong // +.highlight .gu { + color: #cb4b16; +} // generic.subheading // +.highlight .gt { + color: #93a1a1; +} // generic.traceback // +.highlight .kc { + color: #cb4b16; +} // keyword.constant // +.highlight .kd { + color: #268bd2; +} // keyword.declaration // +.highlight .kn { + color: #859900; +} // keyword.namespace // +.highlight .kp { + color: #859900; +} // keyword.pseudo // +.highlight .kr { + color: #268bd2; +} // keyword.reserved // +.highlight .kt { + color: #dc322f; +} // keyword.type // +.highlight .ld { + color: #93a1a1; +} // literal.date // +.highlight .m { + color: #2aa198; +} // literal.number // +.highlight .s { + color: #2aa198; +} // literal.string // +.highlight .na { + color: #555; +} // name.attribute // +.highlight .nb { + color: #b58900; +} // name.builtin // +.highlight .nc { + color: #268bd2; +} // name.class // +.highlight .no { + color: #cb4b16; +} // name.constant // +.highlight .nd { + color: #268bd2; +} // name.decorator // +.highlight .ni { + color: #cb4b16; +} // name.entity // +.highlight .ne { + color: #cb4b16; +} // name.exception // +.highlight .nf { + color: #268bd2; +} // name.function // +.highlight .nl { + color: #555; +} // name.label // +.highlight .nn { + color: #93a1a1; +} // name.namespace // +.highlight .nx { + color: #555; +} // name.other // +.highlight .py { + color: #93a1a1; +} // name.property // +.highlight .nt { + color: #268bd2; +} // name.tag // +.highlight .nv { + color: #268bd2; +} // name.variable // +.highlight .ow { + color: #859900; +} // operator.word // +.highlight .w { + color: #93a1a1; +} // text.whitespace // +.highlight .mf { + color: #2aa198; +} // literal.number.float // +.highlight .mh { + color: #2aa198; +} // literal.number.hex // +.highlight .mi { + color: #2aa198; +} // literal.number.integer // +.highlight .mo { + color: #2aa198; +} // literal.number.oct // +.highlight .sb { + color: #586e75; +} // literal.string.backtick // +.highlight .sc { + color: #2aa198; +} // literal.string.char // +.highlight .sd { + color: #93a1a1; +} // literal.string.doc // +.highlight .s2 { + color: #2aa198; +} // literal.string.double // +.highlight .se { + color: #cb4b16; +} // literal.string.escape // +.highlight .sh { + color: #93a1a1; +} // literal.string.heredoc // +.highlight .si { + color: #2aa198; +} // literal.string.interpol // +.highlight .sx { + color: #2aa198; +} // literal.string.other // +.highlight .sr { + color: #dc322f; +} // literal.string.regex // +.highlight .s1 { + color: #2aa198; +} // literal.string.single // +.highlight .ss { + color: #2aa198; +} // literal.string.symbol // +.highlight .bp { + color: #268bd2; +} // name.builtin.pseudo // +.highlight .vc { + color: #268bd2; +} // name.variable.class // +.highlight .vg { + color: #268bd2; +} // name.variable.global // +.highlight .vi { + color: #268bd2; +} // name.variable.instance // +.highlight .il { + color: #2aa198; +} // literal.number.integer.long // + +// +// Code examples (rendered) +// + +.code-example { + padding: $sp-3; + margin-bottom: $sp-3; + overflow: auto; + border: 1px solid $border-color; + border-radius: $border-radius; + + + .highlighter-rouge, + + figure.highlight { + position: relative; + margin-top: -$sp-4; + border-right: 1px solid $border-color; + border-bottom: 1px solid $border-color; + border-left: 1px solid $border-color; + border-top-left-radius: 0; + border-top-right-radius: 0; + } +} diff --git a/docs/_sass/color_schemes/dark.scss b/docs/_sass/color_schemes/dark.scss new file mode 100644 index 0000000000..4d0dc98216 --- /dev/null +++ b/docs/_sass/color_schemes/dark.scss @@ -0,0 +1,21 @@ +$body-background-color: $grey-dk-300; +$sidebar-color: $grey-dk-300; +$border-color: $grey-dk-200; + +$body-text-color: $grey-lt-300; +$body-heading-color: $grey-lt-000; +$nav-child-link-color: $grey-dk-000; +$search-result-preview-color: $grey-dk-000; + +$link-color: $blue-000; +$btn-primary-color: $blue-200; +$base-button-color: $grey-dk-250; + +$code-background-color: $grey-dk-250; +$search-background-color: $grey-dk-250; +$table-background-color: $grey-dk-250; +$feedback-color: darken($sidebar-color, 3%); + +.theme-dark-button { + display: none !important; +} \ No newline at end of file diff --git a/docs/_sass/color_schemes/light.scss b/docs/_sass/color_schemes/light.scss new file mode 100644 index 0000000000..b16e2a8f38 --- /dev/null +++ b/docs/_sass/color_schemes/light.scss @@ -0,0 +1,3 @@ +.theme-light-button { + display: none !important; +} \ No newline at end of file diff --git a/docs/_sass/content.scss b/docs/_sass/content.scss new file mode 100644 index 0000000000..c83c917c52 --- /dev/null +++ b/docs/_sass/content.scss @@ -0,0 +1,231 @@ +@charset "UTF-8"; + +// +// Styles for rendered markdown in the .main-content container +// +// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type + +.main-content { + line-height: $content-line-height; + + ol, + ul, + dl, + pre, + address, + blockquote, + .table-wrapper { + margin-top: 0.5em; + } + + a { + overflow: hidden; + text-overflow: ellipsis; + //white-space: nowrap; + } + + ul, + ol { + padding-left: 1.5em; + } + + li { + .highlight { + margin-top: $sp-1; + } + } + + ol { + list-style-type: none; + counter-reset: step-counter; + + > li { + position: relative; + + &::before { + position: absolute; + top: 0.2em; + left: -1.6em; + color: $grey-dk-000; + content: counter(step-counter); + counter-increment: step-counter; + @include fs-3; + + @include mq(sm) { + top: 0.11em; + } + } + + ol { + counter-reset: sub-counter; + + li { + &::before { + content: counter(sub-counter, lower-alpha); + counter-increment: sub-counter; + } + } + } + } + } + + ul { + list-style: none; + + > li { + &::before { + position: absolute; + margin-left: -1.4em; + color: $grey-dk-000; + content: "•"; + } + } + } + + .task-list { + padding-left: 0; + } + + .task-list-item { + display: flex; + align-items: center; + + &::before { + content: ""; + } + } + + .task-list-item-checkbox { + margin-right: 0.6em; + } + + hr + * { + margin-top: 0; + } + + h1:first-of-type { + margin-top: 0.5em; + } + + dl { + display: grid; + grid-template: auto / 10em 1fr; + } + + dt, + dd { + margin: 0.25em 0; + } + + dt { + grid-column: 1; + font-weight: 500; + text-align: right; + &::after { + content: ":"; + } + } + + dd { + grid-column: 2; + margin-bottom: 0; + margin-left: 1em; + blockquote, + div, + dl, + dt, + h1, + h2, + h3, + h4, + h5, + h6, + li, + ol, + p, + pre, + table, + ul, + .table-wrapper { + &:first-child { + margin-top: 0; + } + } + } + + dd, + ol, + ul { + dl:first-child { + dt:first-child, + dd:nth-child(2) { + margin-top: 0; + } + } + } + + .anchor-heading { + position: absolute; + right: -$sp-4; + width: $sp-5; + height: 100%; + padding-right: $sp-1; + padding-left: $sp-1; + overflow: visible; + + @include mq(md) { + right: auto; + left: -$sp-5; + } + + svg { + display: inline-block; + width: 100%; + height: 100%; + color: $link-color; + visibility: hidden; + } + } + + .anchor-heading:hover, + h1:hover > .anchor-heading, + h2:hover > .anchor-heading, + h3:hover > .anchor-heading, + h4:hover > .anchor-heading, + h5:hover > .anchor-heading, + h6:hover > .anchor-heading { + svg { + visibility: visible; + } + } + + summary { + cursor: pointer; + } + + h1, + h2, + h3, + h4, + h5, + h6 { + position: relative; + margin-top: 1.5em; + margin-bottom: 0.25em; + + &:first-child { + margin-top: $sp-2; + } + + + table, + + .table-wrapper, + + .code-example, + + .highlighter-rouge { + margin-top: 1em; + } + + + p { + margin-top: 0; + } + } +} diff --git a/docs/_sass/custom/custom.scss b/docs/_sass/custom/custom.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/_sass/labels.scss b/docs/_sass/labels.scss new file mode 100644 index 0000000000..e08ae80dec --- /dev/null +++ b/docs/_sass/labels.scss @@ -0,0 +1,37 @@ +// +// Labels (not the form kind) +// + +.label, +.label-blue { + display: inline-block; + padding-top: 0.16em; + padding-right: 0.56em; + padding-bottom: 0.16em; + padding-left: 0.56em; + margin-right: $sp-2; + margin-left: $sp-2; + color: $white; + text-transform: uppercase; + vertical-align: middle; + background-color: $blue-100; + @include fs-2; + border-radius: 12px; +} + +.label-green { + background-color: $green-200; +} + +.label-purple { + background-color: $purple-100; +} + +.label-red { + background-color: $red-200; +} + +.label-yellow { + color: $grey-dk-200; + background-color: $yellow-200; +} diff --git a/docs/_sass/layout.scss b/docs/_sass/layout.scss new file mode 100644 index 0000000000..2197faf924 --- /dev/null +++ b/docs/_sass/layout.scss @@ -0,0 +1,208 @@ +// +// The basic two column layout +// + +.side-bar { + z-index: 0; + display: flex; + flex-wrap: wrap; + background-color: $sidebar-color; + + @include mq(md) { + flex-wrap: nowrap; + position: fixed; + width: $nav-width-md; + height: 100%; + flex-direction: column; + border-right: $border $border-color; + align-items: flex-end; + } + + /*@include mq(lg) { + width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width}); + min-width: $nav-width; + }*/ +} + +.main { + @include mq(md) { + position: relative; + //max-width: $content-width; + margin-left: $nav-width-md; + } + + /*@include mq(lg) { + margin-left: calc( + (100% - #{$nav-width + $content-width}) / 2 + #{$nav-width} + ); + }*/ +} + +.main-content-wrap { + @include container; + padding-top: $gutter-spacing-sm; + padding-bottom: $gutter-spacing-sm; + + @include mq(md) { + padding-top: $gutter-spacing; + padding-bottom: $gutter-spacing; + } +} + +.main-header { + z-index: 0; + display: none; + background-color: $sidebar-color; + + @include mq(md) { + display: flex; + justify-content: space-between; + height: $header-height; + background-color: $body-background-color; + border-bottom: $border $border-color; + } + + &.nav-open { + display: block; + + @include mq(md) { + display: flex; + } + } +} + +.site-nav, +.site-header, +.site-footer { + width: 100%; + + @include mq(lg) { + width: $nav-width; + } +} + +.site-nav { + display: none; + + &.nav-open { + display: block; + } + + @include mq(md) { + display: block; + //padding-top: $sp-8; + padding-bottom: $gutter-spacing-sm; + overflow-y: auto; + flex: 1 1 auto; + } +} + +.site-header { + display: flex; + min-height: $header-height; + align-items: center; + + @include mq(md) { + height: $header-height; + max-height: $header-height; + border-bottom: $border $border-color; + } +} + +.site-title { + @include container; + flex-grow: 1; + display: flex; + height: 100%; + align-items: center; + padding-left: $sp-4 !important; + padding-right: 0rem !important; + padding-top: $sp-3; + padding-bottom: $sp-3; + color: $body-heading-color; + @include fs-6; + + @include mq(md) { + padding-top: $sp-2; + padding-bottom: $sp-2; + } +} + +@if variable-exists(logo) { + .site-logo { + width: 100%; + height: 100%; + background-image: url($logo); + background-repeat: no-repeat; + background-position: left center; + background-size: contain; + } +} + +.site-button { + display: flex; + height: 100%; + padding: $gutter-spacing-sm; + align-items: center; +} + +@include mq(md) { + .site-header .site-button { + display: none; + } +} + +.site-title:hover { + background-image: linear-gradient( + -90deg, + rgba($feedback-color, 1) 0%, + rgba($feedback-color, 0.8) 80%, + rgba($feedback-color, 0) 100% + ); +} + +.site-button:hover { + background-image: linear-gradient( + -90deg, + rgba($feedback-color, 1) 0%, + rgba($feedback-color, 0.8) 100% + ); +} + +// stylelint-disable selector-max-type + +body { + position: relative; + padding-bottom: $sp-10; + overflow-y: scroll; + overflow-wrap: break-word; + + @include mq(md) { + position: static; + padding-bottom: 0; + } +} + +// stylelint-enable selector-max-type + +.site-footer { + @include container; + position: absolute; + bottom: 0; + left: 0; + padding-top: $sp-4; + padding-bottom: $sp-4; + color: $grey-dk-000; + @include fs-2; + + @include mq(md) { + position: static; + justify-self: end; + } +} + +.icon { + width: $sp-5; + height: $sp-5; + color: $link-color; +} diff --git a/docs/_sass/modules.scss b/docs/_sass/modules.scss new file mode 100644 index 0000000000..d82591b75a --- /dev/null +++ b/docs/_sass/modules.scss @@ -0,0 +1,20 @@ +// +// Import external dependencies +// +@import "./vendor/normalize.scss/normalize.scss"; + +// +// Modules +// +@import "./base"; +@import "./layout"; +@import "./content"; +@import "./navigation"; +@import "./typography"; +@import "./labels"; +@import "./buttons"; +@import "./search"; +@import "./tables"; +@import "./code"; +@import "./utilities/utilities"; +@import "./print"; diff --git a/docs/_sass/navigation.scss b/docs/_sass/navigation.scss new file mode 100644 index 0000000000..c6743b2869 --- /dev/null +++ b/docs/_sass/navigation.scss @@ -0,0 +1,226 @@ +// +// Main nav, breadcrumb, etc... +// +// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity + +.nav-list { + padding: 0; + margin-top: 0; + margin-bottom: 0; + list-style: none; + + .nav-list-item { + @include fs-4; + position: relative; + margin: 0; + + @include mq(md) { + @include fs-3; + } + + .nav-list-github { + line-height: #{($nav-list-item-height-sm - 2 * $sp-1) * 2} !important; + @include mq(md) { + line-height: #{($nav-list-item-height - 2 * $sp-1) * 2} !important; + } + } + + .nav-list-link { + display: block; + min-height: $nav-list-item-height-sm; + padding-top: $sp-1; + padding-bottom: $sp-1; + line-height: #{$nav-list-item-height-sm - 2 * $sp-1}; + @if $nav-list-expander-right { + padding-right: $nav-list-item-height-sm; + padding-left: $gutter-spacing-sm; + } @else { + padding-right: $gutter-spacing-sm; + padding-left: $nav-list-item-height-sm; + } + + @include mq(md) { + min-height: $nav-list-item-height; + line-height: #{$nav-list-item-height - 2 * $sp-1}; + @if $nav-list-expander-right { + padding-right: $nav-list-item-height; + padding-left: $gutter-spacing; + } @else { + padding-right: $gutter-spacing; + padding-left: $nav-list-item-height; + } + } + + &.active { + font-weight: 600; + text-decoration: none; + } + + &:hover, + &.active { + background-image: linear-gradient( + -90deg, + rgba($feedback-color, 1) 0%, + rgba($feedback-color, 0.8) 80%, + rgba($feedback-color, 0) 100% + ); + } + } + + .nav-list-expander { + position: absolute; + @if $nav-list-expander-right { + right: 0; + } + width: $nav-list-item-height-sm; + height: $nav-list-item-height-sm; + padding-top: #{$nav-list-item-height-sm / 4}; + padding-right: #{$nav-list-item-height-sm / 4}; + padding-bottom: #{$nav-list-item-height-sm / 4}; + padding-left: #{$nav-list-item-height-sm / 4}; + color: $link-color; + + @include mq(md) { + width: $nav-list-item-height; + height: $nav-list-item-height; + padding-top: #{$nav-list-item-height / 4}; + padding-right: #{$nav-list-item-height / 4}; + padding-bottom: #{$nav-list-item-height / 4}; + padding-left: #{$nav-list-item-height / 4}; + } + + &:hover { + background-image: linear-gradient( + -90deg, + rgba($feedback-color, 1) 0%, + rgba($feedback-color, 0.8) 100% + ); + } + + @if $nav-list-expander-right { + svg { + transform: rotate(90deg); + } + } + } + + > .nav-list { + display: none; + padding-left: $sp-3; + list-style: none; + + .nav-list-item { + position: relative; + + .nav-list-link { + color: $nav-child-link-color; + } + + .nav-list-expander { + color: $nav-child-link-color; + } + } + } + + &.active { + > .nav-list-expander svg { + @if $nav-list-expander-right { + transform: rotate(-90deg); + } @else { + transform: rotate(90deg); + } + } + + > .nav-list { + display: block; + } + } + } +} + +.nav-category { + padding-top: $sp-2; + padding-right: $gutter-spacing-sm; + padding-bottom: $sp-2; + padding-left: $gutter-spacing-sm; + font-weight: 600; + text-align: end; + text-transform: uppercase; + border-bottom: $border $border-color; + @include fs-2; + + @include mq(md) { + padding-right: $gutter-spacing; + padding-left: $gutter-spacing; + margin-top: $gutter-spacing-sm; + text-align: start; + + &:first-child { + margin-top: 0; + } + } +} + +// Aux nav + +.aux-nav { + height: 100%; + overflow-x: auto; + @include fs-2; + + .aux-nav-list { + display: flex; + height: 100%; + padding: 0; + margin: 0; + list-style: none; + } + + .aux-nav-list-item { + display: inline-block; + height: 100%; + padding: 0; + margin: 0; + } + + @include mq(md) { + padding-right: $gutter-spacing-sm; + } +} + +// Breadcrumb nav + +.breadcrumb-nav { + @include mq(md) { + margin-top: -$sp-4; + } +} + +.breadcrumb-nav-list { + padding-left: 0; + margin-bottom: $sp-3; + list-style: none; +} + +.breadcrumb-nav-list-item { + display: table-cell; + @include fs-2; + + &::before { + display: none; + } + + &::after { + display: inline-block; + margin-right: $sp-2; + margin-left: $sp-2; + color: $grey-dk-000; + content: "/"; + } + + &:last-child { + &::after { + content: ""; + } + } +} diff --git a/docs/_sass/print.scss b/docs/_sass/print.scss new file mode 100644 index 0000000000..6e6de3734c --- /dev/null +++ b/docs/_sass/print.scss @@ -0,0 +1,40 @@ +// stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type, primer/no-override, + +@media print { + .site-footer, + .site-button, + #edit-this-page, + #back-to-top, + .site-nav, + .main-header { + display: none !important; + } + + .side-bar { + width: 100%; + height: auto; + border-right: 0 !important; + } + + .site-header { + border-bottom: 1px solid $border-color; + } + + .site-title { + font-size: $root-font-size !important; + font-weight: 700 !important; + } + + .text-small { + font-size: 8pt !important; + } + + pre.highlight { + border: 1px solid $border-color; + } + + .main { + max-width: none; + margin-left: 0; + } +} diff --git a/docs/_sass/search.scss b/docs/_sass/search.scss new file mode 100644 index 0000000000..efd176630b --- /dev/null +++ b/docs/_sass/search.scss @@ -0,0 +1,324 @@ +// +// Search input and autocomplete +// + +.search { + position: relative; + z-index: 2; + flex-grow: 1; + height: $sp-10; + padding: $sp-2; + transition: padding linear #{$transition-duration / 2}; + + @include mq(md) { + position: relative !important; + width: auto !important; + height: 100% !important; + padding: 0; + transition: none; + } +} + +.search-input-wrap { + position: relative; + z-index: 1; + height: $sp-8; + overflow: hidden; + border-radius: $border-radius; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + transition: height linear #{$transition-duration / 2}; + + @include mq(md) { + position: absolute; + width: 100%; + max-width: $search-results-width; + height: 100% !important; + border-radius: 0; + box-shadow: none; + transition: width ease $transition-duration; + } +} + +.search-input { + position: absolute; + width: 100%; + height: 100%; + padding-top: $sp-2; + padding-right: $gutter-spacing-sm; + padding-bottom: $sp-2; + padding-left: #{$gutter-spacing-sm + $sp-5}; + font-size: 16px; + background-color: $search-background-color; + color: $body-text-color; + border-top: 0; + border-right: 0; + border-bottom: 0; + border-left: 0; + border-radius: 0; + + @include mq(md) { + padding-top: $gutter-spacing-sm; + padding-bottom: $gutter-spacing-sm; + padding-left: #{$gutter-spacing + $sp-5}; + font-size: 14px; + background-color: $body-background-color; + transition: padding-left linear #{$transition-duration / 2}; + } + + &:focus { + outline: 0; + + + .search-label .search-icon { + color: $link-color; + } + } +} + +.search-label { + position: absolute; + display: flex; + height: 100%; + padding-left: $gutter-spacing-sm; + + @include mq(md) { + padding-left: $gutter-spacing; + transition: padding-left linear #{$transition-duration / 2}; + } + + .search-icon { + width: #{$sp-4 * 1.2}; + height: #{$sp-4 * 1.2}; + align-self: center; + color: $grey-dk-000; + } +} + +.search-results { + position: absolute; + left: 0; + display: none; + width: 100%; + max-height: calc(100% - #{$sp-10}); + overflow-y: auto; + background-color: $search-background-color; + border-bottom-right-radius: $border-radius; + border-bottom-left-radius: $border-radius; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + + @include mq(md) { + top: 100%; + width: $search-results-width; + max-height: calc(100vh - 200%) !important; + } +} + +.search-results-list { + padding-left: 0; + margin-bottom: $sp-1; + list-style: none; + @include fs-4; + + @include mq(md) { + @include fs-3; + } +} + +.search-results-list-item { + padding: 0; + margin: 0; +} + +.search-result { + display: block; + padding-top: $sp-1; + padding-right: $sp-3; + padding-bottom: $sp-1; + padding-left: $sp-3; + + &:hover, + &.active { + background-color: $feedback-color; + } +} + +.search-result-title { + display: block; + padding-top: $sp-2; + padding-bottom: $sp-2; + + @include mq(sm) { + display: inline-block; + width: 40%; + padding-right: $sp-2; + vertical-align: top; + } +} + +.search-result-doc { + display: flex; + align-items: center; + word-wrap: break-word; + + &.search-result-doc-parent { + opacity: 0.5; + @include fs-3; + + @include mq(md) { + @include fs-2; + } + } + + .search-result-icon { + width: $sp-4; + height: $sp-4; + margin-right: $sp-2; + color: $link-color; + flex-shrink: 0; + } + + .search-result-doc-title { + overflow: auto; + } +} + +.search-result-section { + margin-left: #{$sp-4 + $sp-2}; + word-wrap: break-word; +} + +.search-result-rel-url { + display: block; + margin-left: #{$sp-4 + $sp-2}; + overflow: hidden; + color: $search-result-preview-color; + text-overflow: ellipsis; + white-space: nowrap; + @include fs-1; +} + +.search-result-previews { + display: block; + padding-top: $sp-2; + padding-bottom: $sp-2; + padding-left: $sp-4; + margin-left: $sp-2; + color: $search-result-preview-color; + word-wrap: break-word; + border-left: $border; + border-left-color: $border-color; + @include fs-2; + + @include mq(sm) { + display: inline-block; + width: 60%; + padding-left: $sp-2; + margin-left: 0; + vertical-align: top; + } +} + +.search-result-preview + .search-result-preview { + margin-top: $sp-1; +} + +.search-result-highlight { + font-weight: bold; +} + +.search-no-result { + padding-top: $sp-2; + padding-right: $sp-3; + padding-bottom: $sp-2; + padding-left: $sp-3; + @include fs-3; +} + +.search-button { + position: fixed; + right: $sp-4; + bottom: $sp-4; + display: flex; + width: $sp-9; + height: $sp-9; + background-color: $search-background-color; + border: 1px solid rgba($link-color, 0.3); + border-radius: #{$sp-9 / 2}; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + align-items: center; + justify-content: center; +} + +.search-overlay { + position: fixed; + top: 0; + left: 0; + z-index: 1; + width: 0; + height: 0; + background-color: rgba(0, 0, 0, 0.3); + opacity: 0; + transition: opacity ease $transition-duration, width 0s $transition-duration, + height 0s $transition-duration; +} + +.search-active { + .search { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + padding: 0; + } + + .search-input-wrap { + height: $sp-10; + border-radius: 0; + + @include mq(md) { + width: $search-results-width; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + } + } + + .search-input { + background-color: $search-background-color; + + @include mq(md) { + padding-left: 2.3rem; + } + } + + .search-label { + @include mq(md) { + padding-left: 0.6rem; + } + } + + .search-results { + display: block; + } + + .search-overlay { + width: 100%; + height: 100%; + opacity: 1; + transition: opacity ease $transition-duration, width 0s, height 0s; + } + + @include mq(md) { + .main { + position: fixed; + right: 0; + left: 0; + } + } + + .main-header { + padding-top: $sp-10; + + @include mq(md) { + padding-top: 0; + } + } +} diff --git a/docs/_sass/support/_functions.scss b/docs/_sass/support/_functions.scss new file mode 100644 index 0000000000..992a84d56e --- /dev/null +++ b/docs/_sass/support/_functions.scss @@ -0,0 +1,9 @@ +@function remCustom($size, $unit: "") { + $remSize: $size / $root-font-size; + + @if ($unit == false) { + @return #{$remSize}; + } @else { + @return #{$remSize}rem; + } +} diff --git a/docs/_sass/support/_variables.scss b/docs/_sass/support/_variables.scss new file mode 100644 index 0000000000..3ab3f05e14 --- /dev/null +++ b/docs/_sass/support/_variables.scss @@ -0,0 +1,153 @@ +// +// Typography +// + +$body-font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", + Roboto, "Helvetica Neue", Arial, sans-serif !default; +$mono-font-family: "SFMono-Regular", Menlo, Consolas, Monospace !default; +$root-font-size: 16px !default; // Base font-size for rems +$body-line-height: 1.4 !default; +$content-line-height: 1.6 !default; +$body-heading-line-height: 1.25 !default; + +// +// Font size +// `-sm` suffix is the size at the small (and above) media query +// + +$font-size-1: 9px !default; +$font-size-1-sm: 10px !default; +$font-size-2: 11px !default; //h4 - uppercased!, h6 not uppercased, text-small +$font-size-3: 12px !default; //h5 +$font-size-4: 14px !default; +$font-size-5: 16px !default; //h3 +$font-size-6: 18px !default; //h2 +$font-size-7: 24px !default; +$font-size-8: 32px !default; //h1 +$font-size-9: 36px !default; +$font-size-10: 42px !default; +$font-size-10-sm: 48px !default; + +// +// Colors +// + +$white: #fff !default; + +$grey-dk-000: #959396 !default; +$grey-dk-100: #5c5962 !default; +$grey-dk-200: #44434d !default; +$grey-dk-250: #302d36 !default; +$grey-dk-300: #27262b !default; + +$grey-lt-000: #f5f6fa !default; +$grey-lt-100: #eeebee !default; +$grey-lt-200: #ecebed !default; +$grey-lt-300: #e6e1e8 !default; + +$purple-000: #7253ed !default; +$purple-100: #5e41d0 !default; +$purple-200: #4e26af !default; +$purple-300: #381885 !default; + +$blue-000: #2c84fa !default; +$blue-100: #2869e6 !default; +$blue-200: #264caf !default; +$blue-300: #183385 !default; + +$green-000: #41d693 !default; +$green-100: #11b584 !default; +$green-200: #009c7b !default; +$green-300: #026e57 !default; + +$yellow-000: #ffeb82 !default; +$yellow-100: #fadf50 !default; +$yellow-200: #f7d12e !default; +$yellow-300: #e7af06 !default; + +$red-000: #f77e7e !default; +$red-100: #f96e65 !default; +$red-200: #e94c4c !default; +$red-300: #dd2e2e !default; + +$body-background-color: $white !default; +$sidebar-color: $grey-lt-000 !default; +$search-background-color: $white !default; +$table-background-color: $white !default; +$code-background-color: $grey-lt-000 !default; +$feedback-color: darken($sidebar-color, 3%) !default; + +$body-text-color: $grey-dk-100 !default; +$body-heading-color: $grey-dk-300 !default; +$search-result-preview-color: $grey-dk-000 !default; +$nav-child-link-color: $grey-dk-100 !default; +$link-color: $purple-000 !default; +$btn-primary-color: $purple-100 !default; +$base-button-color: #f7f7f7 !default; + +// +// Spacing +// + +$spacing-unit: 1rem; // 1rem == 16px + +$spacers: ( + sp-0: 0, + sp-1: $spacing-unit * 0.25, + sp-2: $spacing-unit * 0.5, + sp-3: $spacing-unit * 0.75, + sp-4: $spacing-unit, + sp-5: $spacing-unit * 1.5, + sp-6: $spacing-unit * 2, + sp-7: $spacing-unit * 2.5, + sp-8: $spacing-unit * 3, + sp-9: $spacing-unit * 3.5, + sp-10: $spacing-unit * 4, +) !default; + +$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px +$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px +$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px +$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px +$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px +$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px +$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px +$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px +$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px +$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px + +// +// Borders +// + +$border: 1px solid !default; +$border-radius: 4px !default; +$border-color: $grey-lt-100 !default; + +// +// Grid system +// + +$gutter-spacing: $sp-6 !default; +$gutter-spacing-sm: $sp-4 !default; +$nav-width: 264px !default; +$nav-width-md: 248px !default; +$nav-list-item-height: $sp-6 !default; +$nav-list-item-height-sm: $sp-8 !default; +$nav-list-expander-right: true; +$content-width: 800px !default; +$header-height: 60px !default; +$search-results-width: $content-width - $nav-width !default; +$transition-duration: 400ms; + +// +// Media queries in pixels +// + +$media-queries: ( + xs: 320px, + sm: 500px, + md: $content-width, + lg: $content-width + $nav-width, + xl: 1400px, +) !default; diff --git a/docs/_sass/support/mixins/_buttons.scss b/docs/_sass/support/mixins/_buttons.scss new file mode 100644 index 0000000000..e3e6c4fbca --- /dev/null +++ b/docs/_sass/support/mixins/_buttons.scss @@ -0,0 +1,27 @@ +// Colored button + +@mixin btn-color($fg, $bg) { + color: $fg; + background-color: darken($bg, 2%); + background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%)); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); + + &:hover, + &.zeroclipboard-is-hover { + color: $fg; + background-color: darken($bg, 4%); + background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%))); + } + + &:active, + &.selected, + &.zeroclipboard-is-active { + background-color: darken($bg, 5%); + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); + } + + &.selected:hover { + background-color: darken($bg, 10%); + } +} diff --git a/docs/_sass/support/mixins/_layout.scss b/docs/_sass/support/mixins/_layout.scss new file mode 100644 index 0000000000..df2b3d0448 --- /dev/null +++ b/docs/_sass/support/mixins/_layout.scss @@ -0,0 +1,34 @@ +// Media query + +// Media query mixin +// Usage: +// @include mq(md) { +// ..medium and up styles +// } +@mixin mq($name) { + // Retrieves the value from the key + $value: map-get($media-queries, $name); + + // If the key exists in the map + @if $value != null { + // Prints a media query based on the value + @media (min-width: remCustom($value)) { + @content; + } + } @else { + @warn "No value could be retrieved from `#{$media-query}`. " + + "Please make sure it is defined in `$media-queries` map."; + } +} + +// Responsive container + +@mixin container { + padding-right: $gutter-spacing-sm; + padding-left: $gutter-spacing-sm; + + @include mq(md) { + padding-right: $gutter-spacing; + padding-left: $gutter-spacing; + } +} diff --git a/docs/_sass/support/mixins/_typography.scss b/docs/_sass/support/mixins/_typography.scss new file mode 100644 index 0000000000..5207fcd13a --- /dev/null +++ b/docs/_sass/support/mixins/_typography.scss @@ -0,0 +1,84 @@ +@mixin fs-1 { + font-size: $font-size-1 !important; + + @include mq(sm) { + font-size: $font-size-1-sm !important; + } +} + +@mixin fs-2 { + font-size: $font-size-2 !important; + + @include mq(sm) { + font-size: $font-size-3 !important; + } +} + +@mixin fs-3 { + font-size: $font-size-3 !important; + + @include mq(sm) { + font-size: $font-size-4 !important; + } +} + +@mixin fs-4 { + font-size: $font-size-4 !important; + + @include mq(sm) { + font-size: $font-size-5 !important; + } +} + +@mixin fs-5 { + font-size: $font-size-5 !important; + + @include mq(sm) { + font-size: $font-size-6 !important; + } +} + +@mixin fs-6 { + font-size: $font-size-6 !important; + + @include mq(sm) { + font-size: $font-size-7 !important; + line-height: $body-heading-line-height; + } +} + +@mixin fs-7 { + font-size: $font-size-7 !important; + line-height: $body-heading-line-height; + + @include mq(sm) { + font-size: $font-size-8 !important; + } +} + +@mixin fs-8 { + font-size: $font-size-8 !important; + line-height: $body-heading-line-height; + + @include mq(sm) { + font-size: $font-size-9 !important; + } +} + +@mixin fs-9 { + font-size: $font-size-9 !important; + line-height: $body-heading-line-height; + + @include mq(sm) { + font-size: $font-size-10 !important; + } +} + +@mixin fs-10 { + font-size: $font-size-10 !important; + line-height: $body-heading-line-height; + + @include mq(sm) { + font-size: $font-size-10-sm !important; + } +} diff --git a/docs/_sass/support/mixins/mixins.scss b/docs/_sass/support/mixins/mixins.scss new file mode 100644 index 0000000000..0506fbf5ff --- /dev/null +++ b/docs/_sass/support/mixins/mixins.scss @@ -0,0 +1,3 @@ +@import "./layout"; +@import "./buttons"; +@import "./typography"; diff --git a/docs/_sass/support/support.scss b/docs/_sass/support/support.scss new file mode 100644 index 0000000000..8131a3201a --- /dev/null +++ b/docs/_sass/support/support.scss @@ -0,0 +1,3 @@ +@import "./variables"; +@import "./functions"; +@import "./mixins/mixins"; diff --git a/docs/_sass/tables.scss b/docs/_sass/tables.scss new file mode 100644 index 0000000000..b2ac7cdb8f --- /dev/null +++ b/docs/_sass/tables.scss @@ -0,0 +1,58 @@ +// +// Tables +// +// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type + +.table-wrapper { + display: block; + width: 100%; + max-width: 100%; + margin-bottom: $sp-5; + overflow-x: auto; + border-radius: $border-radius; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); +} + +table { + display: table; + min-width: 100%; + border-collapse: separate; +} + +th, +td { + @include fs-3; + min-width: 120px; + padding-top: $sp-2; + padding-right: $sp-3; + padding-bottom: $sp-2; + padding-left: $sp-3; + background-color: $table-background-color; + border-bottom: $border rgba($border-color, 0.5); + border-left: $border $border-color; + + &:first-of-type { + border-left: 0; + } +} + +tbody { + tr { + &:last-of-type { + th, + td { + border-bottom: 0; + } + + td { + padding-bottom: $sp-3; + } + } + } +} + +thead { + th { + border-bottom: $border $border-color; + } +} diff --git a/docs/_sass/typography.scss b/docs/_sass/typography.scss new file mode 100644 index 0000000000..cadee362dc --- /dev/null +++ b/docs/_sass/typography.scss @@ -0,0 +1,64 @@ +// +// Typography +// +// stylelint-disable primer/selector-no-utility, primer/no-override, selector-no-type, selector-max-type + +h1, +.text-alpha { + @include fs-8; + font-weight: 300; +} + +h2, +.text-beta { + @include fs-6; +} + +h3, +.text-gamma { + @include fs-5; +} + +h4, +.text-delta { + @include fs-2; + font-weight: 400; + text-transform: uppercase; + letter-spacing: 0.1em; +} + +h4 code { + text-transform: none; +} + +h5, +.text-epsilon { + @include fs-3; + color: $grey-dk-200; +} + +h6, +.text-zeta { + @include fs-2; + color: $grey-dk-200; +} + +.text-small { + @include fs-2; +} + +.text-mono { + font-family: $mono-font-family !important; +} + +.text-left { + text-align: left !important; +} + +.text-center { + text-align: center !important; +} + +.text-right { + text-align: right !important; +} diff --git a/docs/_sass/utilities/_colors.scss b/docs/_sass/utilities/_colors.scss new file mode 100644 index 0000000000..f3607ab895 --- /dev/null +++ b/docs/_sass/utilities/_colors.scss @@ -0,0 +1,239 @@ +// +// Utility classes for colors +// + +// Text colors + +.text-grey-dk-000 { + color: $grey-dk-000 !important; +} + +.text-grey-dk-100 { + color: $grey-dk-100 !important; +} + +.text-grey-dk-200 { + color: $grey-dk-200 !important; +} + +.text-grey-dk-250 { + color: $grey-dk-250 !important; +} + +.text-grey-dk-300 { + color: $grey-dk-300 !important; +} + +.text-grey-lt-000 { + color: $grey-lt-000 !important; +} + +.text-grey-lt-100 { + color: $grey-lt-100 !important; +} + +.text-grey-lt-200 { + color: $grey-lt-200 !important; +} + +.text-grey-lt-300 { + color: $grey-lt-300 !important; +} + +.text-blue-000 { + color: $blue-000 !important; +} + +.text-blue-100 { + color: $blue-100 !important; +} + +.text-blue-200 { + color: $blue-200 !important; +} + +.text-blue-300 { + color: $blue-300 !important; +} + +.text-green-000 { + color: $green-000 !important; +} + +.text-green-100 { + color: $green-100 !important; +} + +.text-green-200 { + color: $green-200 !important; +} + +.text-green-300 { + color: $green-300 !important; +} + +.text-purple-000 { + color: $purple-000 !important; +} + +.text-purple-100 { + color: $purple-100 !important; +} + +.text-purple-200 { + color: $purple-200 !important; +} + +.text-purple-300 { + color: $purple-300 !important; +} + +.text-yellow-000 { + color: $yellow-000 !important; +} + +.text-yellow-100 { + color: $yellow-100 !important; +} + +.text-yellow-200 { + color: $yellow-200 !important; +} + +.text-yellow-300 { + color: $yellow-300 !important; +} + +.text-red-000 { + color: $red-000 !important; +} + +.text-red-100 { + color: $red-100 !important; +} + +.text-red-200 { + color: $red-200 !important; +} + +.text-red-300 { + color: $red-300 !important; +} + +// Background colors + +.bg-grey-dk-000 { + background-color: $grey-dk-000 !important; +} + +.bg-grey-dk-100 { + background-color: $grey-dk-100 !important; +} + +.bg-grey-dk-200 { + background-color: $grey-dk-200 !important; +} + +.bg-grey-dk-250 { + background-color: $grey-dk-250 !important; +} + +.bg-grey-dk-300 { + background-color: $grey-dk-300 !important; +} + +.bg-grey-lt-000 { + background-color: $grey-lt-000 !important; +} + +.bg-grey-lt-100 { + background-color: $grey-lt-100 !important; +} + +.bg-grey-lt-200 { + background-color: $grey-lt-200 !important; +} + +.bg-grey-lt-300 { + background-color: $grey-lt-300 !important; +} + +.bg-blue-000 { + background-color: $blue-000 !important; +} + +.bg-blue-100 { + background-color: $blue-100 !important; +} + +.bg-blue-200 { + background-color: $blue-200 !important; +} + +.bg-blue-300 { + background-color: $blue-300 !important; +} + +.bg-green-000 { + background-color: $green-000 !important; +} + +.bg-green-100 { + background-color: $green-100 !important; +} + +.bg-green-200 { + background-color: $green-200 !important; +} + +.bg-green-300 { + background-color: $green-300 !important; +} + +.bg-purple-000 { + background-color: $purple-000 !important; +} + +.bg-purple-100 { + background-color: $purple-100 !important; +} + +.bg-purple-200 { + background-color: $purple-200 !important; +} + +.bg-purple-300 { + background-color: $purple-300 !important; +} + +.bg-yellow-000 { + background-color: $yellow-000 !important; +} + +.bg-yellow-100 { + background-color: $yellow-100 !important; +} + +.bg-yellow-200 { + background-color: $yellow-200 !important; +} + +.bg-yellow-300 { + background-color: $yellow-300 !important; +} + +.bg-red-000 { + background-color: $red-000 !important; +} + +.bg-red-100 { + background-color: $red-100 !important; +} + +.bg-red-200 { + background-color: $red-200 !important; +} + +.bg-red-300 { + background-color: $red-300 !important; +} diff --git a/docs/_sass/utilities/_layout.scss b/docs/_sass/utilities/_layout.scss new file mode 100644 index 0000000000..37ebe42142 --- /dev/null +++ b/docs/_sass/utilities/_layout.scss @@ -0,0 +1,95 @@ +// stylelint-disable primer/selector-no-utility, primer/no-override +// +// Utility classes for layout +// + +// Display + +.d-block { + display: block !important; +} +.d-flex { + display: flex !important; +} +.d-inline { + display: inline !important; +} +.d-inline-block { + display: inline-block !important; +} +.d-none { + display: none !important; +} + +@each $media-query in map-keys($media-queries) { + @for $i from 1 through length($spacers) { + @include mq($media-query) { + $size: #{map-get($spacers, sp-#{$i - 1})}; + $scale: #{$i - 1}; + + // .d-sm-block, .d-md-none, .d-lg-inline + .d-#{$media-query}-block { + display: block !important; + } + .d-#{$media-query}-flex { + display: flex !important; + } + .d-#{$media-query}-inline { + display: inline !important; + } + .d-#{$media-query}-inline-block { + display: inline-block !important; + } + .d-#{$media-query}-none { + display: none !important; + } + } + } +} + +// Horizontal alignment + +.float-left { + float: left !important; +} + +.float-right { + float: right !important; +} + +.flex-justify-start { + justify-content: flex-start !important; +} + +.flex-justify-end { + justify-content: flex-end !important; +} + +.flex-justify-between { + justify-content: space-between !important; +} + +.flex-justify-around { + justify-content: space-around !important; +} + +// Vertical alignment + +.v-align-baseline { + vertical-align: baseline !important; +} +.v-align-bottom { + vertical-align: bottom !important; +} +.v-align-middle { + vertical-align: middle !important; +} +.v-align-text-bottom { + vertical-align: text-bottom !important; +} +.v-align-text-top { + vertical-align: text-top !important; +} +.v-align-top { + vertical-align: top !important; +} diff --git a/docs/_sass/utilities/_lists.scss b/docs/_sass/utilities/_lists.scss new file mode 100644 index 0000000000..c7b2293d0f --- /dev/null +++ b/docs/_sass/utilities/_lists.scss @@ -0,0 +1,17 @@ +// +// Utility classes for lists +// + +// stylelint-disable primer/selector-no-utility, primer/no-override, selector-max-type + +.list-style-none { + padding: 0 !important; + margin: 0 !important; + list-style: none !important; + + li { + &::before { + display: none !important; + } + } +} diff --git a/docs/_sass/utilities/_spacing.scss b/docs/_sass/utilities/_spacing.scss new file mode 100644 index 0000000000..162f8017a3 --- /dev/null +++ b/docs/_sass/utilities/_spacing.scss @@ -0,0 +1,165 @@ +// +// Utility classes for margins and padding +// + +// scss-lint:disable SpaceAfterPropertyName +// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before, primer/selector-no-utility, primer/no-override + +// Margin spacer utilities + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} + +@for $i from 1 through length($spacers) { + $size: #{map-get($spacers, sp-#{$i - 1})}; + $scale: #{$i - 1}; + + // .m-0, .m-1, .m-2... + .m-#{$scale} { + margin: #{$size} !important; + } + .mt-#{$scale} { + margin-top: #{$size} !important; + } + .mr-#{$scale} { + margin-right: #{$size} !important; + } + .mb-#{$scale} { + margin-bottom: #{$size} !important; + } + .ml-#{$scale} { + margin-left: #{$size} !important; + } + + .mx-#{$scale} { + margin-right: #{$size} !important; + margin-left: #{$size} !important; + } + + .my-#{$scale} { + margin-top: #{$size} !important; + margin-bottom: #{$size} !important; + } + + .mxn-#{$scale} { + margin-right: -#{$size} !important; + margin-left: -#{$size} !important; + } + .mx-#{$scale}-auto { + margin-right: auto !important; + margin-left: auto !important; + } +} + +@each $media-query in map-keys($media-queries) { + @for $i from 1 through length($spacers) { + @include mq($media-query) { + $size: #{map-get($spacers, sp-#{$i - 1})}; + $scale: #{$i - 1}; + + // .m-sm-0, .m-md-1, .m-lg-2... + .m-#{$media-query}-#{$scale} { + margin: #{$size} !important; + } + .mt-#{$media-query}-#{$scale} { + margin-top: #{$size} !important; + } + .mr-#{$media-query}-#{$scale} { + margin-right: #{$size} !important; + } + .mb-#{$media-query}-#{$scale} { + margin-bottom: #{$size} !important; + } + .ml-#{$media-query}-#{$scale} { + margin-left: #{$size} !important; + } + + .mx-#{$media-query}-#{$scale} { + margin-right: #{$size} !important; + margin-left: #{$size} !important; + } + + .my-#{$media-query}-#{$scale} { + margin-top: #{$size} !important; + margin-bottom: #{$size} !important; + } + + .mxn-#{$media-query}-#{$scale} { + margin-right: -#{$size} !important; + margin-left: -#{$size} !important; + } + } + } +} + +// Padding spacer utilities + +@for $i from 1 through length($spacers) { + $size: #{map-get($spacers, sp-#{$i - 1})}; + $scale: #{$i - 1}; + + // .p-0, .p-1, .p-2... + .p-#{$scale} { + padding: #{$size} !important; + } + .pt-#{$scale} { + padding-top: #{$size} !important; + } + .pr-#{$scale} { + padding-right: #{$size} !important; + } + .pb-#{$scale} { + padding-bottom: #{$size} !important; + } + .pl-#{$scale} { + padding-left: #{$size} !important; + } + + .px-#{$scale} { + padding-right: #{$size} !important; + padding-left: #{$size} !important; + } + + .py-#{$scale} { + padding-top: #{$size} !important; + padding-bottom: #{$size} !important; + } +} + +@each $media-query in map-keys($media-queries) { + @include mq($media-query) { + @for $i from 1 through length($spacers) { + $size: #{map-get($spacers, sp-#{$i - 1})}; + $scale: #{$i - 1}; + + // .p-sm-0, .p-md-1, .p-lg-2... + .p-#{$media-query}-#{$scale} { + padding: #{$size} !important; + } + .pt-#{$media-query}-#{$scale} { + padding-top: #{$size} !important; + } + .pr-#{$media-query}-#{$scale} { + padding-right: #{$size} !important; + } + .pb-#{$media-query}-#{$scale} { + padding-bottom: #{$size} !important; + } + .pl-#{$media-query}-#{$scale} { + padding-left: #{$size} !important; + } + + .px-#{$media-query}-#{$scale} { + padding-right: #{$size} !important; + padding-left: #{$size} !important; + } + + .py-#{$media-query}-#{$scale} { + padding-top: #{$size} !important; + padding-bottom: #{$size} !important; + } + } + } +} diff --git a/docs/_sass/utilities/_typography.scss b/docs/_sass/utilities/_typography.scss new file mode 100644 index 0000000000..2397acbc08 --- /dev/null +++ b/docs/_sass/utilities/_typography.scss @@ -0,0 +1,91 @@ +// +// Utility classes for typography +// + +// stylelint-disable primer/selector-no-utility, primer/no-override + +.fs-1 { + @include fs-1; +} + +.fs-2 { + @include fs-2; +} + +.fs-3 { + @include fs-3; +} + +.fs-4 { + @include fs-4; +} + +.fs-5 { + @include fs-5; +} + +.fs-6 { + @include fs-6; +} + +.fs-7 { + @include fs-7; +} + +.fs-8 { + @include fs-8; +} + +.fs-9 { + @include fs-9; +} + +.fs-10 { + @include fs-10; +} + +.fw-300 { + font-weight: 300 !important; +} + +.fw-400 { + font-weight: 400 !important; +} + +.fw-500 { + font-weight: 500 !important; +} + +.fw-700 { + font-weight: 700 !important; +} + +.lh-0 { + line-height: 0 !important; +} + +.lh-default { + line-height: $body-line-height; +} + +.lh-tight { + line-height: $body-heading-line-height; +} + +.ls-5 { + letter-spacing: 0.05em !important; +} + +.ls-10 { + letter-spacing: 0.1em !important; +} + +.ls-0 { + letter-spacing: 0 !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +// stylelint-enable primer/selector-no-utility diff --git a/docs/_sass/utilities/utilities.scss b/docs/_sass/utilities/utilities.scss new file mode 100644 index 0000000000..6c25bdfa7a --- /dev/null +++ b/docs/_sass/utilities/utilities.scss @@ -0,0 +1,5 @@ +@import "./colors"; +@import "./layout"; +@import "./typography"; +@import "./lists"; +@import "./spacing"; diff --git a/docs/_sass/vendor/normalize.scss/README.md b/docs/_sass/vendor/normalize.scss/README.md new file mode 100644 index 0000000000..7af1714a9f --- /dev/null +++ b/docs/_sass/vendor/normalize.scss/README.md @@ -0,0 +1,7 @@ +# normalize.scss + +Normalize.scss is an SCSS copy of [normalize.css](http://necolas.github.io/normalize.css), a customisable CSS file that makes browsers render all elements more consistently and in line with modern standards. + +The [normalize.scss fork](https://github.com/guerrero/normalize.scss) of [normalize.css](http://necolas.github.io/normalize.css) was archived in 2014, and has not been updated since v0.1.0. + +[View the normalize.css test file](http://necolas.github.io/normalize.css/latest/test.html) diff --git a/docs/_sass/vendor/normalize.scss/normalize.scss b/docs/_sass/vendor/normalize.scss/normalize.scss new file mode 100644 index 0000000000..192eb9ce43 --- /dev/null +++ b/docs/_sass/vendor/normalize.scss/normalize.scss @@ -0,0 +1,349 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} diff --git a/docs/apikey.pub b/docs/apikey.pub new file mode 120000 index 0000000000..47a9d01186 --- /dev/null +++ b/docs/apikey.pub @@ -0,0 +1 @@ +.well-known/amphtml/apikey.pub \ No newline at end of file diff --git a/docs/assets/css/just-the-docs-dark.scss b/docs/assets/css/just-the-docs-dark.scss new file mode 100644 index 0000000000..7310755231 --- /dev/null +++ b/docs/assets/css/just-the-docs-dark.scss @@ -0,0 +1,8 @@ +--- +layout: empty +--- +$logo: "https://docs.madelineproto.xyz/logo.png"; +@import "./support/support"; +@import "./color_schemes/dark"; +@import "./modules"; +@import "./custom/custom"; diff --git a/docs/assets/css/just-the-docs-light.scss b/docs/assets/css/just-the-docs-light.scss new file mode 100644 index 0000000000..2cd1c233c1 --- /dev/null +++ b/docs/assets/css/just-the-docs-light.scss @@ -0,0 +1,8 @@ +--- +layout: empty +--- +$logo: "https://docs.madelineproto.xyz/logo.png"; +@import "./support/support"; +@import "./color_schemes/light"; +@import "./modules"; +@import "./custom/custom"; diff --git a/docs/assets/images/just-the-docs.png b/docs/assets/images/just-the-docs.png new file mode 100644 index 0000000000000000000000000000000000000000..81c33065f2794814cbe1a53791d8bc4bfbb91cb1 GIT binary patch literal 20992 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/assets/images/search.svg b/docs/assets/images/search.svg new file mode 100644 index 0000000000..421ca4df01 --- /dev/null +++ b/docs/assets/images/search.svg @@ -0,0 +1 @@ +Search diff --git a/docs/assets/js/just-the-docs.js b/docs/assets/js/just-the-docs.js new file mode 100644 index 0000000000..a10f4ee737 --- /dev/null +++ b/docs/assets/js/just-the-docs.js @@ -0,0 +1,488 @@ +--- +layout: empty +--- +(function (jtd, undefined) { + +// Switch theme + +jtd.setTheme = function(theme) { + if (!theme || theme === 'null') theme = 'dark'; + window.localStorage.setItem('theme', theme); + var cssFile = document.querySelector('[rel="stylesheet"]'); + cssFile.setAttribute('href', '/assets/css/just-the-docs-' + theme + '.css'); +} + +// Event handling + +jtd.addEvent = function(el, type, handler) { + if (el.attachEvent) el.attachEvent('on'+type, handler); else el.addEventListener(type, handler); +} +jtd.removeEvent = function(el, type, handler) { + if (el.detachEvent) el.detachEvent('on'+type, handler); else el.removeEventListener(type, handler); +} +jtd.onReady = function(ready) { + // in case the document is already rendered + if (document.readyState!='loading') ready(); + // modern browsers + else if (document.addEventListener) document.addEventListener('DOMContentLoaded', ready); + // IE <= 8 + else document.attachEvent('onreadystatechange', function(){ + if (document.readyState=='complete') ready(); + }); +} + +// Show/hide mobile menu + +function initNav() { + jtd.addEvent(document, 'click', function(e){ + var target = e.target; + while (target && !(target.classList && target.classList.contains('nav-list-expander'))) { + target = target.parentNode; + } + if (target) { + e.preventDefault(); + target.parentNode.classList.toggle('active'); + } + }); + + for (const btn of document.getElementsByClassName('theme-dark-button')) { + btn.addEventListener('click', () => jtd.setTheme('dark')); + } + for (const btn of document.getElementsByClassName('theme-light-button')) { + btn.addEventListener('click', () => jtd.setTheme('light')); + } + + const oReq = new XMLHttpRequest(); + oReq.addEventListener("load", function () { + const stargazers = parseFloat(JSON.parse(this.responseText).stargazers_count); + document.getElementById('star-button').innerHTML = "⭐️ "+Math.floor(stargazers/100)/10+"k"; + }); + oReq.open("GET", "https://api.github.com/repos/danog/madelineproto"); + oReq.send(); + + const siteNav = document.getElementById('site-nav'); + const mainHeader = document.getElementById('main-header'); + const menuButton = document.getElementById('menu-button'); + + jtd.addEvent(menuButton, 'click', function(e){ + e.preventDefault(); + + if (menuButton.classList.toggle('nav-open')) { + siteNav.classList.add('nav-open'); + mainHeader.classList.add('nav-open'); + } else { + siteNav.classList.remove('nav-open'); + mainHeader.classList.remove('nav-open'); + } + }); + + const searchInput = document.getElementById('search-input'); + const searchButton = document.getElementById('search-button'); + + jtd.addEvent(searchButton, 'click', function(e){ + e.preventDefault(); + + mainHeader.classList.add('nav-open'); + searchInput.focus(); + }); + + jtd.addEvent(searchInput, 'focus', function(){ + initSearch(function () { + setTimeout(update, 0); + }); + }); + + jtd.addEvent(searchInput, 'keyup', function(e){ + initSearch(function () { + switch (e.keyCode) { + case 27: // When esc key is pressed, hide the results and clear the field + searchInput.value = ''; + break; + case 38: // arrow up + case 40: // arrow down + case 13: // enter + e.preventDefault(); + return; + } + update(); + }); + }); + + jtd.addEvent(searchInput, 'keydown', function(e){ + initSearch(function () { + switch (e.keyCode) { + case 38: // arrow up + e.preventDefault(); + var active = document.querySelector('.search-result.active'); + if (active) { + active.classList.remove('active'); + if (active.parentElement.previousSibling) { + var previous = active.parentElement.previousSibling.querySelector('.search-result'); + previous.classList.add('active'); + } + } + return; + case 40: // arrow down + e.preventDefault(); + var active = document.querySelector('.search-result.active'); + if (active) { + if (active.parentElement.nextSibling) { + var next = active.parentElement.nextSibling.querySelector('.search-result'); + active.classList.remove('active'); + next.classList.add('active'); + } + } else { + var next = document.querySelector('.search-result'); + if (next) { + next.classList.add('active'); + } + } + return; + case 13: // enter + e.preventDefault(); + var active = document.querySelector('.search-result.active'); + if (active) { + active.click(); + } else { + var first = document.querySelector('.search-result'); + if (first) { + first.click(); + } + } + return; + } + }); + }); + + jtd.addEvent(document, 'click', function(e){ + if (e.target != searchInput) { + hideSearch(); + } + }); +} + +// Site search + +function initSearch(cb) { + if (window.searchDbLoaded) { + cb(); + return; + } + var request = new XMLHttpRequest(); + request.open('GET', '/assets/js/search-data.json', true); + + request.onload = function(){ + if (request.status >= 200 && request.status < 400) { + var docs = JSON.parse(request.responseText); + + lunr.tokenizer.separator = {{ site.search.tokenizer_separator | default: site.search_tokenizer_separator | default: "/[\s\-/]+/" }} + + var index = lunr(function(){ + this.ref('id'); + this.field('title', { boost: 200 }); + this.field('content', { boost: 2 }); + {%- if site.search.rel_url != false %} + this.field('relUrl'); + {%- endif %} + this.metadataWhitelist = ['position'] + + for (var i in docs) { + this.add({ + id: i, + title: docs[i].title, + content: docs[i].content, + {%- if site.search.rel_url != false %} + relUrl: docs[i].relUrl + {%- endif %} + }); + } + }); + + window.index = index; + window.docs = docs; + window.searchDbLoaded = true; + cb(); + } else { + console.log('Error loading ajax request. Request status:' + request.status); + } + }; + + request.onerror = function(){ + console.log('There was a connection error'); + }; + + request.send(); +} + +var searchInput = document.getElementById('search-input'); +var searchResults = document.getElementById('search-results'); +var mainHeader = document.getElementById('main-header'); +var currentInput; +var currentSearchIndex = 0; + +function showSearch() { + document.documentElement.classList.add('search-active'); +} + +function hideSearch() { + document.documentElement.classList.remove('search-active'); +} + +function update() { + currentSearchIndex++; + + var input = searchInput.value; + if (input === '') { + hideSearch(); + } else { + showSearch(); + // scroll search input into view, workaround for iOS Safari + window.scroll(0, -1); + setTimeout(function(){ window.scroll(0, 0); }, 0); + } + if (input === currentInput) { + return; + } + currentInput = input; + searchResults.innerHTML = ''; + if (input === '') { + return; + } + + var results = window.index.query(function (query) { + var tokens = lunr.tokenizer(input) + query.term(tokens, { + boost: 10 + }); + query.term(tokens, { + wildcard: lunr.Query.wildcard.TRAILING + }); + }); + + if ((results.length == 0) && (input.length > 2)) { + var tokens = lunr.tokenizer(input).filter(function(token, i) { + return token.str.length < 20; + }) + if (tokens.length > 0) { + results = window.index.query(function (query) { + query.term(tokens, { + editDistance: Math.round(Math.sqrt(input.length / 2 - 1)) + }); + }); + } + } + + if (results.length == 0) { + var noResultsDiv = document.createElement('div'); + noResultsDiv.classList.add('search-no-result'); + noResultsDiv.innerText = 'No results found'; + searchResults.appendChild(noResultsDiv); + + } else { + var resultsList = document.createElement('ul'); + resultsList.classList.add('search-results-list'); + searchResults.appendChild(resultsList); + + addResults(resultsList, results, 0, 10, 100, currentSearchIndex); + } + + function addResults(resultsList, results, start, batchSize, batchMillis, searchIndex) { + if (searchIndex != currentSearchIndex) { + return; + } + for (var i = start; i < (start + batchSize); i++) { + if (i == results.length) { + return; + } + addResult(resultsList, results[i]); + } + setTimeout(function() { + addResults(resultsList, results, start + batchSize, batchSize, batchMillis, searchIndex); + }, batchMillis); + } + + function addResult(resultsList, result) { + var doc = window.docs[result.ref]; + + var resultsListItem = document.createElement('li'); + resultsListItem.classList.add('search-results-list-item'); + resultsList.appendChild(resultsListItem); + + var resultLink = document.createElement('a'); + resultLink.classList.add('search-result'); + resultLink.setAttribute('href', doc.url); + resultsListItem.appendChild(resultLink); + + var resultTitle = document.createElement('div'); + resultTitle.classList.add('search-result-title'); + resultLink.appendChild(resultTitle); + + var resultDoc = document.createElement('div'); + resultDoc.classList.add('search-result-doc'); + resultDoc.innerHTML = ''; + resultTitle.appendChild(resultDoc); + + var resultDocTitle = document.createElement('div'); + resultDocTitle.classList.add('search-result-doc-title'); + resultDocTitle.innerHTML = doc.doc; + resultDoc.appendChild(resultDocTitle); + var resultDocOrSection = resultDocTitle; + + if (doc.doc != doc.title) { + resultDoc.classList.add('search-result-doc-parent'); + var resultSection = document.createElement('div'); + resultSection.classList.add('search-result-section'); + resultSection.innerHTML = doc.title; + resultTitle.appendChild(resultSection); + resultDocOrSection = resultSection; + } + + var metadata = result.matchData.metadata; + var titlePositions = []; + var contentPositions = []; + for (var j in metadata) { + var meta = metadata[j]; + if (meta.title) { + var positions = meta.title.position; + for (var k in positions) { + titlePositions.push(positions[k]); + } + } + if (meta.content) { + var positions = meta.content.position; + for (var k in positions) { + var position = positions[k]; + var previewStart = position[0]; + var previewEnd = position[0] + position[1]; + var ellipsesBefore = true; + var ellipsesAfter = true; + for (var k = 0; k < {{ site.search.preview_words_before | default: 5 }}; k++) { + var nextSpace = doc.content.lastIndexOf(' ', previewStart - 2); + var nextDot = doc.content.lastIndexOf('. ', previewStart - 2); + if ((nextDot >= 0) && (nextDot > nextSpace)) { + previewStart = nextDot + 1; + ellipsesBefore = false; + break; + } + if (nextSpace < 0) { + previewStart = 0; + ellipsesBefore = false; + break; + } + previewStart = nextSpace + 1; + } + for (var k = 0; k < {{ site.search.preview_words_after | default: 10 }}; k++) { + var nextSpace = doc.content.indexOf(' ', previewEnd + 1); + var nextDot = doc.content.indexOf('. ', previewEnd + 1); + if ((nextDot >= 0) && (nextDot < nextSpace)) { + previewEnd = nextDot; + ellipsesAfter = false; + break; + } + if (nextSpace < 0) { + previewEnd = doc.content.length; + ellipsesAfter = false; + break; + } + previewEnd = nextSpace; + } + contentPositions.push({ + highlight: position, + previewStart: previewStart, previewEnd: previewEnd, + ellipsesBefore: ellipsesBefore, ellipsesAfter: ellipsesAfter + }); + } + } + } + + if (titlePositions.length > 0) { + titlePositions.sort(function(p1, p2){ return p1[0] - p2[0] }); + resultDocOrSection.innerHTML = ''; + addHighlightedText(resultDocOrSection, doc.title, 0, doc.title.length, titlePositions); + } + + if (contentPositions.length > 0) { + contentPositions.sort(function(p1, p2){ return p1.highlight[0] - p2.highlight[0] }); + var contentPosition = contentPositions[0]; + var previewPosition = { + highlight: [contentPosition.highlight], + previewStart: contentPosition.previewStart, previewEnd: contentPosition.previewEnd, + ellipsesBefore: contentPosition.ellipsesBefore, ellipsesAfter: contentPosition.ellipsesAfter + }; + var previewPositions = [previewPosition]; + for (var j = 1; j < contentPositions.length; j++) { + contentPosition = contentPositions[j]; + if (previewPosition.previewEnd < contentPosition.previewStart) { + previewPosition = { + highlight: [contentPosition.highlight], + previewStart: contentPosition.previewStart, previewEnd: contentPosition.previewEnd, + ellipsesBefore: contentPosition.ellipsesBefore, ellipsesAfter: contentPosition.ellipsesAfter + } + previewPositions.push(previewPosition); + } else { + previewPosition.highlight.push(contentPosition.highlight); + previewPosition.previewEnd = contentPosition.previewEnd; + previewPosition.ellipsesAfter = contentPosition.ellipsesAfter; + } + } + + var resultPreviews = document.createElement('div'); + resultPreviews.classList.add('search-result-previews'); + resultLink.appendChild(resultPreviews); + + var content = doc.content; + for (var j = 0; j < Math.min(previewPositions.length, {{ site.search.previews | default: 3 }}); j++) { + var position = previewPositions[j]; + + var resultPreview = document.createElement('div'); + resultPreview.classList.add('search-result-preview'); + resultPreviews.appendChild(resultPreview); + + if (position.ellipsesBefore) { + resultPreview.appendChild(document.createTextNode('... ')); + } + addHighlightedText(resultPreview, content, position.previewStart, position.previewEnd, position.highlight); + if (position.ellipsesAfter) { + resultPreview.appendChild(document.createTextNode(' ...')); + } + } + } + + {%- if site.search.rel_url != false %} + var resultRelUrl = document.createElement('span'); + resultRelUrl.classList.add('search-result-rel-url'); + resultRelUrl.innerText = doc.relUrl; + resultTitle.appendChild(resultRelUrl); + {%- endif %} + } + + function addHighlightedText(parent, text, start, end, positions) { + var index = start; + for (var i in positions) { + var position = positions[i]; + var span = document.createElement('span'); + span.innerHTML = text.substring(index, position[0]); + parent.appendChild(span); + index = position[0] + position[1]; + var highlight = document.createElement('span'); + highlight.classList.add('search-result-highlight'); + highlight.innerHTML = text.substring(position[0], index); + parent.appendChild(highlight); + } + var span = document.createElement('span'); + span.innerHTML = text.substring(index, end); + parent.appendChild(span); + } +} +// Document ready + +jtd.onReady(function(){ + initNav(); + if (window.location.hash) { + setTimeout(function () { + document.getElementById(window.location.hash.slice(1)).scrollIntoView(); + }, 50); + } +}); + +})(window.jtd = window.jtd || {}); diff --git a/docs/assets/js/vendor/lunr.min.js b/docs/assets/js/vendor/lunr.min.js new file mode 100644 index 0000000000..cdc94cd390 --- /dev/null +++ b/docs/assets/js/vendor/lunr.min.js @@ -0,0 +1,6 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */ +!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.9",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/docs/assets/js/zzzz-search-data.json b/docs/assets/js/zzzz-search-data.json new file mode 100644 index 0000000000..3ab58b6b74 --- /dev/null +++ b/docs/assets/js/zzzz-search-data.json @@ -0,0 +1,73 @@ +--- +permalink: /assets/js/search-data.json +layout: empty +--- +{ +{%- assign i = 0 -%} +{%- assign pages_array = '' | split: '' -%} +{%- assign pages_array = pages_array | push: site.html_pages -%} +{%- if site.just_the_docs.collections -%} + {%- for collection_entry in site.just_the_docs.collections -%} + {%- assign collection_key = collection_entry[0] -%} + {%- assign collection_value = collection_entry[1] -%} + {%- assign collection = site[collection_key] -%} + {%- if collection_value.search_exclude != true -%} + {%- assign pages_array = pages_array | push: collection -%} + {%- endif -%} + {%- endfor -%} +{%- endif -%} +{%- for pages in pages_array -%} + {%- for page in pages -%} + {%- if page.title and page.search_exclude != true -%} + {%- assign page_content = page.content -%} + {%- assign heading_level = site.search.heading_level | default: 2 -%} + {%- for j in (2..heading_level) -%} + {%- assign tag = '' -%} + {%- assign title = titleAndContent[0] | replace_first: '>', '

' | split: '

' -%} + {%- assign title = title[1] | strip_html -%} + {%- assign content = titleAndContent[1] -%} + {%- assign url = page.url -%} + {%- if title == page.title and parts[0] == '' -%} + {%- assign title_found = true -%} + {%- else -%} + {%- assign id = titleAndContent[0] -%} + {%- assign id = id | split: 'id="' -%} + {%- if id.size == 2 -%} + {%- assign id = id[1] -%} + {%- assign id = id | split: '"' -%} + {%- assign id = id[0] -%} + {%- capture url -%}{{ url | append: '#' | append: id }}{%- endcapture -%} + {%- endif -%} + {%- endif -%} + {%- unless i == 0 -%},{%- endunless -%} + "{{ i }}": { + "doc": {{ page.title | jsonify }}, + "title": {{ title | jsonify }}, + "content": {{ content | replace: 'botLogin($token); +``` diff --git a/docs/complete2FALogin.md b/docs/complete2FALogin.md new file mode 100644 index 0000000000..eb04b29088 --- /dev/null +++ b/docs/complete2FALogin.md @@ -0,0 +1,37 @@ +--- +title: complete2falogin +description: complete2falogin parameters, return type and example +grand_parent: "Telegram RPC API" +parent: "Methods" +redirect_from: /complete_2fa_login.html +redirect_from: /complete2falogin.html +redirect_from: /complete2FAlogin.html +--- +## Method: complete2falogin + + +### Parameters: + +| Name | Type | +|----------|---------------| +|password| A string with the password| + +### Return type: [auth.Authorization](API_docs/types/auth.Authorization.html) + +### Example ([now fully async!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +$MadelineProto->phoneLogin(readline('Enter your phone number: ')); +$authorization = $MadelineProto->completePhoneLogin(readline('Enter the code you received: ')); +if ($authorization['_'] === 'account.noPassword') { + throw new \danog\MadelineProto\Exception('2FA is enabled but no password is set!'); +} +if ($authorization['_'] === 'account.password') { + $authorization = $MadelineProto->complete2falogin(readline('Please enter your password (hint '.$authorization['hint'].'): ')); +} +if ($authorization['_'] === 'account.needSignup') { + $authorization = $MadelineProto->completeSignup(readline('Please enter your first name: '), readline('Please enter your last name (can be empty): ')); +} + +``` diff --git a/docs/completePhoneLogin.md b/docs/completePhoneLogin.md new file mode 100644 index 0000000000..53b5af1e96 --- /dev/null +++ b/docs/completePhoneLogin.md @@ -0,0 +1,37 @@ +--- +title: completePhoneLogin +description: completePhoneLogin parameters, return type and example +redirect_from: /complete_phone_login.html +grand_parent: "Telegram RPC API" +parent: "Methods" +--- +## Method: complete\_phone\_login + + +### Parameters: + +| Name | Type | +|----------|---------------| +|code| A string with the phone code| + +### Return type: [auth.Authorization](API_docs/types/auth.Authorization.html) or [account.Password](http://docs.madelineproto.xyz/API_docs/types/account_Password.html) or `['_' => 'account.needSignup']` + +You must then use [complete2falogin](complete2FALogin.html) or [completeSignup](completeSignup.html) to login or signup, or simply start using `$MadelineProto` if the result is a `auth.Authorization` object. + +### Example ([now fully async!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +$MadelineProto->phoneLogin(readline('Enter your phone number: ')); +$authorization = $MadelineProto->completePhoneLogin(readline('Enter the code you received: ')); +if ($authorization['_'] === 'account.noPassword') { + throw new \danog\MadelineProto\Exception('2FA is enabled but no password is set!'); +} +if ($authorization['_'] === 'account.password') { + $authorization = $MadelineProto->complete2falogin(readline('Please enter your password (hint '.$authorization['hint'].'): ')); +} +if ($authorization['_'] === 'account.needSignup') { + $authorization = $MadelineProto->completeSignup(readline('Please enter your first name: '), readline('Please enter your last name (can be empty): ')); +} + +``` diff --git a/docs/completeSignup.md b/docs/completeSignup.md new file mode 100644 index 0000000000..4432532563 --- /dev/null +++ b/docs/completeSignup.md @@ -0,0 +1,37 @@ +--- +title: completeSignup +description: completeSignup parameters, return type and example +redirect_from: /complete_signup.html +grand_parent: "Telegram RPC API" +parent: "Methods" +--- +## Method: completeSignup + + +### Parameters: + +| Name | Type | +|----------|---------------| +|first_name| A string with the first name| +|last_name| Optional, string with the last name| + +### Return type: [auth.Authorization](API_docs/types/auth.Authorization.html) + +### Example ([now fully async!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +$MadelineProto->phoneLogin(readline('Enter your phone number: ')); +$authorization = $MadelineProto->completePhoneLogin(readline('Enter the code you received: ')); +if ($authorization['_'] === 'account.noPassword') { + throw new \danog\MadelineProto\Exception('2FA is enabled but no password is set!'); +} +if ($authorization['_'] === 'account.password') { + $authorization = $MadelineProto->complete2falogin(readline('Please enter your password (hint '.$authorization['hint'].'): ')); +} +if ($authorization['_'] === 'account.needSignup') { + $authorization = $MadelineProto->completeSignup(readline('Please enter your first name: '), readline('Please enter your last name (can be empty): ')); +} + + +``` diff --git a/docs/docs/ASYNC.md b/docs/docs/ASYNC.md new file mode 100644 index 0000000000..6e5fda997f --- /dev/null +++ b/docs/docs/ASYNC.md @@ -0,0 +1,244 @@ +--- +title: "Async" +description: "MadelineProto now features async, for incredible speed improvements, and parallel processing, all powered by amphp." +nav_order: 27 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Async + +MadelineProto now features async, for **incredible speed improvements**, and parallel processing, all powered by [amphp](https://amphp.org). + +* [Usage](#usage) + * [Async in event handler](#async-in-event-handler) + * [Multiple async](#multiple-async) + * [Ignored async](#ignored-async) + * [Combining async operations](#combining-async-operations) + * [MadelineProto and AMPHP async APIs](#madelineproto-and-amphp-async-apis) + * [Helper methods](#helper-methods) + * [Async sleep](#async-sleep-does-not-block-the-main-thread) + * [Async readline](#async-readline-does-not-block-the-main-thread) + * [Async echo](#async-echo-does-not-block-the-main-thread) + * [MadelineProto HTTP client](#madelineproto-http-client) + * [Async forking](#async-forking-does-async-green-thread-forking) + * [Async flock](#async-flock) + * [MadelineProto async loop APIs](#async-loop-apis) + +## Usage + +What exactly __is__ **async**, you may ask, and how is it better than **threading** or **multiprocessing**? +Async is a relatively new programming pattern that allows you to easily write **non-blocking** code **as if you were using standard** blocking functions, all **without** the need for complex message exchange systems and synchronization handling for threaded programs, that only add overhead and complexity to your programs, making everything slower and error-prone. + +That's very cool and all, you might think, but how exactly does this __async__ stuff work? Well, as it turns out, it's very easy. + +Instead of writing code like this: +```php +$file = $MadelineProto->downloadToDir($bigfile, '/tmp/'); +``` + +Write it like **this**: +```php +$file = $MadelineProto->downloadToDir($bigfile, '/tmp/'); +``` + +But isn't that's the same code? + +**Exactly**. + +Starting from [amphp v3](https://amphp.org) and MadelineProto 8, [native PHP fibers](https://www.php.net/manual/en/language.fibers.php) allow concurrent async execution of code without any special `await` or `yield` keywords. + +### That's it. + +It's really **that** easy. + +This means that you can handle multiple updates, download/upload multiple files all together in one process, as if you were writing normal synchronous code + making everything a lot faster. + +**WARNING**: MadelineProto async is not compatible with pthreads or pcntl, so please uninstall pthreads and do not use `pcntl_fork` in your bot. + +### Async in [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html#event-driven): + +```php +class EventHandler extends \danog\MadelineProto\EventHandler +{ + public function onAny($update) + { + if (isset($update['message']['out']) && $update['message']['out']) { + return; + } + if (isset($update['message']['media']) && $update['message']['media']['_'] !== 'messageMediaGame') { + $this->downloadToDir($update, '/tmp'); + $this->messages->sendMedia(['peer' => $update, 'message' => $update['message']['message'], 'media' => $update]); + } + + $res = json_encode($update, JSON_PRETTY_PRINT); + + $this->sleep(3); + + try { + $this->sm($update, "$res\nAsynchronously, after 3 seconds"); + } catch (\danog\MadelineProto\RPCErrorException $e) { + \danog\MadelineProto\Logger::log((string) $e, \danog\MadelineProto\Logger::FATAL_ERROR); + } catch (\danog\MadelineProto\Exception $e) { + \danog\MadelineProto\Logger::log((string) $e, \danog\MadelineProto\Logger::FATAL_ERROR); + } + } + public function sm($peer, $message) + { + $this->messages->sendMessage(peer: $peer, message: $message, reply_to_msg_id: isset($update['message']['id']) ? $update['message']['id'] : null, parse_mode: 'HTML'); + } +} +``` + +### Ignored async + +```php +\Revolt\EventLoop::queue(fn () => $MadelineProto->messages->sendMessage(peer: '@danogentili', message: 'a')); +\Revolt\EventLoop::queue(fn () => $MadelineProto->messages->sendMessage(peer: '@danogentili', message: 'b')); +``` + +You can use the above syntax if don't want the request to block, and you don't need the result of the function. +Note that the order of execution of the function calls will not be guaranteed. +See [async forking](#async-forking-does-async-green-thread-forking). + +### Combining async operations + +There are AMPHP methods can be used to execute multiple async operations simultaneously and wait for the result of all of them, see the [amphp docs](https://amphp.org/amp#combinators) for more info. + +## MadelineProto and AMPHP async APIs + +MadelineProto and AMPHP (through Revolt) both provide a lot of async functions: all of MadelineProto's functions are async, for example; and AMPHP provides [multiple packages](https://amphp.org/packages) to work asynchronously with HTTP requests, websockets, databases (HTTP, MySQL, redis, postgres, DNS, sockets and [much more](https://github.com/amphp/))! + +Also, you should read the [AMPHP docs](https://amphp.org/amp): AMPHP provides multiple helper methods for executing actions repeatedly every N seconds in a non-blocking manner, or to defer execution of certain actions (aka async cron). + +You can also use [danog/loop](https://daniil.it/loop) for that. + +### Helper methods + +MadelineProto also provides a few generic async helper methods. + +#### Async sleep (does not block the main thread) +```php +$MadelineProto->sleep(3); +``` + +#### Async readline (does not block the main thread) +```php +$res = $MadelineProto->readLine('Optional prompt'); +``` + +#### Async echo (does not block the main thread) +```php +$MadelineProto->echo('Hello'.PHP_EOL); +``` + +#### MadelineProto HTTP client + +When using amphp's [http-client](https://amphp.org/http-client) to make high-speed asynchronous HTTP requests (downloading files, etc.), use MadelineProto's modified http-client client, instead. +It automatically supports the socks/HTTP proxies specified in MadelineProto's settings (will use proxies only if the file can't be downloaded normally), and DoH for greater security. + +To use MadelineProto's http-client client, instead of creating an http-client instance: +```php +$client = \Amp\Http\Client\HttpClientBuilder::buildDefault(); +``` + +Simply get MadelineProto's HTTP client: +```php +$client = $MadelineProto->getHTTPClient(); +``` + +From here it's like in the [http-client docs](https://amphp.org/http-client). + +MadelineProto also provides a simplified async version of `file_get_contents`: +```php +$result = $MadelineProto->fileGetContents('https://myurl'); +``` + +#### Async forking (does async green-thread forking) + +Useful if you need to start a process in the background. + +```php +\Revolt\EventLoop::queue(fn () => $MadelineProto->messages->sendMessage(peer: '@danogentili', message: 'test')); +``` + +If the method throws an exception, it will surface out of the event loop, unless it's intercepted by the configured Revolt exception handler ([startAndLoop](https://docs.madelineproto.xyz/docs/UPDATES.html) automatically sets up an exception handler that reports exception to the userbot's admin). +Also, the method result can't be used: this is usually not good practice, so it's best to use `\Amp\async` instead, which returns a future that will resolve or fail according to the result of the function. + +```php +$future = \Amp\async(fn () => $MadelineProto->messages->sendMessage(peer: 'danogentili', message: 'test')); +// Use $future to register a callback with catch, use it with combinator functions, and much more... +``` + +#### Multiple async + +Multiple concurrent requests can be started [using `\Amp\async`](#async-forking-does-async-green-thread-forking), this will queue bundle all requests in a single container for higher efficiency, if there are no method calls inbetween the `async` calls. + +```php +$res1 = async(fn () => $MadelineProto->messages->sendMessage(peer: '@danogentili', message: 'hi 1')); +$res2 = async(fn () => $MadelineProto->messages->sendMessage(peer: '@danogentili', message: 'hi 2')); +$res3 = async(fn () => $MadelineProto->messages->sendMessage(peer: '@danogentili', message: 'hi 3')); + +// The await will send all 3 methods in a single container: ['hi 1', 'hi 2', 'hi 3'] +[$res1, $res2, $res3] = await([$res1, $res2, $res3]); + +$res1 = async(fn () => $MadelineProto->messages->sendMessage(peer: '@danogentili', message: 'hi 1')); + +// This non-async call will send request hi 1 and hi 2 direct in a single container: ['hi 1', 'hi 2 direct'] +$MadelineProto->messages->sendMessage(peer: '@danogentili', message: 'hi 2 direct'); + +$res2 = async(fn () => $MadelineProto->messages->sendMessage(peer: '@danogentili', message: 'hi 2')); +$res3 = async(fn () => $MadelineProto->messages->sendMessage(peer: '@danogentili', message: 'hi 3')); + +// The await will send the remaining 2 calls in two container: ['hi 2', 'hi 3'] +[$res1, $res2, $res3] = await([$res1, $res2, $res3]); +``` + +This is the preferred way of combining multiple method calls: this way, the MadelineProto async WriteLoop will combine all method calls in one container, making everything WAY faster. + +Note that the execution order of method calls is not guaranteed in this case, unless a `queueId` argument is also provided, in which case it will be guaranteed to be equal to the queueing order (each method call is queued by the `async` call). + +#### Cancellation + +All MadelineProto and amphp methods allow cancelling an in-progress operation, by passing an `\Amp\Cancellation` object to the last parameter of any method, see the [amphp](https://amphp.org/amp#cancellation) documentation for more info. + +Example: + +```php +use danog\MadelineProto\RemoteUrl; + + +$deferredCancellation = new \Amp\DeferredCancellation(); +$res1 = async( + $MadelineProto->sendDocument(...), + peer: '@danogentili', + file: new RemoteUrl($url), + cancellation: $deferredCancellation->getCancellation() +); + + +// Sometime later, if the user decides to /cancel... +$deferredCancellation->cancel(); +``` + +#### Async flock + +```php +$unlock = $MadelineProto->flock($filePath, LOCK_SH); +try { + // ... +} finally { + $unlock(); +} +``` + +This will asynchronously wait for a lock on `$filePath` (creating it if it doesn't exist). +The locking mode can be `LOCK_SH` (shared locks), `LOCK_EX` (exclusive locks), as with the PHP `flock` function. +A third optional parameter can be set, to specify a polling interval in seconds (0.1 by default). + +### Async loop APIs + +MadelineProto provides a very useful async loop APIs, for executing operations periodically or on demand. +It's a more flexible and powerful alternative to AMPHP's [repeat](https://amphp.org/amp/event-loop/api#repeat), allowing dynamically changeable repeat periods, resumes and signaling. + +See [the documentation](https://daniil.it/loop) for more info! + +Next section \ No newline at end of file diff --git a/docs/docs/BROADCAST.md b/docs/docs/BROADCAST.md new file mode 100644 index 0000000000..eecd8d12af --- /dev/null +++ b/docs/docs/BROADCAST.md @@ -0,0 +1,276 @@ +--- +title: "Broadcasting messages to all users" +description: "MadelineProto can be used to broadcast messages to all users, chats and channels of a bot or userbot." +nav_order: 10 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Broadcasting messages to all users + +MadelineProto can be used to broadcast messages to all users, chats and channels of a bot or userbot. + +Note that unlike the bot API, MadelineProto can be used to fetch the full list of users, chats and channels of a **normal bot, simply using its bot token**. + +**All** users, chats and channels of the bot will be fetched, **regardless** of their last activity date: for example, if you just logged in with a bot token in MadelineProto 5 minutes ago, MadelineProto will fetch **all** users, chats and channels, even if their last activity is 5+ years ago! + +>Note: if you just want to fetch the member list, you can use [getDialogIds](https://docs.madelineproto.xyz/docs/DIALOGS.html#getdialogids). +>Be aware that getDialogIds **can't be used when running via web**, due to timeouts. +>Instead, use the [broadcast API »](#broadcast-api) to run via web. + +## Broadcast API + +MadelineProto offers a simple broadcast API, that can be used to asynchronously broadcast messages to all users of a bot or userbot in the background, without incurring in timeouts or other issues. + +See [here »](https://github.com/danog/MadelineProto/blob/v8/examples/bot.php) for a full example of the broadcast API. + +### Forward messages + +Use `broadcastForwardMessages` to forward a list of messages to all peers (users, chats, channels) of the bot. + +This method will automatically handle rate limits, waiting to ensure all messages are sent correctly. + +This method starts the broadcast process **in the background**. +It immediately returns an integer ID that can be used to: + +- Get the current broadcast progress with [getBroadcastProgress](#get-progress) +- Cancel the broadcast using [cancelBroadcast](#cancel-a-broadcast) + +Note that to avoid manually polling the progress, MadelineProto will also periodically emit [updateBroadcastProgress updates](#get-progress), containing a Progress object for all broadcasts currently in-progress. +Note that the process may take even hours to start, so be patient. + +```php +start(); + +// Or, instead of start() you can use botLogin (bots only) +//$MadelineProto->botLogin('1234:token'); + +// Let's forward two messages from the @MadelineProto channel! +// Channel ID: @MadelineProto +// Message ID 1: 614 +// Message ID 2: 613 +// Link 1: https://t.me/MadelineProto/613 +// Link 2: https://t.me/MadelineProto/614 + +$from_peer = '@MadelineProto'; // Can also be a numeric bot API ID +$message_ids = [613, 614]; + +// Send messages, showing the "Forwarded from" header +$id = $MadelineProto->broadcastForwardMessages( + from_peer: $from_peer, + message_ids: $message_ids, + drop_author: false, + pin: false, +); + +// Send messages WITHOUT showing the "Forwarded from" header +$id = $MadelineProto->broadcastForwardMessages( + from_peer: $from_peer, + message_ids: $message_ids, + drop_author: true, + pin: false, +); +``` + +You can specify `pin: true` to automatically pin the last sent message. + +An optional `filter` parameter can also be used, specifying a [peer filter](#filtering). + +### Send messages + +Use `broadcastMessages` to broadcast a list of messages to all peers (users, chats, channels) of the bot. + +This method will automatically handle rate limits, waiting to ensure all messages are sent correctly. + +A simplified version of this method is also available: [broadcastForwardMessages](#forward-messages) can work with pre-prepared messages. + +This method starts the broadcast process **in the background**. +It immediately returns an integer ID that can be used to: + +- Get the current broadcast progress with [getBroadcastProgress](#get-progress) +- Cancel the broadcast using [cancelBroadcast](#cancel-a-broadcast) + +Note that to avoid manually polling the progress, MadelineProto will also periodically emit [updateBroadcastProgress updates](#get-progress), containing a Progress object for all broadcasts currently in-progress. +Note that the process may take even hours to start, so be patient. + +```php +start(); + +// Or, instead of start() you can use botLogin (bots only) +//$MadelineProto->botLogin('1234:token'); + +$id = $MadelineProto->broadcastMessages( + messages: [ + ['message' => 'This broadcast is powered by @MadelineProto!'], + ['message' => 'This media broadcast is powered by @MadelineProto!', 'media' => [ + '_' => 'inputMediaUploadedPhoto', + 'file' => 'https://docs.madelineproto.xyz/logo-hover.png' + ]], + ], + pin: false, +); +``` + +You can specify `pin: true` to automatically pin the last sent message. + +An optional `filter` parameter can also be used, specifying a [peer filter](#filtering). + +### Custom action + +Use `broadcastCustom` to execute a custom broadcast action with all peers (users, chats, channels) of the bot. + +This method will **NOT** automatically handle rate limits. +To handle rate limits and errors automatically, a simplified version of this method is available, [broadcastForwardMessages »](#forward-messages) and [broadcastMessages »](#send-messages). + +This method starts the broadcast process **in the background**. +It immediately returns an integer ID that can be used to: + +- Get the current broadcast progress with [getBroadcastProgress](#get-progress) +- Cancel the broadcast using [cancelBroadcast](#cancel-a-broadcast) + +Note that to avoid manually polling the progress, MadelineProto will also periodically emit [updateBroadcastProgress updates](#get-progress), containing a Progress object for all broadcasts currently in-progress. + +An optional `filter` parameter can also be used, specifying a [peer filter](#filtering). +Note that the process may take even hours to start, so be patient. + +```php +isRequested()) { + return; + } + $this->API->messages->sendMessage( + peer: $peer, + message: $this->message, + ); + } catch (RPCErrorException $e) { + if ($e->rpc === 'INPUT_USER_DEACTIVATED') { + return; + } + if ($e->rpc === 'USER_IS_BOT') { + return; + } + if ($e->rpc === 'CHAT_WRITE_FORBIDDEN') { + return; + } + if ($e->rpc === 'USER_IS_BLOCKED') { + return; + } + if ($e->rpc === 'PEER_ID_INVALID') { + return; + } + throw $e; + } + } +} + +// In some other file... +$id = $MadelineProto->broadcastCustom(new CustomBroadcastAction($MadelineProto, 'This broadcast is powered by @MadelineProto!')); +``` + +### Filtering + +All broadcast methods allow specifying a custom peer filter: + +```php +start(); + +// Or, instead of start() you can use botLogin (bots only) +//$MadelineProto->botLogin('1234:token'); + +// Send messages, showing the "Forwarded from" header +$id = $MadelineProto->broadcastForwardMessages( + from_peer: 101374607, + message_ids: [1, 2, 3, 4], + drop_author: false, + filter: new Filter( + allowUsers: true, + allowBots: false, + allowGroups: true, + allowChannels: false, + blacklist: [], // Optional + whitelist: null // Optional array, if null all IDs are allowed (equivalent to *) + ) +); +``` + +### Cancel a broadcast + +Use `cancelBroadcast` to a cancel an in-progress broadcast. + +```php +$MadelineProto->cancelBroadcast(123); +``` + +### Get progress + +```php +use danog\MadelineProto\Broadcast\Progress; +use danog\MadelineProto\Broadcast\Status; + +$progress = $MadelineProto->getBroadcastProgress(123); + +if ($progress !== null) { + assert($progress instanceof Progress); + + $progressStr = (string) $progress; + echo "Human-readable progress: $progressStr".PHP_EOL; + + // 123 + $broadcastId = $progress->broadcastId; + + // One of Status::GATHERING_PEERS, Status::BROADCASTING, Status::FINISHED, Status::CANCELLED + $status = $progress->status; + + $pendingCount = $progress->pendingCount; + $sucessCount = $progress->successCount; + $sucessCount = $progress->failCount; +} +``` + +You can use `getBroadcastProgress` to get the progress of a currently running broadcast. +The method returns null if the broadcast doesn't exist, has already completed or was cancelled. + +Use updateBroadcastProgress updates to get real-time progress status without polling, [here's a full example »](https://github.com/danog/MadelineProto/blob/v8/examples/bot.php). + +Next section \ No newline at end of file diff --git a/docs/docs/CALLS.md b/docs/docs/CALLS.md new file mode 100644 index 0000000000..529630b40a --- /dev/null +++ b/docs/docs/CALLS.md @@ -0,0 +1,195 @@ +--- +title: "Telegram VoIP phone calls" +description: "MadelineProto provides an easy wrapper to work with phone calls." +nav_order: 20 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Telegram VoIP phone calls + +MadelineProto provides an easy wrapper to work with phone calls. + +[Full webradio example](https://github.com/danog/magnaluna) + +* Please read the whole [VoIP API documentation](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/VoIP.html) before proceeding. +* [Requesting a call](#requesting-a-call) +* [Playing audio files](#playing-audio-files) + * [Webhost support!](#webhost-support) +* [Accepting calls](#accepting-calls) + + +## Requesting a call +```php +start(); + +$call = $MadelineProto->requestCall('@danogentili'); +``` + +The [requestCall](https://docs.madelineproto.xyz/requestCall.html) function accepts one parameter with the ID/username/Peer/User/InputPeer of the person to call, and returns a VoIP object that can be used to play audio files, set the hold files, change the configuration and set the output file (see the [VoIP API documentation](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/VoIP.html) for more info). + +You can play audio files of any format as follows: + +## Playing audio files + +You can play audio files of any format: + +```php +start(); + +$call = $MadelineProto->requestCall('@danogentili'); +$call->play(new LocalFile("audio.mp3")) + ->then(new LocalFile("audio.flac")) + ->then(new LocalFile("audio.wav")) + ->then(new LocalFile("audio_with_video.mp4")); +``` + +You can also play remote streams (or simple remote files) by URL: + +```php +start(); + +$call = $MadelineProto->requestCall('@danogentili'); +$call->play(new RemoteUrl("http://icestreaming.rai.it/1.mp3")); +``` + +You can also play Telegram files, using AMP streams! + + +## Webhost support + +Starting from MadelineProto 8, VoIP now works on webhosts, too, thanks to a pure PHP implementation of libtgvoip and a pure PHP OGG demuxer! + +The only limitation when running on webhosts is that audio files must be preconverted using by sending them to [@libtgvoip_bot](https://t.me/libtgvoip_bot) ([source code](https://github.com/danog/MadelineProto/blob/v8/examples/libtgvoipbot.php)), or by using the following script on your PC: + +```php +start(); + +$call = $MadelineProto->requestCall('@danogentili'); +$call->play(new LocalFile("out.ogg")); +``` + +## Accepting calls + +Accepting calls is just as easy: + +```php +accept()->play(new RemoteUrl('http://icestreaming.rai.it/1.mp3')); + } +} + +PonyHandler::startAndLoop('session.madeline'); +``` + +## Recording calls + +To record the incoming audio stream in a call, simply use `setOutput`: + +```php +accept(); + $call->play(new RemoteUrl('http://icestreaming.rai.it/1.mp3')); + + $call->setOutput(new LocalFile('output.ogg')); + + // $stream can also be a WritableStream. + // Can be used to pipe OGG OPUS audio data to ffmpeg, asterisk via amphp/process, amphp/socket, etc... + // + //$call->setOutput($stream); + } +} + +PonyHandler::startAndLoop('session.madeline'); +``` + +Next section \ No newline at end of file diff --git a/docs/docs/CHAT_INFO.md b/docs/docs/CHAT_INFO.md new file mode 100644 index 0000000000..d0ef5e21c7 --- /dev/null +++ b/docs/docs/CHAT_INFO.md @@ -0,0 +1,63 @@ +--- +title: "Getting info about chats" +description: "There are various methods that can be used to fetch info about chats, based on bot API id, tg-cli ID, Peer, User, Chat objects." +nav_order: 22 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Getting info about chats + +There are various methods that can be used to fetch info about chats, based on bot API id, tg-cli ID, Peer, User, Chat objects. + +* [Full chat info with full list of participants](#getPwrChat) +* [Full chat info](#getFullInfo) +* [Reduced chat info (very fast)](#getInfo) +* [Just the chat ID (extremely fast)](#getId) + +## getPwrChat +```php +$pwr_chat = $MadelineProto->getPwrChat(-100214891824); +foreach ($pwr_chat['participants'] as $participant) { + \danog\MadelineProto\Logger::log($participant); +} +``` + +Use `getPwrChat` to get full chat info, including the full list of members, see [here for the parameters and the result](https://docs.madelineproto.xyz/getPwrChat.html). + +Please avoid using this method if possible, use [getInfo](#getinfo) or at least [getFullInfo](#getfullinfo) to avoid flood waits. + +* Speed: slow +* Caching: partial + +## getFullInfo +```php +$full_chat = $MadelineProto->getFullInfo(-10028941842); +``` + +You can use `getFullInfo` to get full chat info, without the full list of members, see [here for the parameters and the result](https://docs.madelineproto.xyz/getFullInfo.html). + +Please avoid using this method if possible, use [getInfo](#getinfo) to avoid flood waits. + +* Speed: medium-fast +* Caching: partial, and an initial RPC query is always made, so please use [getInfo](#getinfo) if possible to avoid flood waits. + +## getInfo +```php +$chat = $MadelineProto->getInfo(-10028941842); +``` + +You can use `getInfo` to get chat info, see [here for the parameters and the result](https://docs.madelineproto.xyz/getInfo.html) + +* Speed: fast +* Caching: full, 0 RPC queries are made unless an unknown username is passed. + +## getId +```php +$id = $MadelineProto->getID($update); +``` + +You can also use `getId` to get chat ID from updates, messages and other objects. + +* Speed: very fast +* Caching: full, 0 RPC queries are made unless an unknown username is passed. + +Next section \ No newline at end of file diff --git a/docs/docs/CONTRIB.md b/docs/docs/CONTRIB.md new file mode 100644 index 0000000000..b0099a44be --- /dev/null +++ b/docs/docs/CONTRIB.md @@ -0,0 +1,89 @@ +--- +title: "Contributing" +description: "You can contribute in various ways." +nav_order: 31 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Contributing + +You can contribute in various ways. + +* [Translation](#translation) +* [Contribution guide](#contribution-guide) +* [Credits](#credits) + +## Translation + +You can help by translating MadelineProto in your language. + +To do this, head over to [weblate.madelineproto.xyz »](https://weblate.madelineproto.xyz/projects/madelineproto/madelineproto/). + +## Contribution guide + +[Here](https://github.com/danog/MadelineProto/projects/1) you can find this project's roadmap. + +You can use this scheme of the structure of this project to help yourself: + +``` +build_docs.php - Builds API docs from TL scheme file +src/ + MTProtoTools/ + AckHandler - Handles acknowledgement of incoming and outgoing mtproto messages + AuthKeyHandler - Handles generation of the temporary and permanent authorization keys + CallHandler - Handles synchronous calls to mtproto methods or objects, also basic response management (waits until the socket receives a response) + Crypt - Handles ige and aes encryption + MessageHandler - Handles sending and receiving of mtproto messages (packs TL serialized data with message id, auth key id and encrypts it with Crypt if needed, adds them to the arrays of incoming and outgoing messages) + MsgIdHandler - Handles message ids (checks if they are valid, adds them to the arrays of incoming and outgoing messages) + ResponseHandler - Handles the content of responses received, service messages, rpc results, errors, and stores them into the response section of the outgoing messages array) + SaltHandler - Handles server salts + SeqNoHandler - Handles sequence numbers (checks validity) + PeerHandler - Manages peers + UpdateHandler - Handles updates + TL/ + Exception - Handles exceptions in the TL namespace + TL - Handles TL serialization and deserialization + TLConstructor - Stores TL constructors + TLMethod - Stores TL methods + TLParams - Parses params + Wrappers/ + Login - Handles logging in as a bot or a user, logging out + PeerHandler - Eases getting of input peer objects using usernames or bot API chat ids + SettingsManager - Eases updating settings + API - Wrapper class that instantiates the MTProto class, sets the error handler, provides a wrapper for calling mtproto methods directly as class submethods, and uses the simplified wrappers from Wrappers/ + APIFactory - Provides a wrapper for calling namespaced mtproto methods directly as class submethods + Connection - Handles tcp/udp/http connections and wrapping payloads generated by MTProtoTools/MessageHandler into the right message according to the protocol, stores authorization keys, session id and sequence number + DataCenter - Handles mtproto datacenters (is a wrapper for Connection classes) + DebugTools - Various debugging tools + Exception - Handles exceptions and PHP errors + RPCErrorException - Handles RPC errors + MTProto - Handles initial connection, generation of authorization keys, instantiation of classes, writing of client info + Logger - Static logging class + prime.py and getpq.py - prime module (python) for p and q generation + PrimeModule.php - prime module (php) for p and q generation by wrapping the python module, using wolfram alpha or a built in PHP engine + RSA - Handles RSA public keys and signatures + Tools - Various tools (positive modulus, string2bin, python-like range) +``` + +Check out our Contribution Guide on GitHub before contributing. + +## Credits + +Created by [Daniil Gentili](https://daniil.it), licensed under AGPLv3, based on [telepy](https://github.com/griganton/telepy_old). + +While writing this client, I looked at many projects for inspiration and help. Here's the full list: + +[tdesktop](github.com/telegramdesktop/tdesktop/) + +[td](https://github.com/tdlib/td) + +[tgl](https://github.com/vysheng/tgl) + +[Kotlogram](https://github.com/badoualy/kotlogram) + +[Webogram](https://github.com/zhukov/webogram) + +Thanks to the devs that contributed to these projects, and to MadelineProto itself, MadelineProto is now an easy, well-written and complete MTProto client. + +Thank you for using MadelineProto <3 + +Next section \ No newline at end of file diff --git a/docs/docs/CREATING_A_CLIENT.md b/docs/docs/CREATING_A_CLIENT.md new file mode 100644 index 0000000000..4f65a4386d --- /dev/null +++ b/docs/docs/CREATING_A_CLIENT.md @@ -0,0 +1,25 @@ +--- +title: "Creating a client" +description: "This page explains how to create a MadelineProto instance." +nav_order: 4 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Creating a client + +This page explains how to create a MadelineProto instance. + +To create the session and set the serialization destination file, do the following: + +```php +$MadelineProto = new \danog\MadelineProto\API('session.madeline', $settings); // The session will be serialized to session.madeline +``` + +Do the same to load a serialized session: + +```php +$MadelineProto = new \danog\MadelineProto\API('session.madeline', $settings); // The session will be loaded from session.madeline +``` + +MadelineProto can also be configured to run on ephemeral filesystems (i.e. docker containers with no volumes, storing all data on MySQL/Postgres/Redis) by setting a table prefix manually in the settings, as specified [here »](https://docs.madelineproto.xyz/docs/DATABASE.html). + +Next section \ No newline at end of file diff --git a/docs/docs/DATABASE.md b/docs/docs/DATABASE.md new file mode 100644 index 0000000000..2074235bcd --- /dev/null +++ b/docs/docs/DATABASE.md @@ -0,0 +1,97 @@ +--- +title: "Database" +description: "MadelineProto optionally can keep some of its internal data in a database, such as mysql, mariadb, postgres or redis (you can also add your own!), reducing RAM usage." +nav_order: 14 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Database + +MadelineProto *optionally* can keep some of its internal data in a database, such as mysql, mariadb, postgres or redis (you can also [add your own](https://github.com/danog/MadelineProto/tree/v8/src/Db)!), reducing RAM usage. + +MadelineProto uses the [danog/AsyncOrm](https://github.com/danog/AsyncOrm) library to store all data to the chosen database backend: this library can also be used standalone, without MadelineProto. + +On first start after switching type all data will be migrated from the previous backend to the new one. +Database to memory migration is also supported. + +Databases and tables will be created automatically. + +You can also directly connect the [event handler](/docs/UPDATES.html#built-in-orm) using the same async MySQL/Postgres/Redis ORM used by MadelineProto internally. + +Related settings: + +* [\danog\MadelineProto\Settings\Database\Memory: Memory backend settings.](../PHP/danog/MadelineProto/Settings/Database/Memory.html) +* [\danog\MadelineProto\Settings\Database\Mysql: MySQL backend settings.](../PHP/danog/MadelineProto/Settings/Database/Mysql.html) MariaDb 10.2+ or Mysql 5.6+ required. +* [\danog\MadelineProto\Settings\Database\Postgres: Postgres backend settings.](../PHP/danog/MadelineProto/Settings/Database/Postgres.html) +* [\danog\MadelineProto\Settings\Database\Redis: Redis backend settings.](../PHP/danog/MadelineProto/Settings/Database/Redis.html) + +See [the settings documentation for more info](SETTINGS.html). + +### Mysql example (low memory usage): + +```php +$settings = (new \danog\MadelineProto\Settings\Database\Mysql) + ->setUri('tcp://localhost') + ->setPassword('pass'); + +$API = new \danog\MadelineProto\API('session.madeline', $settings); +``` + +**WARNING**: Make sure to run `SET GLOBAL max_connections = 100000;` as root in the mysql/mariadb console, **regardless of the limit you set in the MadelineProto settings**. +Make sure to run the command **after every system restart**, or modify the database configuration file to set the maximum connection limit to `100000`. + +MadelineProto can also be configured to run on ephemeral filesystems (i.e. docker containers with no volumes, storing all data on MySQL) by setting a table prefix manually in the settings, as specified [here »](#ephemeral-filesystems). + + +### Postgres example (low memory usage): + +```php +$settings = (new \danog\MadelineProto\Settings\Database\Postgres) + ->setUri('tcp://localhost') + ->setPassword('pass'); +``` + +MadelineProto can also be configured to run on ephemeral filesystems (i.e. docker containers with no volumes, storing all data on Postgres) by setting a table prefix manually in the settings, as specified [here »](#ephemeral-filesystems). + +### Redis example (medium memory usage, faster access): + +```php +$settings = (new \danog\MadelineProto\Settings\Database\Redis) + ->setUri('redis://127.0.0.1') + ->setPassword('pass'); +``` + +MadelineProto can also be configured to run on ephemeral filesystems (i.e. docker containers with no volumes, storing all data on Redis) by setting a table prefix manually in the settings, as specified [here »](#ephemeral-filesystems). + +### Memory example (medium-high memory usage, fastest access): + +```php +$settings = new \danog\MadelineProto\Settings\Database\Memory; +``` + +This mode, unlike [mysql](#mysql-example-low-memory-usage), [postgres](#postgres-example-low-memory-usage) and [redis](#redis-example-medium-memory-usage-faster-access) does not support [ephemeral filesystems](#ephemeral-filesystems), thus a persistent filesystem must be used for the session folder. + +### Ephemeral filesystems + +MadelineProto can also be configured to run on ephemeral filesystems (i.e. docker containers with no volumes, storing all data on [MySQL](#mysql-example-low-memory-usage)/[Postgres](#postgres-example-low-memory-usage)/[Redis](#redis-example-medium-memory-usage-faster-access)) by setting a table prefix manually in the settings: + +```php +$settings = (new \danog\MadelineProto\Settings\Database\Mysql) + ->setUri('tcp://localhost') + ->setPassword('pass') + ->setEphemeralFilesystemPrefix('session_1'); + +$API = new \danog\MadelineProto\API('session.madeline', $settings); +``` + +The `setEphemeralFilesystemPrefix` setting indicates that the filesystem is ephemeral, and thus session files will not be used to store persistent data. + +The prefix must contain a unique string, used as prefix for database tables, different for every session. +The prefix may be the same if different databases are used. + +This is useful when running MadelineProto inside docker containers without volumes, using just a database. + +Note that the session folder must still NEVER be deleted *if* MadelineProto is running, or else the session will be dropped from the database due to `AUTH_KEY_DUPLICATED` errors. + +Stopping the container gracefully and then deleting the session folder (i.e. by deleting or recreating the container itself) is 100% OK though. + +Next section \ No newline at end of file diff --git a/docs/docs/DIALOGS.md b/docs/docs/DIALOGS.md new file mode 100644 index 0000000000..ad8b3d7751 --- /dev/null +++ b/docs/docs/DIALOGS.md @@ -0,0 +1,37 @@ +--- +title: "Getting all chats (dialogs)" +description: "There are two ways to get a list of all chats, depending if you logged in as a user, or as a bot." +nav_order: 23 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Getting all chats (dialogs) + +There are two ways to get a list of all chats, depending if you logged in as a user, or as a bot. + +* [Dialog ID list](#getDialogIds) +* [Full dialog info](#getFullDialogs) + +## getDialogIds +```php +$dialogs = $MadelineProto->getDialogIds(); +foreach ($dialogs as $peer) { + $MadelineProto->messages->sendMessage(peer: $peer, message: 'Hi! Testing MadelineProto broadcasting!'); +} +``` + +`getDialogIds` will return a full list of the bot API IDs of all users/chats/channels known by the bot, see [here for the parameters and the result](https://docs.madelineproto.xyz/getDialogIds.html). + +**Note**: this method will take a **very long time** to return the first time when used with bots: to avoid incurring in timeouts, run the method via CLI (**not web**) OR use the [async background broadcast API](https://docs.madelineproto.xyz/docs/BROADCAST.html), instead. +After the first broadcast with the broadcast API (i.e. `$id = $MadelineProto->broadcastMessages(...)`) is completed in the background (i.e. `$MadelineProto->getBroadcastProgress($id) === null`), the result of `getDialogIds` will be cached and will be returned immediately. + +## getFullDialogs +```php +$dialogs = $MadelineProto->getFullDialogs(); +foreach ($dialogs as $dialog) { + $MadelineProto->logger($dialog); +} +``` + +`getFullDialogs` will return a full list of all chats you're member of, including dialog info (such as the pinned/last message ID, unread count, tag count, notification settings and message drafts) see [here for the parameters and the result](https://docs.madelineproto.xyz/getFullDialogs.html) + +Next section \ No newline at end of file diff --git a/docs/docs/DOCKER.md b/docs/docs/DOCKER.md new file mode 100644 index 0000000000..d29f62e70b --- /dev/null +++ b/docs/docs/DOCKER.md @@ -0,0 +1,230 @@ +--- +title: "MadelineProto on Docker" +description: "MadelineProto offers an official MadelineProto docker image for the linux/amd64, linux/arm64 and linux/riscv64 platforms @ hub.madelineproto.xyz/danog/madelineproto." +nav_order: 8 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# MadelineProto on Docker + +MadelineProto offers an official MadelineProto docker image for the `linux/amd64`, `linux/arm64` and `linux/riscv64` platforms @ `hub.madelineproto.xyz/danog/madelineproto`. + +The image comes with all dependencies pre-configured. +Both opcache and JIT are enabled by default, for maximum performance. + +* [Getting started](#getting-started) + * [CLI bot (recommended)](#cli-bot-recommended) + * [Databases on docker](#databases-on-docker) + * [Web docker](#web-docker) + * [Custom extensions](#custom-extensions) + +## Getting started + +To get started, install `docker`: + +```bash +curl -fsSL https://get.docker.com | sudo sh +``` + +Then increase the `max_map_count` sysctl configuration to avoid "Fiber stack allocate failed" and "Fiber stack protect failed" errors, since the PHP engine mmaps two memory regions per fiber. + +```bash +echo 262144 | sudo tee /proc/sys/vm/max_map_count +echo vm.max_map_count=262144 | sudo tee /etc/sysctl.d/40-madelineproto.conf +``` + +Finally, follow one or more of the following guides, according to your needs: + +### CLI bot (recommended) + +Create the following `docker-compose.yml` file, with the following contents: + +```yml +services: + bot: + image: hub.madelineproto.xyz/danog/madelineproto + restart: always + #depends_on: + #- mariadb + #- postgres + #- redis + tty: true + volumes: + - ./app:/app + command: php /app/bot.php +``` + +Then, create an `app` folder, and an `app/bot.php` file with your code. + +**Mac OS note**: If you encounter issues on Mac OS, make sure to enable ephemeral filesystem support with a database [as described here »](https://docs.madelineproto.xyz/docs/DATABASE.html#ephemeral-filesystems), and change the session path in `bot.php` to point to a unique path in `/tmp`, not in `/app`. + +Then, run this command to log into the bot: + +```bash +docker run --rm -it --init -v $PWD/app:/app hub.madelineproto.xyz/danog/madelineproto php /app/bot.php +``` + +**After logging in, press ctrl-c to close the temporary container.** + +**After logging in for the first time**, you can specify some custom settings to connect to a database, as described [here »](#databases-on-docker). + +Finally, simply run this command to start the bot in the background. + +```bash +docker compose up --pull always -d +``` + +Use `docker compose logs` to view MadelineProto logs and `docker compose ps` to view the status of your bot. + +Run `docker compose restart bot` to restart the bot. + +### Databases on docker + +Specifying additional containers with mariadb, postgres or redis is really easy, just add the following sections to the `docker-compose.yml` file you created in the [previous step](#cli-bot-recommended): + +```yml +services: + # Your bot or php-fpm services created in previous steps + + #mariadb: + # image: mariadb:latest + # restart: always + # environment: + # - MARIADB_ROOT_PASSWORD=replace_me_with_a_secure_password + # volumes: + # - ./mysql:/var/lib/mysql + + #postgres: + # image: postgres:latest + # restart: always + # environment: + # POSTGRES_USER: admin + # POSTGRES_PASSWORD: replace_me_with_a_secure_password + # healthcheck: + # test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] + # volumes: + # - ./postgres:/var/lib/postgresql/data + + #redis: + # image: redis:latest + # restart: always + # volumes: + # - ./redis:/data + # command: redis-server --save 60 1 --loglevel warning + +``` + +If you want to use the mysql backend for lower memory usage, uncomment all `mariadb` sections and use [these MadelineProto settings to connect »](https://docs.madelineproto.xyz/docs/DATABASE.html#mysql-example-low-memory-usage). + +If you want to use the postgres backend for lower memory usage, uncomment all `postgres` sections and use [these MadelineProto settings to connect »](https://docs.madelineproto.xyz/docs/DATABASE.html#postgres-example-low-memory-usage). + +If you want to use the redis backend, uncomment all `redis` sections and use these [MadelineProto settings to connect](https://docs.madelineproto.xyz/docs/DATABASE.html#redis-example-medium-memory-usage-faster-access). + +**NOTE**: MadelineProto can also be configured to run on ephemeral filesystems (i.e. docker containers with no volumes, storing all data on MySQL/Postgres/Redis) by setting a table prefix manually in the settings, as specified [here »](https://docs.madelineproto.xyz/docs/DATABASE.html#ephemeral-filesystems). + +### Web docker + +Running in [CLI mode](#cli-bot-recommended) is heavily recommended, but if web access is required, the official MadelineProto image can also function as a `php-fpm` server. +Note that the image has opcache and JIT enabled by default, so you should restart your container with `docker compose restart php-fpm` to apply changes to your code. + +Here's an example `docker-compose.yml` file for a caddy+php-fpm combo: + +```yml +services: + php-fpm: + image: hub.madelineproto.xyz/danog/madelineproto + restart: always + #depends_on: + #- mariadb + #- postgres + #- redis + volumes: + - ./app:/app + command: php-fpm + + caddy: + image: caddy:alpine + restart: always + depends_on: + - php-fpm + ports: + - 80:80/tcp + - 443:443/tcp + - 443:443/udp + volumes: + - ./app:/app + - ./Caddyfile:/etc/caddy/Caddyfile + - ./caddy_data:/data + - ./caddy_config:/config +``` + +Create the following `Caddyfile` in the same folder: + +``` +{ + email daniil@daniil.it +} + +example.com { + root * /app + php_fastcgi php-fpm:9000 + file_server + log { + format console + } +} +``` + +Caddy will automatically configure a TLS certificate for `example.com`. + +Create an `app` folder, and put your code in that folder. + +Finally, simply run this command to start the webserver in the background. + +```bash +docker compose up --pull always -d +``` + +You can now access your PHP code @ `https://example.com`. + +You can also add containers for mariadb, postgres or redis as [described here »](#databases-on-docker). + +Use `docker compose logs` to view webserver logs and `docker compose ps` to view the status of your webserver. + +Run `docker compose restart php-fpm` every time you change your code to reload changes. + +If you want to test locally without obtaining a certificate for a domain, replace `example.com` with `http://localhost:80` in the Caddyfile. + +### Custom extensions + +Optionally, you may also add custom extensions by creating a custom docker image with the following `Dockerfile`, for example to install the `gd` and `bcmath` extensions: + +``` +FROM hub.madelineproto.xyz/danog/madelineproto:latest + +ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/ + +RUN chmod +x /usr/local/bin/install-php-extensions && \ + install-php-extensions gd bcmath && \ + rm /usr/local/bin/install-php-extensions +``` + +And use the following `docker-compose.yml` file: + +```yml +services: + bot: + build: + context: . + dockerfile: Dockerfile + restart: always + #depends_on: + #- mariadb + #- postgres + #- redis + tty: true + volumes: + - .:/app + command: php /app/bot.php +``` + +Next section \ No newline at end of file diff --git a/docs/docs/EXCEPTIONS.md b/docs/docs/EXCEPTIONS.md new file mode 100644 index 0000000000..215a2efa05 --- /dev/null +++ b/docs/docs/EXCEPTIONS.md @@ -0,0 +1,116 @@ +--- +title: "Exceptions" +description: "MadelineProto can throw lots of different exceptions." +nav_order: 17 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Exceptions + +MadelineProto can throw lots of different exceptions. + +```php +try { + $MadelineProto->someMethod(); +} catch (\danog\MadelineProto\RPCErrorException $e) { + if ($e->rpc === 'BOT_METHOD_INVALID') { + \danog\MadelineProto\Logger::log("Bots can't execute this method!"); + } else { + $MadelineProto->messages->sendMessage(['peer' => '@danogentili', 'message' => 'An error occurred while calling someMethod: '.$e]); + } +} +``` + +* [List of exception types](#list-of-exception-types) +* [Pretty TL trace](#pretty-tl-trace) +* [Getting the TL trace](#getting-the-tl-trace) + + +## List of exception types + +* `\danog\MadelineProto\Exception` - Default exception, thrown when a php error occures and in a lot of other cases + +* `\danog\MadelineProto\RPCErrorException` - Thrown when an RPC error occurres (an error received via the MTProto API): **note** that the error message of this exception is localized in English, and may vary: to fetch the original API error message use `$e->rpc`. + +* `\danog\MadelineProto\TL\Exception` - Thrown on TL serialization/deserialization errors + +* `\danog\MadelineProto\ResponseException` - Thrown when an unexpected message is received through the socket + +* `\danog\MadelineProto\NothingInTheSocketException` - Thrown if no data can be read/written on the TCP socket + +* `\danog\MadelineProto\PTSException` - Thrown if the PTS is unrecoverably corrupted + +* `\danog\MadelineProto\SecurityException` - Thrown on security problems (invalid params during generation of auth key or similar) + +* `\danog\MadelineProto\TL\Conversion\Exception` - Thrown if some param/object can't be converted to/from bot API/TD/TD-CLI format (this includes markdown/html parsing) + + +## Pretty TL trace +Every exception features a custom stack trace called `pretty TL trace`, that makes finding bugs **really** easy: + +```text +php > $MadelineProto->messages->sendMessage(peer: '@dd', message: 'hi'); + +Uncaught \danog\MadelineProto\Exception: This peer is not present in the internal peer database in /home/pwrtelegram/cleanMadeline/src/MTProtoTools/PeerHandler.php:330 +Revision: 63823fc3cc5070bd8a1ebe91e60e1fd583a2f37f + +TL Trace (YOU ABSOLUTELY MUST READ THE TEXT BELOW): + +PeerHandler.php(327): getInfo("dd",false) +TL.php(339): getInfo("dd")['peer'] +While serializing: messages.sendMessage +CallHandler.php(79): serializeMethod("messages.sendMessage",{"peer":"@dd","message":"hi"}) +APIFactory.php(142): methodCall("messages.sendMessage",{"peer":"@dd","message":"hi"},{"datacenter":4}) +php shell code(1): __call("sendMessage",[{"peer":"@dd","message":"hi"}]) + thrown in /home/pwrtelegram/cleanMadeline/src/MTProtoTools/PeerHandler.php on line 330 +php > +``` + +Explanation: + +`Uncaught \danog\MadelineProto\Exception`: an exception of type \danog\MadelineProto\Exception was thrown and not caught using a `catch` block, like showed in the first example of this page. + +`This peer is not present in the internal peer database`: this error means you have tried sending a message to a peer that does not exist or is not present in MadelineProto's internal peer database: in fact, `@dd` is not a valid telegram username. + +`in /home/pwrtelegram/cleanMadeline/src/MTProtoTools/PeerHandler.php:330`: this indicates the line where this error was thrown + +`Revision: 63823fc3cc5070bd8a1ebe91e60e1fd583a2f37f`: this indicates the MadelineProto version: **always** include this code when opening github issues or reporting errors in the group. + +```text +PeerHandler.php(327): getInfo("dd",false) +TL.php(339): getInfo("dd") +['peer'] +While serializing: messages.sendMessage +CallHandler.php(79): serializeMethod("messages.sendMessage",{"peer":"@dd","message":"hi"}) +APIFactory.php(142): methodCall("messages.sendMessage",{"peer":"@dd","message":"hi"},{"datacenter":4}) +php shell code(1): __call("sendMessage",[{"peer":"@dd","message":"hi"}]) +``` + +This part is supposed to be read from bottom to top, the most important parts are: + +`While serializing: messages.sendMessage`: this means the error was thrown while serializing the method call for messages->sendMessage + +`['peer']`: this means the error was thrown while trying to serialize the `peer` parameter, so **you should fix that part of your code**: +```php +$MadelineProto->messages->sendMessage(['peer' => '@danogentili', 'message' => 'hi']); +``` + +## Getting the TL trace + +To get the whole TL trace as string, cast the exception object to string: + +**NOTE**: Due to the async nature of MadelineProto 4.0, sometimes the exception that is thrown and logged may not be the actual exception that caused the crash of the script. +To let me properly debug the issue, when reporting issues you also have to provide [**full logs**](LOGGING.html). + + +```php +try { + // stuff +} catch (\danog\MadelineProto\Exception $e) { + $estring = (string) $e; + $estring2 = 'This also works: '.$e; + $estring3 = "So does this: $e"; + // use $estring to report the error using sendMessage or log +} +``` + +Next section \ No newline at end of file diff --git a/docs/docs/FAQ.md b/docs/docs/FAQ.md new file mode 100644 index 0000000000..997e725316 --- /dev/null +++ b/docs/docs/FAQ.md @@ -0,0 +1,196 @@ +--- +title: "FAQ" +description: "Here's a list of common MadelineProto questions and answers." +nav_order: 28 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# FAQ + +Here's a list of common MadelineProto questions and answers. + +## How do I solve "Fiber stack allocate failed" and "Fiber stack protect failed" errors? + +The PHP engine mmap's two memory regions for each forked green thread: one for the stack, and one for the final guard page. + +MadelineProto can use hundreds or even thousands of concurrent, low-overhead green threads to handle updates with the maximum performance. + +This error is emitted when the maximum number of configured mmap'ed regions is reached: you must increase the vm.max_map_count kernel config to 262144 to fix. + +To fix, run the following command as root: + +```bash +echo 262144 | sudo tee /proc/sys/vm/max_map_count +``` + +To persist the change across reboots: + +```bash +echo vm.max_map_count=262144 | sudo tee /etc/sysctl.d/40-madelineproto.conf +``` + +On Windows and WSL, increasing the size of the pagefile might help; please switch to native Linux if the issue persists. + +## How do I get the chat ID and/or sender ID of a message in the event handler? + +Use this code: + +```php +// Chat ID +$id = $this->getId($update); + +// Sender ID, not always present +from_id = isset($update['message']['from_id']) + ? $this->getId($update['message']['from_id']) + : null; +``` + +## How do I extract the ID of a message sent using sendMessage/sendMedia/etc...? + +Use this code: + +```php +$id = $MadelineProto->extractMessageId( + $MadelineProto->messages->sendMessage(peer: 'danogentili', message: 'test') +); +``` + +## How do I execute a function periodically (like cron)? + +Use this code: + +```php +use danog\MadelineProto\EventHandler; +use danog\MadelineProto\Settings; +use danog\Loop\GenericLoop; + +class MyEventHandler extends EventHandler +{ + private PeriodicLoop $cron1; + + public function onStart(): void + { + // Execute every 1.0 seconds + $this->cron1 = new PeriodicLoop($this->cron1(...), "Cron 1", 1.0); + $this->cron1->start(); + } + + /** + * Cron function 1. + * Executed every second. + */ + private function cron1(): bool + { + $this->echo("Current time: ".time().PHP_EOL); + + // The loop can be stopped from the outside by calling $this->cron1->stop(); + + // You can also return true here to stop the loop from the inside. + return false; + } +} + +$settings = new Settings; + +MyEventHandler::startAndLoop('bot.madeline', $settings); +``` + +See the [danog/loop](https://daniil.it/loop) documentation for more info. + +## Do I need cron to run MadelineProto? + +Generally, you don't. + +To keep your MadelineProto bot online forever: + +- If running via CLI, use [docker »](https://docs.madelineproto.xyz/docs/DOCKER.html) or a `screen while :; php bot.php;done` session. +- If running via web: MadelineProto will self-restart automatically: however, please note that this self-restart logic may fail in case of a physical server reboot or web server/php-fpm restart, so it’s always a better idea to run via CLI, or use a cron to periodically ping the bot’s URL. + +## How do I use a database in MadelineProto? + +First of all, **never use PDO**. + +If you only want to reduce RAM usage of your bot, use this code: + +```php +$settings = (new \danog\MadelineProto\Settings\Database\Mysql) + ->setUri('tcp://localhost') + ->setPassword('pass'); + +MyEventHandler::startAndLoop('bot.madeline', $settings); +``` + +You can also use Postgresql or Redis, see the [database docs for more info »](https://docs.madelineproto.xyz/docs/DATABASE.html). + +If you also want to store data of your bot in a database, use this code: + +```php + +use danog\MadelineProto\EventHandler; + +class MyEventHandler extends EventHandler +{ + private int $messageCounter = 0; + + /** Which properties to save in the database */ + public function __sleep(): array + { + return ['messageCounter']; + } + + public function onUpdateNewMessage(array $update) { + $this->messageCounter++; + } +} + +$settings = (new \danog\MadelineProto\Settings\Database\Mysql) + ->setUri('tcp://localhost') + ->setPassword('pass'); + +MyEventHandler::startAndLoop('bot.madeline', $settings); +``` + +This will automatically store the `$messageCounter` property in the MySQL/postgres/redis database. + +The property can have any type (`array`, `object`, `string`, etc): there are no limits. + +If you actually want to interact with a real database using SQL queries, use the [amphp/mysql](https://github.com/amphp/mysql) library. + +## How do I use threads in MadelineProto? + +You can fork a new green thread using this code: + +```php +\danog\MadelineProto\Tools::callFork(function() { + // Code to execute in forked thread +}); +// Code to execute in original thread +``` + +Make sure to never use blocking functions in the forked thread (NO `file_get_contents`, `PDO`), only use [async amphp libraries](https://amphp.org) (i.e. [amphp/file](https://amphp.org/file), [amphp/mysql](https://amphp.org/mysql), and [so on...](https://amphp.org/installation)). + +See the [async docs »](https://docs.madelineproto.xyz/docs/ASYNC.html) for more info. + +## What is the "MadelineProto worker" process, can I kill it? + +No, you must never kill it. + +The MadelineProto worker process is like apache2: it keeps running in the background, waiting for incoming requests from MadelineProto. + +Don't kill it, or else MadelineProto will take 30+ seconds to start, every time you make a request. + +You don't kill your apache2/nginx webserver just because there are no incoming requests, and the same goes for the MadelineProto worker process. + +When there are no incoming requests, CPU usage is extremely low (`~0%`), and RAM usage can be reduced by using the [database](#how-do-i-use-a-database-in-madelineproto) (don't forget to use `updateSettings` to update the settings). + +## What is the "This peer is not present in the internal peer database" error (also known as PeerNotInDbException)? + +This error indicates that a specified peer (user, chat, channel) was not found in the internal MadelineProto peer database. + +This can be because the user(bot) has never seen the peer before in the dialog list or in a chat. + +This error can also be caused by an invalid ID, extracted manually from an update, instead of using the correct `$this->getID($update)` function. + +This error can also be caused by referring to a user/chat/channel by its bot API ID, *only if the (user)bot has never seen the peer before*. +In this case, resolving a user/chat/channel `@username` with [getInfo](https://docs.madelineproto.xyz/getInfo.html) or importing an invite link with [messages.importChatInvite](https://docs.madelineproto.xyz/API_docs/methods/messages.importChatInvite.html), or (for users) enabling the [setCacheAllPeersOnStartup setting](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Peer.html#setcacheallpeersonstartup-bool-cacheallpeersonstartup-self) will automatically cache the peer into the database, allowing you to use the bot API ID again. + +Next section \ No newline at end of file diff --git a/docs/docs/FEATURES.md b/docs/docs/FEATURES.md new file mode 100644 index 0000000000..973bbabb9b --- /dev/null +++ b/docs/docs/FEATURES.md @@ -0,0 +1,53 @@ +--- +title: "Features" +description: "MadelineProto can do everything official clients can do, and more!" +nav_order: 6 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Features + +MadelineProto can do everything official clients can do, and more! + +* It allows you to do everything official clients can do, programmatically! + +* It is [fully async](https://docs.madelineproto.xyz/docs/ASYNC.html)! + +* *It can make phone calls!* [See here for instructions](https://docs.madelineproto.xyz/docs/CALLS.html) + +* It can be proxied (MTProxy, HTTP, socks5 and more)! + +* It is very fast! + +* It can be easily serialized! + +* It featured update handling with callbacks or long polling! + +* Easy to use wrappers to upload/download files and call mtproto methods + +* Documentation for EVERY mtproto method! + +* Internal peer management: you can provide a simple bot API chat id or a username to send a message or to call other mtproto methods! + +* You can easily login as a user (2FA is supported) or as a bot! + +* Simple error handling! + +* It is highly customizable with a lot of different settings! + +* Bot API file id/object support (even for users)! + +* A Lua binding + +* A lua wrapper for td-cli scripts + +* Secret chats + +* MTProto 2.0 + +* PFS + +* PFS in secret chats + +* [Clickable inline buttons](https://docs.madelineproto.xyz/docs/INLINE_BUTTONS.html)! + +Next section \ No newline at end of file diff --git a/docs/docs/FILES.md b/docs/docs/FILES.md new file mode 100644 index 0000000000..d832f3343b --- /dev/null +++ b/docs/docs/FILES.md @@ -0,0 +1,784 @@ +--- +title: "Uploading and downloading files" +description: "MadelineProto provides fully parallelized wrapper methods to upload and download files that support bot API file ids, direct upload by URL and file renaming." +nav_order: 21 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Uploading and downloading files + +MadelineProto provides **fully parallelized** wrapper methods to upload and download files that support bot API file ids, direct upload by URL and file renaming. + +Maximum file size is of 4 GB. + +Example bot: [`downloadRenameBot.php`](https://github.com/danog/downloadRenameBot/blob/main/bot.php) - download files by URL and rename Telegram files using this async parallelized bot! + + +* [Bot API file IDs](#bot-api-file-ids) +* [Uploading & sending files](#sending-files) + * [Security notice](#security-notice) + * [Photos](#photos) + * [Photos as documents](#photos-as-documents) + * [Documents](#documents) + * [GIFs](#gifs) + * [Videos](#videos) + * [Music](#music) + * [Voice](#voice) + * [Stickers](#stickers) +* [Uploading files](#uploading-files) +* [Reusing uploaded files](#reusing-uploaded-files) +* [Renaming files](#renaming-files) +* [Downloading files](#downloading-files) + * [Extracting download info](#extracting-download-info) + * [Getting a download link](#getting-a-download-link) + * [Downloading profile pictures](#downloading-profile-pictures) + * [Download to directory](#download-to-directory) + * [Download to file](#download-to-file) + * [Download to stream](#download-to-stream) + * [Download to callback](#download-to-callback) + * [Download to http-server](#download-to-http-server) + * [Download to browser](#download-to-browser) +* [Getting progress](#getting-progress) + +## Sending files + +To send photos and documents to someone, use the [$MadelineProto->messages->sendMedia](https://docs.madelineproto.xyz/API_docs/methods/messages.sendMedia.html) method, click on the link for more info. + +All files will be uploaded **asynchronously and in parallel**, 20 chunks at a time for maximum performance (this value can be tweaked in the [settings](https://docs.madelineproto.xyz/docs/SETTINGS.html)). + +The required `message` parameter is the caption: it can contain URLs, mentions, bold and italic text, thanks to the `parse_mode` parameter, that enables markdown or HTML parsing. + +The `media` parameter contains the file path and other info about the file. + +It can contain [lots of various objects](https://docs.madelineproto.xyz/API_docs/types/InputMedia.html), here are the most important: + +### Security notice + +Be careful when calling methods with user-provided parameters: the upload function may be used to access and send any file. +To disable automatic uploads by file name (disabled by default), [use the appropriate setting](../PHP/danog/MadelineProto/Settings/Files.html#setallowautomaticuploadbool-allowautomaticupload-self) OR upload files [manually](#reusing-uploaded-files). + + +### Photos +```php +use danog\MadelineProto\LocalFile; +use danog\MadelineProto\RemoteUrl; +use danog\MadelineProto\BotApiFileId; + +use danog\MadelineProto\ParseMode; + +$file = new LocalFile('faust.jpg'); + +// $file = new RemoteUrl('https://example.com/img.jpg'); +// ... +// $file can also be a Message, Media, BotApiFileId, ReadableStream object. + +$sentMessage = $MadelineProto->sendPhoto( + peer: '@danogentili', + file: $file, + caption: '[This is the caption](https://t.me/MadelineProto)', + parseMode: ParseMode::MARKDOWN +); +``` + +Click [here »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#sendPhoto) to see the full list of arguments to set set the self-destruction period of the photo, and many more parameters. + +### Photos as documents +```php +use danog\MadelineProto\LocalFile; +use danog\MadelineProto\RemoteUrl; +use danog\MadelineProto\BotApiFileId; + +use danog\MadelineProto\ParseMode; + +$file = new LocalFile('faust.jpg'); + +// $file = new RemoteUrl('https://example.com/img.jpg'); +// ... +// $file can also be a Message, Media, BotApiFileId, ReadableStream object. + +$sentMessage = $MadelineProto->sendDocumentPhoto( + peer: '@danogentili', + file: $file, + caption: '[This is the caption](https://t.me/MadelineProto)', + parseMode: ParseMode::MARKDOWN +); +``` + +Click [here »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#sendDocumentPhoto) to see the full list of arguments to set set the self-destruction period of the photo, and many more parameters. + +### Documents + +```php +use danog\MadelineProto\LocalFile; +use danog\MadelineProto\RemoteUrl; +use danog\MadelineProto\BotApiFileId; + +use danog\MadelineProto\ParseMode; + +$file = new LocalFile('faust.txt'); + +// $file = new RemoteUrl('https://example.com/file.txt'); +// ... +// $file can also be a Message, Media, BotApiFileId, ReadableStream object. + +$sentMessage = $MadelineProto->sendDocument( + peer: '@danogentili', + file: $file, + caption: '[This is the caption](https://t.me/MadelineProto)', + parseMode: ParseMode::MARKDOWN +); +``` + +Click [here »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#sendDocument) to see the full list of arguments to set set the self-destruction period of the document, and many more parameters. + +To rename files, provide a Message or another already-uploaded Telegram file object to the `file` field. + +### GIFs +```php +use danog\MadelineProto\LocalFile; +use danog\MadelineProto\RemoteUrl; +use danog\MadelineProto\BotApiFileId; + +use danog\MadelineProto\ParseMode; + +$file = new LocalFile('gif.mp4'); + +// $file = new RemoteUrl('https://example.com/gif.mp4'); +// ... +// $file can also be a Message, Media, BotApiFileId, ReadableStream object. + +$sentMessage = $MadelineProto->sendGif( + peer: '@danogentili', + file: $file, + caption: '[This is the caption](https://t.me/MadelineProto)', + parseMode: ParseMode::MARKDOWN +); +``` +Click [here »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#sendGif) to see the full list of arguments to set set the self-destruction period of the document, and many more parameters. + +MadelineProto will **automatically** extract the video's thumbnail, duration, width and height using ffmpeg, if installed. + +### Videos + +```php +use danog\MadelineProto\LocalFile; +use danog\MadelineProto\RemoteUrl; +use danog\MadelineProto\BotApiFileId; + +use danog\MadelineProto\ParseMode; + +$file = new LocalFile('video.mp4'); + +// $file = new RemoteUrl('https://example.com/video.mp4'); +// ... +// $file can also be a Message, Media, BotApiFileId, ReadableStream object. + +$sentMessage = $MadelineProto->sendVideo( + peer: '@danogentili', + file: $file, + caption: '[This is the caption](https://t.me/MadelineProto)', + parseMode: ParseMode::MARKDOWN +); +``` + +Click [here »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#sendVideo) to see the full list of arguments to set set the self-destruction period of the document, send round videos, and many more parameters. + +MadelineProto will **automatically** extract the video's thumbnail, duration, width and height using ffmpeg, if installed. + +### Music + +```php +use danog\MadelineProto\LocalFile; +use danog\MadelineProto\RemoteUrl; +use danog\MadelineProto\BotApiFileId; + +use danog\MadelineProto\ParseMode; + +$file = new LocalFile('song.mp3'); + +// $file = new RemoteUrl('https://example.com/song.mp3'); +// ... +// $file can also be a Message, Media, BotApiFileId, ReadableStream object. + +$sentMessage = $MadelineProto->sendAudio( + peer: '@danogentili', + file: $file, + caption: '[This is the caption](https://t.me/MadelineProto)', + parseMode: ParseMode::MARKDOWN +); +``` + +Click [here »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#sendAudio) to see the full list of arguments to set set the self-destruction period of the document, and many more parameters. + +MadelineProto will **automatically** extract the music's thumbnail and duration using ffmpeg, if installed. + + +### Voice + +```php +use danog\MadelineProto\LocalFile; +use danog\MadelineProto\RemoteUrl; +use danog\MadelineProto\BotApiFileId; + +use danog\MadelineProto\ParseMode; + +$file = new LocalFile('voice.ogg'); + +// $file = new RemoteUrl('https://example.com/voice.ogg'); +// ... +// $file can also be a Message, Media, BotApiFileId, ReadableStream object. + +$sentMessage = $MadelineProto->sendVoice( + peer: '@danogentili', + file: $file, + caption: '[This is the caption](https://t.me/MadelineProto)', + parseMode: ParseMode::MARKDOWN +); +``` + +Click [here »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#sendVoice) to see the full list of arguments to set set the self-destruction period of the document, and many more parameters. + +MadelineProto will **automatically** extract the voice message's duration using ffmpeg, if installed. + +### Stickers + +```php +use danog\MadelineProto\LocalFile; +use danog\MadelineProto\RemoteUrl; +use danog\MadelineProto\BotApiFileId; + +use danog\MadelineProto\ParseMode; + +$file = new LocalFile('sticker.webp'); + +// $file = new RemoteUrl('https://example.com/sticker.webp'); +// ... +// $file can also be a Message, Media, BotApiFileId, ReadableStream object. + +$sentMessage = $MadelineProto->sendSticker( + peer: '@danogentili', + file: $file, + mimeType: 'image/webp', + caption: '[This is the caption](https://t.me/MadelineProto)', + parseMode: ParseMode::MARKDOWN +); +``` + +Click [here »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#sendSticker) to see the full list of arguments to set set the self-destruction period of the document, and many more parameters. + +## Uploading files + +```php +$MessageMedia = $MadelineProto->messages->uploadMedia([ + 'media' => [ + '_' => 'inputMediaUploadedPhoto', + 'file' => 'faust.jpg' + ], +]); +``` + +The `file` can be a file name, a URL, or a file uploaded by someone else (can be used to rename files). + +You can also only upload a file, without actually sending it to anyone, storing only the file ID for later usage. + +All files will be uploaded **asynchronously and in parallel**, 20 chunks at a time for maximum performance (this value can be tweaked in the [settings](https://docs.madelineproto.xyz/docs/SETTINGS.html)). + +The [$MadelineProto->messages->uploadMedia](https://docs.madelineproto.xyz/API_docs/methods/messages_uploadMedia.html) function is a reduced version of the [$MadelineProto->messages->sendMedia](https://docs.madelineproto.xyz/API_docs/methods/messages_sendMedia.html), that requires only a `media` parameter, with the media to upload (on normal users, the `peer` field should be populated with `@me` or another value). + +The returned [MessageMedia](https://docs.madelineproto.xyz/API_docs/types/MessageMedia.html) object can then be reused to resend the document using sendMedia. + +```php +$sentMessage = $MadelineProto->messages->sendMedia([ + 'peer' => '@danogentili', + 'media' => $MessageMedia, + 'message' => '[This is the caption](https://t.me/MadelineProto)', + 'parse_mode' => 'Markdown' +]); +``` + +`$MessageMedia` can also be a [Message](https://docs.madelineproto.xyz/API_docs/types/Message.html) (the media contained in the message will be sent), an [Update](https://docs.madelineproto.xyz/API_docs/types/Update.html) (the media contained in the message contained in the update will be sent). + +## Reusing uploaded files + +`$MadelineProto->messages->uploadMedia` and bot API file IDs do not allow you to modify the type of the file to send: however, MadelineProto provides methods that can generate a file object that can be resent with multiple file types. + +```php +$inputFile = $MadelineProto->upload('filename.mp4'); +``` + +The file name can also be a URL. +More optional parameters are available, check the PHPDOC of the method in your IDE. +You can also upload a file from a stream (this is especially useful, for example, when downloading YouTube videos using `youtube-dl` with `ffmpeg` and [async AMPHP CLI streams](https://github.com/amphp/process)): + +```php +$inputFile = $MadelineProto->uploadFromStream($stream); +``` + +`$stream` - PHP resource or [async AMPHP stream](https://github.com/amphp/byte-stream). + +More optional parameters are available, check the PHPDOC of the method in your IDE. +You can also upload files from a callable: + +```php +$inputFile = $MadelineProto->uploadFromCallable($callable, $size, $mime); +``` + +`$callable`: +The callable must accept two parameters: `int $offset, int $size` +The callable must return a string with the contest of the file at the specified offset and size. + +More optional parameters are available, check the PHPDOC of the method in your IDE. + +You can also re-use a media received in a message or update, for example in the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html): + +```php +$inputFile = $update; +$inputFile = $message; +``` + +--- + +The generated `$inputFile` can later be reused thusly: + +```php +$sentMessage = $MadelineProto->messages->sendMedia([ + 'peer' => '@danogentili', + 'media' => [ + '_' => 'inputMediaUploadedDocument', + 'file' => $inputFile, + 'attributes' => [ + ['_' => 'documentAttributeFilename', 'file_name' => 'video.mp4'] + ] + ], + 'message' => '[This is the caption](https://t.me/MadelineProto)', + 'parse_mode' => 'Markdown' +]); +$sentMessageVideo = $MadelineProto->messages->sendMedia([ + 'peer' => '@danogentili', + 'media' => [ + '_' => 'inputMediaUploadedDocument', + 'file' => $inputFile, + 'attributes' => [ + ['_' => 'documentAttributeVideo', 'round_message' => false, 'supports_streaming' => true] + ] + ], + 'message' => '[This is the caption](https://t.me/MadelineProto)', + 'parse_mode' => 'Markdown' +]); +``` + +In this case, we're reusing the same InputFile to send both a document and a video, without uploading the file twice. + +The concept is easy: where you would usually provide a file path, simply provide `$inputFile`. + +## Renaming files + +Files can be renamed by simply providing the `$Update` with the file to the sendMedia method thusly: + +```php +$sentMessage = $MadelineProto->messages->sendMedia([ + 'peer' => '@danogentili', + 'media' => [ + '_' => 'inputMediaUploadedDocument', + 'file' => $Update, + 'attributes' => [ + ['_' => 'documentAttributeFilename', 'file_name' => $newName] + ] + ], + 'message' => '[This is the caption](https://t.me/MadelineProto)', + 'parse_mode' => 'Markdown' +]); +``` + +## Downloading files + +There are multiple download methods that allow you to download a file to a directory, to a file or to a stream. + +### Extracting download info +```php +$info = $MadelineProto->getDownloadInfo($MessageMedia); +``` + +`$MessageMedia` can be a [MessageMedia](https://docs.madelineproto.xyz/API_docs/types/MessageMedia.html) object or a bot API file ID. + +You can also use [getDownloadLink](#getting-a-download-link) to obtain a direct download link for any file up to 4GB. + +* `$info['ext']` - The file extension +* `$info['name']` - The file name, without the extension +* `$info['mime']` - The file mime type +* `$info['size']` - The file size + +### Getting a download link + +To obtain a direct download link for any Telegram file up to 4GB, simply use `getDownloadLink`, for example: + +```php +botLogin('token'); + +// For users +//$MadelineProto->start(); + +$botApiFileId = '...'; +$fileName = '...'; +$fileSize = 123..; +$mimeType = '...'; + + +$link = $MadelineProto->getDownloadLink($botApiFileId, size: $fileSize, name: $fileName, mime: $mimeType); +``` + +Event handler example with [bound methods](https://docs.madelineproto.xyz/docs/UPDATES.html#bound-methods): + +```php +use danog\MadelineProto\SimpleEventHandler; +use danog\MadelineProto\EventHandler\Filter\FilterCommand; +use danog\MadelineProto\EventHandler\Message; +use danog\MadelineProto\EventHandler\SimpleFilter\Incoming; + +class MyEventHandler extends SimpleEventHandler +{ + /** + * Gets a download link for any file up to 4GB! + */ + #[FilterCommand('dl')] + public function downloadLink(Incoming&Message $message): void + { + $reply = $message->getReply(Message::class); + if (!$reply?->media) { + $message->reply("This command must reply to a media message!"); + return; + } + $reply->reply("Download link: ".$reply->media->getDownloadLink()); + } +} + +MyEventHandler::startAndLoop('bot.madeline') +``` + +`$botApiFileId` can be a [MessageMedia](https://docs.madelineproto.xyz/API_docs/types/MessageMedia.html) object or a **bot API file ID** (files up to 4GB are supported!). + +This method will work automatically only when running via web (apache/php-fpm). + +The generated download `$link` will point to your own server, and the link will stream files directly to the browser (**no temporary files will be created**, **0** disk space will be used). + +#### Getting a download link (CLI bots) + +**Only if running via CLI** (or if URL rewriting is enabled on web), a second parameter must be provided with a URL to a download script hosted on a php-fpm/apache instance on the same machine: + +```php +botLogin('token'); + +// For users +//$MadelineProto->start(); + +$botApiFileId = '...'; +$fileName = '...'; +$fileSize = 123..; +$mimeType = '...'; + + +$link = $MadelineProto->getDownloadLink($botApiFileId, 'https://yourhost.com/dl.php', size: $fileSize, name: $fileName, mime: $mimeType); +``` + +Event handler example with [bound methods](https://docs.madelineproto.xyz/docs/UPDATES.html#bound-methods): + +```php +use danog\MadelineProto\SimpleEventHandler; +use danog\MadelineProto\EventHandler\Filter\FilterCommand; +use danog\MadelineProto\EventHandler\Message; +use danog\MadelineProto\EventHandler\SimpleFilter\Incoming; + +class MyEventHandler extends SimpleEventHandler +{ + /** + * Gets a download link for any file up to 4GB! + */ + #[FilterCommand('dl')] + public function downloadLink(Incoming&Message $message): void + { + $reply = $message->getReply(Message::class); + if (!$reply?->media) { + $message->reply("This command must reply to a media message!"); + return; + } + $reply->reply("Download link: ".$reply->media->getDownloadLink('https://yourhost.com/dl.php')); + } +} + +MyEventHandler::startAndLoop('bot.madeline') +``` + +You can also pass your custom download link in the [Files settings, instead](https://docs.madelineproto.xyz/docs/FILES.html). + +The dl.php script must have the following content: + +```php +getPropicInfo($Update); +``` + +`$Update` can be a [Message](https://docs.madelineproto.xyz/API_docs/types/Message.html) object, an [Update](https://docs.madelineproto.xyz/API_docs/types/Update.html), or any value supported by [getInfo](https://docs.madelineproto.xyz/getInfo.html). +The result will be a [Photo](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Media/Photo.html) object. + +### Download to directory +```php +$output_file_name = $MadelineProto->downloadToDir($MessageMedia, '/tmp/'); +``` + +This downloads the given file to `/tmp`, and returns the full generated file path. + +**Note**: if downloading files that will be re-downloaded by the user, use [downloadToBrowser](#download-to-browser), instead: [downloadToBrowser](#download-to-browser) will avoid the creation of temporary files, streaming the file directly to the user. + +You can also use [getDownloadLink](#getting-a-download-link) to obtain a direct download link for any file up to 4GB. + +`$MessageMedia` can be either a [Message](https://docs.madelineproto.xyz/API_docs/types/Message.html), an [Update](https://docs.madelineproto.xyz/API_docs/types/Update.html), a [MessageMedia](https://docs.madelineproto.xyz/API_docs/types/MessageMedia.html) object, or a bot API file ID. + +### Download to file +```php +$output_file_name = $MadelineProto->downloadToFile($MessageMedia, '/tmp/myname.mp4'); +``` + +**Note**: if downloading files that will be re-downloaded by the user, use [downloadToBrowser](#download-to-browser), instead: [downloadToBrowser](#download-to-browser) will avoid the creation of temporary files, streaming the file directly to the user. + +You can also use [getDownloadLink](#getting-a-download-link) to obtain a direct download link for any file up to 4GB. + +This downloads the given file to `/tmp/myname.mp4`, and returns the full file path. + +`$MessageMedia`can be either a [Message](https://docs.madelineproto.xyz/API_docs/types/Message.html), an [Update](https://docs.madelineproto.xyz/API_docs/types/Update.html), a [MessageMedia](https://docs.madelineproto.xyz/API_docs/types/MessageMedia.html) object, or a bot API file ID. + +### Download to stream +```php +$MadelineProto->downloadToStream($MessageMedia, $stream); +``` + +This downloads the given file to the given resource or [async AMPHP stream](https://github.com/amphp/byte-stream), the latter is especially useful for building an async HTTP file server with [http-server](https://github.com/amphp/http-server). + +`$MessageMedia`can be either a [Message](https://docs.madelineproto.xyz/API_docs/types/Message.html), an [Update](https://docs.madelineproto.xyz/API_docs/types/Update.html), a [MessageMedia](https://docs.madelineproto.xyz/API_docs/types/MessageMedia.html) object, or a bot API file ID. + + +You can also use `downloadToReturnedStream`, which returns an amphp `ReadableStream`, instead: + +```php +$stream = $MadelineProto->downloadToReturnedStream($MessageMedia); +``` + +### Download to callback +```php +$MadelineProto->downloadToCallable($MessageMedia, $callable); +``` + +This downloads the given file to the callable. +The callable must accept two parameters: `string $payload, int $offset` +The callable will be called (possibly out of order, depending on the value of the `$seekable` (see PHPDOC)). +The callable should return the number of written bytes. + +`$MessageMedia`can be either a [Message](https://docs.madelineproto.xyz/API_docs/types/Message.html), an [Update](https://docs.madelineproto.xyz/API_docs/types/Update.html), a [MessageMedia](https://docs.madelineproto.xyz/API_docs/types/MessageMedia.html) object, or a bot API file ID. + + +### Download to http-server +```php +$MadelineProto->downloadToResponse($MessageMedia, $request, $cb); +``` + +This downloads the given file, replying to the specified [async http-server](https://amphp.org/http-server) request. +Automatically supports HEAD requests and content-ranges for parallel and resumed downloads. + +`$MessageMedia` can be either a [Message](https://docs.madelineproto.xyz/API_docs/types/Message.html), an [Update](https://docs.madelineproto.xyz/API_docs/types/Update.html), a [MessageMedia](https://docs.madelineproto.xyz/API_docs/types/MessageMedia.html) object, or a bot API file ID. + +`$request` is the [Request](https://amphp.org/http-server/classes/request) object returned by [http-server](https://amphp.org/http-server). + +`$cb` is an optional parameter can be a callback for download progress, but it shouldn't be used, the new [FileCallback](#getting-progress) should be used instead + + + +### Download to browser +```php +$MadelineProto->downloadToBrowser($MessageMedia, $cb); +``` + +You can also use [getDownloadLink](#getting-a-download-link) to obtain a direct download link for any file up to 4GB. + +This downloads the given file to the browser, sending also information about the file's type and size. +Automatically supports HEAD requests and content-ranges for parallel and resumed downloads. + +`$MessageMedia` can be either a [Message](https://docs.madelineproto.xyz/API_docs/types/Message.html), an [Update](https://docs.madelineproto.xyz/API_docs/types/Update.html), a [MessageMedia](https://docs.madelineproto.xyz/API_docs/types/MessageMedia.html) object, or a bot API file ID. + +`$cb` is an optional parameter can be a callback for download progress, but it shouldn't be used, the new [FileCallback](#getting-progress) should be used instead + + +## Getting progress + +To get the upload/download progress in real-time, use the `\danog\MadelineProto\FileCallback` class: + +```php +$peer = '@danogentili'; +$sentMessage = $MadelineProto->messages->sendMedia([ + 'peer' => $peer, + 'media' => [ + '_' => 'inputMediaUploadedDocument', + 'file' => new \danog\MadelineProto\FileCallback( + 'video.mp4', + function ($progress, $speed, $time) use ($MadelineProto, $peer) { + try { + $MadelineProto->messages->sendMessage(['peer' => $peer, 'message' => "Upload progress: $progress%\nSpeed: $speed mbps\nTime elapsed since start: $time"]); + } catch (\Throwable $e) {} + } + ), + 'attributes' => [ + ['_' => 'documentAttributeVideo', 'round_message' => false, 'supports_streaming' => true] + ] + ], + 'message' => '[This is the caption](https://t.me/MadelineProto)', + 'parse_mode' => 'Markdown' +]); + +$output_file_name = $MadelineProto->downloadToFile( + $sentMessage, + new \danog\MadelineProto\FileCallback( + '/tmp/myname.mp4', + function ($progress, $speed, $time) use ($MadelineProto, $peer) { + try { + $MadelineProto->messages->sendMessage(['peer' => $peer, 'message' => "Download progress: $progress%\nSpeed: $speed mbps\nTime elapsed since start: $time"]); + } catch (\Throwable $e) {} + } + ) +); +``` + +This will send the file `video.mp4` to [@danogentili](https://t.me/danogentili): while uploading, he will receive progress messages `Upload progress: 24%` until the upload is complete; while downloading, he will receive progress messages `Download progress: 34%` until the download is complete. + +You can also add two more parameters `$speed, $time` to the signature of the method to get a partial upload speed in mbps, along with the time elapsed since the start of the download. + +A FileCallback object can be provided to `uploadMedia`, `sendMedia`, `uploadProfilePicture`, `upload`, `upload_encrypted`, `download_to_*`: the first parameter to its constructor must be the file path/object that is usually accepted by the function, the second must be a callable function or object. + +You can also write your own callback class, just implement `\danog\MadelineProto\FileCallbackInterface`: +```php +class MyCallback implements \danog\MadelineProto\FileCallbackInterface +{ + private $file; + private $peer; + private $MadelineProto; + public function __construct($file, $peer, $MadelineProto) + { + $this->file = $file; + $this->peer = $peer; + $this->MadelineProto = $MadelineProto; + } + public function getFile() + { + return $this->file; + } + public function __invoke($progress, $speed, $time) + { + $this->MadelineProto->messages->sendMessage(['peer' => $this->peer, 'message' => 'Progress: '.$progress.'%']); + } +} +$peer = '@danogentili'; +$sentMessage = $MadelineProto->messages->sendMedia([ + 'peer' => $peer, + 'media' => [ + '_' => 'inputMediaUploadedDocument', + 'file' => new MyCallback('video.mp4', $peer, $MadelineProto), + 'attributes' => [ + ['_' => 'documentAttributeVideo', 'round_message' => false, 'supports_streaming' => true] + ] + ], + 'message' => '[This is the caption](https://t.me/MadelineProto)', + 'parse_mode' => 'Markdown' +]); + +$output_file_name = $MadelineProto->downloadToFile( + $sentMessage, + new MyCallback('/tmp/myname.mp4', $peer, $MadelineProto) +); +``` + + +## Bot API file IDs + +`$MessageMedia` can even be a bot API file ID, generated by the bot API, or by MadelineProto: + +Actual MessageMedia objects can also be converted to bot API file IDs like this: + +```php +$botAPI_file = $MadelineProto->MTProtoToBotAPI($MessageMedia); +``` + +`$botAPI_file` now contains a [bot API message](https://core.telegram.org/bots/api#message), to extract the file ID from it use the following code: + +```php +foreach (['audio', 'document', 'photo', 'sticker', 'video', 'voice', 'video_note'] as $type) { + if (isset($botAPI_file[$type]) && is_array($botAPI_file[$type])) { + $method = $type; + } +} +$result['file_type'] = $method; +if ($result['file_type'] == 'photo') { + $result['file_size'] = $botAPI_file[$method][0]['file_size']; + if (isset($botAPI_file[$method][0]['file_name'])) { + $result['file_name'] = $botAPI_file[$method][0]['file_name']; + $result['file_id'] = $botAPI_file[$method][0]['file_id']; + } +} else { + if (isset($botAPI_file[$method]['file_name'])) { + $result['file_name'] = $botAPI_file[$method]['file_name']; + } + if (isset($botAPI_file[$method]['file_size'])) { + $result['file_size'] = $botAPI_file[$method]['file_size']; + } + if (isset($botAPI_file[$method]['mime_type'])) { + $result['mime_type'] = $botAPI_file[$method]['mime_type']; + } + $result['file_id'] = $botAPI_file[$method]['file_id']; +} +if (!isset($result['mime_type'])) { + $result['mime_type'] = 'application/octet-stream'; +} +if (!isset($result['file_name'])) { + $result['file_name'] = $result['file_id'].($method === 'sticker' ? '.webp' : ''); +} +``` + +* `$result['file_id']` - Bot API file ID +* `$result['mime_type']` - Mime type +* `$result['file_type']` - File type: voice, video, video_note (round video), music, video, photo, sticker or document +* `$result['file_size']` - File size +* `$result['file_name']` - File name + +Next section \ No newline at end of file diff --git a/docs/docs/FILTERS.md b/docs/docs/FILTERS.md new file mode 100644 index 0000000000..401b393483 --- /dev/null +++ b/docs/docs/FILTERS.md @@ -0,0 +1,942 @@ +--- +title: "Filters" +description: "MadelineProto offers a very simple and intuitive message filtering system, based on PHP's type system and attributes." +nav_order: 12 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Filters + +MadelineProto offers a very simple and intuitive message filtering system, based on PHP's type system and attributes. + +There are two filter types: + +* [Simple filters](#simple-filters) +* [Attribute filters](#attribute-filters) + * [Creating custom attribute filters](#creating-custom-attribute-filters) +* [MTProto filters](#mtproto-filters) + +## Simple filters + +Simple filters are implemented using simple PHP types, for example: + +```php +use danog\MadelineProto\SimpleEventHandler; +use danog\MadelineProto\EventHandler\Attributes\Handler; +use danog\MadelineProto\EventHandler\Message; +use danog\MadelineProto\EventHandler\Message\PrivateMessage; +use danog\MadelineProto\EventHandler\Message\GroupMessage; +use danog\MadelineProto\EventHandler\Message\ChannelMessage; +use danog\MadelineProto\EventHandler\SimpleFilter\Incoming; +use danog\MadelineProto\EventHandler\SimpleFilter\Outgoing; +use danog\MadelineProto\EventHandler\SimpleFilter\HasMedia; + +class MyEventHandler extends SimpleEventHandler +{ + #[Handler] + public function h1(Incoming & Message $message): void + { + // Handle all incoming messages (private+groups+channels). + } + + #[Handler] + public function h2(Outgoing & PrivateMessage $message): void + { + // Handle all outgoing messages (private). + } + + #[Handler] + public function h3((Incoming & GroupMessage & HasMedia) | (Incoming & ChannelMessage & HasMedia) $message): void + { + // Handle all incoming messages with media attached (groups+channels). + } +} +``` + +MadelineProto will send updates about new messages to all methods marked with the `Handler` attribute, appropriately filtering them first according to the typehint. + +A filter typehint is composed of: + +* A single concrete type: `A` + * Concrete types are objects with useful bound methods and properties containing the fields of the message. +* A single concrete type intersected with one or more filter interfaces: `A&B&C` (used to AND filters) + * Filter interfaces are PHP interfaces that are automatically parsed using reflection. + Unlike concrete types, they cannot be used for type assertions outside of a method marked by `#[Handler]` or `#[Filter...]` attributes. +* A union of concrete types: `A|B|C` (used to OR filters) +* A union of concrete types or intersections: `(A&B)|C|(D&F)` (used to OR filters in DNF form) + +Single concrete type examples: + +* `Message` - Handle all incoming and outgoing messages (private or groups or channels). +* `ChannelMessage` - Handle all incoming and outgoing messages (channels). +* `GroupMessage` - Handle all incoming and outgoing messages (groups). +* `PrivateMessage` - Handle all incoming and outgoing messages (private). +* `ServiceMessage` - Handle all incoming and outgoing service messages (private or groups or channels). +* `AbstractMessage` - Handle all incoming and outgoing service+normal messages (private or groups or channels). + +Intersection examples: + +* `Incoming & Message` - Handle all incoming messages (private or groups or channels). +* `Incoming & GroupMessage & HasMedia` - Handle all incoming media messages (groups). + +Union/DNF examples: + +* `GroupMessage|ChannelMessage` - Handle all incoming and outgoing messages (groups or channels). +* `(Incoming&GroupMessage)|(Incoming&ChannelMessage)` - Handle all incoming messages (groups or channels). +* `ServiceMessage|(ChannelMessage&HasMedia)` - Handle all service messages or incoming and outgoing media channel messages. + +Simple filters can optionally be combined with [attribute filters](#attribute-filters), in which case they will be AND-ed together. + +Here's the full list of all concrete types: + + + +* [danog\MadelineProto\Broadcast\Progress »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Broadcast/Progress.html) - Broadcast progress. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Broadcast/Progress.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Broadcast/Progress.html#method-list) +* [danog\MadelineProto\EventHandler\AbstractMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractMessage.html) - Represents an incoming or outgoing message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractMessage.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractMessage.html#method-list) +* [danog\MadelineProto\EventHandler\AbstractPrivateMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractPrivateMessage.html) - Represents a private or secret chat message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractPrivateMessage.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractPrivateMessage.html#method-list) +* [danog\MadelineProto\EventHandler\AbstractStory »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractStory.html) - Represents a Telegram Story. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractStory.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractStory.html#method-list) +* [danog\MadelineProto\EventHandler\BotCommands »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/BotCommands.html) - The [command set](https://core.telegram.org/api/bots/commands) of a certain bot in a certain chat has changed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/BotCommands.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/BotCommands.html#method-list) +* [danog\MadelineProto\EventHandler\CallbackQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/CallbackQuery.html) - Represents a query sent by the user by clicking on a button. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/CallbackQuery.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/CallbackQuery.html#method-list) +* [danog\MadelineProto\EventHandler\Channel\ChannelParticipant »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/ChannelParticipant.html) - A participant has left, joined, was banned or admined in a [channel or supergroup](https://core.telegram.org/api/channel). + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/ChannelParticipant.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/ChannelParticipant.html#method-list) +* [danog\MadelineProto\EventHandler\Channel\MessageForwards »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/MessageForwards.html) - Indicates that the forward counter of a message in a channel has changed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/MessageForwards.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/MessageForwards.html#method-list) +* [danog\MadelineProto\EventHandler\Channel\MessageViewsChanged »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/MessageViewsChanged.html) - Indicates that the view counter of a message in a channel has changed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/MessageViewsChanged.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/MessageViewsChanged.html#method-list) +* [danog\MadelineProto\EventHandler\Channel\UpdateChannel »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/UpdateChannel.html) - A new channel is available, or info about an existing channel was changed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/UpdateChannel.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/UpdateChannel.html#method-list) +* [danog\MadelineProto\EventHandler\ChatInviteRequester »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester.html) - Indicates someone has requested to join a chat or channel. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester.html#method-list) +* [danog\MadelineProto\EventHandler\ChatInviteRequester\BotChatInviteRequest »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/BotChatInviteRequest.html) - Indicates someone has requested to join a chat or channel (bots only). + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/BotChatInviteRequest.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/BotChatInviteRequest.html#method-list) +* [danog\MadelineProto\EventHandler\ChatInviteRequester\PendingJoinRequests »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/PendingJoinRequests.html) - Someone has requested to join a chat or channel. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/PendingJoinRequests.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/PendingJoinRequests.html#method-list) +* [danog\MadelineProto\EventHandler\Delete »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete.html) - Indicates that some messages were deleted. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete.html#method-list) +* [danog\MadelineProto\EventHandler\Delete\DeleteChannelMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteChannelMessages.html) - Some messages in a [supergroup/channel](https://core.telegram.org/api/channel) were deleted. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteChannelMessages.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteChannelMessages.html#method-list) +* [danog\MadelineProto\EventHandler\Delete\DeleteMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteMessages.html) - Some messages were deleted in a private chat or simple group. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteMessages.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteMessages.html#method-list) +* [danog\MadelineProto\EventHandler\Delete\DeleteScheduledMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteScheduledMessages.html) - Some [scheduled messages](https://core.telegram.org/api/scheduled-messages) were deleted from the schedule queue of a chat. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteScheduledMessages.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteScheduledMessages.html#method-list) +* [danog\MadelineProto\EventHandler\InlineQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/InlineQuery.html) - An incoming inline query. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/InlineQuery.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/InlineQuery.html#method-list) +* [danog\MadelineProto\EventHandler\Message »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message.html) - Represents an incoming or outgoing message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message.html#method-list) +* [danog\MadelineProto\EventHandler\Message\ChannelMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ChannelMessage.html) - Represents an incoming or outgoing channel message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ChannelMessage.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ChannelMessage.html#method-list) +* [danog\MadelineProto\EventHandler\Message\GroupMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/GroupMessage.html) - Represents an incoming or outgoing group message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/GroupMessage.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/GroupMessage.html#method-list) +* [danog\MadelineProto\EventHandler\Message\PrivateMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/PrivateMessage.html) - Represents an incoming or outgoing private message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/PrivateMessage.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/PrivateMessage.html#method-list) +* [danog\MadelineProto\EventHandler\Message\SecretMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/SecretMessage.html) - Represents New encrypted message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/SecretMessage.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/SecretMessage.html#method-list) +* [danog\MadelineProto\EventHandler\Message\ServiceMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ServiceMessage.html) - Represents info about a service message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ServiceMessage.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ServiceMessage.html#method-list) +* [danog\MadelineProto\EventHandler\Message\ServiceMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ServiceMessage.html) - Represents info about a service message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ServiceMessage.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ServiceMessage.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogBotAllowed »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogBotAllowed.html) - We have given the bot permission to send us direct messages. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogBotAllowed.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogBotAllowed.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogChannelCreated »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelCreated.html) - The channel was created. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelCreated.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelCreated.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogChannelMigrateFrom »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelMigrateFrom.html) - Indicates the channel was [migrated](https://core.telegram.org/api/channel) from the specified chat. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelMigrateFrom.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelMigrateFrom.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogChatJoinedByLink »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatJoinedByLink.html) - A user joined the chat via an invite link. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatJoinedByLink.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatJoinedByLink.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogChatMigrateTo »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatMigrateTo.html) - Indicates the chat was [migrated](https://core.telegram.org/api/channel) to the specified supergroup. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatMigrateTo.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatMigrateTo.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogContactSignUp »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogContactSignUp.html) - A contact just signed up to telegram. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogContactSignUp.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogContactSignUp.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogCreated »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogCreated.html) - A chat or channel was created. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogCreated.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogCreated.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogDeleteMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogDeleteMessages.html) - Deleted messages. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogDeleteMessages.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogDeleteMessages.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogGameScore »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGameScore.html) - Someone scored in a game. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGameScore.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGameScore.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogGeoProximityReached »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGeoProximityReached.html) - A user of the chat is now in proximity of another user. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGeoProximityReached.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGeoProximityReached.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogGiftPremium »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGiftPremium.html) - Info about a gifted Telegram Premium subscription. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGiftPremium.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGiftPremium.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall.html) - Represents a service message about a group call. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall\GroupCall »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCall.html) - The group call has started or ended. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCall.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCall.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall\GroupCallInvited »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallInvited.html) - A set of users was invited to the group call. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallInvited.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallInvited.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall\GroupCallScheduled »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallScheduled.html) - A group call was scheduled. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallScheduled.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallScheduled.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogHistoryCleared »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogHistoryCleared.html) - Chat history was cleared. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogHistoryCleared.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogHistoryCleared.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogMemberJoinedByRequest »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberJoinedByRequest.html) - A user was accepted into the group by an admin. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberJoinedByRequest.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberJoinedByRequest.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogMemberLeft »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberLeft.html) - A member left the chat or channel. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberLeft.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberLeft.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogMembersJoined »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMembersJoined.html) - Some members joined the chat or channel. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMembersJoined.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMembersJoined.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogMessagePinned »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMessagePinned.html) - A message was pinned in a chat. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMessagePinned.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMessagePinned.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogPeerRequested »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPeerRequested.html) - Contains info about a peer that the user shared with the bot after clicking on a [keyboardButtonRequestPeer](https://docs.madelineproto.xyz/API_docs/constructors/keyboardButtonRequestPeer.html) button. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPeerRequested.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPeerRequested.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogPhoneCall »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhoneCall.html) - A phone call. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhoneCall.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhoneCall.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogPhotoChanged »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhotoChanged.html) - The photo of the dialog was changed or deleted. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhotoChanged.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhotoChanged.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogReadMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogReadMessages.html) - Messages marked as read. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogReadMessages.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogReadMessages.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogScreenshotTaken »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogScreenshotTaken.html) - A screenshot of the chat was taken. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogScreenshotTaken.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogScreenshotTaken.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogSetChatTheme »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatTheme.html) - The chat theme was changed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatTheme.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatTheme.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogSetChatWallPaper »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatWallPaper.html) - The [wallpaper](https://core.telegram.org/api/wallpapers) of the current chat was changed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatWallPaper.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatWallPaper.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) - The Time-To-Live of messages in this chat was changed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogSuggestProfilePhoto »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSuggestProfilePhoto.html) - A new profile picture was suggested using [photos.uploadContactProfilePhoto](https://docs.madelineproto.xyz/API_docs/methods/photos.uploadContactProfilePhoto.html). + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSuggestProfilePhoto.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSuggestProfilePhoto.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogTitleChanged »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTitleChanged.html) - The title of a channel or group has changed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTitleChanged.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTitleChanged.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogTopicCreated »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicCreated.html) - A [forum topic](https://core.telegram.org/api/forum#forum-topics) was created. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicCreated.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicCreated.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogTopicEdited »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicEdited.html) - [Forum topic](https://core.telegram.org/api/forum#forum-topics) information was edited. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicEdited.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicEdited.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogWebView »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogWebView.html) - Data from an opened [reply keyboard bot web app](https://core.telegram.org/api/bots/webapps) was relayed to the bot that owns it (user & bot side service message). + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogWebView.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogWebView.html#method-list) +* [danog\MadelineProto\EventHandler\Pinned »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned.html) - Indicates that some messages were pinned/unpinned. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned.html#method-list) +* [danog\MadelineProto\EventHandler\Pinned\PinnedChannelMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedChannelMessages.html) - Represents messages that were pinned/unpinned in a [channel](https://core.telegram.org/api/channel). + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedChannelMessages.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedChannelMessages.html#method-list) +* [danog\MadelineProto\EventHandler\Pinned\PinnedGroupMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedGroupMessages.html) - Represents messages that were pinned/unpinned in a [chat/supergroup](https://core.telegram.org/api/channel). + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedGroupMessages.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedGroupMessages.html#method-list) +* [danog\MadelineProto\EventHandler\Pinned\PinnedPrivateMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedPrivateMessages.html) - Some messages were pinned in a private chat. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedPrivateMessages.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedPrivateMessages.html#method-list) +* [danog\MadelineProto\EventHandler\Privacy »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Privacy.html) - Indicates some privacy rules for a user or set of users. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Privacy.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Privacy.html#method-list) +* [danog\MadelineProto\EventHandler\Query\ButtonQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ButtonQuery.html) - Represents a query sent by the user by clicking on a button. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ButtonQuery.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ButtonQuery.html#method-list) +* [danog\MadelineProto\EventHandler\Query\ChatButtonQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ChatButtonQuery.html) - Represents a query sent by the user by clicking on a button in a chat. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ChatButtonQuery.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ChatButtonQuery.html#method-list) +* [danog\MadelineProto\EventHandler\Query\ChatGameQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ChatGameQuery.html) - Represents a query sent by the user by clicking on a "Play game" button in a chat. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ChatGameQuery.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ChatGameQuery.html#method-list) +* [danog\MadelineProto\EventHandler\Query\GameQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/GameQuery.html) - Represents a query sent by the user by clicking on a "Play game" button. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/GameQuery.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/GameQuery.html#method-list) +* [danog\MadelineProto\EventHandler\Query\InlineButtonQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/InlineButtonQuery.html) - Represents a query sent by the user by clicking on a button in an inline message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/InlineButtonQuery.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/InlineButtonQuery.html#method-list) +* [danog\MadelineProto\EventHandler\Query\InlineGameQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/InlineGameQuery.html) - Represents a query sent by the user by clicking on a "Play game" button in an inline message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/InlineGameQuery.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/InlineGameQuery.html#method-list) +* [danog\MadelineProto\EventHandler\Story\Story »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/Story.html) - Represents a Telegram story. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/Story.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/Story.html#method-list) +* [danog\MadelineProto\EventHandler\Story\StoryDeleted »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/StoryDeleted.html) - Represents a deleted story. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/StoryDeleted.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/StoryDeleted.html#method-list) +* [danog\MadelineProto\EventHandler\Story\StoryReaction »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/StoryReaction.html) - Represents a reaction to a story. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/StoryReaction.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/StoryReaction.html#method-list) +* [danog\MadelineProto\EventHandler\Typing »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing.html) - A user is typing. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing.html#method-list) +* [danog\MadelineProto\EventHandler\Typing\ChatUserTyping »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/ChatUserTyping.html) - The user is preparing a message in a group; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/ChatUserTyping.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/ChatUserTyping.html#method-list) +* [danog\MadelineProto\EventHandler\Typing\SecretUserTyping »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/SecretUserTyping.html) - The user is preparing a message in a secret chat; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/SecretUserTyping.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/SecretUserTyping.html#method-list) +* [danog\MadelineProto\EventHandler\Typing\SupergroupUserTyping »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/SupergroupUserTyping.html) - A user is typing in a [supergroup](https://core.telegram.org/api/channel). + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/SupergroupUserTyping.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/SupergroupUserTyping.html#method-list) +* [danog\MadelineProto\EventHandler\Typing\UserTyping »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/UserTyping.html) - The user is preparing a message; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/UserTyping.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/UserTyping.html#method-list) +* [danog\MadelineProto\EventHandler\User\Blocked »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Blocked.html) - A peer was blocked. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Blocked.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Blocked.html#method-list) +* [danog\MadelineProto\EventHandler\User\BotStopped »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/BotStopped.html) - A bot was stopped or re-started. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/BotStopped.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/BotStopped.html#method-list) +* [danog\MadelineProto\EventHandler\User\Phone »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Phone.html) - A user’s phone number was changed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Phone.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Phone.html#method-list) +* [danog\MadelineProto\EventHandler\User\Status »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status.html) - Contains a status update. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status.html#method-list) +* [danog\MadelineProto\EventHandler\User\Status\Emoji »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Emoji.html) - The [emoji status](https://core.telegram.org/api/emoji-status) of a certain user has changed or was removed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Emoji.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Emoji.html#method-list) +* [danog\MadelineProto\EventHandler\User\Status\EmptyStatus »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/EmptyStatus.html) - User status has not been set yet. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/EmptyStatus.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/EmptyStatus.html#method-list) +* [danog\MadelineProto\EventHandler\User\Status\LastMonth »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/LastMonth.html) - Online status: last seen last month. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/LastMonth.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/LastMonth.html#method-list) +* [danog\MadelineProto\EventHandler\User\Status\LastWeek »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/LastWeek.html) - Online status: last seen last week. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/LastWeek.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/LastWeek.html#method-list) +* [danog\MadelineProto\EventHandler\User\Status\Offline »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Offline.html) - The user’s offline status. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Offline.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Offline.html#method-list) +* [danog\MadelineProto\EventHandler\User\Status\Online »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Online.html) - Online status of the user. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Online.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Online.html#method-list) +* [danog\MadelineProto\EventHandler\User\Status\Recently »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Recently.html) - Online status: last seen recently. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Recently.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Recently.html#method-list) +* [danog\MadelineProto\EventHandler\User\Username »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Username.html) - Changes were made to the user’s first name, last name or username. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Username.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Username.html#method-list) +* [danog\MadelineProto\VoIP »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/VoIP.html) - This update represents a VoIP Telegram call. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/VoIP.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/VoIP.html#method-list) + + + + +Here's the full list of simple filter interfaces (see [attribute filters](#attribute-filters) for more advanced filters like commands, regexes, and much more!): + + + +* [danog\MadelineProto\EventHandler\SimpleFilter\Ended »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Ended.html) - Represents an ended call +* [danog\MadelineProto\EventHandler\SimpleFilter\FromAdmin »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/FromAdmin.html) - Allows messages from the bot admin +* [danog\MadelineProto\EventHandler\SimpleFilter\FromAdminOrOutgoing »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/FromAdminOrOutgoing.html) - Allows messages from the bot admin or outgoing messages +* [danog\MadelineProto\EventHandler\SimpleFilter\HasAudio »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasAudio.html) - Allows only audio messages +* [danog\MadelineProto\EventHandler\SimpleFilter\HasDocument »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasDocument.html) - Allows only documents +* [danog\MadelineProto\EventHandler\SimpleFilter\HasDocumentPhoto »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasDocumentPhoto.html) - Allows only document photos +* [danog\MadelineProto\EventHandler\SimpleFilter\HasGif »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasGif.html) - Allows only GIFs +* [danog\MadelineProto\EventHandler\SimpleFilter\HasMedia »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasMedia.html) - Allows only media messages +* [danog\MadelineProto\EventHandler\SimpleFilter\HasMultiplePoll »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasMultiplePoll.html) - Allows only messages that contain a multiple poll +* [danog\MadelineProto\EventHandler\SimpleFilter\HasNoMedia »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasNoMedia.html) - Allows only messages with no media +* [danog\MadelineProto\EventHandler\SimpleFilter\HasPhoto »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasPhoto.html) - Allows only photos +* [danog\MadelineProto\EventHandler\SimpleFilter\HasPoll »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasPoll.html) - Allows only messages that contain a poll +* [danog\MadelineProto\EventHandler\SimpleFilter\HasQuizPoll »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasQuizPoll.html) - Allows only messages that contain a quiz poll +* [danog\MadelineProto\EventHandler\SimpleFilter\HasRoundVideo »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasRoundVideo.html) - Allows only round videos +* [danog\MadelineProto\EventHandler\SimpleFilter\HasSinglePoll »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasSinglePoll.html) - Allows only messages that contain a single poll +* [danog\MadelineProto\EventHandler\SimpleFilter\HasSticker »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasSticker.html) - Allows only stickers +* [danog\MadelineProto\EventHandler\SimpleFilter\HasTopic »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasTopic.html) - Allow only messages coming from groups that has topics (Supergroups only). +* [danog\MadelineProto\EventHandler\SimpleFilter\HasVideo »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasVideo.html) - Allows only videos +* [danog\MadelineProto\EventHandler\SimpleFilter\HasVoice »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/HasVoice.html) - Allows only voice messages +* [danog\MadelineProto\EventHandler\SimpleFilter\Incoming »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Incoming.html) - Represents an incoming message +* [danog\MadelineProto\EventHandler\SimpleFilter\IsEdited »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsEdited.html) - Allows messages that were edited. +* [danog\MadelineProto\EventHandler\SimpleFilter\IsForwarded »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsForwarded.html) - Allows only forwarded messages +* [danog\MadelineProto\EventHandler\SimpleFilter\IsNotEdited »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsNotEdited.html) - Allows messages that weren't edited. +* [danog\MadelineProto\EventHandler\SimpleFilter\IsReply »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsReply.html) - Allows only messages that reply to other messages +* [danog\MadelineProto\EventHandler\SimpleFilter\IsReplyToSelf »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/IsReplyToSelf.html) - Allows only messages that reply to one of our messages +* [danog\MadelineProto\EventHandler\SimpleFilter\Outgoing »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Outgoing.html) - Represents an outgoing message +* [danog\MadelineProto\EventHandler\SimpleFilter\Running »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/SimpleFilter/Running.html) - Allow only currently running calls + + + + +## Attribute filters + +Attribute filters are implemented using PHP attributes, for example: + +```php +use danog\MadelineProto\SimpleEventHandler; +use danog\MadelineProto\EventHandler\Attributes\Handler; +use danog\MadelineProto\EventHandler\Message; +use danog\MadelineProto\EventHandler\Message\PrivateMessage; +use danog\MadelineProto\EventHandler\Message\GroupMessage; +use danog\MadelineProto\EventHandler\Message\ChannelMessage; +use danog\MadelineProto\EventHandler\Filter\FilterIncoming; + +class MyEventHandler extends SimpleEventHandler +{ + #[FilterIncoming] + public function h1(Message $message): void + { + // Handle all incoming messages (private+groups+channels). + } + + #[FilterAnd(new FilterOutgoing, new FilterPrivate)] + public function h2(Message $message): void + { + // Handle all outgoing messages (private). + } + + #[FilterAnd(new FilterIncoming, new FilterOr(new FilterGroup, new FilterChannel), new FilterMedia)] + public function h3(Message $message): void + { + // Handle all incoming messages with media attached (groups+channels). + } + + #[FilterOr(new FilterGroup, new FilterChannel)] + public function h4(Incoming&Message&HasMedia $message): void + { + // Same as h3, but combining simple filters with attribute filters. + } +} +``` + +Attribute filters are usual combined with [simple filters](#simple-filters). +Attribute filters are ANDed with simple filters defined on the same method, for example this: + +```php +#[FilterOr(new FilterGroup, new FilterChannel)] +public function h4(Incoming&Message&HasMedia $message) +``` + +Is exactly the same as this: + +```php +#[FilterAnd(new FilterIncoming, new FilterMessage, new FilterMedia, new FilterOr(new FilterGroup, new FilterChannel))] +public function h3($message): void +``` + +Which can also be written using only [simple filters](#simple-filters): + +```php +#[Handler] +public function h3((Incoming & GroupMessage & HasMedia) | (Incoming & ChannelMessage & HasMedia) $message): void +``` + + +Here's the full list of filter attributes (see the [MTProto filters »](#mtproto-filters) for even more low-level filters): + + + +* [danog\MadelineProto\EventHandler\Filter\FilterAllowAll »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterAllowAll.html) - Allow all updates. +* [danog\MadelineProto\EventHandler\Filter\FilterButtonQueryData(string $content) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterButtonQueryData.html) - Filters based on the content of a button query. +* [danog\MadelineProto\EventHandler\Filter\FilterChannel »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterChannel.html) - Allow only updates coming from channels. +* [danog\MadelineProto\EventHandler\Filter\FilterCommand(string $command, list $types = [ 0 => \danog\MadelineProto\EventHandler\CommandType::BANG, 1 => \danog\MadelineProto\EventHandler\CommandType::DOT, 2 => \danog\MadelineProto\EventHandler\CommandType::SLASH,]) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterCommand.html) - Allow only messages containing the specified command. +* [danog\MadelineProto\EventHandler\Filter\FilterCommandCaseInsensitive(string $command, list $types = [ 0 => \danog\MadelineProto\EventHandler\CommandType::BANG, 1 => \danog\MadelineProto\EventHandler\CommandType::DOT, 2 => \danog\MadelineProto\EventHandler\CommandType::SLASH,]) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterCommandCaseInsensitive.html) - Allow only messages containing the specified case-insensitive command. +* [danog\MadelineProto\EventHandler\Filter\FilterEdited »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterEdited.html) - Allows messages that were edited. +* [danog\MadelineProto\EventHandler\Filter\FilterEnded »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterEnded.html) - Allow only ended calls. +* [danog\MadelineProto\EventHandler\Filter\FilterForwarded »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterForwarded.html) - Allow only forwarded messages. +* [danog\MadelineProto\EventHandler\Filter\FilterForwardedFrom(string|int $peer) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterForwardedFrom.html) - Allow only forwarded messages from a certain sender. +* [danog\MadelineProto\EventHandler\Filter\FilterFromAdmin »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromAdmin.html) - Allow only messages coming from the admin (defined as the peers returned by getReportPeers). +* [danog\MadelineProto\EventHandler\Filter\FilterFromBot »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromBot.html) - Allow only messages coming from bots. +* [danog\MadelineProto\EventHandler\Filter\FilterFromSender(string|int $peer) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromSender.html) - Allow incoming or outgoing group messages made by a certain sender. +* [danog\MadelineProto\EventHandler\Filter\FilterFromSenders(string|int ...$idOrUsername) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterFromSenders.html) - Allow incoming or outgoing group messages made by a certain list of senders. +* [danog\MadelineProto\EventHandler\Filter\FilterGroup »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterGroup.html) - Allow only updates coming from groups. +* [danog\MadelineProto\EventHandler\Filter\FilterIncoming »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterIncoming.html) - Allow only incoming messages. +* [danog\MadelineProto\EventHandler\Filter\FilterMedia »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterMedia.html) - Allow any media messages. +* [danog\MadelineProto\EventHandler\Filter\FilterMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterMessage.html) - Allow any non-service message. +* [danog\MadelineProto\EventHandler\Filter\FilterNoMedia »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterNoMedia.html) - Allow any messages except media messages. +* [danog\MadelineProto\EventHandler\Filter\FilterNotEdited »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterNotEdited.html) - Allows messages that weren't edited. +* [danog\MadelineProto\EventHandler\Filter\FilterOutgoing »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterOutgoing.html) - Allow only outgoing messages. +* [danog\MadelineProto\EventHandler\Filter\FilterPeer(string|int $peer) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterPeer.html) - Allow messages coming from or sent to a certain peer. +* [danog\MadelineProto\EventHandler\Filter\FilterPoll »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterPoll.html) - Allow only messages that contain a poll. +* [danog\MadelineProto\EventHandler\Filter\FilterPrivate »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterPrivate.html) - Allow only updates coming from private chats. +* [danog\MadelineProto\EventHandler\Filter\FilterRegex(non-empty-string $regex, int-mask<0, 256, 512> $flags = 0, int $offset = 0) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterRegex.html) - Allow only messages or button queries matching the specified regex. +* [danog\MadelineProto\EventHandler\Filter\FilterRegexMatchAll(non-empty-string $regex, int $flags = 0, int $offset = 0) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterRegexMatchAll.html) - Allow only messages or button queries matching the specified regex. +* [danog\MadelineProto\EventHandler\Filter\FilterReply »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterReply.html) - Allow messages that reply to other messages. +* [danog\MadelineProto\EventHandler\Filter\FilterReplyToSelf »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterReplyToSelf.html) - Allow messages that reply to one of our messages. +* [danog\MadelineProto\EventHandler\Filter\FilterRunning »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterRunning.html) - Allow only running calls. +* [danog\MadelineProto\EventHandler\Filter\FilterSecret »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterSecret.html) - Allow only updates coming from secret chats. +* [danog\MadelineProto\EventHandler\Filter\FilterSender(string|int $peer) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterSender.html) - Allow incoming or outgoing group messages made by a certain sender. +* [danog\MadelineProto\EventHandler\Filter\FilterSenders(string|int ...$idOrUsername) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterSenders.html) - Allow incoming or outgoing group messages made by a certain list of senders. +* [danog\MadelineProto\EventHandler\Filter\FilterService »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterService.html) - Allow only service messages of any type. +* [danog\MadelineProto\EventHandler\Filter\FilterText(string $content) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterText.html) - Allow only messages with a specific content. +* [danog\MadelineProto\EventHandler\Filter\FilterTextCaseInsensitive(string $content) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextCaseInsensitive.html) - Allow only messages with a specific case-insensitive content. +* [danog\MadelineProto\EventHandler\Filter\FilterTextContains(string $content) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextContains.html) - Allow only messages that contain a specific content. +* [danog\MadelineProto\EventHandler\Filter\FilterTextContainsCaseInsensitive(string $content) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextContainsCaseInsensitive.html) - Allow only messages that contain a specific case-insensitive content. +* [danog\MadelineProto\EventHandler\Filter\FilterTextEnds(string $content) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextEnds.html) - Allow only messages that ends with a specific content. +* [danog\MadelineProto\EventHandler\Filter\FilterTextEndsCaseInsensitive(string $content) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextEndsCaseInsensitive.html) - Allow only messages that ends with a specific case-insensitive content. +* [danog\MadelineProto\EventHandler\Filter\FilterTextStarts(string $content) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextStarts.html) - Allow only messages that start with a specific content. +* [danog\MadelineProto\EventHandler\Filter\FilterTextStartsCaseInsensitive(string $content) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterTextStartsCaseInsensitive.html) - Allow only messages that start with a specific case-insensitive content. +* [danog\MadelineProto\EventHandler\Filter\FilterTopic »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterTopic.html) - Allow only messages coming from groups that has topics (Supergroups only). +* [danog\MadelineProto\EventHandler\Filter\FilterTopicId(int $topicId) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/FilterTopicId.html) - Allow only messages with a specific topic id (Supergroups only). +* [danog\MadelineProto\EventHandler\Filter\Combinator\FilterNot(Filter $filter) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/Combinator/FilterNot.html) - NOTs a filter. +* [danog\MadelineProto\EventHandler\Filter\Combinator\FiltersAnd(Filter ...$filters) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/Combinator/FiltersAnd.html) - ANDs multiple filters. +* [danog\MadelineProto\EventHandler\Filter\Combinator\FiltersOr(Filter ...$filters) »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/Combinator/FiltersOr.html) - ORs multiple filters. +* [danog\MadelineProto\EventHandler\Filter\Media\FilterAudio »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterAudio.html) - Allow only audio files. +* [danog\MadelineProto\EventHandler\Filter\Media\FilterDocument »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterDocument.html) - Allow only documents. +* [danog\MadelineProto\EventHandler\Filter\Media\FilterDocumentPhoto »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterDocumentPhoto.html) - Allow only documents containing an image. +* [danog\MadelineProto\EventHandler\Filter\Media\FilterGif »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterGif.html) - Allow only GIFs. +* [danog\MadelineProto\EventHandler\Filter\Media\FilterPhoto »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterPhoto.html) - Allow only photos. +* [danog\MadelineProto\EventHandler\Filter\Media\FilterRoundVideo »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterRoundVideo.html) - Allow only round videos. +* [danog\MadelineProto\EventHandler\Filter\Media\FilterSticker »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterSticker.html) - Allow only stickers. +* [danog\MadelineProto\EventHandler\Filter\Media\FilterVideo »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterVideo.html) - Allow only videos. +* [danog\MadelineProto\EventHandler\Filter\Media\FilterVoice »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/Media/FilterVoice.html) - Allow only voice messages. +* [danog\MadelineProto\EventHandler\Filter\Poll\FilterMultiplePoll »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/Poll/FilterMultiplePoll.html) - Allow only messages that contain a multiple poll. +* [danog\MadelineProto\EventHandler\Filter\Poll\FilterQuizPoll »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/Poll/FilterQuizPoll.html) - Allow only messages that contain a quiz poll. +* [danog\MadelineProto\EventHandler\Filter\Poll\FilterSinglePoll »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Filter/Poll/FilterSinglePoll.html) - Allow only messages that contain a single poll. + + + + +### Creating custom attribute filters + +To create a custom attribute filter, simply create a method attribute that extends the Filter class. + +You must implement an `apply(Update $update): bool` method, that returns true or false according to the filter's logic. + +```php +applyIf; + } +} +``` + +You can also optionally implement the `public function initialize(EventHandler $API): Filter` function. + +This function is useful to perform expensive one-time initialization tasks, to avoid performing them during filtering, for example: + + + +```php +. + * + * @author Daniil Gentili + * @copyright 2016-2023 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\EventHandler\Filter; + +use danog\MadelineProto\EventHandler; +use danog\MadelineProto\EventHandler\AbstractMessage; +use danog\MadelineProto\EventHandler\AbstractStory; +use danog\MadelineProto\EventHandler\BotCommands; +use danog\MadelineProto\EventHandler\ChatInviteRequester\BotChatInviteRequest; +use danog\MadelineProto\EventHandler\InlineQuery; +use danog\MadelineProto\EventHandler\Query\ButtonQuery; +use danog\MadelineProto\EventHandler\Story\StoryReaction; +use danog\MadelineProto\EventHandler\Typing; +use danog\MadelineProto\EventHandler\Update; +use danog\MadelineProto\EventHandler\User\Blocked; +use danog\MadelineProto\EventHandler\User\BotStopped; +use danog\MadelineProto\EventHandler\User\Phone; +use danog\MadelineProto\EventHandler\User\Status; +use danog\MadelineProto\EventHandler\User\Username; + +/** + * Allow incoming or outgoing group messages made by a certain list of senders. + * + * @internal + */ +abstract class AbstractFilterFromSenders extends Filter +{ + /** @var array */ + private readonly array $peers; + /** @var list */ + private readonly array $peersResolved; + public function __construct(string|int ...$idOrUsername) + { + $this->peers = array_unique($idOrUsername); + } + public function initialize(EventHandler $API): Filter + { + if (\count($this->peers) === 1) { + return (new FilterFromSender(array_values($this->peers)[0]))->initialize($API); + } + $res = []; + foreach ($this->peers as $peer) { + $res []= $API->getId($peer); + } + /** @psalm-suppress InaccessibleProperty */ + $this->peersResolved = $res; + return $this; + } + public function apply(Update $update): bool + { + return $update instanceof AbstractMessage && \in_array($update->senderId, $this->peersResolved, true) || + ($update instanceof AbstractStory && \in_array($update->senderId, $this->peersResolved, true)) || + ($update instanceof StoryReaction && \in_array($update->senderId, $this->peersResolved, true)) || + ($update instanceof ButtonQuery && \in_array($update->userId, $this->peersResolved, true)) || + ($update instanceof InlineQuery && \in_array($update->userId, $this->peersResolved, true)) || + ($update instanceof Typing && \in_array($update->userId, $this->peersResolved, true)) || + ($update instanceof Blocked && \in_array($update->userId, $this->peersResolved, true)) || + ($update instanceof BotStopped && \in_array($update->userId, $this->peersResolved, true)) || + ($update instanceof Phone && \in_array($update->userId, $this->peersResolved, true)) || + ($update instanceof Status && \in_array($update->userId, $this->peersResolved, true)) || + ($update instanceof Username && \in_array($update->userId, $this->peersResolved, true)) || + ($update instanceof BotCommands && \in_array($update->botId, $this->peersResolved, true)) || + ($update instanceof BotChatInviteRequest && \in_array($update->userId, $this->peersResolved, true)); + } +} + +``` + + + +Usually you should return `$this` from `initialize()`, but if you want to replace the current filter with another filter, you can return the new filter, instead: + +```php +initialize($API); + } + + public function apply(Update $update): bool + { + throw new AssertionError("Unreachable!"); + } +} +``` + +Another example: + + + +```php +. + * + * @author Daniil Gentili + * @copyright 2016-2023 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +namespace danog\MadelineProto\EventHandler\Filter\Combinator; + +use Attribute; +use danog\MadelineProto\EventHandler; +use danog\MadelineProto\EventHandler\Filter\Filter; +use danog\MadelineProto\EventHandler\Update; + +/** + * NOTs a filter. + */ +#[Attribute(Attribute::TARGET_METHOD)] +final class FilterNot extends Filter +{ + public function __construct(private readonly Filter $filter) + { + } + public function initialize(EventHandler $API): Filter + { + $filter = $this->filter->initialize($API); + if ($filter instanceof self) { + // The nested filter is a FilterNot, optimize !!A => A + return $filter->filter; + } + if ($filter === $this->filter) { + // The nested filter didn't replace itself + return $this; + } + // The nested filter replaced itself, re-wrap it + return new self($filter); + } + + public function apply(Update $update): bool + { + return !$this->filter->apply($update); + } +} + +``` + + + +## MTProto filters + +MTProto filters are used to obtain raw MTProto updates in the form of arrays. +Unlike [simple updates](#simple-filters), raw MTProto updates do not have bound methods, but MadelineProto offers a bunch of [helper methods](https://docs.madelineproto.xyz/API_docs/methods/) that can be used, instead. + +**Please note that MTProto filters are not covered by any backwards compatibility promise**: they may change at any time, including in minor versions, because they're related directly to the Telegram API schema. +Use [simple filters](#simple-filters) for a stable object-oriented update API. + +MTProto filters are defined by creating a function with the appropriate name, for example to handle [updateNewMessage](https://docs.madelineproto.xyz/API_docs/constructors/updateNewMessage.html) updates: + +```php +use danog\MadelineProto\SimpleEventHandler; + +class MyEventHandler extends SimpleEventHandler +{ + /** + * Handle updates from users. + * + * 100+ other types of onUpdate... method types are available, see https://docs.madelineproto.xyz/API_docs/types/Update.html for the full list. + * You can also use onAny to catch all update types (only for debugging) + * A special onUpdateCustomEvent method can also be defined, to send messages to the event handler from an API instance, using the sendCustomEvent method. + * + * @param array $update Update + */ + public function onUpdateNewMessage(array $update): void + { + if ($update['message']['_'] === 'messageEmpty') { + return; + } + + $this->logger($update); + + // Chat ID + $id = $this->getId($update); + + // Sender ID, not always present + $from_id = isset($update['message']['from_id']) + ? $this->getId($update['message']['from_id']) + : null; + + + // In this example code, send the "This userbot is powered by MadelineProto!" message only once per chat. + // Ignore all further messages coming from this chat. + if (!isset($this->notifiedChats[$id])) { + $this->notifiedChats[$id] = true; + + $this->messages->sendMessage( + peer: $update, + message: "This userbot is powered by [MadelineProto](https://t.me/MadelineProto)!", + reply_to_msg_id: $update['message']['id'] ?? null, + parse_mode: 'Markdown' + ); + } + } +} +``` + +Here's a full list of all MTProto filters (click on each filter name to view the structure of the array that will be passed to it): + + + + * onUpdateCustomEvent: Receives messages sent to the event handler from an API instance using the [`sendCustomEvent` »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#sendcustomevent-mixed-payload-void) method. + * onAny: Catch-all filter, if defined catches all updates that aren't catched by any other filter. + * [onUpdateBroadcastProgress »](https://docs.madelineproto.xyz/docs/BROADCAST.html#get-progress): Used to receive updates to an in-progress [message broadcast »](https://docs.madelineproto.xyz/docs/BROADCAST.html)* [onUpdateNewMessage »](https://docs.madelineproto.xyz/API_docs/constructors/updateNewMessage.html) - New message in a private chat or in a [basic group](https://core.telegram.org/api/channel#basic-groups). +* [onUpdateMessageID »](https://docs.madelineproto.xyz/API_docs/constructors/updateMessageID.html) - Sent message with **random\_id** client identifier was assigned an identifier. +* [onUpdateDeleteMessages »](https://docs.madelineproto.xyz/API_docs/constructors/updateDeleteMessages.html) - Messages were deleted. +* [onUpdateUserTyping »](https://docs.madelineproto.xyz/API_docs/constructors/updateUserTyping.html) - The user is preparing a message; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing +* [onUpdateChatUserTyping »](https://docs.madelineproto.xyz/API_docs/constructors/updateChatUserTyping.html) - The user is preparing a message in a group; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing +* [onUpdateChatParticipants »](https://docs.madelineproto.xyz/API_docs/constructors/updateChatParticipants.html) - Composition of chat participants changed. +* [onUpdateUserStatus »](https://docs.madelineproto.xyz/API_docs/constructors/updateUserStatus.html) - Contact status update. +* [onUpdateUserName »](https://docs.madelineproto.xyz/API_docs/constructors/updateUserName.html) - Changes the user's first name, last name and username. +* [onUpdateNewAuthorization »](https://docs.madelineproto.xyz/API_docs/constructors/updateNewAuthorization.html) - A new session logged into the current user's account through an unknown device. +* [onUpdateNewEncryptedMessage »](https://docs.madelineproto.xyz/API_docs/constructors/updateNewEncryptedMessage.html) - New encrypted message. +* [onUpdateEncryptedChatTyping »](https://docs.madelineproto.xyz/API_docs/constructors/updateEncryptedChatTyping.html) - Interlocutor is typing a message in an encrypted chat. Update period is 6 second. If upon this time there is no repeated update, it shall be considered that the interlocutor stopped typing. +* [onUpdateEncryption »](https://docs.madelineproto.xyz/API_docs/constructors/updateEncryption.html) - Change of state in an encrypted chat. +* [onUpdateEncryptedMessagesRead »](https://docs.madelineproto.xyz/API_docs/constructors/updateEncryptedMessagesRead.html) - Communication history in an encrypted chat was marked as read. +* [onUpdateChatParticipantAdd »](https://docs.madelineproto.xyz/API_docs/constructors/updateChatParticipantAdd.html) - New group member. +* [onUpdateChatParticipantDelete »](https://docs.madelineproto.xyz/API_docs/constructors/updateChatParticipantDelete.html) - A member has left the group. +* [onUpdateDcOptions »](https://docs.madelineproto.xyz/API_docs/constructors/updateDcOptions.html) - Changes in the data center configuration options. +* [onUpdateNotifySettings »](https://docs.madelineproto.xyz/API_docs/constructors/updateNotifySettings.html) - Changes in notification settings. +* [onUpdateServiceNotification »](https://docs.madelineproto.xyz/API_docs/constructors/updateServiceNotification.html) - A service message for the user. +* [onUpdatePrivacy »](https://docs.madelineproto.xyz/API_docs/constructors/updatePrivacy.html) - Privacy rules were changed +* [onUpdateUserPhone »](https://docs.madelineproto.xyz/API_docs/constructors/updateUserPhone.html) - A user's phone number was changed +* [onUpdateReadHistoryInbox »](https://docs.madelineproto.xyz/API_docs/constructors/updateReadHistoryInbox.html) - Incoming messages were read +* [onUpdateReadHistoryOutbox »](https://docs.madelineproto.xyz/API_docs/constructors/updateReadHistoryOutbox.html) - Outgoing messages were read +* [onUpdateWebPage »](https://docs.madelineproto.xyz/API_docs/constructors/updateWebPage.html) - An [instant view](https://instantview.telegram.org) webpage preview was generated +* [onUpdateReadMessagesContents »](https://docs.madelineproto.xyz/API_docs/constructors/updateReadMessagesContents.html) - Contents of messages in the common [message box](https://core.telegram.org/api/updates) were read +* [onUpdateChannelTooLong »](https://docs.madelineproto.xyz/API_docs/constructors/updateChannelTooLong.html) - There are new updates in the specified channel, the client must fetch them. +* [onUpdateChannel »](https://docs.madelineproto.xyz/API_docs/constructors/updateChannel.html) - A new channel or supergroup is available, or info about an existing channel has changed and must be refeteched. +* [onUpdateNewChannelMessage »](https://docs.madelineproto.xyz/API_docs/constructors/updateNewChannelMessage.html) - A new message was sent in a [channel/supergroup](https://core.telegram.org/api/channel) +* [onUpdateReadChannelInbox »](https://docs.madelineproto.xyz/API_docs/constructors/updateReadChannelInbox.html) - Incoming messages in a [channel/supergroup](https://core.telegram.org/api/channel) were read +* [onUpdateDeleteChannelMessages »](https://docs.madelineproto.xyz/API_docs/constructors/updateDeleteChannelMessages.html) - Some messages in a [supergroup/channel](https://core.telegram.org/api/channel) were deleted +* [onUpdateChannelMessageViews »](https://docs.madelineproto.xyz/API_docs/constructors/updateChannelMessageViews.html) - The view counter of a message in a channel has changed +* [onUpdateChatParticipantAdmin »](https://docs.madelineproto.xyz/API_docs/constructors/updateChatParticipantAdmin.html) - Admin permissions of a user in a [basic group](https://core.telegram.org/api/channel#basic-groups) were changed +* [onUpdateNewStickerSet »](https://docs.madelineproto.xyz/API_docs/constructors/updateNewStickerSet.html) - A new stickerset was installed +* [onUpdateStickerSetsOrder »](https://docs.madelineproto.xyz/API_docs/constructors/updateStickerSetsOrder.html) - The order of stickersets was changed +* [onUpdateStickerSets »](https://docs.madelineproto.xyz/API_docs/constructors/updateStickerSets.html) - Installed stickersets have changed, the client should refetch them as [described in the docs](https://core.telegram.org/api/stickers#installing-stickersets). +* [onUpdateSavedGifs »](https://docs.madelineproto.xyz/API_docs/constructors/updateSavedGifs.html) - The saved gif list has changed, the client should refetch it using [messages.getSavedGifs](https://core.telegram.org/method/messages.getSavedGifs) +* [onUpdateBotInlineQuery »](https://docs.madelineproto.xyz/API_docs/constructors/updateBotInlineQuery.html) - An incoming inline query +* [onUpdateBotInlineSend »](https://docs.madelineproto.xyz/API_docs/constructors/updateBotInlineSend.html) - 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](https://core.telegram.org/bots/inline#collecting-feedback) for details on how to enable these updates for your bot. +* [onUpdateEditChannelMessage »](https://docs.madelineproto.xyz/API_docs/constructors/updateEditChannelMessage.html) - A message was edited in a [channel/supergroup](https://core.telegram.org/api/channel) +* [onUpdateBotCallbackQuery »](https://docs.madelineproto.xyz/API_docs/constructors/updateBotCallbackQuery.html) - A callback button was pressed, and the button data was sent to the bot that created the button +* [onUpdateEditMessage »](https://docs.madelineproto.xyz/API_docs/constructors/updateEditMessage.html) - A message was edited +* [onUpdateInlineBotCallbackQuery »](https://docs.madelineproto.xyz/API_docs/constructors/updateInlineBotCallbackQuery.html) - This notification is received by bots when a button is pressed +* [onUpdateReadChannelOutbox »](https://docs.madelineproto.xyz/API_docs/constructors/updateReadChannelOutbox.html) - Outgoing messages in a [channel/supergroup](https://core.telegram.org/api/channel) were read +* [onUpdateDraftMessage »](https://docs.madelineproto.xyz/API_docs/constructors/updateDraftMessage.html) - Notifies a change of a message [draft](https://core.telegram.org/api/drafts). +* [onUpdateReadFeaturedStickers »](https://docs.madelineproto.xyz/API_docs/constructors/updateReadFeaturedStickers.html) - Some featured stickers were marked as read +* [onUpdateRecentStickers »](https://docs.madelineproto.xyz/API_docs/constructors/updateRecentStickers.html) - The recent sticker list was updated +* [onUpdateConfig »](https://docs.madelineproto.xyz/API_docs/constructors/updateConfig.html) - The server-side configuration has changed; the client should re-fetch the config using [help.getConfig](https://docs.madelineproto.xyz/API_docs/methods/help.getConfig.html) +* [onUpdatePtsChanged »](https://docs.madelineproto.xyz/API_docs/constructors/updatePtsChanged.html) - [Common message box sequence PTS](https://core.telegram.org/api/updates) has changed, [state has to be refetched using updates.getState](https://core.telegram.org/api/updates#fetching-state) +* [onUpdateChannelWebPage »](https://docs.madelineproto.xyz/API_docs/constructors/updateChannelWebPage.html) - A webpage preview of a link in a [channel/supergroup](https://core.telegram.org/api/channel) message was generated +* [onUpdateDialogPinned »](https://docs.madelineproto.xyz/API_docs/constructors/updateDialogPinned.html) - A dialog was pinned/unpinned +* [onUpdatePinnedDialogs »](https://docs.madelineproto.xyz/API_docs/constructors/updatePinnedDialogs.html) - Pinned dialogs were updated +* [onUpdateBotWebhookJSON »](https://docs.madelineproto.xyz/API_docs/constructors/updateBotWebhookJSON.html) - A new incoming event; for bots only +* [onUpdateBotWebhookJSONQuery »](https://docs.madelineproto.xyz/API_docs/constructors/updateBotWebhookJSONQuery.html) - A new incoming query; for bots only +* [onUpdateBotShippingQuery »](https://docs.madelineproto.xyz/API_docs/constructors/updateBotShippingQuery.html) - This object contains information about an incoming shipping query. +* [onUpdateBotPrecheckoutQuery »](https://docs.madelineproto.xyz/API_docs/constructors/updateBotPrecheckoutQuery.html) - This object contains information about an incoming pre-checkout query. +* [onUpdatePhoneCall »](https://docs.madelineproto.xyz/API_docs/constructors/updatePhoneCall.html) - An incoming phone call +* [onUpdateLangPackTooLong »](https://docs.madelineproto.xyz/API_docs/constructors/updateLangPackTooLong.html) - A language pack has changed, the client should manually fetch the changed strings using [langpack.getDifference](https://docs.madelineproto.xyz/API_docs/methods/langpack.getDifference.html) +* [onUpdateLangPack »](https://docs.madelineproto.xyz/API_docs/constructors/updateLangPack.html) - Language pack updated +* [onUpdateFavedStickers »](https://docs.madelineproto.xyz/API_docs/constructors/updateFavedStickers.html) - The list of favorited stickers was changed, the client should call [messages.getFavedStickers](https://docs.madelineproto.xyz/API_docs/methods/messages.getFavedStickers.html) to refetch the new list +* [onUpdateChannelReadMessagesContents »](https://docs.madelineproto.xyz/API_docs/constructors/updateChannelReadMessagesContents.html) - The specified [channel/supergroup](https://core.telegram.org/api/channel) messages were read +* [onUpdateContactsReset »](https://docs.madelineproto.xyz/API_docs/constructors/updateContactsReset.html) - All contacts were deleted +* [onUpdateChannelAvailableMessages »](https://docs.madelineproto.xyz/API_docs/constructors/updateChannelAvailableMessages.html) - The history of a [channel/supergroup](https://core.telegram.org/api/channel) was hidden. +* [onUpdateDialogUnreadMark »](https://docs.madelineproto.xyz/API_docs/constructors/updateDialogUnreadMark.html) - The manual unread mark of a chat was changed +* [onUpdateMessagePoll »](https://docs.madelineproto.xyz/API_docs/constructors/updateMessagePoll.html) - The results of a poll have changed +* [onUpdateChatDefaultBannedRights »](https://docs.madelineproto.xyz/API_docs/constructors/updateChatDefaultBannedRights.html) - Default banned rights in a [normal chat](https://core.telegram.org/api/channel) were updated +* [onUpdateFolderPeers »](https://docs.madelineproto.xyz/API_docs/constructors/updateFolderPeers.html) - The peer list of a [peer folder](https://core.telegram.org/api/folders#peer-folders) was updated +* [onUpdatePeerSettings »](https://docs.madelineproto.xyz/API_docs/constructors/updatePeerSettings.html) - Settings of a certain peer have changed +* [onUpdatePeerLocated »](https://docs.madelineproto.xyz/API_docs/constructors/updatePeerLocated.html) - List of peers near you was updated +* [onUpdateNewScheduledMessage »](https://docs.madelineproto.xyz/API_docs/constructors/updateNewScheduledMessage.html) - A message was added to the [schedule queue of a chat](https://core.telegram.org/api/scheduled-messages) +* [onUpdateDeleteScheduledMessages »](https://docs.madelineproto.xyz/API_docs/constructors/updateDeleteScheduledMessages.html) - Some [scheduled messages](https://core.telegram.org/api/scheduled-messages) were deleted from the schedule queue of a chat +* [onUpdateTheme »](https://docs.madelineproto.xyz/API_docs/constructors/updateTheme.html) - A cloud theme was updated +* [onUpdateGeoLiveViewed »](https://docs.madelineproto.xyz/API_docs/constructors/updateGeoLiveViewed.html) - Live geoposition message was viewed +* [onUpdateLoginToken »](https://docs.madelineproto.xyz/API_docs/constructors/updateLoginToken.html) - A login token (for login via QR code) was accepted. +* [onUpdateMessagePollVote »](https://docs.madelineproto.xyz/API_docs/constructors/updateMessagePollVote.html) - A specific peer has voted in a poll +* [onUpdateDialogFilter »](https://docs.madelineproto.xyz/API_docs/constructors/updateDialogFilter.html) - A new [folder](https://core.telegram.org/api/folders) was added +* [onUpdateDialogFilterOrder »](https://docs.madelineproto.xyz/API_docs/constructors/updateDialogFilterOrder.html) - New [folder](https://core.telegram.org/api/folders) order +* [onUpdateDialogFilters »](https://docs.madelineproto.xyz/API_docs/constructors/updateDialogFilters.html) - Clients should update [folder](https://core.telegram.org/api/folders) info +* [onUpdatePhoneCallSignalingData »](https://docs.madelineproto.xyz/API_docs/constructors/updatePhoneCallSignalingData.html) - Incoming phone call signaling payload +* [onUpdateChannelMessageForwards »](https://docs.madelineproto.xyz/API_docs/constructors/updateChannelMessageForwards.html) - The forward counter of a message in a channel has changed +* [onUpdateReadChannelDiscussionInbox »](https://docs.madelineproto.xyz/API_docs/constructors/updateReadChannelDiscussionInbox.html) - Incoming comments in a [discussion thread](https://core.telegram.org/api/threads) were marked as read +* [onUpdateReadChannelDiscussionOutbox »](https://docs.madelineproto.xyz/API_docs/constructors/updateReadChannelDiscussionOutbox.html) - Outgoing comments in a [discussion thread](https://core.telegram.org/api/threads) were marked as read +* [onUpdatePeerBlocked »](https://docs.madelineproto.xyz/API_docs/constructors/updatePeerBlocked.html) - We blocked a peer, see [here »](https://core.telegram.org/api/block) for more info on blocklists. +* [onUpdateChannelUserTyping »](https://docs.madelineproto.xyz/API_docs/constructors/updateChannelUserTyping.html) - A user is typing in a [supergroup, channel](https://core.telegram.org/api/channel) or [message thread](https://core.telegram.org/api/threads) +* [onUpdatePinnedMessages »](https://docs.madelineproto.xyz/API_docs/constructors/updatePinnedMessages.html) - Some messages were pinned in a chat +* [onUpdatePinnedChannelMessages »](https://docs.madelineproto.xyz/API_docs/constructors/updatePinnedChannelMessages.html) - Messages were pinned/unpinned in a [channel/supergroup](https://core.telegram.org/api/channel) +* [onUpdateChat »](https://docs.madelineproto.xyz/API_docs/constructors/updateChat.html) - A new chat is available +* [onUpdateGroupCallParticipants »](https://docs.madelineproto.xyz/API_docs/constructors/updateGroupCallParticipants.html) - The participant list of a certain group call has changed +* [onUpdateGroupCall »](https://docs.madelineproto.xyz/API_docs/constructors/updateGroupCall.html) - A new groupcall was started +* [onUpdatePeerHistoryTTL »](https://docs.madelineproto.xyz/API_docs/constructors/updatePeerHistoryTTL.html) - The Time-To-Live for messages sent by the current user in a specific chat has changed +* [onUpdateChatParticipant »](https://docs.madelineproto.xyz/API_docs/constructors/updateChatParticipant.html) - A user has joined or left a specific chat +* [onUpdateChannelParticipant »](https://docs.madelineproto.xyz/API_docs/constructors/updateChannelParticipant.html) - A participant has left, joined, was banned or admined in a [channel or supergroup](https://core.telegram.org/api/channel). +* [onUpdateBotStopped »](https://docs.madelineproto.xyz/API_docs/constructors/updateBotStopped.html) - A bot was stopped or re-started. +* [onUpdateGroupCallConnection »](https://docs.madelineproto.xyz/API_docs/constructors/updateGroupCallConnection.html) - New WebRTC parameters +* [onUpdateBotCommands »](https://docs.madelineproto.xyz/API_docs/constructors/updateBotCommands.html) - The [command set](https://core.telegram.org/api/bots/commands) of a certain bot in a certain chat has changed. +* [onUpdatePendingJoinRequests »](https://docs.madelineproto.xyz/API_docs/constructors/updatePendingJoinRequests.html) - Someone has requested to join a chat or channel +* [onUpdateBotChatInviteRequester »](https://docs.madelineproto.xyz/API_docs/constructors/updateBotChatInviteRequester.html) - Someone has requested to join a chat or channel (bots only, users will receive an [updatePendingJoinRequests](https://docs.madelineproto.xyz/API_docs/constructors/updatePendingJoinRequests.html), instead) +* [onUpdateMessageReactions »](https://docs.madelineproto.xyz/API_docs/constructors/updateMessageReactions.html) - New [message reactions »](https://core.telegram.org/api/reactions) are available +* [onUpdateAttachMenuBots »](https://docs.madelineproto.xyz/API_docs/constructors/updateAttachMenuBots.html) - The list of installed [attachment menu entries »](https://core.telegram.org/api/bots/attach) has changed, use [messages.getAttachMenuBots](https://docs.madelineproto.xyz/API_docs/methods/messages.getAttachMenuBots.html) to fetch the updated list. +* [onUpdateWebViewResultSent »](https://docs.madelineproto.xyz/API_docs/constructors/updateWebViewResultSent.html) - Indicates to a bot that a webview was closed and an inline message was sent on behalf of the user using [messages.sendWebViewResultMessage](https://docs.madelineproto.xyz/API_docs/methods/messages.sendWebViewResultMessage.html) +* [onUpdateBotMenuButton »](https://docs.madelineproto.xyz/API_docs/constructors/updateBotMenuButton.html) - The menu button behavior for the specified bot has changed +* [onUpdateSavedRingtones »](https://docs.madelineproto.xyz/API_docs/constructors/updateSavedRingtones.html) - The list of saved notification sounds has changed, use [account.getSavedRingtones](https://docs.madelineproto.xyz/API_docs/methods/account.getSavedRingtones.html) to fetch the new list. +* [onUpdateTranscribedAudio »](https://docs.madelineproto.xyz/API_docs/constructors/updateTranscribedAudio.html) - A pending [voice message transcription »](https://core.telegram.org/api/transcribe) initiated with [messages.transcribeAudio](https://docs.madelineproto.xyz/API_docs/methods/messages.transcribeAudio.html) was updated. +* [onUpdateReadFeaturedEmojiStickers »](https://docs.madelineproto.xyz/API_docs/constructors/updateReadFeaturedEmojiStickers.html) - Some featured [custom emoji stickers](https://core.telegram.org/api/custom-emoji) were marked as read +* [onUpdateUserEmojiStatus »](https://docs.madelineproto.xyz/API_docs/constructors/updateUserEmojiStatus.html) - The [emoji status](https://core.telegram.org/api/emoji-status) of a certain user has changed +* [onUpdateRecentEmojiStatuses »](https://docs.madelineproto.xyz/API_docs/constructors/updateRecentEmojiStatuses.html) - The list of recent [emoji statuses](https://core.telegram.org/api/emoji-status) has changed +* [onUpdateRecentReactions »](https://docs.madelineproto.xyz/API_docs/constructors/updateRecentReactions.html) - The list of recent [message reactions](https://core.telegram.org/api/reactions) has changed +* [onUpdateMoveStickerSetToTop »](https://docs.madelineproto.xyz/API_docs/constructors/updateMoveStickerSetToTop.html) - A stickerset was just moved to top, [see here for more info »](https://core.telegram.org/api/stickers#recent-stickersets) +* [onUpdateMessageExtendedMedia »](https://docs.madelineproto.xyz/API_docs/constructors/updateMessageExtendedMedia.html) - Extended media update +* [onUpdateChannelPinnedTopic »](https://docs.madelineproto.xyz/API_docs/constructors/updateChannelPinnedTopic.html) - A [forum topic »](https://core.telegram.org/api/forum#forum-topics) was pinned or unpinned. +* [onUpdateChannelPinnedTopics »](https://docs.madelineproto.xyz/API_docs/constructors/updateChannelPinnedTopics.html) - The [pinned topics](https://core.telegram.org/api/forum#forum-topics) of a forum have changed. +* [onUpdateUser »](https://docs.madelineproto.xyz/API_docs/constructors/updateUser.html) - User information was updated, it must be refetched using [users.getFullUser](https://docs.madelineproto.xyz/API_docs/methods/users.getFullUser.html). +* [onUpdateAutoSaveSettings »](https://docs.madelineproto.xyz/API_docs/constructors/updateAutoSaveSettings.html) - Media autosave settings have changed and must be refetched using [account.getAutoSaveSettings](https://docs.madelineproto.xyz/API_docs/methods/account.getAutoSaveSettings.html). +* [onUpdateStory »](https://docs.madelineproto.xyz/API_docs/constructors/updateStory.html) - A new story was posted. +* [onUpdateReadStories »](https://docs.madelineproto.xyz/API_docs/constructors/updateReadStories.html) - Stories of a specific peer were marked as read. +* [onUpdateStoryID »](https://docs.madelineproto.xyz/API_docs/constructors/updateStoryID.html) - A story was successfully uploaded. +* [onUpdateStoriesStealthMode »](https://docs.madelineproto.xyz/API_docs/constructors/updateStoriesStealthMode.html) - Indicates that [stories stealth mode](https://core.telegram.org/api/stories#stealth-mode) was activated. +* [onUpdateSentStoryReaction »](https://docs.madelineproto.xyz/API_docs/constructors/updateSentStoryReaction.html) - Indicates we [reacted to a story »](https://core.telegram.org/api/stories#reactions). +* [onUpdateBotChatBoost »](https://docs.madelineproto.xyz/API_docs/constructors/updateBotChatBoost.html) - A [channel boost](https://core.telegram.org/api/boost) has changed (bots only) +* [onUpdateChannelViewForumAsMessages »](https://docs.madelineproto.xyz/API_docs/constructors/updateChannelViewForumAsMessages.html) - Users may also choose to display messages from all topics as if they were sent to a normal group, using a "View as messages" setting in the local client. +* [onUpdatePeerWallpaper »](https://docs.madelineproto.xyz/API_docs/constructors/updatePeerWallpaper.html) - The [wallpaper »](https://core.telegram.org/api/wallpapers) of a given peer has changed. +* [onUpdateBotMessageReaction »](https://docs.madelineproto.xyz/API_docs/constructors/updateBotMessageReaction.html) - Bots only: a user has changed their reactions on a message with public reactions. +* [onUpdateBotMessageReactions »](https://docs.madelineproto.xyz/API_docs/constructors/updateBotMessageReactions.html) - Bots only: the number of reactions on a message with anonymous reactions has changed. +* [onUpdateSavedDialogPinned »](https://docs.madelineproto.xyz/API_docs/constructors/updateSavedDialogPinned.html) - A [saved message dialog](https://core.telegram.org/api/saved-messages) was pinned/unpinned +* [onUpdatePinnedSavedDialogs »](https://docs.madelineproto.xyz/API_docs/constructors/updatePinnedSavedDialogs.html) - [Pinned saved dialogs »](https://core.telegram.org/api/saved-messages) were updated +* [onUpdateSavedReactionTags »](https://docs.madelineproto.xyz/API_docs/constructors/updateSavedReactionTags.html) - +* [onUpdateSmsJob »](https://docs.madelineproto.xyz/API_docs/constructors/updateSmsJob.html) - +* [onUpdateQuickReplies »](https://docs.madelineproto.xyz/API_docs/constructors/updateQuickReplies.html) - +* [onUpdateNewQuickReply »](https://docs.madelineproto.xyz/API_docs/constructors/updateNewQuickReply.html) - +* [onUpdateDeleteQuickReply »](https://docs.madelineproto.xyz/API_docs/constructors/updateDeleteQuickReply.html) - +* [onUpdateQuickReplyMessage »](https://docs.madelineproto.xyz/API_docs/constructors/updateQuickReplyMessage.html) - +* [onUpdateDeleteQuickReplyMessages »](https://docs.madelineproto.xyz/API_docs/constructors/updateDeleteQuickReplyMessages.html) - +* [onUpdateBotBusinessConnect »](https://docs.madelineproto.xyz/API_docs/constructors/updateBotBusinessConnect.html) - +* [onUpdateBotNewBusinessMessage »](https://docs.madelineproto.xyz/API_docs/constructors/updateBotNewBusinessMessage.html) - +* [onUpdateBotEditBusinessMessage »](https://docs.madelineproto.xyz/API_docs/constructors/updateBotEditBusinessMessage.html) - +* [onUpdateBotDeleteBusinessMessage »](https://docs.madelineproto.xyz/API_docs/constructors/updateBotDeleteBusinessMessage.html) - +* [onUpdateNewStoryReaction »](https://docs.madelineproto.xyz/API_docs/constructors/updateNewStoryReaction.html) - + + + + +Next section \ No newline at end of file diff --git a/docs/docs/FLOOD_WAIT.md b/docs/docs/FLOOD_WAIT.md new file mode 100644 index 0000000000..c462dcaf78 --- /dev/null +++ b/docs/docs/FLOOD_WAIT.md @@ -0,0 +1,17 @@ +--- +title: "Avoiding FLOOD_WAITs" +description: "If you make too many requests to telegram, you might get FLOOD_WAITed for a while. To avoid these flood waits, you must calculate the flood wait rate." +nav_order: 18 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Avoiding FLOOD_WAITs + +If you make too many requests to telegram, you might get FLOOD_WAITed for a while. To avoid these flood waits, you must calculate the flood wait rate. + +Calculate it by making N of method calls until you get a FLOOD_WAIT_X + +floodwaitrate = time it took you to make the method calls + X + +Use sleep to execute max N calls in `floodwaitrate` seconds, this way you won't get flood waited! + +Next section \ No newline at end of file diff --git a/docs/docs/INLINE_BUTTONS.md b/docs/docs/INLINE_BUTTONS.md new file mode 100644 index 0000000000..61fae0b1e4 --- /dev/null +++ b/docs/docs/INLINE_BUTTONS.md @@ -0,0 +1,57 @@ +--- +title: "Inline buttons" +description: "You can easily click inline buttons using MadelineProto, just access the correct button:" +nav_order: 24 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Inline buttons + +You can easily click inline buttons using MadelineProto, just access the correct button: + +```php +use danog\MadelineProto\SimpleEventHandler; +use danog\MadelineProto\EventHandler\Attributes\Handler; +use danog\MadelineProto\EventHandler\Message; +use danog\MadelineProto\EventHandler\SimpleFilter\Incoming; + +class MyEventHandler extends SimpleEventHandler +{ + #[Handler] + public function clickButton(Incoming&Message $message): void + { + if ($message->keyboard) { + // Press keyboard button by name + $result = $message->keyboard->press("Button name", waitForResult: true); + + // Press keyboard button by coordinates + $result = $message->keyboard->pressByCoordinates( + row: 0, + column: 2, + waitForResult: true + ); + + // Or manually load button + $button = $message->keyboard->buttons[0][2]; + + $label = $button->label; + } + } +} + + +MyEventHandler::startAndLoop('session.madeline'); +``` + +You can also access properties of `$button` (they vary depending on the [type of button](https://docs.madelineproto.xyz/API_docs/types/KeyboardButton.html)): + +```php +$label = $button->label; +``` + +And click them: + +```php +$button->click(); +``` + +Next section \ No newline at end of file diff --git a/docs/docs/INSTALLATION.md b/docs/docs/INSTALLATION.md new file mode 100644 index 0000000000..b8a0b2ed1f --- /dev/null +++ b/docs/docs/INSTALLATION.md @@ -0,0 +1,89 @@ +--- +title: "Installation" +description: "There are various ways to install MadelineProto:" +nav_order: 9 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Installation + +There are various ways to install MadelineProto: + +* [Simple](#simple) +* [Composer from existing project](#composer-from-existing-project) +* [Composer from scratch](#composer-from-scratch) + + +## Simple + +```php +Next section \ No newline at end of file diff --git a/docs/docs/LOGGING.md b/docs/docs/LOGGING.md new file mode 100644 index 0000000000..3804b3c4b9 --- /dev/null +++ b/docs/docs/LOGGING.md @@ -0,0 +1,81 @@ +--- +title: "Logging" +description: "MadelineProto provides a unified class for logging messages to the logging destination defined in settings." +nav_order: 19 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Logging + +MadelineProto provides a unified class for logging messages to the logging destination defined in [settings](SETTINGS.html). + +Use the [settings class](../PHP/danog/MadelineProto/Settings/Logger.html) to modify the default logging destination and log verbosity: + +## Example: +```php +use danog\MadelineProto\Logger; +use danog\MadelineProto\Settings\Logger as LoggerSettings; + +$settings = (new LoggerSettings) + ->setType(Logger::FILE_LOGGER) + ->setExtra('custom.log') + ->setMaxSize(50*1024*1024); +$MadelineProto->updateSettings($settings); +``` + +Note: when running from web, MadelineProto will also automatically enable logging of **PHP errors** (not MadelineProto logs) to `MadelineProto.log`, located in the same directory as the script that loaded MadelineProto. + +## Usage: + +```php +$MadelineProto->logger($message, $level); +``` + +`$message` is a string, an integer, an array, or any json-encodable object. +`$level` (optional) is one of the following constants: + +* `\danog\MadelineProto\Logger::FATAL_ERROR` - Indicates a fatal error +* `\danog\MadelineProto\Logger::ERROR` - Indicates a recoverable error +* `\danog\MadelineProto\Logger::NOTICE` - Indicates an info message +* `\danog\MadelineProto\Logger::VERBOSE` - Indicates a verbose info message +* `\danog\MadelineProto\Logger::ULTRA_VERBOSE` - Indicates an ultra verbose + + +By default, `$level` is `\danog\MadelineProto\Logger::NOTICE`. + + +## Error reporting + +MadelineProto now can report errors automatically to the bot admin. +Simply use the following method: + +```php +// $message = (string) $exception, for example +$MadelineProto->report($message); +``` + +This will automatically report the error (and send the logfile!) to the bot admin, set using the `setReportPeers` method: + +```php +$MadelineProto->setReportPeers(['danogentili']); +``` + +**OR** using the `getReportPeers` method of [the event handler](https://docs.madelineproto.xyz/docs/UPDATES.html#async-event-driven). + +```php + + /** + * Get peer(s) where to report errors + * + * @return int|string|array + */ + public function getReportPeers() + { + return [self::ADMIN]; + } +``` + +If you use the [`startAndLoop`](https://docs.madelineproto.xyz/docs/UPDATES.html#async-event-driven) method to start update handling, all errors surfacing from the loop will be reported automatically. + +If memory profiling with [memprof](https://github.com/arnaud-lb/php-memory-profiler) is enabled, you can also use `reportMemoryProfile()` to send a pprof memory profile to all report peers. + +Next section \ No newline at end of file diff --git a/docs/docs/LOGIN.md b/docs/docs/LOGIN.md new file mode 100644 index 0000000000..e145bf35b9 --- /dev/null +++ b/docs/docs/LOGIN.md @@ -0,0 +1,195 @@ +--- +title: "Login" +description: "There are many ways you can login with MadelineProto." +nav_order: 5 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Login + +There are many ways you can login with MadelineProto. + +* [Getting permission to use the telegram API](#getting-permission-to-use-the-telegram-api) +* [Automatic](#automatic) +* [Manual (user)](#manual-user) + * [API ID](#api-id) +* [Manual (bot)](#manual-bot) +* [QR code login (user)](#qr-code-user) + +## Getting permission to use the telegram API + +Before you start using MadelineProto with the Telegram API, you have to understand that Telegram strictly controls userbots created on their platform. + +If you use MadelineProto or any other Telegram client, **including official clients**, for flooding, spamming, botting channels, you **will be banned forever**. + +Due to excessive abuse of the Telegram API, **all phone numbers** that sign up or log in using **even official or approved by telegram** API clients like MadelineProto are automatically put **under observation**, and __may__ get banned **even if you did nothing wrong**, simply because some internal flags are triggered in the **telegram servers**. + +To avoid this, you must let telegram know that you will use your account with a userbot: +When or before you first sign up or login you have to **send an email with the phone number to [recover@telegram.org](mailto:recover@telegram.org)**; explaining **what will your userbot do**. +**DO NOT LIE**, just tell them **what will you do with the userbot** you intend to create, asking them to not ban your account. + +If your account does get banned, write to [recover@telegram.org](mailto:recover@telegram.org) asking to unban it. + +**DO NOT ABUSE OF THIS OR ANY OTHER API FOR FLOODING; SPAMMING; BOTTING**; the consequences will fall not only on you, but on all other users of this and other libraries, and even normal users. + +There were cases when several **normal user accounts that did nothing wrong** were banned when telegram deployed a new spambot detection system: this is bad for the community, and it is bad for Telegram, so please do not abuse. + + +## Automatic + +```php +$MadelineProto->start(); +``` + +This will start an interactive login prompt via console (if running via CLI), or a login web UI (if running in the browser). +You will get to choose if login as user, or as bot. + +When using the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html), use the static `startAndLoop` method, instead: + +```php +MyEventHandler::startAndLoop('session.madeline', $settings); +``` + +No explicit `$MadelineProto` instance is required or allowed when using the event handler. + + +## Manual (user) + +Before logging in, you must obtain an [API ID](https://docs.madelineproto.xyz/docs/SETTINGS.html) (if you're using the [automatic mode you don't have to do this](#automatic)). +You can do that by logging in to [my.telegram.org](https://my.telegram.org) and getting your API ID/hash. + +After you provide an API ID [in the settings](https://docs.madelineproto.xyz/docs/SETTINGS.html), you can then login (if you're using the [automatic mode you don't have to do this](#automatic)). + +```php +use danog\MadelineProto\Tools; + +$MadelineProto->phoneLogin(Tools::readLine('Enter your phone number: ')); +$authorization = $MadelineProto->completePhoneLogin(Tools::readLine('Enter the phone code: ')); +if ($authorization['_'] === 'account.password') { + $authorization = $MadelineProto->complete2falogin(Tools::readLine('Please enter your password (hint '.$authorization['hint'].'): ')); +} +if ($authorization['_'] === 'account.needSignup') { + $authorization = $MadelineProto->completeSignup(Tools::readLine('Please enter your first name: '), readline('Please enter your last name (can be empty): ')); +} +``` + +First, you must call `phoneLogin` to send the verification code, see [here for the parameters and the result](https://docs.madelineproto.xyz/phoneLogin.html). +Then, use `completePhoneLogin` to complete the login, see [here for the parameters and the result](https://docs.madelineproto.xyz/completePhoneLogin.html). + +Use `complete2falogin` to complete the login to an account with 2FA enabled, see [here for the parameters and the result](https://docs.madelineproto.xyz/complete2FALogin.html). + +If the account does not have an account, use `completeSignup` to signup, see [here for the parameters and the result](https://docs.madelineproto.xyz/completeSignup.html). + + +## Manual (bot) + +```php +$MadelineProto->botLogin('34298141894:aflknsaflknLKNFS'); +``` + +Use `botLogin` to login as a bot, see [here for the parameters and the result](https://docs.madelineproto.xyz/botLogin.html). + +## QR code (user) + +The new QR code login API can be used to render a QR code that can be scanned using the Telegram mobile apps in order to login. + +The API is designed to be easily used in parallel with another login mode (i.e. together with the manual modes described above), but it can also be used standalone. + +[See here for the full documentation of the QR code API »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/TL/Types/LoginQrCode.html). + +### CLI usage example + +```php +use Amp\CancelledException; +use Amp\CompositeCancellation; +use Amp\TimeoutCancellation; +use danog\MadelineProto\TL\Types\LoginQrCode; +use danog\MadelineProto\API; +use danog\MadelineProto\Tools; + +function login(\danog\MadelineProto\API $MadelineProto): void { + do { + $qr = $MadelineProto->qrLogin(); + if (!$qr) { + if ($MadelineProto->getAuthorization() === API::WAITING_PASSWORD) { + $MadelineProto->complete2faLogin(Tools::readLine('Please enter your password (hint '.$MadelineProto->getHint().'): ')); + } + // If null, we're already logged in + return; + } + + // Print QR code in text format + echo $qr->getQRText(); + + $expire = $qr->getExpirationCancellation(); + $login = $qr->getLoginCancellation(); + + $cancel = new CompositeCancellation($expire, $login); + + try { + $result = Tools::readLine("Enter your phone number, or scan the above QR code to login: ", $cancel); + break; + } catch (CancelledException) { + if ($login->isRequested()) { + echo(PHP_EOL.PHP_EOL."QR code login successful!".PHP_EOL); + if ($MadelineProto->getAuthorization() === API::WAITING_PASSWORD) { + $MadelineProto->complete2faLogin(Tools::readLine('Please enter your password (hint '.$MadelineProto->getHint().'): ')); + } + return; + } + echo(PHP_EOL."The QR code expired, generating a new one...".PHP_EOL); + } + } while (true); + + $MadelineProto->phoneLogin($result); + $authorization = $MadelineProto->completePhoneLogin(Tools::readLine('Enter the phone code: ')); + if ($authorization['_'] === 'account.password') { + $MadelineProto->complete2falogin(Tools::readLine('Please enter your password (hint '.$authorization['hint'].'): ')); + } + if ($authorization['_'] === 'account.needSignup') { + $MadelineProto->completeSignup(Tools::readLine('Please enter your first name: '), Tools::readline('Please enter your last name (can be empty): ')); + } +} +``` + +### Web usage example + +In this example, two endpoints are offered: + +* `?waitQrCodeOrLogin` long-polls the QR login API, waiting for the QR code to expire or for the user to scan the code. + * If the QR code expires, a new SVG with the QR code is returned in a JSON payload. + * If the user scans the code and approves login through a Telegram app, the `logged_in` field in the returned JSON payload is set to true. If the user has also set a 2FA password, the `needs_2fa` field will `true` and the web UI will have to ask for a password and invoke `complete2falogin`. +* `?getQrCode` does the same as `?waitQrCodeOrLogin`, except that it doesn't wait the additional 5 seconds (useful to fetch an initial QR code upon first page load). + +```php +use Amp\CancelledException; +use Amp\CompositeCancellation; +use Amp\TimeoutCancellation; +use danog\MadelineProto\TL\Types\LoginQrCode; +use danog\MadelineProto\API; + +if (isset($_GET['waitQrCodeOrLogin']) || isset($_GET['getQrCode'])) { + \header('Content-type: application/json'); + try { + $qr = $MadelineProto->qrLogin(); + if (isset($_GET['waitQrCodeOrLogin'])) { + $qr = $qr?->waitForLoginOrQrCodeExpiration(new TimeoutCancellation(5.0)); + } + } catch (CancelledException) { + $qr = $MadelineProto->qrLogin(); + } + if ($qr) { + $result = [ + 'logged_in' => false, + 'svg' => $qr->getQRSvg(400, 2) + ]; + } else { + $result = [ + 'logged_in' => true, + 'needs_2fa' => $MadelineProto->getAuthorization() === MTProto::WAITING_PASSWORD + ]; + } + echo(\json_encode($result)); +} +``` + +Next section \ No newline at end of file diff --git a/docs/docs/PLUGINS.md b/docs/docs/PLUGINS.md new file mode 100644 index 0000000000..c5462f4de2 --- /dev/null +++ b/docs/docs/PLUGINS.md @@ -0,0 +1,373 @@ +--- +title: "Plugins" +description: "MadelineProto offers a native plugin system, based on event handlers!" +nav_order: 13 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Plugins + +MadelineProto offers a native plugin system, based on [event handlers](https://docs.madelineproto.xyz/docs/UPDATES.html)! + +* [Installing plugins](#installing-plugins) + * [Simple installation](#simple-installation) + * [Composer installation](#composer-installation) + * [Builtin plugins](#builtin-plugins) +* [Creating plugins](#creating-plugins) + * [Full plugin example](#full-plugin-example) + * [Limitations](#limitations) + * [Namespace requirements](#namespace-requirements) + * [Distribution](#distribution) + +## Installing plugins + +Plugins can be installed by simply placing their files in the plugin path, or by installing them through composer. + +Plugins may be run either using a [plugin base »](https://github.com/danog/MadelineProto/raw/v8/examples/PluginBase.php), or directly (in which case they behave as normal bots). + +### Simple installation + +To install a plugin, copy the plugin's files into a `plugins/` folder, and use the following base code ([download »](https://github.com/danog/MadelineProto/raw/v8/examples/PluginBase.php)): + + + +```php +getLogger()->setLevel(Logger::LEVEL_ULTRA_VERBOSE); + +// You can also use Redis, MySQL or PostgreSQL +// $settings->setDb((new Redis)->setDatabase(0)->setPassword('pony')); +// $settings->setDb((new Postgres)->setDatabase('MadelineProto')->setUsername('daniil')->setPassword('pony')); +// $settings->setDb((new Mysql)->setDatabase('MadelineProto')->setUsername('daniil')->setPassword('pony')); + +// For users or bots +BaseHandler::startAndLoop('bot.madeline', $settings); + +// For bots only +// BaseHandler::startAndLoopBot('bot.madeline', 'bot token', $settings); + +``` + + + +Any other folder name may be used as well, and you can also return an array of folder names from `getPluginPaths()`. + +You can combine plugins installed with this mode with plugins installed using [composer](#composer-installation). + +### Composer installation + +To install a plugin via composer, require it first: + +```bash +composer require yournick/someplugin +``` + +Then return it from the `getPlugins` function of your base event handler: + +```php +getLogger()->setLevel(Logger::LEVEL_ULTRA_VERBOSE); + +// You can also use Redis, MySQL or PostgreSQL +// $settings->setDb((new Redis)->setDatabase(0)->setPassword('pony')); +// $settings->setDb((new Postgres)->setDatabase('MadelineProto')->setUsername('daniil')->setPassword('pony')); +// $settings->setDb((new Mysql)->setDatabase('MadelineProto')->setUsername('daniil')->setPassword('pony')); + +// For users or bots +BaseHandler::startAndLoop('bot.madeline', $settings); + +// For bots only +// BaseHandler::startAndLoopBot('bot.madeline', 'bot token', $settings); +``` + +You can combine plugins installed with this mode with plugins installed using a [plugin path](#simple-installation). + +### Builtin plugins + +MadelineProto itself also offers some useful builtin plugins that can be optionally enabled by returning them from the `getPlugins` function: + + + +* [danog\MadelineProto\EventHandler\Plugin\RestartPlugin »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Plugin/RestartPlugin.html) - Plugin that offers a /restart command to admins that can be used to restart the bot, applying changes. + + + + +Example: + + + +```php + + +## Creating plugins + +To create a plugin, simply create an [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html) that extends the `PluginEventHandler` class. + +### Full plugin example + +Full example (file name `plugins/Danogentili/PingPlugin.php`): + + + +```php +getPlugin(PingPlugin::class); + * + * $plugin->setPongText('UwU'); + * ``` + * + * This will automatically connect to the running instance of the plugin and call the specified method. + */ + public function setPongText(string $pong): void + { + $this->pongText = $pong; + } + + /** + * Returns a list of names for properties that will be automatically saved to the session database (MySQL/postgres/redis if configured, the session file otherwise). + */ + public function __sleep(): array + { + return ['pingCount', 'pongText']; + } + /** + * Initialization logic. + */ + public function onStart(): void + { + $this->logger("The bot was started!"); + $this->logger($this->getFullInfo('MadelineProto')); + + $this->sendMessageToAdmins("The bot was started!"); + } + + /** + * Plugins may be enabled or disabled at startup by returning true or false from this function. + */ + public function isPluginEnabled(): bool + { + return true; + } + + /** + * This cron function will be executed forever, every 60 seconds. + */ + #[Cron(period: 60.0)] + public function cron1(): void + { + $this->sendMessageToAdmins("The ping plugin is online, total pings so far: ".$this->pingCount); + } + + #[FilterText('ping')] + public function pingCommand(Incoming&Message $message): void + { + $message->reply($this->pongText); + $this->pingCount++; + } +} + +``` + + + +Plugins may be enabled or disabled at startup by returning `true` or `false` from `isPluginEnabled()`. + +### Limitations + +Plugins can handle updates, include other plugins using `getPlugins()` and store persistent data to the session using `__sleep`, [just like any non-plugin event handler](https://docs.madelineproto.xyz/docs/UPDATES.html). + +However, unlike normal event handlers, plugins can require other plugins using **only** `getPlugins()`, not `getPluginPaths()`. + +Also, plugins can only interact with the filesystem using MadelineProto's download and upload functions. + +For performance reasons, your plugin **should not** read files from the filesystem. + +Here's a list of common uses for files, and what they can be replaced with: + +* [Configuration](https://docs.madelineproto.xyz/docs/UPDATES.html#configuration) +* [Creating and uploading text files](https://docs.madelineproto.xyz/docs/UPDATES.html#creating-and-uploading-text-files) +* [Logging](https://docs.madelineproto.xyz/docs/UPDATES.html#logging) + +### Namespace requirements + +Plugins must be located in the `MadelinePlugin` vendor namespace, preferrably in a custom subnamespace to avoid conflicts with other plugins. + +So for example, if your nickname is `@danogentili`, use `namespace MadelinePlugin\Danogentili;`. + +All the classes, interfaces, functions and traits defined by your plugin's code must be defined in the namespace you chose. + +The file layout must follow the [PSR-4 autoloading standard](https://www.php-fig.org/psr/psr-4/); for example, if you have the following classes: + +* `MadelinePlugin\Danogentili\PingPlugin` - A ping plugin +* `MadelinePlugin\Danogentili\HelperPlugin` - A helper plugin +* `MadelinePlugin\Danogentili\CommonTrait` - A common trait with some tools, included by the plugins +* `MadelinePlugin\Danogentili\Internal\SomeOtherClass` - Some other class (not a plugin) + +This will be the directory structure: + +``` +plugins/Danogentili/PingPlugin.php +plugins/Danogentili/HelperPlugin.php +plugins/Danogentili/CommonTrait.php +plugins/Danogentili/Internal/SomeOtherClass.php +``` + +If you want to define some functions, put them in `plugins/Danog/functions.php` (or any subdirectory, as long as the name of the file is `functions.php`). + +### Distribution + +Plugins can be distributed in a simple zip file, or using composer. + +You can also distribute plugins as standalone files in the `MadelinePlugin` namespace (make sure to choose a really unique name!), for example `plugins/Danogentili.php`. + +Next section \ No newline at end of file diff --git a/docs/docs/PROXY.md b/docs/docs/PROXY.md new file mode 100644 index 0000000000..258e1942cc --- /dev/null +++ b/docs/docs/PROXY.md @@ -0,0 +1,181 @@ +--- +title: "Using a proxy" +description: "You can use a proxy with MadelineProto." +nav_order: 26 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Using a proxy + +You can use a proxy with MadelineProto. + +* [How to set a proxy](#how-to-set-a-proxy) +* [Multiple proxies with automatic switch](#multiple-proxies-with-automatic-switch) +* [Use pre-built MTProxy](#mtproxy) +* [Use pre-built Socks5 proxy](#socks5-proxy) +* [Use pre-built HTTP proxy](#http-proxy) +* [Build your own proxy](#build-your-proxy) + + +## How to set a proxy + +In order to set a proxy for MadelineProto, you have to modify the [settings](SETTINGS.html). +You can set multiple proxies, and let MadelineProto choose the best one. + + +```php +use danog\MadelineProto\Stream\MTProtoTransport\ObfuscatedStream; +use danog\MadelineProto\Stream\Proxy\HttpProxy; +use danog\MadelineProto\Stream\Proxy\SocksProxy; +use danog\MadelineProto\Settings\Connection; +use my\Custom\Namespace\MyProxy; + +$settings = new Connection; +$settings->addProxy( + ObfuscatedStream::class, + [ + 'address' => 'magtg.com', + 'port' => 443, + 'secret' => 'dd.....' + ] +); +$settings->addProxy( + ObfuscatedStream::class, + [ + 'address' => 'magtg2.com', + 'port' => 443, + 'secret' => 'dd.....' + ] +); +$settings->addProxy( + HttpProxy::class, + [ + 'address' => '0.0.0.0', + 'port' => 80, + 'username' => 'user', + 'password' => 'pass' + ], +); +$settings->addProxy( + SocksProxy::class, + [ + 'address' => '0.0.0.0', + 'port' => 80, + 'username' => 'user', + 'password' => 'pass' + ], +); +$settings->addProxy( + MyProxy::class, + [ + 'custom' => 'data' + ], +); + +$MadelineProto->updateSettings($settings); +``` + +## MTProxy + +```php +use danog\MadelineProto\Settings\Connection; +use danog\MadelineProto\Stream\MTProtoTransport\ObfuscatedStream; + +$settings = new Connection; +$settings->addProxy( + ObfuscatedStream::class, + [ + 'address' => 'magtg.com', + 'port' => 443, + 'secret' => 'dd.....' + ] +); + +$MadelineProto->updateSettings($settings); +``` + +Both normal and `dd` secrets are supported, the transport is changed automatically by MadelineProto. + +## Socks5 proxy + +No password: + +```php +use danog\MadelineProto\Stream\Proxy\SocksProxy; + +$settings = new Connection; +$settings->addProxy( + SocksProxy::class, + [ + 'address' => '0.0.0.0', + 'port' => 2343, + ] +); + +$MadelineProto->updateSettings($settings); +``` + + +With password: + +```php +use danog\MadelineProto\Stream\Proxy\SocksProxy; + +$settings = new Connection; +$settings->addProxy( + SocksProxy::class, + [ + 'address' => '0.0.0.0', + 'port' => 2343, + 'username' => 'username', + 'password' => 'password', + ] +); + +$MadelineProto->updateSettings($settings); +``` +## HTTP proxy + +No password: + +```php +use danog\MadelineProto\Stream\Proxy\HttpProxy; + +$settings = new Connection; +$settings->addProxy( + HttpProxy::class, + [ + 'address' => '0.0.0.0', + 'port' => 2343, + ] +); + +$MadelineProto->updateSettings($settings); +``` + + +With password: + +```php +use danog\MadelineProto\Stream\Proxy\HttpProxy; + +$settings = new Connection; +$settings->addProxy( + HttpProxy::class, + [ + 'address' => '0.0.0.0', + 'port' => 2343, + 'username' => 'username', + 'password' => 'password', + ] +); + +$MadelineProto->updateSettings($settings); +``` + +## Build your proxy + +In order to build your proxy, you have to use the new MadelineProto stream API to create your own proxy class. +Feel free to study [existing proxies](https://github.com/danog/MadelineProto/tree/v8/src/Stream/Proxy) and the [stream API](https://github.com/danog/MadelineProto/tree/v8/src/Stream): it's well structured and well documented, so feel free to read the code. +Don't forget to add support for [TLS connections](https://github.com/danog/MadelineProto/blob/v8/src/Stream/Proxy/SocksProxy.php#L141) as well! + +Next section \ No newline at end of file diff --git a/docs/docs/REQUIREMENTS.md b/docs/docs/REQUIREMENTS.md new file mode 100644 index 0000000000..366b91f079 --- /dev/null +++ b/docs/docs/REQUIREMENTS.md @@ -0,0 +1,56 @@ +--- +title: "Requirements" +description: "MadelineProto requires the mbstring, xml, json, fileinfo, gmp, openssl, iconv, gd extensions to function properly." +nav_order: 7 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Requirements + +MadelineProto requires the `mbstring`, `xml`, `json`, `fileinfo`, `gmp`, `openssl`, `iconv`, `gd` extensions to function properly. + +The `ffi` and `uv` extensions and the [PrimeModule](https://prime.madelineproto.xyz/) and `nghttp2` libraries are also highly recommended to improve performance. + +**PHP 8.2+ is required**. + +MadelineProto explicitly supports Linux and UNIX systems (including Mac OS). +I **don't recommend using Windows**: MadelineProto generally works on Windows, though there might be some random issues caused by AV engines, so I personally recommend using Linux. + +**Mac OS+Docker note**: If you encounter issues running MadelineProto on Docker on Mac OS, make sure to enable ephemeral filesystem support with a database [as described here »](https://docs.madelineproto.xyz/docs/DATABASE.html#ephemeral-filesystems), and change the session path in `bot.php` to point to a unique path in `/tmp`, not in a mounted volume. + +Running on webservers and webhosts is fully supported, but I highly recommend running long-running applications like [event handler bots](https://docs.madelineproto.xyz/docs/UPDATES.html) via CLI. + +**Running via docker is highly recommended**, see [here »](https://docs.madelineproto.xyz/docs/DOCKER.html) for more info on how to run MadelineProto in docker, on any Linux distro. + +Otherwise, see [here »](#ubuntu) for more info on how to install MadelineProto dependencies manually on Ubuntu. + +## Docker (recommended) + +Follow [these instructions »](https://docs.madelineproto.xyz/docs/DOCKER.html) to install MadelineProto dependencies on *any linux distro*, using the official docker image. + +## Ubuntu + +To install MadelineProto dependencies manually on Ubuntu, run the following command in your command line: + +```bash +sudo apt-get update +sudo apt-get install software-properties-common -y +sudo LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php +sudo apt-get update +sudo apt-get install php8.2 php8.2-dev php8.2-xml php8.2-zip php8.2-gmp php8.2-cli php8.2-mbstring php8.2-ffi php8.2-iconv php-pear libuv1-dev nghttp2 -y +sudo pecl install uv-beta +echo extension=uv.so | sudo tee $(php --ini | sed '/additional .ini/!d;s/.*: //g')/uv.ini +echo ffi.enable=1 | sudo tee $(php --ini | sed '/additional .ini/!d;s/.*: //g')/ffi.ini + +echo 262144 | sudo tee /proc/sys/vm/max_map_count +echo vm.max_map_count=262144 | sudo tee /etc/sysctl.d/40-madelineproto.conf + +cd /tmp +sudo apt-get install build-essential +git clone https://github.com/danog/PrimeModule-ext +cd PrimeModule-ext && make -j$(nproc) && sudo make install + +``` + +The `max_map_count` sysctl configuration is required to avoid "Fiber stack allocate failed" and "Fiber stack protect failed" errors, since the PHP engine mmaps two memory regions per fiber. + +Next section \ No newline at end of file diff --git a/docs/docs/SECRET_CHATS.md b/docs/docs/SECRET_CHATS.md new file mode 100644 index 0000000000..3f42ed9ae2 --- /dev/null +++ b/docs/docs/SECRET_CHATS.md @@ -0,0 +1,75 @@ +--- +title: "Secret chats" +description: "MadelineProto provides wrappers to work with secret chats." +nav_order: 25 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Secret chats + +MadelineProto provides wrappers to work with secret chats. + +* [Requesting secret chats](#requesting-secret-chats) +* [Accepting secret chats](#accepting-secret-chats) +* [Checking secret chat status](#checking-secret-chat-status) +* [Sending secret messages](#sending-secret-messages) + +## Requesting secret chats + +```php +$secret_chat = $MadelineProto->requestSecretChat($InputUser); +``` + +[`requestSecretChat`](https://docs.madelineproto.xyz/requestSecretChat.html) requests a secret secret chat to the [InputUser](https://docs.madelineproto.xyz/API_docs/types/InputUser.html), ID, or username specified, and returns the secret chat ID. + + +## Accepting secret chats + +Secret chats are accepted or refused automatically, based on a value in the [settings](SETTINGS.html) (by default MadelineProto is set to accept all secret chats). + +Before sending any message, you must check if the secret chat was accepted by the other client with the following method: + +## Checking secret chat status + +```php +$status = $MadelineProto->secretChatStatus($chat); +``` + +$status is `\danog\MadelineProto\MTProto::SECRET_EMPTY` if the chat cannot be found in the local database, `MTProto::SECRET_REQUESTED` if the chat was requested but not yet accepted, and `MTProto::SECRET_READY` if it is a valid accepted secret chat. + +## Sending secret messages + +[Full example](https://github.com/danog/MadelineProto/blob/v8/examples/secret_bot.php) + +To send messages/files/service messages, simply use the sendEncrypted methods with objects that use the same layer used by the other client (specified by the number after the underscore in decryptedMessage object names, to obtain the layer that must be used for a secret chat use the following wrapper method). + +```php +$secret_chat = $MadelineProto->getSecretChat($chat); +/* +[ + 'key' => [ // The authorization key + 'auth_key' => 'string', // 256 bytes long + 'fingerprint' => 10387574747492, // a 64 bit signed integer + 'visualization_orig' => 'string', // 16 bytes long + 'visualization_46' => 'string', // 20 bytes long + // The two visualization strings must be concatenated to generate a visual fingerprint + ], + 'admin' => false, // Am I the creator of the chat? + 'user_id' => 101374607, // The user id of the other user + 'InputEncryptedChat' => [...], // An inputEncryptedChat object that represents the current chat + 'in_seq_no_x' => number, // in_seq_no must be multiplied by two and incremented by this before being sent over the network + 'out_seq_no_x' => number, // out_seq_no must be multiplied by two and incremeneted this begore being sent over the network + 'layer' => number, // The secret chat TL layer used by the other client + 'ttl' => number, // The default time to live of messages in this chat + 'ttr' => 100, // Time left before rekeying must be done, decremented by one every time a message as encrypted/decrypted with this key + 'updated' => time(), // Last time the key of the current chat was changed + 'incoming' => [], // Incoming messages, TL serialized strings + 'outgoing' => [], // Outgoing messages, TL serialized strings + 'created' => time(), // When was this chat created + 'rekeying' => [0] // Info for rekeying +]; +*/ +``` + +This method gets info about a certain chat. + +Next section \ No newline at end of file diff --git a/docs/docs/SELF.md b/docs/docs/SELF.md new file mode 100644 index 0000000000..2755a4b440 --- /dev/null +++ b/docs/docs/SELF.md @@ -0,0 +1,19 @@ +--- +title: "Getting info about the current user" +description: "Here's how you can fetch info about the currently logged in user" +nav_order: 16 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Getting info about the current user + +Here's how you can fetch info about the currently logged in user + +```php +$me = $MadelineProto->getSelf(); + +\danog\MadelineProto\Logger::log("Hi ".$me['first_name']."!"); +``` + +[`getSelf`](https://docs.madelineproto.xyz/getSelf.html) returns a [User object](../API_docs/types/User.html) that contains info about the currently logged in user/bot, or false if the current instance is not logged in. + +Next section \ No newline at end of file diff --git a/docs/docs/SETTINGS.md b/docs/docs/SETTINGS.md new file mode 100644 index 0000000000..1d36801975 --- /dev/null +++ b/docs/docs/SETTINGS.md @@ -0,0 +1,71 @@ +--- +title: "Settings" +description: "MadelineProto has lots of settings that can be used to modify the behaviour of the library." +nav_order: 15 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Settings + +MadelineProto has lots of settings that can be used to modify the behaviour of the library. +These settings are controlled by the following classes in the `\danog\MadelineProto\Settings` namespace: + +* [AppInfo: App information.](../PHP/danog/MadelineProto/Settings/AppInfo.html) +* [Auth: Cryptography settings.](../PHP/danog/MadelineProto/Settings/Auth.html) +* [Connection: Connection settings.](../PHP/danog/MadelineProto/Settings/Connection.html) +* [Files: File management settings.](../PHP/danog/MadelineProto/Settings/Files.html) +* [Logger: Logger settings.](../PHP/danog/MadelineProto/Settings/Logger.html) +* [Peer: Peer database settings.](../PHP/danog/MadelineProto/Settings/Peer.html) +* [Pwr: PWRTelegram settings.](../PHP/danog/MadelineProto/Settings/Pwr.html) +* [RPC: RPC settings.](../PHP/danog/MadelineProto/Settings/RPC.html) +* [SecretChats: Secret chat settings.](../PHP/danog/MadelineProto/Settings/SecretChats.html) +* [Serialization: Serialization settings.](../PHP/danog/MadelineProto/Settings/Serialization.html) +* [TLSchema: TL schema settings.](../PHP/danog/MadelineProto/Settings/TLSchema.html) +* [Templates: Web and CLI template settings for login.](../PHP/danog/MadelineProto/Settings/Templates.html) +* [VoIP: VoIP settings.](../PHP/danog/MadelineProto/Settings/VoIP.html) +* [Database\Memory: Memory backend settings.](../PHP/danog/MadelineProto/Settings/Database/Memory.html) +* [Database\Mysql: MySQL backend settings.](../PHP/danog/MadelineProto/Settings/Database/Mysql.html) +* [Database\Postgres: Postgres backend settings.](../PHP/danog/MadelineProto/Settings/Database/Postgres.html) +* [Database\Redis: Redis backend settings.](../PHP/danog/MadelineProto/Settings/Database/Redis.html) + +These classes can be instantiated and passed individually to MadelineProto: +```php +$settings = (new \danog\MadelineProto\Settings\AppInfo) + ->setApiId(124) + ->setApiHash('xx'); + +$API = new \danog\MadelineProto\API('session.madeline', $settings); +``` + +**It's heavily recommended** to remove (or pass null) the second `$settings` parameter passed to the constructor once the instance is logged in, to avoid the performance overhead of needlessly updating settings every time API is instantiated: + +To modify the settings of an already created instance, `updateSettings` should be used, instead: +```php +$settings = (new \danog\MadelineProto\Settings\AppInfo) + ->setApiId(124) + ->setApiHash('xx'); + +$MadelineProto->updateSettings($settings); +``` + +It's recommended you create a separate file that accesses the session just to modify the settings, as it's a very rare operation. + +You can also group settings in a single [\danog\MadelineProto\Settings](../PHP/danog/MadelineProto/Settings.html) object, to quickly modify multiple settings: + +**See [here »](../PHP/danog/MadelineProto/Settings.html) for more info on how to get and modify the instances of each subsetting class mentioned at the beginning of this page**. + +```php +$settings = new \danog\MadelineProto\Settings; +$settings->setDb((new \danog\MadelineProto\Settings\Database\Mysql) + ->setUri('tcp://localhost') + ->setPassword('pass') +); +$settings->setAppInfo((new \danog\MadelineProto\Settings\AppInfo) + ->setApiId(124) + ->setApiHash('xx') +); +$settings->getFiles()->setUploadParallelChunks(100); + +$MadelineProto->updateSettings($settings); +``` + +Next section \ No newline at end of file diff --git a/docs/docs/TEMPLATES.md b/docs/docs/TEMPLATES.md new file mode 100644 index 0000000000..e8387f9df7 --- /dev/null +++ b/docs/docs/TEMPLATES.md @@ -0,0 +1,33 @@ +--- +title: "Web templates for `$MadelineProto->start()`" +description: "The web template used for the $MadelineProto->start() and API ID web UIs can be changed." +nav_order: 32 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Web templates for `$MadelineProto->start()` + +The web template used for the `$MadelineProto->start()` and API ID web UIs can be changed. + +The change is made in the [settings »](https://docs.madelineproto.xyz/docs/SETTINGS.html), [`\danog\MadelineProto\Settings\Templates`](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Templates.html) class. + +By default, it is equal to: +```html + + + + MadelineProto + + +

MadelineProto

+
+ %s + +
+

%s

+ + +``` + +The new template must have a structure similar the the default template. + +Next section \ No newline at end of file diff --git a/docs/docs/UPDATES.md b/docs/docs/UPDATES.md new file mode 100644 index 0000000000..d1d913b9c3 --- /dev/null +++ b/docs/docs/UPDATES.md @@ -0,0 +1,1368 @@ +--- +title: "Handling updates (new messages & other events)" +description: "Update handling can be done in different ways:" +nav_order: 11 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Handling updates (new messages & other events) + +Update handling can be done in different ways: + +* [Async Event driven](#async-event-driven) + * [Full example](#async-event-driven) + * [Bound methods](#bound-methods) + * [Filters](https://docs.madelineproto.xyz/docs/FILTERS.html) + * [Simple filters](https://docs.madelineproto.xyz/docs/FILTERS.html#simple-filters) + * [Attribute filters](https://docs.madelineproto.xyz/docs/FILTERS.html#attribute-filters) + * [MTProto filters](https://docs.madelineproto.xyz/docs/FILTERS.html#mtproto-filters) + * [Plugins](https://docs.madelineproto.xyz/docs/PLUGINS.html) + * [Cron](#cron) + * [Persisting data and IPC](#persisting-data-and-ipc) + * [Built-in ORM](#built-in-orm) + * [IPC](#ipc) + * [Restarting](#restarting) + * [Self-restart on webhosts](#self-restart-on-webhosts) + * [Multi-account](#multiaccount) + * [Automatic static analysis](#automatic-static-analysis) + * [Avoiding the use of filesystem functions](#avoiding-the-use-of-filesystem-functions) +* [Webhook (for HTTP APIs)](#webhook) +* [getUpdates (only for Javascript APIs)](#getUpdates) +* [Noop (default)](#noop) + + +## Async Event driven + +[Plugins » are also supported!](https://docs.madelineproto.xyz/docs/PLUGINS.html) + +Simple example: + + +```php + + +Advanced example: + + +```php +. + * + * @author Daniil Gentili + * @copyright 2016-2023 Daniil Gentili + * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 + * @link https://docs.madelineproto.xyz MadelineProto documentation + */ + +use danog\MadelineProto\API; +use danog\MadelineProto\Broadcast\Progress; +use danog\MadelineProto\Broadcast\Status; +use danog\MadelineProto\EventHandler\Attributes\Cron; +use danog\MadelineProto\EventHandler\Attributes\Handler; +use danog\MadelineProto\EventHandler\Filter\FilterCommand; +use danog\MadelineProto\EventHandler\Filter\FilterRegex; +use danog\MadelineProto\EventHandler\Filter\FilterText; +use danog\MadelineProto\EventHandler\Filter\FilterTextCaseInsensitive; +use danog\MadelineProto\EventHandler\Message; +use danog\MadelineProto\EventHandler\Message\ChannelMessage; +use danog\MadelineProto\EventHandler\Message\Service\DialogPhotoChanged; +use danog\MadelineProto\EventHandler\Plugin\RestartPlugin; +use danog\MadelineProto\EventHandler\SimpleFilter\FromAdmin; +use danog\MadelineProto\EventHandler\SimpleFilter\Incoming; +use danog\MadelineProto\EventHandler\SimpleFilter\IsReply; +use danog\MadelineProto\Logger; +use danog\MadelineProto\ParseMode; +use danog\MadelineProto\RemoteUrl; +use danog\MadelineProto\Settings; +use danog\MadelineProto\Settings\Database\Mysql; +use danog\MadelineProto\Settings\Database\Postgres; +use danog\MadelineProto\Settings\Database\Redis; +use danog\MadelineProto\SimpleEventHandler; +use danog\MadelineProto\VoIP; + +// MadelineProto is already loaded +if (class_exists(API::class)) { + // Otherwise, if a stable version of MadelineProto was installed via composer, load composer autoloader +} elseif (file_exists('vendor/autoload.php')) { + require_once 'vendor/autoload.php'; +} else { + // Otherwise download an !!! alpha !!! version of MadelineProto via madeline.php + if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); + } + require_once 'madeline.php'; +} +/** + * Event handler class. + * + * NOTE: ALL of the following methods are OPTIONAL. + * You can even provide an empty event handler if you want. + * + * All properties returned by __sleep are automatically stored in the database. + */ +class MyEventHandler extends SimpleEventHandler +{ + /** + * @var int|string Username or ID of bot admin + */ + public const ADMIN = "@me"; // !!! Change this to your username !!! + + /** + * @var array + */ + private array $notifiedChats = []; + + /** + * Returns a list of names for properties that will be automatically saved to the session database (MySQL/postgres/redis if configured, the session file otherwise). + */ + public function __sleep(): array + { + return ['notifiedChats']; + } + + /** + * Get peer(s) where to report errors. + * + * @return int|string|array + */ + public function getReportPeers() + { + return [self::ADMIN]; + } + /** + * Initialization logic. + */ + public function onStart(): void + { + $this->logger("The bot was started!"); + $this->logger($this->getFullInfo('MadelineProto')); + + $this->sendMessageToAdmins("The bot was started!"); + } + + /** + * Returns a set of plugins to activate. + */ + public static function getPlugins(): array + { + return [ + // Offers a /restart command to admins that can be used to restart the bot, applying changes. + // Make sure to run in a bash while loop when running via CLI to allow self-restarts. + RestartPlugin::class, + ]; + } + + /** + * This cron function will be executed forever, every 60 seconds. + */ + #[Cron(period: 60.0)] + public function cron1(): void + { + $this->sendMessageToAdmins("The bot is online, current time ".date(DATE_RFC850)."!"); + } + + /** + * Handle incoming updates from users, chats and channels. + */ + #[Handler] + public function handleMessage(Incoming&Message $message): void + { + // In this example code, send the "This userbot is powered by MadelineProto!" message only once per chat. + // Ignore all further messages coming from this chat. + if (!isset($this->notifiedChats[$message->chatId])) { + $this->notifiedChats[$message->chatId] = true; + + $message->reply( + message: "This userbot is powered by [MadelineProto](https://t.me/MadelineProto)!", + parseMode: ParseMode::MARKDOWN + ); + } + } + + /** + * Reposts a media file as a Telegram story. + */ + #[FilterCommand('story')] + public function storyCommand(Message & FromAdmin $message): void + { + if ($this->isSelfBot()) { + $message->reply("Only users can post Telegram Stories!"); + return; + } + $media = $message->getReply(Message::class)?->media; + if (!$media) { + $message->reply("You should reply to a photo or video to repost it as a story!"); + return; + } + + $this->stories->sendStory( + peer: 'me', + media: $media, + caption: "This story was posted using [MadelineProto](https://t.me/MadelineProto)!", + parse_mode: ParseMode::MARKDOWN, + privacy_rules: [['_' => 'inputPrivacyValueAllowAll']] + ); + } + + /** + * Automatically sends a comment to all new incoming channel posts. + */ + #[Handler] + public function makeComment(Incoming&ChannelMessage $message): void + { + if ($this->isSelfBot()) { + return; + } + $message->getDiscussion()->reply( + message: "This comment is powered by [MadelineProto](https://t.me/MadelineProto)!", + parseMode: ParseMode::MARKDOWN + ); + } + + #[FilterCommand('broadcast')] + public function broadcastCommand(Message & FromAdmin $message): void + { + // We can broadcast messages to all users with /broadcast + if (!$message->replyToMsgId) { + $message->reply("You should reply to the message you want to broadcast."); + return; + } + $this->broadcastForwardMessages( + from_peer: $message->senderId, + message_ids: [$message->replyToMsgId], + drop_author: true, + pin: true, + ); + } + + private int $lastLog = 0; + /** + * Handles updates to an in-progress broadcast. + */ + #[Handler] + public function handleBroadcastProgress(Progress $progress): void + { + if (time() - $this->lastLog > 5 || $progress->status === Status::FINISHED) { + $this->lastLog = time(); + $this->sendMessageToAdmins((string) $progress); + } + } + + #[FilterCommand('echo')] + public function echoCmd(Message $message): void + { + // Contains the arguments of the command + $args = $message->commandArgs; + + $message->reply($args[0] ?? ''); + } + + #[FilterRegex('/.*(mt?proto)[^.]?.*/i')] + public function testRegex(Incoming & Message $message): void + { + $message->reply("Did you mean to write MadelineProto instead of ".$message->matches[1].'?'); + } + + #[FilterText('test')] + public function pingCommand(Message $message): void + { + $message->reply('test reply'); + } + + #[FilterCommand('react')] + public function reactCommand(Message&IsReply $message): void + { + $message->getReply(Message::class)->addReaction('👌'); + } + + #[FilterCommand('unreact')] + public function unreactCommand(Message&IsReply $message): void + { + $message->getReply(Message::class)->delReaction('👌'); + } + + #[FilterTextCaseInsensitive('hi')] + public function pingCommandCaseInsensitive(Message $message): void + { + $message->reply('hello'); + } + + /** + * Called when the dialog photo of a chat or channel changes. + */ + #[Handler] + public function logPhotoChanged(Incoming&DialogPhotoChanged $message): void + { + if ($message->photo) { + $message->reply("Nice! Here's a download link for the photo: ".$message->photo->getDownloadLink()); + } + // The group photo was deleted + } + + /** + * Gets a download link for any file up to 4GB! + * + * The bot must be started via web for this command to work. + * + * You can also start it via CLI but you'll have to specify a download script URL in the settings: https://docs.madelineproto.xyz/docs/FILES.html#getting-a-download-link-cli-bots. + */ + #[FilterCommand('dl')] + public function downloadLink(Incoming&Message $message): void + { + $reply = $message->getReply(Message::class); + if (!$reply?->media) { + $message->reply("This command must reply to a media message!"); + return; + } + $reply->reply("Download link: ".$reply->media->getDownloadLink()); + } + + #[FilterCommand('call')] + public function callVoip(Incoming&Message $message): void + { + $this->requestCall($message->senderId)->play(new RemoteUrl('http://icestreaming.rai.it/1.mp3')); + } + + #[Handler] + public function handleIncomingCall(VoIP&Incoming $call): void + { + $call->accept()->play(new RemoteUrl('http://icestreaming.rai.it/1.mp3')); + } + + public static function getPluginPaths(): string|array|null + { + return 'plugins/'; + } +} + +$settings = new Settings; +$settings->getLogger()->setLevel(Logger::LEVEL_ULTRA_VERBOSE); + +// You can also use Redis, MySQL or PostgreSQL. +// Data is migrated automatically. +// +// $settings->setDb((new Redis)->setDatabase(0)->setPassword('pony')); +// $settings->setDb((new Postgres)->setDatabase('MadelineProto')->setUsername('daniil')->setPassword('pony')); +// $settings->setDb((new Mysql)->setDatabase('MadelineProto')->setUsername('daniil')->setPassword('pony')); + +// For users or bots +MyEventHandler::startAndLoop('bot.madeline', $settings); + +// For bots only +// MyEventHandler::startAndLoopBot('bot.madeline', 'bot token', $settings); + +``` + + + +The example code above defines an event handler class `MyEventHandler`, creates a MadelineProto session, and sets the event handler class to our newly created event handler. + +The **new** `startAndLoop` method automatically initializes MadelineProto, **enables async**, logs in the user/bot, initializes error reporting, catches and reports all errors surfacing from the event loop to the peers returned by the `getReportPeers` method. + +All events are handled concurrently thanks to async, [here's a full explanation](ASYNC.html). + +All incoming events are **always handled**, **including old events that occurred while the script was turned off**. + +To access the `$MadelineProto` instance inside of the event handler, simply access `$this`: +```php +$this->messages->sendMessage(['peer' => '@danogentili', 'message' => 'hi']); +``` + +### Bound methods + +MadelineProto offers a large number of helper bound methods and properties, depending on the filter type you specify in the typehint of `#[Handler]` methods. + +See [here »](https://docs.madelineproto.xyz/docs/FILTERS.html#simple-filters) for more info on how to use bound methods, properties and filters. + +Here's a full list of the concrete object types on which bound methods and properties are defined: + + + +* [danog\MadelineProto\Broadcast\Progress »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Broadcast/Progress.html) - Broadcast progress. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Broadcast/Progress.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Broadcast/Progress.html#method-list) +* [danog\MadelineProto\EventHandler\AbstractMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractMessage.html) - Represents an incoming or outgoing message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractMessage.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractMessage.html#method-list) +* [danog\MadelineProto\EventHandler\AbstractPrivateMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractPrivateMessage.html) - Represents a private or secret chat message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractPrivateMessage.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractPrivateMessage.html#method-list) +* [danog\MadelineProto\EventHandler\AbstractStory »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractStory.html) - Represents a Telegram Story. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractStory.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/AbstractStory.html#method-list) +* [danog\MadelineProto\EventHandler\BotCommands »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/BotCommands.html) - The [command set](https://core.telegram.org/api/bots/commands) of a certain bot in a certain chat has changed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/BotCommands.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/BotCommands.html#method-list) +* [danog\MadelineProto\EventHandler\CallbackQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/CallbackQuery.html) - Represents a query sent by the user by clicking on a button. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/CallbackQuery.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/CallbackQuery.html#method-list) +* [danog\MadelineProto\EventHandler\Channel\ChannelParticipant »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/ChannelParticipant.html) - A participant has left, joined, was banned or admined in a [channel or supergroup](https://core.telegram.org/api/channel). + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/ChannelParticipant.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/ChannelParticipant.html#method-list) +* [danog\MadelineProto\EventHandler\Channel\MessageForwards »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/MessageForwards.html) - Indicates that the forward counter of a message in a channel has changed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/MessageForwards.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/MessageForwards.html#method-list) +* [danog\MadelineProto\EventHandler\Channel\MessageViewsChanged »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/MessageViewsChanged.html) - Indicates that the view counter of a message in a channel has changed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/MessageViewsChanged.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/MessageViewsChanged.html#method-list) +* [danog\MadelineProto\EventHandler\Channel\UpdateChannel »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/UpdateChannel.html) - A new channel is available, or info about an existing channel was changed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/UpdateChannel.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/UpdateChannel.html#method-list) +* [danog\MadelineProto\EventHandler\ChatInviteRequester »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester.html) - Indicates someone has requested to join a chat or channel. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester.html#method-list) +* [danog\MadelineProto\EventHandler\ChatInviteRequester\BotChatInviteRequest »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/BotChatInviteRequest.html) - Indicates someone has requested to join a chat or channel (bots only). + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/BotChatInviteRequest.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/BotChatInviteRequest.html#method-list) +* [danog\MadelineProto\EventHandler\ChatInviteRequester\PendingJoinRequests »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/PendingJoinRequests.html) - Someone has requested to join a chat or channel. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/PendingJoinRequests.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/ChatInviteRequester/PendingJoinRequests.html#method-list) +* [danog\MadelineProto\EventHandler\Delete »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete.html) - Indicates that some messages were deleted. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete.html#method-list) +* [danog\MadelineProto\EventHandler\Delete\DeleteChannelMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteChannelMessages.html) - Some messages in a [supergroup/channel](https://core.telegram.org/api/channel) were deleted. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteChannelMessages.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteChannelMessages.html#method-list) +* [danog\MadelineProto\EventHandler\Delete\DeleteMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteMessages.html) - Some messages were deleted in a private chat or simple group. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteMessages.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteMessages.html#method-list) +* [danog\MadelineProto\EventHandler\Delete\DeleteScheduledMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteScheduledMessages.html) - Some [scheduled messages](https://core.telegram.org/api/scheduled-messages) were deleted from the schedule queue of a chat. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteScheduledMessages.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteScheduledMessages.html#method-list) +* [danog\MadelineProto\EventHandler\InlineQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/InlineQuery.html) - An incoming inline query. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/InlineQuery.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/InlineQuery.html#method-list) +* [danog\MadelineProto\EventHandler\Message »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message.html) - Represents an incoming or outgoing message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message.html#method-list) +* [danog\MadelineProto\EventHandler\Message\ChannelMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ChannelMessage.html) - Represents an incoming or outgoing channel message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ChannelMessage.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ChannelMessage.html#method-list) +* [danog\MadelineProto\EventHandler\Message\GroupMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/GroupMessage.html) - Represents an incoming or outgoing group message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/GroupMessage.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/GroupMessage.html#method-list) +* [danog\MadelineProto\EventHandler\Message\PrivateMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/PrivateMessage.html) - Represents an incoming or outgoing private message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/PrivateMessage.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/PrivateMessage.html#method-list) +* [danog\MadelineProto\EventHandler\Message\SecretMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/SecretMessage.html) - Represents New encrypted message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/SecretMessage.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/SecretMessage.html#method-list) +* [danog\MadelineProto\EventHandler\Message\ServiceMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ServiceMessage.html) - Represents info about a service message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ServiceMessage.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ServiceMessage.html#method-list) +* [danog\MadelineProto\EventHandler\Message\ServiceMessage »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ServiceMessage.html) - Represents info about a service message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ServiceMessage.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/ServiceMessage.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogBotAllowed »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogBotAllowed.html) - We have given the bot permission to send us direct messages. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogBotAllowed.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogBotAllowed.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogChannelCreated »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelCreated.html) - The channel was created. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelCreated.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelCreated.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogChannelMigrateFrom »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelMigrateFrom.html) - Indicates the channel was [migrated](https://core.telegram.org/api/channel) from the specified chat. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelMigrateFrom.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelMigrateFrom.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogChatJoinedByLink »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatJoinedByLink.html) - A user joined the chat via an invite link. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatJoinedByLink.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatJoinedByLink.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogChatMigrateTo »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatMigrateTo.html) - Indicates the chat was [migrated](https://core.telegram.org/api/channel) to the specified supergroup. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatMigrateTo.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatMigrateTo.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogContactSignUp »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogContactSignUp.html) - A contact just signed up to telegram. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogContactSignUp.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogContactSignUp.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogCreated »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogCreated.html) - A chat or channel was created. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogCreated.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogCreated.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogDeleteMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogDeleteMessages.html) - Deleted messages. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogDeleteMessages.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogDeleteMessages.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogGameScore »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGameScore.html) - Someone scored in a game. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGameScore.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGameScore.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogGeoProximityReached »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGeoProximityReached.html) - A user of the chat is now in proximity of another user. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGeoProximityReached.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGeoProximityReached.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogGiftPremium »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGiftPremium.html) - Info about a gifted Telegram Premium subscription. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGiftPremium.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGiftPremium.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall.html) - Represents a service message about a group call. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall\GroupCall »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCall.html) - The group call has started or ended. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCall.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCall.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall\GroupCallInvited »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallInvited.html) - A set of users was invited to the group call. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallInvited.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallInvited.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall\GroupCallScheduled »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallScheduled.html) - A group call was scheduled. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallScheduled.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogGroupCall/GroupCallScheduled.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogHistoryCleared »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogHistoryCleared.html) - Chat history was cleared. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogHistoryCleared.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogHistoryCleared.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogMemberJoinedByRequest »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberJoinedByRequest.html) - A user was accepted into the group by an admin. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberJoinedByRequest.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberJoinedByRequest.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogMemberLeft »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberLeft.html) - A member left the chat or channel. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberLeft.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMemberLeft.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogMembersJoined »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMembersJoined.html) - Some members joined the chat or channel. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMembersJoined.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMembersJoined.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogMessagePinned »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMessagePinned.html) - A message was pinned in a chat. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMessagePinned.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogMessagePinned.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogPeerRequested »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPeerRequested.html) - Contains info about a peer that the user shared with the bot after clicking on a [keyboardButtonRequestPeer](https://docs.madelineproto.xyz/API_docs/constructors/keyboardButtonRequestPeer.html) button. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPeerRequested.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPeerRequested.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogPhoneCall »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhoneCall.html) - A phone call. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhoneCall.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhoneCall.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogPhotoChanged »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhotoChanged.html) - The photo of the dialog was changed or deleted. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhotoChanged.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPhotoChanged.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogReadMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogReadMessages.html) - Messages marked as read. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogReadMessages.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogReadMessages.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogScreenshotTaken »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogScreenshotTaken.html) - A screenshot of the chat was taken. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogScreenshotTaken.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogScreenshotTaken.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogSetChatTheme »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatTheme.html) - The chat theme was changed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatTheme.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatTheme.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogSetChatWallPaper »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatWallPaper.html) - The [wallpaper](https://core.telegram.org/api/wallpapers) of the current chat was changed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatWallPaper.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatWallPaper.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogSetTTL »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html) - The Time-To-Live of messages in this chat was changed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetTTL.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogSuggestProfilePhoto »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSuggestProfilePhoto.html) - A new profile picture was suggested using [photos.uploadContactProfilePhoto](https://docs.madelineproto.xyz/API_docs/methods/photos.uploadContactProfilePhoto.html). + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSuggestProfilePhoto.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSuggestProfilePhoto.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogTitleChanged »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTitleChanged.html) - The title of a channel or group has changed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTitleChanged.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTitleChanged.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogTopicCreated »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicCreated.html) - A [forum topic](https://core.telegram.org/api/forum#forum-topics) was created. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicCreated.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicCreated.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogTopicEdited »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicEdited.html) - [Forum topic](https://core.telegram.org/api/forum#forum-topics) information was edited. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicEdited.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicEdited.html#method-list) +* [danog\MadelineProto\EventHandler\Message\Service\DialogWebView »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogWebView.html) - Data from an opened [reply keyboard bot web app](https://core.telegram.org/api/bots/webapps) was relayed to the bot that owns it (user & bot side service message). + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogWebView.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogWebView.html#method-list) +* [danog\MadelineProto\EventHandler\Pinned »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned.html) - Indicates that some messages were pinned/unpinned. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned.html#method-list) +* [danog\MadelineProto\EventHandler\Pinned\PinnedChannelMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedChannelMessages.html) - Represents messages that were pinned/unpinned in a [channel](https://core.telegram.org/api/channel). + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedChannelMessages.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedChannelMessages.html#method-list) +* [danog\MadelineProto\EventHandler\Pinned\PinnedGroupMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedGroupMessages.html) - Represents messages that were pinned/unpinned in a [chat/supergroup](https://core.telegram.org/api/channel). + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedGroupMessages.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedGroupMessages.html#method-list) +* [danog\MadelineProto\EventHandler\Pinned\PinnedPrivateMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedPrivateMessages.html) - Some messages were pinned in a private chat. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedPrivateMessages.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedPrivateMessages.html#method-list) +* [danog\MadelineProto\EventHandler\Privacy »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Privacy.html) - Indicates some privacy rules for a user or set of users. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Privacy.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Privacy.html#method-list) +* [danog\MadelineProto\EventHandler\Query\ButtonQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ButtonQuery.html) - Represents a query sent by the user by clicking on a button. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ButtonQuery.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ButtonQuery.html#method-list) +* [danog\MadelineProto\EventHandler\Query\ChatButtonQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ChatButtonQuery.html) - Represents a query sent by the user by clicking on a button in a chat. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ChatButtonQuery.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ChatButtonQuery.html#method-list) +* [danog\MadelineProto\EventHandler\Query\ChatGameQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ChatGameQuery.html) - Represents a query sent by the user by clicking on a "Play game" button in a chat. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ChatGameQuery.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/ChatGameQuery.html#method-list) +* [danog\MadelineProto\EventHandler\Query\GameQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/GameQuery.html) - Represents a query sent by the user by clicking on a "Play game" button. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/GameQuery.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/GameQuery.html#method-list) +* [danog\MadelineProto\EventHandler\Query\InlineButtonQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/InlineButtonQuery.html) - Represents a query sent by the user by clicking on a button in an inline message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/InlineButtonQuery.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/InlineButtonQuery.html#method-list) +* [danog\MadelineProto\EventHandler\Query\InlineGameQuery »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/InlineGameQuery.html) - Represents a query sent by the user by clicking on a "Play game" button in an inline message. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/InlineGameQuery.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Query/InlineGameQuery.html#method-list) +* [danog\MadelineProto\EventHandler\Story\Story »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/Story.html) - Represents a Telegram story. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/Story.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/Story.html#method-list) +* [danog\MadelineProto\EventHandler\Story\StoryDeleted »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/StoryDeleted.html) - Represents a deleted story. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/StoryDeleted.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/StoryDeleted.html#method-list) +* [danog\MadelineProto\EventHandler\Story\StoryReaction »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/StoryReaction.html) - Represents a reaction to a story. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/StoryReaction.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Story/StoryReaction.html#method-list) +* [danog\MadelineProto\EventHandler\Typing »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing.html) - A user is typing. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing.html#method-list) +* [danog\MadelineProto\EventHandler\Typing\ChatUserTyping »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/ChatUserTyping.html) - The user is preparing a message in a group; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/ChatUserTyping.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/ChatUserTyping.html#method-list) +* [danog\MadelineProto\EventHandler\Typing\SecretUserTyping »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/SecretUserTyping.html) - The user is preparing a message in a secret chat; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/SecretUserTyping.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/SecretUserTyping.html#method-list) +* [danog\MadelineProto\EventHandler\Typing\SupergroupUserTyping »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/SupergroupUserTyping.html) - A user is typing in a [supergroup](https://core.telegram.org/api/channel). + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/SupergroupUserTyping.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/SupergroupUserTyping.html#method-list) +* [danog\MadelineProto\EventHandler\Typing\UserTyping »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/UserTyping.html) - The user is preparing a message; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/UserTyping.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/UserTyping.html#method-list) +* [danog\MadelineProto\EventHandler\User\Blocked »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Blocked.html) - A peer was blocked. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Blocked.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Blocked.html#method-list) +* [danog\MadelineProto\EventHandler\User\BotStopped »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/BotStopped.html) - A bot was stopped or re-started. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/BotStopped.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/BotStopped.html#method-list) +* [danog\MadelineProto\EventHandler\User\Phone »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Phone.html) - A user’s phone number was changed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Phone.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Phone.html#method-list) +* [danog\MadelineProto\EventHandler\User\Status »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status.html) - Contains a status update. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status.html#method-list) +* [danog\MadelineProto\EventHandler\User\Status\Emoji »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Emoji.html) - The [emoji status](https://core.telegram.org/api/emoji-status) of a certain user has changed or was removed. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Emoji.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Emoji.html#method-list) +* [danog\MadelineProto\EventHandler\User\Status\EmptyStatus »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/EmptyStatus.html) - User status has not been set yet. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/EmptyStatus.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/EmptyStatus.html#method-list) +* [danog\MadelineProto\EventHandler\User\Status\LastMonth »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/LastMonth.html) - Online status: last seen last month. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/LastMonth.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/LastMonth.html#method-list) +* [danog\MadelineProto\EventHandler\User\Status\LastWeek »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/LastWeek.html) - Online status: last seen last week. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/LastWeek.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/LastWeek.html#method-list) +* [danog\MadelineProto\EventHandler\User\Status\Offline »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Offline.html) - The user’s offline status. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Offline.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Offline.html#method-list) +* [danog\MadelineProto\EventHandler\User\Status\Online »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Online.html) - Online status of the user. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Online.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Online.html#method-list) +* [danog\MadelineProto\EventHandler\User\Status\Recently »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Recently.html) - Online status: last seen recently. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Recently.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Recently.html#method-list) +* [danog\MadelineProto\EventHandler\User\Username »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Username.html) - Changes were made to the user’s first name, last name or username. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Username.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Username.html#method-list) +* [danog\MadelineProto\VoIP »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/VoIP.html) - This update represents a VoIP Telegram call. + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/VoIP.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/VoIP.html#method-list) + + + + + +### Filters + +MadelineProto offers three different filter types, used to filter updates by type or other attributes, click on the following links for more info: + +* [Simple filters »](https://docs.madelineproto.xyz/docs/FILTERS.html#simple-filters) +* [Attribute filters »](https://docs.madelineproto.xyz/docs/FILTERS.html#attribute-filters) +* [MTProto filters »](https://docs.madelineproto.xyz/docs/FILTERS.html#mtproto-filters) + +### Plugins + +Plugins are also supported, check out the [plugin docs »](https://docs.madelineproto.xyz/docs/PLUGINS.html) for more info! + +### Cron + +All event handler methods marked by the `danog\MadelineProto\EventHandler\Attributes\Cron` attribute are periodically invoked by MadelineProto every `period` seconds: + +```php +use danog\MadelineProto\EventHandler\Attributes\Cron; + +class MyEventHandler extends SimpleEventHandler +{ + /** + * This cron function will be executed forever, every 60 seconds. + */ + #[Cron(period: 60.0)] + public function cron1(): void + { + $this->sendMessageToAdmins("The bot is online, current time ".date(DATE_RFC850)."!"); + } +} +``` + +You can also specify millisecond intervals like `0.5` (500 milliseconds). + +MadelineProto's crons are based on the [danog/loop](https://daniil.it/loop) library: the associated PeriodicLoop instance that can be used to stop or restart the loop is passed as first parameter to the cron, and can also be fetched using `$this->getPeriodicLoop('methodName')`, in this case `$this->getPeriodicLoop('cron1')`. + +### Persisting data and IPC + +All property names returned by the `__sleep` method will be saved in the database/session file, and then automatically loaded when the bot is restarted. + + + +```php +getPlugin(PingPlugin::class); + * + * $plugin->setPongText('UwU'); + * ``` + * + * This will automatically connect to the running instance of the plugin and call the specified method. + */ + public function setPongText(string $pong): void + { + $this->pongText = $pong; + } + + /** + * Returns a list of names for properties that will be automatically saved to the session database (MySQL/postgres/redis if configured, the session file otherwise). + */ + public function __sleep(): array + { + return ['pingCount', 'pongText']; + } + /** + * Initialization logic. + */ + public function onStart(): void + { + $this->logger("The bot was started!"); + $this->logger($this->getFullInfo('MadelineProto')); + + $this->sendMessageToAdmins("The bot was started!"); + } + + /** + * Plugins may be enabled or disabled at startup by returning true or false from this function. + */ + public function isPluginEnabled(): bool + { + return true; + } + + /** + * This cron function will be executed forever, every 60 seconds. + */ + #[Cron(period: 60.0)] + public function cron1(): void + { + $this->sendMessageToAdmins("The ping plugin is online, total pings so far: ".$this->pingCount); + } + + #[FilterText('ping')] + public function pingCommand(Incoming&Message $message): void + { + $message->reply($this->pongText); + $this->pingCount++; + } +} + +``` + + + +You can read and write to those properties from the outside using getter and setter methods, for example: + +```php +use danog\MadelineProto\API; +use MadelinePlugin\Danogentili\PingPlugin; + +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$a = new API('bot.madeline'); + +$handler = $a->getEventHandler(PingPlugin::class); + +$handler->setPongText('UwU'); +``` + +#### Built-in ORM + +You can also directly connect to any database using the same [async MySQL/Postgres/Redis ORM](DATABASE.html) used by MadelineProto internally, [danog/AsyncOrm](https://github.com/danog/AsyncOrm)! + +To do so, simply [specify the database settings](DATABASE.html), and use the `OrmMappedArray` attribute to initialize the async database mapper: +```php + +use danog\AsyncOrm\Annotations\OrmMappedArray; +use danog\AsyncOrm\DbArray; +use danog\AsyncOrm\KeyType; +use danog\AsyncOrm\ValueType; +use danog\MadelineProto\SimpleEventHandler; + +class MyEventHandler extends SimpleEventHandler { + /** + * @var DbArray + * + * This ORM property is also persisted to the database, and is *not* fully kept in RAM at all times. + * + * You can also provide more specific type parameters (i.e. ; etc), + * as well as custom caching settings. + * + * See https://github.com/danog/AsyncOrm for full documentation and more examples. + */ + #[OrmMappedArray(KeyType::STRING, ValueType::INT)] + protected DbArray $ormProperty; + + /** + * This raw property is also persisted to the database, but is always kept in RAM at all times. + */ + private array $rawProperty = []; + + /** + * Returns a list of names for properties that will be automatically saved to the session database (MySQL/postgres/redis if configured, the session file otherwise). + */ + public function __sleep(): array + { + return ['ormProperty', 'rawProperty']; + } + // ... +} +``` + +And use the newly created `$dataStoredOnDb` property to access the database: +```php +// Can be anything serializable, an array, an int, an object +$myData = []; + +// Use the isset method to check whether some data exists in the database +if (isset($this->dataStoredOnDb['yourKey'])) { + // Always when fetching data + $myData = $this->dataStoredOnDb['yourKey']; +} +$this->dataStoredOnDb['yourKey'] = 123; + +$this->dataStoredOnDb['otherKey'] = 0; +unset($this->dataStoredOnDb['otherKey']); + +$this->logger("Count: ".count($this->dataStoredOnDb)); + +foreach ($this->dataStoredOnDb as $key => $value) { + $this->logger($key); + $this->logger($value); +} +``` + +[Psalm](https://psalm.dev) generic typing is supported. + +Each element of the array is stored in a separate database row (MySQL, Postgres or Redis, configured as specified [here »](https://docs.madelineproto.xyz/docs/DATABASE.html)), and is only kept in memory for the number of seconds specified in the cache TTL setting; when the TTL of an element expires, it is individually flushed to the database (if its value was changed), and then the row is removed from RAM. + +Pros of using ORM `DbArray` properties instead of raw properties: + +* Much lower RAM usage, as the entire array is **not** kept in RAM at all times, only the most frequently used elements, according to the configured TTL. +* Added possibility of storing even gigabytes of data in a single `DbArray`, without keeping it all in memory. +* If caching is disabled, the array is **never** kept in RAM, significantly hindering performance but further reducing RAM usage for truly **huge** elements (gigabyte-level). + +Cons of using ORM `DbArray` properties: + +* Reads and writes are not atomic. Since each handler is started in a concurrent green thread (fiber), race conditions may ensue, thus accesses must be syncronized where and if needed using [amphp/sync](https://github.com/amphp/sync). +* Slower than raw properties (**much** slower if caching is fully disabled). + +Both raw properties and ORM `DbArray` properties are ultimately persisted on the database. + +If no database is configured in the global settings, ORM properties behave pretty much like raw array properties, kept entirely in RAM and persisted to the session file. + +### IPC + +You can communicate with the event handler from the outside, by invoking methods on the proxy returned by getEventHandler: + +bot.php: + +```php +getEventHandler(MyEventHandler::class); + +$handler->someMethod(); +``` + +### Restarting + +To forcefully restart and apply changes made to the event handler class, call `$this->restart();`. + +When running via cli, the bot must run in the official [docker image](https://docs.madelineproto.xyz/docs/DOCKER.html) with `restart: always` or inside of a bash while true loop in order for `restart()` to work. + +### Self-restart on webhosts + +When running the event handler via web, MadelineProto will automatically enable a **magical self-restart hack** (callback ID `restarter`), to keep the bot running even on webhosts with limited execution time. + +Locking will also be handled automatically (as well as disconnection from the user that opened the page), so even if you start the script via web several times, only one instance will be running at a time (no need to do flocking manually!). + +>Please note that this self-restart logic may fail in case of a physical server reboot or web server/php-fpm restart, so it's always a better idea to run via CLI, or use a cron to periodically ping the bot's URL. + +It relies on the shutdown function, so you must not set a custom shutdown function in your code, and instead use the **MadelineProto shutdown static API**: + +```php +use danog\MadelineProto\Shutdown; + +$id = Shutdown::addCallback(static function () { + // This function will run on shutdown +}); + +$id = Shutdown::addCallback(static function () { + // This function will run on shutdown +}, 'custom id'); + +$id = Shutdown::addCallback(static function () { + // This function will overwrite the previously set function with custom id +}, 'custom id'); + +$ok = Shutdown::removeCallback($id); +``` + +You can of course pass non-static functions, any type of callable is accepted. +A second optional parameter can also be accepted, containing the ID of the callable: you can use this if you want to later overwrite the callable with another callback, or remove it altogether. + +The `removeCallback` will return true if the callback exists and it was removed correctly, false otherwise. + + +### Multiaccount + +```php +use danog\MadelineProto\EventHandler; +use danog\MadelineProto\Tools; +use danog\MadelineProto\API; +use danog\MadelineProto\Logger; + +// Normal event handler definition as above + +$MadelineProtos = []; +foreach ([ + 'bot.madeline' => 'Bot Login', + 'user.madeline' => 'Userbot login', + 'user2.madeline' => 'Userbot login (2)' +] as $session => $message) { + $MadelineProtos []= new API($session); +} + +API::startAndLoopMulti($MadelineProtos, MyEventHandler::class); +``` + +This will create an event handler class `EventHandler`, create a **combined** MadelineProto session with session files `bot.madeline`, `user.madeline`, `user2.madeline`, and set the event handler class to our newly created event handler. + +Usage is the same as for [the normal event handler](#async-event-driven), with the difference is that multiple accounts can receive and handle updates in parallel, each with its own event handler instance. + +Errors thrown inside of the event loop will be reported to the report peers specified by each separate instance. + +Note that for performance reasons, some internal or connection exceptions not thrown from the EventHandler and exceptions thrown from `onStart` may still get reported (only to, or also to) the last started event handler. + +To dynamically start a new event handler in the background, use `EventLoop::queue(MyEventHandler::startAndLoop(...), 'session.madeline', $settings))`. + +**Warning**: this can only be done with already logged-in sessions, if your sessions aren't logged in yet use `startAndLoopMulti`, or login first. + +```php +use danog\MadelineProto\EventHandler; +use danog\MadelineProto\Tools; +use Revolt\EventLoop; + +// Normal event handler definition as above + +foreach ([ + 'bot.madeline' => 'Bot Login', + 'user.madeline' => 'Userbot login', + 'user2.madeline' => 'Userbot login (2)' +] as $session => $message) { + EventLoop::queue(MyEventHandler::startAndLoop(...), $session); +} + +EventLoop::run(); // Or continue using some other async code... +``` + +### Automatic static analysis + +MadelineProto will automatically analyze the event handler code, blocking execution if performance or security issues are detected! + +For example, the following functions and classes are **banned**, and the specified async counterparts must be used, instead: + +* `file_get_contents`, `file_put_contents`, `fopen` - Please use https://github.com/amphp/file or https://github.com/amphp/http-client, instead +* `curl_exec` - Please use https://github.com/amphp/http-client, instead +* `mysqli_query`, `mysqli_connect`, `mysql_connect`, `PDO`, `mysqli` - Please use https://github.com/amphp/mysql or https://github.com/amphp/postgres, instead +* `fsockopen` - Please use https://github.com/amphp/socket, instead + + +### Avoiding the use of filesystem functions + +For performance reasons, it is heavily *recommended* you **do not** read files from the filesystem at all, even using async functions. + +MadelineProto does not block the usage of async file functions, but 99% of the time they can be replaced with a much faster alternative. + +Here's a list of common uses for files, and what they can be replaced with: + +* [Configuration](#configuration) +* [Creating and uploading text files](#creating-and-uploading-text-files) +* [Logging](#logging) + +#### Configuration + +Configuration can be done entirely using persistent properties, for example **DON'T** do this: + +```php +account->updateStatus(offline: false); + } else { + $this->account->updateStatus(offline: true); + } + } +} +``` + +Do this, instead: + + + +```php +isOnline = $online; + } + + public function isPluginEnabled(): bool + { + // Only users can be online/offline + return $this->getSelf()['bot'] === false; + } + + #[Cron(period: 60.0)] + public function cron(): void + { + $this->account->updateStatus(offline: !$this->isOnline); + } + + #[FilterCommand('online')] + public function toggleOnline(Incoming&Message&FromAdmin $message): void + { + $this->isOnline = true; + } + + #[FilterCommand('offline')] + public function toggleOffline(Incoming&Message&FromAdmin $message): void + { + $this->isOnline = false; + } +} + +``` + + + +And, to toggle the settings from the outside of the bot (for example using a helper bot, or another program): + +```php +getEventHandler(\MadelinePlugin\Danogentili\OnlinePlugin::class)->setOnline($online); +``` + +#### Creating and uploading text files + +Instead of writing to a file and then uploading it, you can use a `ReadableBuffer` to upload a file from a string, instead: + +```php +use Amp\ReadableBuffer; + +$contents = "Something"; + +$this->sendDocument( + peer: 'danogentili', + file: new ReadableBuffer($contents) +); +``` + +#### Logging + +Instead of logging to separate files, you can use MadelineProto's built-in logger, which will write everything to `MadelineProto.log`: + +```php +$this->logger("Some text"); +``` + +You can also use the new `openFileAppendOnly` function, to open a file in write-only append-only mode in onStart and use it in your bot. +You may also wrap the `File` resource returned by openFileAppendOnly in a proper PSR logger using [amphp/log](https://github.com/amphp/log). + +```php +use danog\MadelineProto\SimpleEventHandler; +use danog\MadelineProto\Tools; +use Amp\Log\ConsoleFormatter; +use Amp\Log\StreamHandler; +use Monolog\Logger; + +class MyEventHandler extends SimpleEventHandler { + private Logger $customLogger; + public function onStart() + { + // As documented in https://github.com/amphp/log + $handler = new StreamHandler(Tools::openFileAppendOnly('file.log')); + + $this->customLogger = new Logger('main'); + $this->customLogger->pushHandler($handler); + } + + public function someOtherMethod(): void { + $this->customLogger->debug("Hello, world!"); + $this->customLogger->info("Hello, world!"); + $this->customLogger->notice("Hello, world!"); + $this->customLogger->error("Hello, world!"); + $this->customLogger->alert("Hello, world!"); + } +} +``` + +## Noop + +```php +$MadelineProto = new \danog\MadelineProto\API('bot.madeline'); + +$MadelineProto->start(); +$MadelineProto->setNoop(); +``` +When an [Update](https://docs.madelineproto.xyz/API_docs/types/Update.html) is received, nothing is done. This is useful if you need to populate the internal peer database with peers to avoid `This peer is not present in the internal peer database errors`, but don't need to handle updates. +This is the default. + +## Webhook + +Useful when consuming MadelineProto updates through an API, **not recommended when directly writing MadelineProto bots**. + +Webhooks will **greatly slow down your bot** if used directly inside of PHP code. + +**Only use the [event handler](#async-event-driven) when writing a MadelineProto bot**, because update handling in the **event handler** is completely parallelized and non-blocking. + +Webhooks must **only** be used when consuming MadelineProto updates from another programming language, like for example **Javascript**. + +If your bot is written in PHP, [use the event handler, instead](https://docs.madelineproto.xyz/docs/UPDATES.html). + +```php +$MadelineProto = new \danog\MadelineProto\API('bot.madeline'); + +// NOT recommended when directly writing MadelineProto bots. +// ONLY use when exposing updates via an HTTP API to another language (like Javascript). + +$MadelineProto->setWebhook('https://example.com'); +``` + +## getUpdates + +Only useful when consuming MadelineProto updates through an API in another language (like Javascript), **absolutely not recommended when directly writing MadelineProto bots**. + +`getUpdates` will **greatly slow down your bot** if used directly inside of PHP code. + +**Only use the [event handler](#async-event-driven) when writing a MadelineProto bot**, because update handling in the **event handler** is completely parallelized and non-blocking. + +`getUpdates` must **only** be used when consuming MadelineProto updates from another programming language, like for example **Javascript**. + +If your bot is written in PHP, [use the event handler, instead](https://docs.madelineproto.xyz/docs/UPDATES.html). + +```php +$MadelineProto = new \danog\MadelineProto\API('bot.madeline'); + +// NOT recommended when directly writing MadelineProto bots. +// ONLY use when exposing updates via an HTTP API to another language (like Javascript). + +// DO NOT use this to handle updates in PHP code, it will cause crashes. + +// Same parameters as for bot API getUpdates +echo json_encode($MadelineProto->getUpdates($_GET)); +``` + +Next section \ No newline at end of file diff --git a/docs/docs/UPDATES_INTERNAL.md b/docs/docs/UPDATES_INTERNAL.md new file mode 100644 index 0000000000..e2eb91d605 --- /dev/null +++ b/docs/docs/UPDATES_INTERNAL.md @@ -0,0 +1,29 @@ +--- +title: Working with updates in MTProto +description: Apart from the basic operations required to work with MTProto update sequences, implementations also have to take care to postpone updates received via the socket while filling gaps in the event and Update sequences, as well as avoid filling gaps in the same sequence. +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- + +# Working with updates in MTProto + +Apart from the basic operations [required to work with MTProto update sequences](https://core.telegram.org/api/updates), implementations also have to take care to postpone updates received via the socket while filling gaps in the event and Update sequences, as well as avoid filling gaps in the same sequence. + +An interesting and easy way this can be implemented, instead of using various locks, is by running background threads, like in [MadelineProto](https://github.com/danog/MadelineProto/tree/v8/src/Loop/Update). + +* A background _feeder_ thread for each [sequence](#event-sequences), associated to a FIFO queue is initialized and then paused ([event sequence FeedLoop](https://github.com/danog/MadelineProto/blob/2672728fe3b7ddbc03c59299e2483e6708919896/src/Loop/Update/FeedLoop.php), [common sequence SeqLoop](https://github.com/danog/MadelineProto/blob/2672728fe3b7ddbc03c59299e2483e6708919896/src/Loop/Update/SeqLoop.php)). +* Another set of _updater_ threads is started: one for the common [sequence](#event-sequences), one for each channel [sequence](#event-sequences) ([UpdateLoop](https://github.com/danog/MadelineProto/blob/2672728fe3b7ddbc03c59299e2483e6708919896/src/Loop/Update/UpdateLoop.php)). + +When a getDifference is requested, a signal resumes the _updater_ thread, which starts fetching difference until the gap is filled, then it pauses itself again. + +When a new Updates constructor or event is received, it is added to the FIFO queue of the correspondent _feeder_ thread, and a signal is sent to said thread. +The signal wakes up the thread, which starts parsing the queued events: as per [update handling](#update-handling), duplicates are eliminated, correct events are accepted and the [state](#fetching-state) is updated. +When a gap is encountered, the _updater_ thread is resumed: the _feeder_ thread waits until the _updater_ thread is paused again. +Finally, the manually fetched difference is prepended to the _feeder_ FIFO queue, to parse it before any additional update that was fetched from the socket while fetching the difference. + +The simplicity of this approach is in its sequentiality: + +* Each thread can only execute one action at a time. +* Each event is fetched one by one from the FIFO queue +* Threads cannot start handling a new event received from the socket while fetching the difference, or while still handling the previous one +* Only one part of the application at a time can trigger a getDifference, to avoid re-fetching and re-saving the same difference twice. diff --git a/docs/docs/UPGRADING.md b/docs/docs/UPGRADING.md new file mode 100644 index 0000000000..4cbc8e138d --- /dev/null +++ b/docs/docs/UPGRADING.md @@ -0,0 +1,273 @@ +--- +title: "Upgrading from MadelineProto v7 to v8" +description: "MadelineProto v8 is a major MadelineProto update, that removes a large number of long-deprecated APIs: I've created this upgrade checklist, to simplify the upgrade process." +nav_order: 29 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Upgrading from MadelineProto v7 to v8 + +MadelineProto v8 is a major MadelineProto update, that removes a large number of long-deprecated APIs: I've created this upgrade checklist, to simplify the upgrade process. + +A much simpler way to check for backwards incompatible changes is to scan your project using [Psalm](https://psalm.dev), it's truly a lifesaver! + +Make sure to recreate the session too, as v7 sessions are not compatible with v8. + +## Settings + +The main breaking change is the removal of array settings, deprecated since v6. +You can use object settings, instead, see [here »](https://docs.madelineproto.xyz/docs/SETTINGS.html) for the full documentation, here's a brief conversion example: + +Before: + +```php +$settings = ['app_info' => ['api_id' => 123456, 'api_hash' => 'xxx']]; +``` + +After: + +```php +$settings = (new \danog\MadelineProto\Settings\AppInfo) + ->setApiId(123456) + ->setApiHash('xxx'); +``` + +See [here »](https://docs.madelineproto.xyz/docs/SETTINGS.html) for the full list of MadelineProto v8 settings. + +Please note that since v8, usage of invalid setting setters and getters will throw an exception (in v7 those usages were simply ignored). + +## Amp v3 + +MadelineProto v8 switches to using fibers and Amp v3 libraries. + +Check out the changelogs of the [amphp](https://github.com/amphp/) libraries for a list of breaking changes introduced with the update of Amp v3. + +Regarding MadelineProto, `yield` support in the event handler was removed and the `async` and `loop` methods were removed, along with all the Generator combinator methods (`Tools::after`, `Tools::all`, `Tools::any`, `Tools::first`, et cetera). + +Instead, you can use the new async Amp v3 APIs, which do not require special keywords like `yield` anymore! + +Before: + +```php +class MyEventHandler { + public function onUpdateNewMessage(array $update): \Generator + { + $this->callForkDefer(function () { + yield $this->sleep(1.0); + yield $this->messages->sendMessage(...); + }); + yield $this->messages->sendMessage(...); + } +} +``` + +After: + +```php +use Revolt\EventLoop; +use Amp\delay; + +class MyEventHandler { + public function onUpdateNewMessage(array $update): void + { + EventLoop::queue(function () { + delay(1.0); + $this->messages->sendMessage(...); + }); + $this->messages->sendMessage(...); + } +} +``` + +Before: + +```php +$API = new \danog\MadelineProto\API('session.madeline'); +$API->async(true); +$API->loop(function () use ($API) { + yield $API->messages->sendMessage(); +}); +``` + +After: + +```php +$API = new \danog\MadelineProto\API('session.madeline'); +$API->messages->sendMessage(); +``` + + +## Loop API + +The `danog/loop` library was refactored, making it much more stable, and fixing some coroutine leaks which may have occurred in certain conditions. + +All loop classes were moved to the `danog\Loop` namespace, and the API now works with seconds instead of milliseconds. + +Before: + +```php +use \danog\Loop\Generic\GenericLoop; + +class ZeusHandler extends EventHandler +{ + public function genLoop() + { + yield $this->account->updateStatus([ + 'offline' => false + ]); + return 20 * 1000; + } + public function onStart() + { + $genLoop = new GenericLoop([$this, 'genLoop'], 'update Status'); + $genLoop->start(); + } +} +``` + +After: + +```php +use \danog\Loop\GenericLoop; + +class ZeusHandler extends EventHandler +{ + public function genLoop(): ?float + { + $this->account->updateStatus([ + 'offline' => false + ]); + return 20.0; + } + public function onStart() + { + $genLoop = new GenericLoop($this->genLoop(...), 'update Status'); + $genLoop->start(); + } +} +``` + + +## Event handler + +- Removed the long-deprecated `setEventHandler` and `$MadelineProto->startAndLoop` methods, you should use `MyEventHandler::startAndLoop`, instead. +- Removed support for the deprecated onLoop method. + +Most importantly, the `EventHandler` class was deprecated, please use the `SimpleEventHandler` class now. + +The `SimpleEventHandler` class still supports the legacy `onUpdatexxx` event handler methods, however starting from v8 **they are not covered by the backwards compatibility promise anymore**. + +This means that the structure of updates received in `onUpdatexxx` event handler methods will change at any time, including in minor versions of MadelineProto v8: fields will be removed and changed with only a minor note will be added to the changelog. + +The new [filter-based event API »](https://docs.madelineproto.xyz/docs/FILTERS.html) should be used instead of `onUpdatexxx` methods: it's much simpler to use, and **is** covered by the backwards compatibility promise, so its fields will **not** change or be removed in minor versions of MadelineProto v8. + + +```php +class MyEventHandler extends \danog\MadelineProto\EventHandler { + +} + +$settings = ['app_info' => ['api_id' => 123456, 'api_hash' => 'xxx']]; +$API = new \danog\MadelineProto\API('bot.madeline', $settings); +$API->startAndLoop(MyEventHandler::class); +``` + +After: + +```php +class MyEventHandler extends \danog\MadelineProto\SimpleEventHandler { + +} + +$settings = (new \danog\MadelineProto\Settings\AppInfo) + ->setApiId(123456) + ->setApiHash('xxx'); +MyEventHandler::startAndLoop('bot.madeline', $settings); +``` + +Also, MadelineProto will actively prevent new event handler code from using blocking functions like `file_get_contents`, `file_put_contents`, `curl`: see [here »](https://docs.madelineproto.xyz/docs/UPDATES.html#automatic-static-analysis) for a more detailed list of async alternatives. + +## No more snake_case methods + +You can't use `snake_case` variants of MadelineProto methods anymore (deprecated since v5). + +Before: + +```php +$info = $API->get_info('danogentili'); +$me = $API->get_self(); +``` + +After: + + +```php +$info = $API->getInfo('danogentili'); +$me = $API->getSelf(); +``` + +## Full breaking changelog + +- [BC] REMOVED: the `getDialogs` method, please use the `getDialogIds` method, instead. +- [BC] CHANGED: all `peerUser`, `peerChat`, `peerChannel` constructors were replaced with integer IDs. +- [BC] REMOVED: internal `Input*` fields returned by `getInfo` +- [BC] REMOVED: the long-deprecated `setEventHandler` method, you should use `MyEventHandler::startAndLoop`, instead. +- [BC] REMOVED: the deprecated $MadelineProto->startAndLoop method. Please use MyEventHandler::startAndLoop instead, remove any new \danog\MadelineProto\API line you have in your code if you're using only the event handler. +- [BC] REMOVED: support for the deprecated onLoop method. +- [BC] REMOVED: the setCallback update handling method, please use the event handler with onAny instead. +- [BC] REMOVED: Promise wrapper types from return types everywhere. +- [BC] REMOVED: Removed the legacy MadelineProto Loop APIs, the new github.com/danog/loop APIs do not support generators anymore. +- [BC] REMOVED: Removed support for the long-deprecated snake_case methods, now only camelCase is supported (get_info will not work, only getInfo; and so on). +- [BC] REMOVED: Method danog\MadelineProto\VoIP#whenCreated() was removed +- [BC] REMOVED: Method danog\MadelineProto\StrTools::methodEscape() was removed +- [BC] REMOVED: Method danog\MadelineProto\StrTools::typeEscape() was removed +- [BC] REMOVED: Method danog\MadelineProto\Tools::after() was removed +- [BC] REMOVED: Method danog\MadelineProto\Tools::all() was removed +- [BC] REMOVED: Method danog\MadelineProto\Tools::any() was removed +- [BC] REMOVED: Method danog\MadelineProto\Tools::callForkDefer() was removed +- [BC] REMOVED: Method danog\MadelineProto\Tools::call() was removed +- [BC] REMOVED: Method danog\MadelineProto\Tools::first() was removed +- [BC] REMOVED: Method danog\MadelineProto\Tools::getVar() was removed +- [BC] REMOVED: Method danog\MadelineProto\Tools::hasVar() was removed +- [BC] REMOVED: Method danog\MadelineProto\Tools::setVar() was removed +- [BC] REMOVED: Method danog\MadelineProto\Tools::some() was removed +- [BC] REMOVED: Method danog\MadelineProto\Tools::timeout() was removed +- [BC] REMOVED: Method danog\MadelineProto\Tools::timeoutWithDefault() was removed +- [BC] REMOVED: Method danog\MadelineProto\Tools::wait() was removed +- [BC] REMOVED: Method danog\MadelineProto\Wrappers\Events#setEventHandler() was removed +- [BC] REMOVED: Method danog\MadelineProto\Wrappers\Loop#loopFork() was removed +- [BC] REMOVED: Method danog\MadelineProto\Wrappers\Loop#loop() was removed +- [BC] CHANGED: the isSupergroup, toSupergroup, fromSupergroup methods to a DialogId class, which also has many other useful methods to work with bot API IDs. +- [BC] CHANGED: All download methods except for downloadToFile and downloadToDir now return null instead of true. +- [BC] CHANGED: All `danog\MadelineProto\VoIP` constants were replaced with the `danog\MadelineProto\VoIP\CallState`, `danog\MadelineProto\VoIP\VoIPState` enums. +- [BC] CHANGED: The `danog\MadelineProto\VoIP` class was completely refactored, check out the [new API](docs.madelineproto.xyz/PHP/danog/MadelineProto/VoIP.html) for more info. +- [BC] CHANGED: ORM properties can directly be iterated upon in a foreach without using getIterator (which will not return an amphp iterator anymore). +- [BC] CHANGED: Finalized a lot of classes that were mistakenly not marked as final. +- [BC] CHANGED: Made some internal details fully private. +- [BC] CHANGED: The session is now contained in a directory, instead of separate files. +- [BC] CHANGED: Automatic API ID fetching via the my.telegram.org wrapper was temporarily removed due to possible IP bans on webhosts. +- [BC] CHANGED: onStart now blocks all updates until it finishes executing. Use the amphp async primitives to start long-running processes in onStart like starting a webserver. +- [BC] CHANGED: You can't assign arbitrary properties to an API instance anymore. +- [BC] CHANGED: Switched to a custom markdown parser with bot API [MarkdownV2](https://core.telegram.org/bots/api#markdownv2-style) syntax, which differs from the previous Markdown syntax supported by parsedown. +- [BC] CHANGED: Markdown text can't contain HTML anymore. +- [BC] CHANGED: danog\MadelineProto\StrTools::methodEscape() was marked "@internal" +- [BC] CHANGED: danog\MadelineProto\StrTools::typeEscape() was marked "@internal" +- [BC] CHANGED: danog\MadelineProto\Tools::getVar() was marked "@internal" +- [BC] CHANGED: danog\MadelineProto\Tools::setVar() was marked "@internal" +- [BC] CHANGED: Parameter 0 of danog\MadelineProto\Tools::callFork() changed name from promise to callable +- [BC] CHANGED: Parameter 0 of danog\MadelineProto\Tools::genVectorHash() changed name from ints to longs +- [BC] CHANGED: Parameter 1 of danog\MadelineProto\Tools::callFork() changed name from actual to args +- [BC] CHANGED: The parameter $token of danog\MadelineProto\Tools::flock() changed from Amp\Promise|null to Amp\Cancellation|null +- [BC] CHANGED: The parameter $token of danog\MadelineProto\Tools::flock() changed from Amp\Promise|null to a non-contravariant Amp\Cancellation|null +- [BC] CHANGED: The return type of danog\MadelineProto\Tools::callFork() changed to Amp\Future +- [BC] CHANGED: The return type of danog\MadelineProto\Tools::echo() changed from Amp\Promise to the non-covariant void +- [BC] CHANGED: The return type of danog\MadelineProto\Tools::echo() changed from Amp\Promise to void +- [BC] CHANGED: The return type of danog\MadelineProto\Tools::flock() changed from Amp\Promise to Closure|null +- [BC] CHANGED: The return type of danog\MadelineProto\Tools::flock() changed from Amp\Promise to the non-covariant Closure|null +- [BC] CHANGED: The return type of danog\MadelineProto\Tools::readLine() changed from Amp\Promise to string +- [BC] CHANGED: The return type of danog\MadelineProto\Tools::readLine() changed from Amp\Promise to the non-covariant string +- [BC] CHANGED: The return type of danog\MadelineProto\Tools::sleep() changed from Amp\Promise to the non-covariant void +- [BC] CHANGED: The return type of danog\MadelineProto\Tools::sleep() changed from Amp\Promise to void +- [BC] CHANGED: The return type of danog\MadelineProto\Wrappers\Events#getEventHandler() changed from danog\MadelineProto\EventHandler to danog\MadelineProto\EventHandler|danog\MadelineProto\Ipc\EventHandlerProxy|__PHP_Incomplete_Class|null +- [BC] CHANGED: The return type of danog\MadelineProto\Wrappers\Events#getEventHandler() changed from danog\MadelineProto\EventHandler to the non-covariant danog\MadelineProto\EventHandler|danog\MadelineProto\Ipc\EventHandlerProxy|__PHP_Incomplete_Class|null + +Next section \ No newline at end of file diff --git a/docs/docs/USING_METHODS.md b/docs/docs/USING_METHODS.md new file mode 100644 index 0000000000..9b13502eee --- /dev/null +++ b/docs/docs/USING_METHODS.md @@ -0,0 +1,103 @@ +--- +title: "Using methods" +description: "There are simplifications for many, if not all of, these methods." +nav_order: 30 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Using methods + +There are simplifications for many, if not all of, these methods. + +A list of all of the methods that can be called with MadelineProto can be found here: [here (layer 179)](https://docs.madelineproto.xyz/API_docs/). + + [Now fully async!](https://docs.madelineproto.xyz/docs/ASYNC.html) + +* [Named arguments](#named-arguments) +* [Peers](#peers) +* [Files](https://docs.madelineproto.xyz/docs/FILES.html) +* [Secret chats](#secret-chats) +* [Entities (Markdown & HTML)](#entities) +* [reply_markup (keyboards & inline keyboards)](#reply_markup) +* [bot API objects](#bot-api-objects) +* [No result](#no-result) +* [Multiple method calls](#multiple-method-calls) +* [Cancellation](#cancellation) +* [FULL API Documentation with descriptions](https://docs.madelineproto.xyz/API_docs/methods/) + +## Named arguments + +You must use named arguments instead of arrays to provide method arguments, which allows for much cleaner syntax: + +```php +$MadelineProto->messages->sendMessage(peer: '@danogentili', message: 'Testing MadelineProto...'); +``` + +## Peers +[Full example](https://github.com/danog/MadelineProto/blob/v8/bot.php) + +If an object of type User, InputUser, Chat, InputChannel, Peer or InputPeer must be provided as a parameter to a method, you can substitute it with the user/group/channel's username (`@username`), bot API id (`-1029449`, `1249421`, `-100412412901`), or update. + +```php +$MadelineProto->messages->sendMessage(peer: '@danogentili', message: 'Testing MadelineProto...'); +``` + + +## Secret chats +[Full example](https://github.com/danog/MadelineProto/blob/v8/examples/secret_bot.php) +If an object of type InputSecretChat must be provided as a parameter to a method, you can substitute it with the secret chat's id, the updateNewEncrypted message or the decryptedMessage: + +```php +$MadelineProto->messages->sendEncrypted(peer: $update, message: ['_' => 'decryptedMessage', 'ttl' => 0, 'message' => 'Hi']); +``` + + +## Entities +[Full example](https://github.com/danog/MadelineProto/blob/v8/tests/testing.php) +Methods that allow sending message entities ([messages.sendMessage](http://docs.madelineproto.xyz/API_docs/methods/messages_sendMessage.html) for example) also have an additional `parse_mode` parameter that enables or disables html/markdown parsing of the message to be sent. + +```php +$MadelineProto->messages->sendMessage(peer: '@danogentili', message: '[Testing Markdown in MadelineProto](https://docs.madelineproto.xyz)', parse_mode: 'Markdown'); +$MadelineProto->messages->sendMessage(peer: '@danogentili', message: 'Testing HTML in MadelineProto', parse_mode: 'HTML'); +``` + + + +## reply_markup +reply_markup accepts bot API reply markup objects as well as MTProto ones. + +```php +$bot_API_markup = ['inline_keyboard' => + [ + [ + ['text' => 'MadelineProto docs', 'url' => 'https://docs.madelineproto.xyz'], + ['text' => 'MadelineProto channel', 'url' => 'https://t.me/MadelineProto'] + ] + ] +]; +$MadelineProto->messages->sendMessage(peer: '@danogentili', message: 'lel', reply_markup: $bot_API_markup); +``` + + +## Bot API objects +To convert the results of methods to bot API objects you can use the MTProtoToBotAPI method. + +```php +$bot_API_object = $MadelineProto->MTProtoToBotAPI($MadelineProto->messages->sendMessage(peer: '@danogentili', message: 'lel')); +``` + +MadelineProto also [supports bot API file IDs when working with files](FILES.html) + + +## No result + +See [ignored async](https://docs.madelineproto.xyz/docs/ASYNC.html#ignored-async). + +## Multiple method calls + +See [multiple async](https://docs.madelineproto.xyz/docs/ASYNC.html#multiple-async). + +## Cancellation + +See [cancellation »](https://docs.madelineproto.xyz/docs/ASYNC.html#cancellation). + +Next section \ No newline at end of file diff --git a/docs/favicons/android-chrome-192x192.png b/docs/favicons/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..f40588bfa3587e0a4adcfebfafb10a78eacaa6fb GIT binary patch literal 30187 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/favicons/apple-touch-icon.png b/docs/favicons/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..56f9f43bf7d9a87974321081f701a4be296afde7 GIT binary patch literal 9805 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 + + + + + #00aba9 + + + diff --git a/docs/favicons/favicon-16x16.png b/docs/favicons/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..a40344625c4c1a5efeae6728a979338a17b4431f GIT binary patch literal 830 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47}o~)gt-343m*0Cz2CbNqU6ni z8`le0{CWHJ--jO;Z6{odod5sVKZw-j@Y(0wC;q$t>D#^6r)=8p1K zoF?7~oc;agD~QT(H(wpKYq}LM>tVujh{*Nm`R7BYo^tB=e*f*ao3D@9Ha;xdaMx|- zms5|v9eZ%bwdYRr#^bh4KW@JTs{eND^pS$i<>+nSIX|C&{`>gjIgj4Q^Nu`QeEf(VP{A9J3APQ7r|_I~c+1jb)~NswPKH!q)npb!tgu&BAFgrt_asBBY? zoQzyvgRDwjkBPilPmPL*xO!kcxv5%6p zijtz1mYkA`w5Wunl(ejjw4_AY^L2-TPTT0|;us=v*|o@BFk}ke)ClTo5lBgvV!nL#@@z*2k4Z)6$_#&bhB>fQccTe6)B3JF2-n;G_%{Q+t)oa=C?cVW)-}iZktQTEX@|r#pyL@lUHx3vIVCg!0JLx5oB#j- literal 0 HcmV?d00001 diff --git a/docs/favicons/favicon-32x32.png b/docs/favicons/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..93db99c6344d4aeda2001f1ebeb36b21d430170d GIT binary patch literal 1685 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 NX{U}(r}XXb{|7T>4TAsx literal 0 HcmV?d00001 diff --git a/docs/favicons/manifest.json b/docs/favicons/manifest.json new file mode 100644 index 0000000000..c3e8c5f0b1 --- /dev/null +++ b/docs/favicons/manifest.json @@ -0,0 +1,17 @@ +{ + "name": "MadelineProto", + "icons": [ + { + "src": "\/favicons\/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image\/png" + }, + { + "src": "\/favicons\/android-chrome-256x256.png", + "sizes": "256x256", + "type": "image\/png" + } + ], + "theme_color": "#00aba9", + "display": "standalone" +} diff --git a/docs/favicons/mstile-150x150.png b/docs/favicons/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..4e685d986670544c9825355a6be78483bbdcad99 GIT binary patch literal 14277 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 \ No newline at end of file diff --git a/docs/getFullDialogs.md b/docs/getFullDialogs.md new file mode 100644 index 0000000000..4b1bef511b --- /dev/null +++ b/docs/getFullDialogs.md @@ -0,0 +1,22 @@ +--- +title: getFullDialogs +description: getFullDialogs parameters, return type and example +redirect_from: /get_full_dialogs.html +grand_parent: "Telegram RPC API" +parent: "Methods" +--- +## Method: getDialogs + +Gets full list of dialogs + +### Return type: Array of [Dialog objects](API_docs/types/Dialog.html) + +### Example ([now fully async!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +$Dialogs = $MadelineProto->getFullDialogs(); +``` + +Or, if you're into Lua: + diff --git a/docs/getFullInfo.md b/docs/getFullInfo.md new file mode 100644 index 0000000000..a1c4cd326a --- /dev/null +++ b/docs/getFullInfo.md @@ -0,0 +1,25 @@ +--- +title: getFullInfo +description: getFullInfo parameters, return type and example +redirect_from: /get_full_info.html +grand_parent: "Telegram RPC API" +parent: "Methods" +--- +## Method: getFullInfo + + +### Parameters: + +| Name | Type | +|----------|---------------| +|id| A username, a bot API chat id, a tg-cli chat id, a [Chat](API_docs/types/Chat.html), a [User](API_docs/types/User.html), an [InputPeer](API_docs/types/InputPeer.html), an [InputUser](API_docs/types/InputUser.html), an [InputChannel](API_docs/types/InputChannel.html), a [Peer](API_docs/types/Peer.html), or a [Chat](API_docs/types/Chat.html) object| + +### Return type: [FullInfo](FullInfo.html) + +### Example ([now fully async!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +$Chat = $MadelineProto->getFullInfo($id); +``` + diff --git a/docs/getId.md b/docs/getId.md new file mode 100644 index 0000000000..4aeb568694 --- /dev/null +++ b/docs/getId.md @@ -0,0 +1,25 @@ +--- +title: getId +description: getId parameters, return type and example +grand_parent: "Telegram RPC API" +parent: "Methods" +--- +## Method: getId + +Gets a bot API ID from a username, update, message, or other related constructors. + +### Parameters: + +| Name | Type | +|----------|---------------| +|id| A username, a bot API chat id, a tg-cli chat id, a [Chat](API_docs/types/Chat.html), a [User](API_docs/types/User.html), an [InputPeer](API_docs/types/InputPeer.html), an [InputUser](API_docs/types/InputUser.html), an [InputChannel](API_docs/types/InputChannel.html), a [Peer](API_docs/types/Peer.html), or a [Chat](API_docs/types/Chat.html) object| + +### Return type: integer + +### Example ([now fully async!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +$id = $MadelineProto->getId($id); +``` + diff --git a/docs/getInfo.md b/docs/getInfo.md new file mode 100644 index 0000000000..6c2903feab --- /dev/null +++ b/docs/getInfo.md @@ -0,0 +1,25 @@ +--- +title: getInfo +description: getInfo parameters, return type and example +redirect_from: /get_info.html +grand_parent: "Telegram RPC API" +parent: "Methods" +--- +## Method: getInfo + + +### Parameters: + +| Name | Type | +|----------|---------------| +|id| A username, a bot API chat id, a tg-cli chat id, a [Chat](API_docs/types/Chat.html), a [User](API_docs/types/User.html), an [InputPeer](API_docs/types/InputPeer.html), an [InputUser](API_docs/types/InputUser.html), an [InputChannel](API_docs/types/InputChannel.html), a [Peer](API_docs/types/Peer.html), or a [Chat](API_docs/types/Chat.html) object| + +### Return type: [Info](Info.html) + +### Example ([now fully async!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +$Chat = $MadelineProto->getInfo($id); +``` + diff --git a/docs/getPwrChat.md b/docs/getPwrChat.md new file mode 100644 index 0000000000..6ca993efca --- /dev/null +++ b/docs/getPwrChat.md @@ -0,0 +1,26 @@ +--- +title: getPwrChat +description: getPwrChat parameters, return type and example +redirect_from: /get_pwr_chat.html +grand_parent: "Telegram RPC API" +parent: "Methods" +--- +## Method: getPwrChat + + +### Parameters: + +| Name | Type | +|----------|---------------| +|id| A username, a bot API chat id, a tg-cli chat id, a [Chat](API_docs/types/Chat.html), a [User](API_docs/types/User.html), an [InputPeer](API_docs/types/InputPeer.html), an [InputUser](API_docs/types/InputUser.html), an [InputChannel](API_docs/types/InputChannel.html), a [Peer](API_docs/types/Peer.html), or a [Chat](API_docs/types/Chat.html) object| +|fullfetch| Optional, a boolean that if set to true (the default) fetches full info (chat photo, invite link, bot info, common_chats_count, phone_calls_available, phone_calls_private, can_set_username, can_view_participants, participants)| + +### Return type: [PWRTelegram Chat](Chat.html) + +### Example ([now fully async!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +$Chat = $MadelineProto->getPwrChat($id); +``` + diff --git a/docs/getSelf.md b/docs/getSelf.md new file mode 100644 index 0000000000..0c3701d809 --- /dev/null +++ b/docs/getSelf.md @@ -0,0 +1,22 @@ +--- +title: getSelf +description: getSelf parameters, return type and example +redirect_from: /get_self.html +grand_parent: "Telegram RPC API" +parent: "Methods" +--- +## Method: getSelf + +Gets info about the currently logged-in user. + +No parameters + +### Return type: [User object](API_docs/types/User.html) + +### Example ([now fully async!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +$User = $MadelineProto->getSelf(); +``` + diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000000..6c6a6890b3 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,1095 @@ +--- +title: MadelineProto +description: PHP client/server for the telegram MTProto protocol (a better tg-cli) +nav_order: 1 +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# MadelineProto, a PHP MTProto telegram client + +Created by Daniil Gentili + +`#StandWithUkraine 🇺🇦` + +Do join the official channel, [@MadelineProto](https://t.me/MadelineProto) and the [support groups](https://t.me/pwrtelegramgroup)! + +Approved by Telegram! + +## What's this? + +This library can be used to easily interact with Telegram **without** the bot API, just like the official apps. + +It can login with a phone number (MTProto API), or with a bot token (MTProto API, **no bot API involved!**). + +[It is now fully async](https://docs.madelineproto.xyz/docs/ASYNC.html)! + +## Getting started ([now fully async!](https://docs.madelineproto.xyz/docs/ASYNC.html)) + +```php +start(); + +$me = $MadelineProto->getSelf(); + +$MadelineProto->logger($me); + +if (!$me['bot']) { + $MadelineProto->messages->sendMessage(peer: '@stickeroptimizerbot', message: "/start"); + + $MadelineProto->channels->joinChannel(channel: '@MadelineProto'); + + try { + $MadelineProto->messages->importChatInvite(hash: 'https://t.me/+Por5orOjwgccnt2w'); + } catch (\danog\MadelineProto\RPCErrorException $e) { + $MadelineProto->logger($e); + } +} +$MadelineProto->echo('OK, done!'); +``` + +Try running this code in a browser or in a console! + + +Tip: if you receive an error (or nothing), [send us](https://t.me/pwrtelegramgroup) the error message and the `MadelineProto.log` file that was created in the same directory (if running from a browser). + +## Made with MadelineProto + +The following open source projects were created using MadelineProto: you can directly install them, or explore the source code as direct examples on how to use MadelineProto's many features! + +* [magnaluna webradio](https://magna.madelineproto.xyz) - Multifeatured Telegram VoIP webradio +* [TelegramApiServer](https://github.com/xtrime-ru/TelegramApiServer) - Fast, simple, async php telegram api server: an HTTP JSON API for MadelineProto! +* [`simpleBot.php`](https://github.com/danog/MadelineProto/blob/v8/examples/simpleBot.php) - Extremely basic example +* [`tgstories_dl_bot.php`](https://github.com/danog/MadelineProto/blob/v8/examples/tgstories_dl_bot.php) - Source code of [@tgstories_dl_bot](https://t.me/tgstories_dl_bot) - Bot to download any Telegram Story! +* [`downloadRenameBot.php`](https://github.com/danog/downloadRenameBot/blob/main/bot.php) - Download files by URL and rename Telegram files using this async parallelized bot! +* [`secret_bot.php`](https://github.com/danog/MadelineProto/blob/v8/examples/secret_bot.php) - Secret chat bot! +* [`pipesbot.php`](https://github.com/danog/pipesbot) - Creating inline bots and using other inline bots via a userbot! +* [`bot.php`](https://github.com/danog/MadelineProto/blob/v8/examples/bot.php) - Examples for how to use filters, updates, get download links for any file, Telegram Stories and much more! + +Some of MadelineProto's core components are also available as separate, standalone libraries: + +- [danog/async-orm](https://github.com/danog/AsyncOrm) - Async ORM based on AMPHP v3 and fibers. +- [danog/telegram-entities](https://github.com/danog/telegram-entities) - A library to work with Telegram UTF-16 styled text entities. +- [danog/tg-file-decoder](https://github.com/danog/tg-file-decoder) - A library to work with Telegram bot API file IDs. +- [danog/loop](https://github.com/danog/loop) - Loop/actor model abstraction for AMPHP. +- [danog/ipc](https://github.com/danog/ipc) - Async IPC component for AMPHP. +- [danog/dns-over-https](https://github.com/danog/dns-over-https) - Async DNS-over-HTTPS resolution for AMPHP. + +Want to add your own open-source project to this list? [Click here!](https://docs.madelineproto.xyz/FOSS.html) + +## Documentation + +* [Creating a client](https://docs.madelineproto.xyz/docs/CREATING_A_CLIENT.html) - This page explains how to create a MadelineProto instance. +* [Login](https://docs.madelineproto.xyz/docs/LOGIN.html) - There are many ways you can login with MadelineProto. + * [Getting permission to use the telegram API](https://docs.madelineproto.xyz/docs/LOGIN.html#getting-permission-to-use-the-telegram-api) + * [Automatic](https://docs.madelineproto.xyz/docs/LOGIN.html#automatic) + * [Manual (user)](https://docs.madelineproto.xyz/docs/LOGIN.html#manual-user) + * [API ID](https://docs.madelineproto.xyz/docs/LOGIN.html#api-id) + * [Manual (bot)](https://docs.madelineproto.xyz/docs/LOGIN.html#manual-bot) + * [QR code login (user)](https://docs.madelineproto.xyz/docs/LOGIN.html#qr-code-user) +* [Features](https://docs.madelineproto.xyz/docs/FEATURES.html) - MadelineProto can do everything official clients can do, and more! +* [Requirements](https://docs.madelineproto.xyz/docs/REQUIREMENTS.html) - MadelineProto requires the mbstring, xml, json, fileinfo, gmp, openssl, iconv, gd extensions to function properly. +* [MadelineProto on Docker](https://docs.madelineproto.xyz/docs/DOCKER.html) - MadelineProto offers an official MadelineProto docker image for the linux/amd64, linux/arm64 and linux/riscv64 platforms @ hub.madelineproto.xyz/danog/madelineproto. + * [Getting started](https://docs.madelineproto.xyz/docs/DOCKER.html#getting-started) + * [CLI bot (recommended)](https://docs.madelineproto.xyz/docs/DOCKER.html#cli-bot-recommended) + * [Databases on docker](https://docs.madelineproto.xyz/docs/DOCKER.html#databases-on-docker) + * [Web docker](https://docs.madelineproto.xyz/docs/DOCKER.html#web-docker) + * [Custom extensions](https://docs.madelineproto.xyz/docs/DOCKER.html#custom-extensions) +* [Installation](https://docs.madelineproto.xyz/docs/INSTALLATION.html) - There are various ways to install MadelineProto: + * [Simple](https://docs.madelineproto.xyz/docs/INSTALLATION.html#simple) + * [Composer from existing project](https://docs.madelineproto.xyz/docs/INSTALLATION.html#composer-from-existing-project) + * [Composer from scratch](https://docs.madelineproto.xyz/docs/INSTALLATION.html#composer-from-scratch) +* [Broadcasting messages to all users](https://docs.madelineproto.xyz/docs/BROADCAST.html) - MadelineProto can be used to broadcast messages to all users, chats and channels of a bot or userbot. +* [Handling updates (new messages & other events)](https://docs.madelineproto.xyz/docs/UPDATES.html) - Update handling can be done in different ways: + * [Async Event driven](https://docs.madelineproto.xyz/docs/UPDATES.html#async-event-driven) + * [Full example](https://docs.madelineproto.xyz/docs/UPDATES.html#async-event-driven) + * [Bound methods](https://docs.madelineproto.xyz/docs/UPDATES.html#bound-methods) + * [Filters](https://docs.madelineproto.xyz/docs/FILTERS.html) + * [Simple filters](https://docs.madelineproto.xyz/docs/FILTERS.html#simple-filters) + * [Attribute filters](https://docs.madelineproto.xyz/docs/FILTERS.html#attribute-filters) + * [MTProto filters](https://docs.madelineproto.xyz/docs/FILTERS.html#mtproto-filters) + * [Plugins](https://docs.madelineproto.xyz/docs/PLUGINS.html) + * [Cron](https://docs.madelineproto.xyz/docs/UPDATES.html#cron) + * [Persisting data and IPC](https://docs.madelineproto.xyz/docs/UPDATES.html#persisting-data-and-ipc) + * [Built-in ORM](https://docs.madelineproto.xyz/docs/UPDATES.html#built-in-orm) + * [IPC](https://docs.madelineproto.xyz/docs/UPDATES.html#ipc) + * [Restarting](https://docs.madelineproto.xyz/docs/UPDATES.html#restarting) + * [Self-restart on webhosts](https://docs.madelineproto.xyz/docs/UPDATES.html#self-restart-on-webhosts) + * [Multi-account](https://docs.madelineproto.xyz/docs/UPDATES.html#multiaccount) + * [Automatic static analysis](https://docs.madelineproto.xyz/docs/UPDATES.html#automatic-static-analysis) + * [Avoiding the use of filesystem functions](https://docs.madelineproto.xyz/docs/UPDATES.html#avoiding-the-use-of-filesystem-functions) + * [Webhook (for HTTP APIs)](https://docs.madelineproto.xyz/docs/UPDATES.html#webhook) + * [getUpdates (only for Javascript APIs)](https://docs.madelineproto.xyz/docs/UPDATES.html#getUpdates) + * [Noop (default)](https://docs.madelineproto.xyz/docs/UPDATES.html#noop) + * [danog\MadelineProto\Broadcast\Progress »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Broadcast/Progress.html) + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Broadcast/Progress.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Broadcast/Progress.html#method-list) + * [danog\MadelineProto\EventHandler\BotCommands »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/BotCommands.html) - The [command set](https://core.telegram.org/api/bots/commands) + * [danog\MadelineProto\EventHandler\Channel\ChannelParticipant »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Channel/ChannelParticipant.html) - A participant has left, joined, was banned or admined in a [channel or supergroup](https://core.telegram.org/api/channel) + * [danog\MadelineProto\EventHandler\Delete\DeleteChannelMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteChannelMessages.html) - Some messages in a [supergroup/channel](https://core.telegram.org/api/channel) + * [danog\MadelineProto\EventHandler\Delete\DeleteScheduledMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Delete/DeleteScheduledMessages.html) - Some [scheduled messages](https://core.telegram.org/api/scheduled-messages) + * [danog\MadelineProto\EventHandler\Message\Service\DialogChannelMigrateFrom »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChannelMigrateFrom.html) - Indicates the channel was [migrated](https://core.telegram.org/api/channel) + * [danog\MadelineProto\EventHandler\Message\Service\DialogChatMigrateTo »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogChatMigrateTo.html) - Indicates the chat was [migrated](https://core.telegram.org/api/channel) + * [danog\MadelineProto\EventHandler\Message\Service\DialogPeerRequested »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogPeerRequested.html) - Contains info about a peer that the user shared with the bot after clicking on a [keyboardButtonRequestPeer](https://docs.madelineproto.xyz/API_docs/constructors/keyboardButtonRequestPeer.html) + * [danog\MadelineProto\EventHandler\Message\Service\DialogSetChatWallPaper »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSetChatWallPaper.html) - The [wallpaper](https://core.telegram.org/api/wallpapers) + * [danog\MadelineProto\EventHandler\Message\Service\DialogSuggestProfilePhoto »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogSuggestProfilePhoto.html) - A new profile picture was suggested using [photos.uploadContactProfilePhoto](https://docs.madelineproto.xyz/API_docs/methods/photos.uploadContactProfilePhoto.html) + * [danog\MadelineProto\EventHandler\Message\Service\DialogTopicCreated »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicCreated.html) - A [forum topic](https://core.telegram.org/api/forum#forum-topics) + * [danog\MadelineProto\EventHandler\Message\Service\DialogTopicEdited »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogTopicEdited.html) - [Forum topic](https://core.telegram.org/api/forum#forum-topics) + * [danog\MadelineProto\EventHandler\Message\Service\DialogWebView »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Message/Service/DialogWebView.html) - Data from an opened [reply keyboard bot web app](https://core.telegram.org/api/bots/webapps) was relayed to the bot that owns it (user & bot side service message) + * [danog\MadelineProto\EventHandler\Pinned\PinnedChannelMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedChannelMessages.html) - Represents messages that were pinned/unpinned in a [channel](https://core.telegram.org/api/channel) + * [danog\MadelineProto\EventHandler\Pinned\PinnedGroupMessages »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Pinned/PinnedGroupMessages.html) - Represents messages that were pinned/unpinned in a [chat/supergroup](https://core.telegram.org/api/channel) + * [danog\MadelineProto\EventHandler\Typing\SupergroupUserTyping »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Typing/SupergroupUserTyping.html) - A user is typing in a [supergroup](https://core.telegram.org/api/channel) + * [danog\MadelineProto\EventHandler\User\Status\Emoji »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/User/Status/Emoji.html) - The [emoji status](https://core.telegram.org/api/emoji-status) + * [danog\MadelineProto\VoIP »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/VoIP.html) + * [Full property list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/VoIP.html#properties) + * [Full bound method list »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/VoIP.html#method-list) + * [Simple filters »](https://docs.madelineproto.xyz/docs/FILTERS.html#simple-filters) + * [Attribute filters »](https://docs.madelineproto.xyz/docs/FILTERS.html#attribute-filters) + * [MTProto filters »](https://docs.madelineproto.xyz/docs/FILTERS.html#mtproto-filters) + * [Configuration](https://docs.madelineproto.xyz/docs/UPDATES.html#configuration) + * [Creating and uploading text files](https://docs.madelineproto.xyz/docs/UPDATES.html#creating-and-uploading-text-files) + * [Logging](https://docs.madelineproto.xyz/docs/UPDATES.html#logging) +* [Filters](https://docs.madelineproto.xyz/docs/FILTERS.html) - MadelineProto offers a very simple and intuitive message filtering system, based on PHP's type system and attributes. + * [Simple filters](https://docs.madelineproto.xyz/docs/FILTERS.html#simple-filters) + * [Attribute filters](https://docs.madelineproto.xyz/docs/FILTERS.html#attribute-filters) + * [Creating custom attribute filters](https://docs.madelineproto.xyz/docs/FILTERS.html#creating-custom-attribute-filters) + * [MTProto filters](https://docs.madelineproto.xyz/docs/FILTERS.html#mtproto-filters) +* [Plugins](https://docs.madelineproto.xyz/docs/PLUGINS.html) - MadelineProto offers a native plugin system, based on event handlers! + * [Installing plugins](https://docs.madelineproto.xyz/docs/PLUGINS.html#installing-plugins) + * [Simple installation](https://docs.madelineproto.xyz/docs/PLUGINS.html#simple-installation) + * [Composer installation](https://docs.madelineproto.xyz/docs/PLUGINS.html#composer-installation) + * [Builtin plugins](https://docs.madelineproto.xyz/docs/PLUGINS.html#builtin-plugins) + * [Creating plugins](https://docs.madelineproto.xyz/docs/PLUGINS.html#creating-plugins) + * [Full plugin example](https://docs.madelineproto.xyz/docs/PLUGINS.html#full-plugin-example) + * [Limitations](https://docs.madelineproto.xyz/docs/PLUGINS.html#limitations) + * [Namespace requirements](https://docs.madelineproto.xyz/docs/PLUGINS.html#namespace-requirements) + * [Distribution](https://docs.madelineproto.xyz/docs/PLUGINS.html#distribution) + * [danog\MadelineProto\EventHandler\Plugin\RestartPlugin »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/EventHandler/Plugin/RestartPlugin.html) + * [Configuration](https://docs.madelineproto.xyz/docs/UPDATES.html#configuration) + * [Creating and uploading text files](https://docs.madelineproto.xyz/docs/UPDATES.html#creating-and-uploading-text-files) + * [Logging](https://docs.madelineproto.xyz/docs/UPDATES.html#logging) +* [Database](https://docs.madelineproto.xyz/docs/DATABASE.html) - MadelineProto optionally can keep some of its internal data in a database, such as mysql, mariadb, postgres or redis (you can also add your own!), reducing RAM usage. + * [\danog\MadelineProto\Settings\Database\Memory: Memory backend settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Database/Memory.html) + * [\danog\MadelineProto\Settings\Database\Mysql: MySQL backend settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Database/Mysql.html) + * [\danog\MadelineProto\Settings\Database\Postgres: Postgres backend settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Database/Postgres.html) + * [\danog\MadelineProto\Settings\Database\Redis: Redis backend settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Database/Redis.html) +* [Settings](https://docs.madelineproto.xyz/docs/SETTINGS.html) - MadelineProto has lots of settings that can be used to modify the behaviour of the library. + * [AppInfo: App information.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/AppInfo.html) + * [Auth: Cryptography settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Auth.html) + * [Connection: Connection settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Connection.html) + * [Files: File management settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Files.html) + * [Logger: Logger settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Logger.html) + * [Peer: Peer database settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Peer.html) + * [Pwr: PWRTelegram settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Pwr.html) + * [RPC: RPC settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/RPC.html) + * [SecretChats: Secret chat settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/SecretChats.html) + * [Serialization: Serialization settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Serialization.html) + * [TLSchema: TL schema settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/TLSchema.html) + * [Templates: Web and CLI template settings for login.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Templates.html) + * [VoIP: VoIP settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/VoIP.html) + * [Database\Memory: Memory backend settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Database/Memory.html) + * [Database\Mysql: MySQL backend settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Database/Mysql.html) + * [Database\Postgres: Postgres backend settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Database/Postgres.html) + * [Database\Redis: Redis backend settings.](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/Settings/Database/Redis.html) +* [Getting info about the current user](https://docs.madelineproto.xyz/docs/SELF.html) - Here's how you can fetch info about the currently logged in user +* [Exceptions](https://docs.madelineproto.xyz/docs/EXCEPTIONS.html) - MadelineProto can throw lots of different exceptions. + * [List of exception types](https://docs.madelineproto.xyz/docs/EXCEPTIONS.html#list-of-exception-types) + * [Pretty TL trace](https://docs.madelineproto.xyz/docs/EXCEPTIONS.html#pretty-tl-trace) + * [Getting the TL trace](https://docs.madelineproto.xyz/docs/EXCEPTIONS.html#getting-the-tl-trace) +* [Avoiding FLOOD_WAITs](https://docs.madelineproto.xyz/docs/FLOOD_WAIT.html) - If you make too many requests to telegram, you might get FLOOD_WAITed for a while. To avoid these flood waits, you must calculate the flood wait rate. +* [Logging](https://docs.madelineproto.xyz/docs/LOGGING.html) - MadelineProto provides a unified class for logging messages to the logging destination defined in settings. +* [Telegram VoIP phone calls](https://docs.madelineproto.xyz/docs/CALLS.html) - MadelineProto provides an easy wrapper to work with phone calls. + * [Requesting a call](https://docs.madelineproto.xyz/docs/CALLS.html#requesting-a-call) + * [Playing audio files](https://docs.madelineproto.xyz/docs/CALLS.html#playing-audio-files) + * [Webhost support!](https://docs.madelineproto.xyz/docs/CALLS.html#webhost-support) + * [Accepting calls](https://docs.madelineproto.xyz/docs/CALLS.html#accepting-calls) +* [Uploading and downloading files](https://docs.madelineproto.xyz/docs/FILES.html) - MadelineProto provides fully parallelized wrapper methods to upload and download files that support bot API file ids, direct upload by URL and file renaming. + * [Bot API file IDs](https://docs.madelineproto.xyz/docs/FILES.html#bot-api-file-ids) + * [Uploading & sending files](https://docs.madelineproto.xyz/docs/FILES.html#sending-files) + * [Security notice](https://docs.madelineproto.xyz/docs/FILES.html#security-notice) + * [Photos](https://docs.madelineproto.xyz/docs/FILES.html#photos) + * [Photos as documents](https://docs.madelineproto.xyz/docs/FILES.html#photos-as-documents) + * [Documents](https://docs.madelineproto.xyz/docs/FILES.html#documents) + * [GIFs](https://docs.madelineproto.xyz/docs/FILES.html#gifs) + * [Videos](https://docs.madelineproto.xyz/docs/FILES.html#videos) + * [Music](https://docs.madelineproto.xyz/docs/FILES.html#music) + * [Voice](https://docs.madelineproto.xyz/docs/FILES.html#voice) + * [Stickers](https://docs.madelineproto.xyz/docs/FILES.html#stickers) + * [Uploading files](https://docs.madelineproto.xyz/docs/FILES.html#uploading-files) + * [Reusing uploaded files](https://docs.madelineproto.xyz/docs/FILES.html#reusing-uploaded-files) + * [Renaming files](https://docs.madelineproto.xyz/docs/FILES.html#renaming-files) + * [Downloading files](https://docs.madelineproto.xyz/docs/FILES.html#downloading-files) + * [Extracting download info](https://docs.madelineproto.xyz/docs/FILES.html#extracting-download-info) + * [Getting a download link](https://docs.madelineproto.xyz/docs/FILES.html#getting-a-download-link) + * [Downloading profile pictures](https://docs.madelineproto.xyz/docs/FILES.html#downloading-profile-pictures) + * [Download to directory](https://docs.madelineproto.xyz/docs/FILES.html#download-to-directory) + * [Download to file](https://docs.madelineproto.xyz/docs/FILES.html#download-to-file) + * [Download to stream](https://docs.madelineproto.xyz/docs/FILES.html#download-to-stream) + * [Download to callback](https://docs.madelineproto.xyz/docs/FILES.html#download-to-callback) + * [Download to http-server](https://docs.madelineproto.xyz/docs/FILES.html#download-to-http-server) + * [Download to browser](https://docs.madelineproto.xyz/docs/FILES.html#download-to-browser) + * [Getting progress](https://docs.madelineproto.xyz/docs/FILES.html#getting-progress) +* [Getting info about chats](https://docs.madelineproto.xyz/docs/CHAT_INFO.html) - There are various methods that can be used to fetch info about chats, based on bot API id, tg-cli ID, Peer, User, Chat objects. + * [Full chat info with full list of participants](https://docs.madelineproto.xyz/docs/CHAT_INFO.html#getPwrChat) + * [Full chat info](https://docs.madelineproto.xyz/docs/CHAT_INFO.html#getFullInfo) + * [Reduced chat info (very fast)](https://docs.madelineproto.xyz/docs/CHAT_INFO.html#getInfo) + * [Just the chat ID (extremely fast)](https://docs.madelineproto.xyz/docs/CHAT_INFO.html#getId) +* [Getting all chats (dialogs)](https://docs.madelineproto.xyz/docs/DIALOGS.html) - There are two ways to get a list of all chats, depending if you logged in as a user, or as a bot. + * [Dialog ID list](https://docs.madelineproto.xyz/docs/DIALOGS.html#getDialogIds) + * [Full dialog info](https://docs.madelineproto.xyz/docs/DIALOGS.html#getFullDialogs) +* [Inline buttons](https://docs.madelineproto.xyz/docs/INLINE_BUTTONS.html) - You can easily click inline buttons using MadelineProto, just access the correct button: +* [Secret chats](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html) - MadelineProto provides wrappers to work with secret chats. + * [Requesting secret chats](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html#requesting-secret-chats) + * [Accepting secret chats](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html#accepting-secret-chats) + * [Checking secret chat status](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html#checking-secret-chat-status) + * [Sending secret messages](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html#sending-secret-messages) +* [Using a proxy](https://docs.madelineproto.xyz/docs/PROXY.html) - You can use a proxy with MadelineProto. + * [How to set a proxy](https://docs.madelineproto.xyz/docs/PROXY.html#how-to-set-a-proxy) + * [Multiple proxies with automatic switch](https://docs.madelineproto.xyz/docs/PROXY.html#multiple-proxies-with-automatic-switch) + * [Use pre-built MTProxy](https://docs.madelineproto.xyz/docs/PROXY.html#mtproxy) + * [Use pre-built Socks5 proxy](https://docs.madelineproto.xyz/docs/PROXY.html#socks5-proxy) + * [Use pre-built HTTP proxy](https://docs.madelineproto.xyz/docs/PROXY.html#http-proxy) + * [Build your own proxy](https://docs.madelineproto.xyz/docs/PROXY.html#build-your-proxy) +* [Async](https://docs.madelineproto.xyz/docs/ASYNC.html) - MadelineProto now features async, for incredible speed improvements, and parallel processing, all powered by amphp. + * [Usage](https://docs.madelineproto.xyz/docs/ASYNC.html#usage) + * [Async in event handler](https://docs.madelineproto.xyz/docs/ASYNC.html#async-in-event-handler) + * [Multiple async](https://docs.madelineproto.xyz/docs/ASYNC.html#multiple-async) + * [Ignored async](https://docs.madelineproto.xyz/docs/ASYNC.html#ignored-async) + * [Combining async operations](https://docs.madelineproto.xyz/docs/ASYNC.html#combining-async-operations) + * [MadelineProto and AMPHP async APIs](https://docs.madelineproto.xyz/docs/ASYNC.html#madelineproto-and-amphp-async-apis) + * [Helper methods](https://docs.madelineproto.xyz/docs/ASYNC.html#helper-methods) + * [Async sleep](https://docs.madelineproto.xyz/docs/ASYNC.html#async-sleep-does-not-block-the-main-thread) + * [Async readline](https://docs.madelineproto.xyz/docs/ASYNC.html#async-readline-does-not-block-the-main-thread) + * [Async echo](https://docs.madelineproto.xyz/docs/ASYNC.html#async-echo-does-not-block-the-main-thread) + * [MadelineProto HTTP client](https://docs.madelineproto.xyz/docs/ASYNC.html#madelineproto-http-client) + * [Async forking](https://docs.madelineproto.xyz/docs/ASYNC.html#async-forking-does-async-green-thread-forking) + * [Async flock](https://docs.madelineproto.xyz/docs/ASYNC.html#async-flock) + * [MadelineProto async loop APIs](https://docs.madelineproto.xyz/docs/ASYNC.html#async-loop-apis) +* [FAQ](https://docs.madelineproto.xyz/docs/FAQ.html) - Here's a list of common MadelineProto questions and answers. +* [Upgrading from MadelineProto v7 to v8](https://docs.madelineproto.xyz/docs/UPGRADING.html) - MadelineProto v8 is a major MadelineProto update, that removes a large number of long-deprecated APIs: I've created this upgrade checklist, to simplify the upgrade process. +* [Using methods](https://docs.madelineproto.xyz/docs/USING_METHODS.html) - There are simplifications for many, if not all of, these methods. + * [Named arguments](https://docs.madelineproto.xyz/docs/USING_METHODS.html#named-arguments) + * [Peers](https://docs.madelineproto.xyz/docs/USING_METHODS.html#peers) + * [Files](https://docs.madelineproto.xyz/docs/FILES.html) + * [Secret chats](https://docs.madelineproto.xyz/docs/USING_METHODS.html#secret-chats) + * [Entities (Markdown & HTML)](https://docs.madelineproto.xyz/docs/USING_METHODS.html#entities) + * [reply_markup (keyboards & inline keyboards)](https://docs.madelineproto.xyz/docs/USING_METHODS.html#reply_markup) + * [bot API objects](https://docs.madelineproto.xyz/docs/USING_METHODS.html#bot-api-objects) + * [No result](https://docs.madelineproto.xyz/docs/USING_METHODS.html#no-result) + * [Multiple method calls](https://docs.madelineproto.xyz/docs/USING_METHODS.html#multiple-method-calls) + * [Cancellation](https://docs.madelineproto.xyz/docs/USING_METHODS.html#cancellation) + * [FULL API Documentation with descriptions](https://docs.madelineproto.xyz/API_docs/methods/) + * [Login](https://docs.madelineproto.xyz/docs/LOGIN.html) + * [Change 2FA password: update2FA](https://docs.madelineproto.xyz/update2fa.html) + * [Get all chats, broadcast a message to all chats: getDialogIds, getDialogs, getFullDialogs](https://docs.madelineproto.xyz/docs/DIALOGS.html) + * [Get the full participant list of a channel/group/supergroup: getPwrChat](https://docs.madelineproto.xyz/getPwrChat.html) + * [Get full info about a user/chat/supergroup/channel: getFullInfo](https://docs.madelineproto.xyz/getFullInfo.html) + * [Get info about a user/chat/supergroup/channel: getInfo](https://docs.madelineproto.xyz/getInfo.html) + * [Get the ID of a user/chat/supergroup/channel/update: getID](https://docs.madelineproto.xyz/getId.html) + * [Get info about the currently logged-in user: getSelf](https://docs.madelineproto.xyz/getSelf.html) + * [Upload or download files up to 4 GB: uploadFrom*, downloadTo*](https://docs.madelineproto.xyz/docs/FILES.html) + * [Make a phone call and play a song](https://docs.madelineproto.xyz/docs/CALLS.html) + * [Create a secret chat bot](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html) + * Abort a pending 2FA password reset, see here for more info »: account.declinePasswordReset + * Accept QR code login token, logging in the app that generated it: auth.acceptLoginToken + * Accept call: acceptCall + * Accept secret chat: acceptSecretChat + * Accept the new terms of service: help.acceptTermsOfService + * Activate or deactivate a purchased fragment.com username associated to a bot we own: bots.toggleUsername + * Activate or deactivate a purchased fragment.com username associated to a supergroup or channel we own: channels.toggleUsername + * Activate or deactivate a purchased fragment.com username associated to the currently logged-in user: account.toggleUsername + * Activates stories stealth mode, see here » for more info: stories.activateStealthMode + * Add GIF to saved gifs list: messages.saveGif + * Add a sticker to a stickerset, bots only. The sticker set must have been created by the bot: stickers.addStickerToSet + * Add an existing telegram user as contact: contacts.addContact + * Add/remove sticker from recent stickers list: messages.saveRecentSticker + * Adds a peer to a blocklist, see here » for more info: contacts.block + * Adds a user to a chat and sends a service message on it: messages.addChatUser + * Allow the specified bot to send us messages: bots.allowSendMessage + * Answer an inline query, for bots only: messages.setInlineBotResults + * Answers a custom query; for bots only: bots.answerWebhookJSONQuery + * Apply a Telegram Premium giftcode »: payments.applyGiftCode + * Apply changes to multiple stickersets: messages.toggleStickerSets + * Apply one or more boosts » to a peer: premium.applyBoost + * Associate a group to a channel as discussion group for that channel: channels.setDiscussionGroup + * Associate a stickerset to the supergroup: channels.setStickers + * Asynchronously lock a file: flock + * Asynchronously read line: readLine + * Asynchronously sleep: sleep + * Asynchronously write to stdout/browser: echo + * Ban/unban/kick a user in a supergroup/channel: channels.editBanned + * Base64URL encode: base64urlEncode + * Can only be used by TSF members to obtain internal information: help.getUserInfo + * Cancel a running broadcast: cancelBroadcast + * Cancel the code that was sent to verify an email to use as 2FA recovery method: account.cancelPasswordEmail + * Cancel the login verification code: auth.cancelCode + * Change default emoji reaction to use in the quick reaction menu: the value is synced across devices and can be fetched using help.getConfig, reactions_default field: messages.setDefaultReaction + * Change group call settings: phone.toggleGroupCallSettings + * Change media autodownload settings: account.saveAutoDownloadSettings + * Change or remove the username of a supergroup/channel: channels.updateUsername + * Change privacy settings of current account: account.setPrivacy + * Change settings related to a session: account.changeAuthorizationSettings + * Change the chat theme of a certain chat: messages.setChatTheme + * Change the default peer that should be used when sending messages, reactions, poll votes to a specific group: messages.saveDefaultSendAs + * Change the phone number of the current account: account.changePhone + * Change the photo of a channel/supergroup: channels.editPhoto + * Change the set of message reactions » that can be used in a certain group, supergroup or channel: messages.setChatAvailableReactions + * Changes chat name and sends a service message on it: messages.editChatTitle + * Changes chat photo and sends a service message on it: messages.editChatPhoto + * Changes the absolute position of a sticker in the set to which it belongs; for bots only. The sticker set must have been created by the bot: stickers.changeStickerPosition + * Changes the default value of the Time-To-Live setting, applied to all new chats: messages.setDefaultHistoryTTL + * Changes username for the current user: account.updateUsername + * Check if a certain event handler plugin is installed: hasPlugin + * Check if a username is free and can be assigned to a channel/supergroup: channels.checkUsername + * Check if an event handler instance is present: hasEventHandler + * Check if has admins: hasAdmins + * Check if has report peers: hasReportPeers + * Check if is array or similar (traversable && countable && arrayAccess): isArrayOrAlike + * Check if peer is present in internal peer database: peerIsset + * Check if the 2FA recovery code sent using auth.requestPasswordRecovery is valid, before passing it to auth.recoverPassword: auth.checkRecoveryPassword + * Check if the specified peer is a bot: isBot + * Check if the specified peer is a forum: isForum + * Check the validity of a chat invite link and get basic info about it: messages.checkChatInvite + * Check whether chat history exported from another chat app can be imported into a specific Telegram chat, click here for more info »: messages.checkHistoryImportPeer + * Check whether secret chat exists: hasSecretChat + * Check whether the given short name is available: stickers.checkShortName + * Check whether the group call Server Forwarding Unit is currently receiving the streams with the specified WebRTC source IDs.: phone.checkGroupCall + * Check whether the specified bot can send us messages: bots.canSendMessage + * Check whether we can post stories as the specified peer: stories.canSendStory + * Checks whether Telegram Premium purchase is possible. Must be called before in-store Premium purchase, official apps only: payments.canPurchasePremium + * Clear all drafts: messages.clearAllDrafts + * Clear all peer-specific autosave settings: account.deleteAutoSaveExceptions + * Clear bot commands for the specified bot scope and language code: bots.resetBotCommands + * Clear recent stickers: messages.clearRecentStickers + * Clear recently used message reactions: messages.clearRecentReactions + * Clear saved payment information: payments.clearSavedInfo + * Clears list of recently used emoji statuses: account.clearRecentEmojiStatuses + * Close connection with client, connected via web: closeConnection + * Complet user login using login code: completePhoneLogin + * Complete 2FA login: complete2faLogin + * Complete signup to Telegram: completeSignup + * Complete the history import process, importing all messages into the chat.: messages.startHistoryImport + * Confirm a phone number to cancel account deletion, for more info click here »: account.confirmPhone + * Confirms receipt of messages by a client, cancels PUSH-notification sending: messages.receivedMessages + * Convert MTProto parameters to bot API parameters: MTProtoToBotAPI + * Convert TD parameters to tdcli: tdToTdcli + * Convert TD to MTProto parameters: tdToMTProto + * Convert a message and a set of entities to HTML: entitiesToHtml + * Convert a supergroup to a gigagroup, when requested by channel suggestions: channels.convertToGigagroup + * Convert bot API parameters to MTProto parameters: botAPIToMTProto + * Convert double to binary version: packDouble + * Convert integer to base256 long: packSignedLong + * Convert integer to base256 signed int: packSignedInt + * Convert tdcli parameters to tdcli: tdcliToTd + * Convert to camelCase: toCamelCase + * Convert to snake_case: toSnakeCase + * Convert value to unsigned base256 int: packUnsignedInt + * Converts a string into an async amphp stream: stringToStream + * Create a forum topic; requires manage_topics rights: channels.createForumTopic + * Create a group call or livestream: phone.createGroupCall + * Create a stickerset, bots only: stickers.createStickerSet + * Create a supergroup/channel: channels.createChannel + * Create a theme: account.createTheme + * Create and upload a new wallpaper: account.uploadWallPaper + * Create array: arr + * Creates a new chat: messages.createChat + * Delete a channel/supergroup: channels.deleteChannel + * Delete a chat invite: messages.deleteExportedChatInvite + * Delete a chat: messages.deleteChat + * Delete a folder imported using a chat folder deep link »: chatlists.leaveChatlist + * Delete a previously created chat folder deep link »: chatlists.deleteExportedInvite + * Delete all installed wallpapers, reverting to the default wallpaper set: account.resetWallPapers + * Delete all messages sent by a specific participant of a given supergroup: channels.deleteParticipantHistory + * Delete all revoked chat invites: messages.deleteRevokedExportedChatInvites + * Delete all temporary authorization keys except for the ones specified: auth.dropTempAuthKeys + * Delete contacts by phone number: contacts.deleteByPhones + * Delete message history of a forum topic: channels.deleteTopicHistory + * Delete messages in a channel/supergroup: channels.deleteMessages + * Delete scheduled messages: messages.deleteScheduledMessages + * Delete stored Telegram Passport documents, for more info see the passport docs »: account.deleteSecureValue + * Delete the entire phone call history: messages.deletePhoneCallHistory + * Delete the history of a supergroup: channels.deleteHistory + * Delete the user's account from the telegram servers: account.deleteAccount + * Deletes a device by its token, stops sending PUSH-notifications to it: account.unregisterDevice + * Deletes a peer from a blocklist, see here » for more info: contacts.unblock + * Deletes a stickerset we created, bots only: stickers.deleteStickerSet + * Deletes a user from a chat and sends a service message on it: messages.deleteChatUser + * Deletes communication history: messages.deleteHistory + * Deletes messages by their identifiers: messages.deleteMessages + * Deletes messages forwarded from a specific peer to saved messages »: messages.deleteSavedHistory + * Deletes profile photos. The method returns a list of successfully deleted photo IDs: photos.deletePhotos + * Deletes several contacts from the list: contacts.deleteContacts + * Deletes some posted stories: stories.deleteStories + * Disable all purchased usernames of a supergroup or channel: channels.deactivateAllUsernames + * Discard call: discardCall + * Discard secret chat: discardSecretChat + * Dismiss a suggestion, see here for more info »: help.dismissSuggestion + * Dismiss new pending peers recently added to a chat folder deep link »: chatlists.hideChatlistUpdates + * Dismiss or approve a chat join request related to a specific chat or channel: messages.hideChatJoinRequest + * Dismiss or approve all join requests related to a specific chat or channel: messages.hideAllChatJoinRequests + * Download file to amphp/http-server response: downloadToResponse + * Download file to an amphp stream, returning it: downloadToReturnedStream + * Download file to browser: downloadToBrowser + * Download file to callable: downloadToCallable + * Download file to directory: downloadToDir + * Download file to stream: downloadToStream + * Download file: downloadToFile + * Downloads a file to the browser using the specified session file: downloadServer + * Edit a chat folder deep link »: chatlists.editExportedInvite + * Edit an exported chat invite: messages.editExportedChatInvite + * Edit an inline bot message: messages.editInlineBotMessage + * Edit an uploaded story: stories.editStory + * Edit forum topic; requires manage_topics rights: channels.editForumTopic + * Edit information about a given group call participant: phone.editGroupCallParticipant + * Edit location of geogroup, see here » for more info on geogroups: channels.editLocation + * Edit message: messages.editMessage + * Edit peers in peer folder: folders.editPeerFolders + * Edit the close friends list, see here » for more info: contacts.editCloseFriends + * Edit the default banned rights of a channel/supergroup/group: messages.editChatDefaultBannedRights + * Edit the description of a group/supergroup/channel: messages.editChatAbout + * Edit the name of a channel/supergroup: channels.editTitle + * Edit the title of a group call or livestream: phone.editGroupCallTitle + * Edits notification settings from a given user/group, from all users/all groups: account.updateNotifySettings + * Enable or disable content protection on a channel or chat: messages.toggleNoForwards + * Enable or disable forum functionality in a supergroup: channels.toggleForum + * Enable or disable the native antispam system: channels.toggleAntiSpam + * Enable or disable web bot attachment menu »: messages.toggleBotInAttachMenu + * Enable/disable message signatures in channels: channels.toggleSignatures + * Enable/disable top peers: contacts.toggleTopPeers + * Escape string for MadelineProto's HTML entity converter: htmlEscape + * Escape string for URL: markdownUrlEscape + * Escape string for markdown code section: markdownCodeEscape + * Escape string for markdown codeblock: markdownCodeblockEscape + * Escape string for markdown: markdownEscape + * Executes a custom broadcast action with all peers (users, chats, channels) of the bot: broadcastCustom + * Export a folder », creating a chat folder deep link »: chatlists.exportChatlistInvite + * Export an invite link for a chat: messages.exportChatInvite + * Export authorization: exportAuthorization + * Extract Update constructors from an Updates constructor: extractUpdates + * Extract a message ID from an Updates constructor: extractMessageId + * Extract a message constructor from an Updates constructor: extractMessage + * Extract an update message constructor from an Updates constructor: extractMessageUpdate + * Extract file info from bot API message: extractBotAPIFile + * Fetch custom emoji stickers »: messages.getCustomEmojiDocuments + * Fetch new chats associated with an imported chat folder deep link ». Must be invoked at most every chatlist_update_period seconds (as per the related client configuration parameter »): chatlists.getChatlistUpdates + * Fetch saved notification sounds: account.getSavedRingtones + * Fetch the List of active (or active and hidden) stories, see here » for more info on watching stories: stories.getAllStories + * Fetch the full active story list of a specific peer: stories.getPeerStories + * Fetch the stories pinned on a peer's profile: stories.getPinnedStories + * Fetch the story archive » of a peer we control: stories.getStoriesArchive + * Find out if a media message's caption can be edited: messages.getMessageEditData + * Fork a new green thread and execute the passed function in the background: callFork + * Forwards a list of messages to all peers (users, chats, channels) of the bot: broadcastForwardMessages + * Forwards messages by their IDs: messages.forwardMessages + * Generate MTProto vector hash: genVectorHash + * Generate a login token, for login via QR code.: auth.exportLoginToken + * Generate a story deep link for a specific story: stories.exportStoryLink + * Generate an invoice deep link: payments.exportInvoice + * Generates a temporary profile link for the currently logged-in user: contacts.exportContactToken + * Get MTProxy/Public Service Announcement information: help.getPromoData + * Get PSR logger: getPsrLogger + * Get RTMP URL and stream key for RTMP livestreams. Can be used even before creating the actual RTMP livestream with phone.createGroupCall (the rtmp_stream flag must be set): phone.getGroupCallStreamRtmpUrl + * Get TL namespaces: getMethodNamespaces + * Get TL serializer: getTL + * Get Telegram Premium promotion information: help.getPremiumPromo + * Get Telegram UTF-8 length of string: mbStrlen + * Get a document by its SHA256 hash, mainly used for gifs: messages.getDocumentByHash + * Get a list of channels/supergroups we left, requires a takeout session, see here » for more info: channels.getLeftChannels + * Get a list of default suggested channel emoji statuses: account.getChannelDefaultEmojiStatuses + * Get a list of default suggested emoji statuses: account.getDefaultEmojiStatuses + * Get a list of peers that can be used to join a group call, presenting yourself as a specific user/channel: phone.getGroupCallJoinAs + * Get a list of sponsored messages: channels.getSponsoredMessages + * Get a message to show to the user when starting the bot: getWebMessage + * Get a payment form: payments.getPaymentForm + * Get a set of suggested custom emoji stickers that can be used as group picture: account.getDefaultGroupPhotoEmojis + * Get a set of suggested custom emoji stickers that can be used as profile picture: account.getDefaultProfilePhotoEmojis + * Get a set of suggested custom emoji stickers that can be used in an accent color pattern: account.getDefaultBackgroundEmojis + * Get admin IDs (equal to all user report peers): getAdminIds + * Get all archived stickers: messages.getArchivedStickers + * Get all available chat themes »: account.getChatThemes + * Get all contacts, requires a takeout session, see here » for more info: contacts.getSaved + * Get all groups that can be used as discussion groups: channels.getGroupsForDiscussion + * Get all installed stickers: messages.getAllStickers + * Get all pending and running calls, indexed by user ID: getAllCalls + * Get all saved Telegram Passport documents, for more info see the passport docs »: account.getAllSecureValues + * Get an invite link for a group call or livestream: phone.exportGroupCallInvite + * Get and increase the view counter of a message sent or forwarded from a channel: messages.getMessagesViews + * Get app-specific configuration, see client configuration for more info on the result: help.getAppConfig + * Get async DNS client: getDNSClient + * Get async HTTP client: getHTTPClient + * Get authorization info: getAuthorization + * Get autosave settings: account.getAutoSaveSettings + * Get cached (or eventually re-fetch) server-side config: getConfig + * Get cached server-side config: getCachedConfig + * Get call state: getCallState + * Get changed emoji keywords »: messages.getEmojiKeywordsDifference + * Get channel statistics: stats.getBroadcastStats + * Get channel/supergroup messages: channels.getMessages + * Get channels/supergroups/geogroups we're admin in. Usually called when the user exceeds the limit for owned public channels/supergroups/geogroups, and the user is given the choice to remove one of his channels/supergroups/geogroups: channels.getAdminedPublicChannels + * Get chats in common with a user: messages.getCommonChats + * Get configuration for CDN file downloads: help.getCdnConfig + * Get contents of remote file asynchronously: fileGetContents + * Get count of online users in a chat: messages.getOnlines + * Get current number of memory-mapped regions, UNIX only: getMaps + * Get current password hint: getHint + * Get days to live of account: account.getAccountTTL + * Get dialog info of specified peers: messages.getPeerDialogs + * Get dialogs manually marked as unread: messages.getDialogUnreadMarks + * Get diffie-hellman configuration: getDhConfig + * Get discussion message from the associated discussion group of a channel to show it on top of the comment section, without actually joining the group: messages.getDiscussionMessage + * Get download info of file: getDownloadInfo + * Get download link of media file: getDownloadLink + * Get event handler (or plugin instance): getEventHandler + * Get extension from file location: getExtensionFromLocation + * Get extension from mime type: getExtensionFromMime + * Get faved stickers: messages.getFavedStickers + * Get featured stickers: messages.getFeaturedStickers + * Get final element of array: end + * Get folders: messages.getDialogFilters + * Get forum topics by their ID: channels.getForumTopicsByID + * Get full list of MTProto and API methods: getAllMethods + * Get global privacy settings: account.getGlobalPrivacySettings + * Get group call participants: phone.getGroupParticipants + * Get highscores of a game sent using an inline bot: messages.getInlineGameHighScores + * Get highscores of a game: messages.getGameHighScores + * Get inactive channels and supergroups: channels.getInactiveChannels + * Get info about RTMP streams in a group call or livestream.: phone.getGroupCallStreamChannels + * Get info about a certain wallpaper: account.getWallPaper + * Get info about a channel/supergroup participant: channels.getParticipant + * Get info about a chat invite: messages.getExportedChatInvite + * Get info about a credit card: payments.getBankCardData + * Get info about a group call: phone.getGroupCall + * Get info about a stickerset: messages.getStickerSet + * Get info about an unsupported deep link, see here for more info »: help.getDeepLinkInfo + * Get info about chat invites generated by admins: messages.getAdminsWithInvites + * Get info about file: getFileInfo + * Get info about multiple wallpapers: account.getMultiWallPapers + * Get info about the chat invites of a specific chat: messages.getExportedChatInvites + * Get info about the logged-in user, not cached: fullGetSelf + * Get info about the users that joined the chat using a specific chat invite: messages.getChatInviteImporters + * Get information about a language in a localization pack: langpack.getLanguage + * Get information about all languages in a localization pack: langpack.getLanguages + * Get information about extended media: messages.getExtendedMedia + * Get installed mask stickers: messages.getMaskStickers + * Get installed themes: account.getThemes + * Get instant view page: messages.getWebPage + * Get link and embed info of a message in a channel/supergroup: channels.exportMessageLink + * Get live location history of a certain user: messages.getRecentLocations + * Get localization pack strings: langpack.getLangPack + * Get localized emoji keywords »: messages.getEmojiKeywords + * Get localized name of the telegram support user: help.getSupportName + * Get localized name, about text and description of a bot (or of the current account, if called by a bot): bots.getBotInfo + * Get logged-in sessions: account.getAuthorizations + * Get logger: getLogger + * Get maximum number of memory-mapped regions, UNIX only: getMaxMaps + * Get media autodownload settings: account.getAutoDownloadSettings + * Get message ranges for saving the user's chat history: messages.getSplitRanges + * Get message reaction list, along with the sender of each reaction: messages.getMessageReactionsList + * Get message reactions »: messages.getMessagesReactions + * Get message statistics: stats.getMessageStats + * Get messages in a reply thread: messages.getReplies + * Get mime type from buffer: getMimeFromBuffer + * Get mime type from file extension: getMimeFromExtension + * Get mime type of file: getMimeFromFile + * Get more info about a Seamless Telegram Login authorization request, for more info click here »: messages.requestUrlAuth + * Get most used peers: contacts.getTopPeers + * Get name, ISO code, localized name and phone codes/patterns of all available countries: help.getCountriesList + * Get namespaced methods (method => namespace): getMethodsNamespaced + * Get new strings in language pack: langpack.getDifference + * Get passport configuration: help.getPassportConfig + * Get payment receipt: payments.getPaymentReceipt + * Get peer settings: messages.getPeerSettings + * Get phone call configuration to be passed to libtgvoip's shared config: phone.getCallConfig + * Get phone call information: getCall + * Get pinned dialogs: messages.getPinnedDialogs + * Get pinned saved dialogs, see here » for more info: messages.getPinnedSavedDialogs + * Get poll results for non-anonymous polls: messages.getPollVotes + * Get poll results: messages.getPollResults + * Get preview of webpage: messages.getWebPagePreview + * Get privacy settings of current account: account.getPrivacy + * Get random integer: randomInt + * Get recent stickers: messages.getRecentStickers + * Get recently used emoji statuses: account.getRecentEmojiStatuses + * Get recently used message reactions: messages.getRecentReactions + * Get recently used t.me links: help.getRecentMeUrls + * Get saved GIFs: messages.getSavedGifs + * Get saved Telegram Passport document, for more info see the passport docs »: account.getSecureValue + * Get saved payment information: payments.getSavedInfo + * Get scheduled messages: messages.getScheduledHistory + * Get scheduled messages: messages.getScheduledMessages + * Get secret chat: getSecretChat + * Get secure random string of specified length: random + * Get sensitive content settings: account.getContentSettings + * Get sponsored messages for channel: getSponsoredMessages + * Get statistics for a certain story: stats.getStoryStats + * Get stickers attached to a photo or video: messages.getAttachedStickers + * Get stickers by emoji: messages.getStickers + * Get strings from a language pack: langpack.getStrings + * Get suggested folders: messages.getSuggestedDialogFilters + * Get supergroup statistics: stats.getMegagroupStats + * Get temporary payment password: account.getTmpPassword + * Get the IDs of the maximum read stories for a set of peers: stories.getPeerMaxIDs + * Get the admin log of a channel/supergroup: channels.getAdminLog + * Get the file that is currently being played: callGetCurrent + * Get the number of results that would be found by a messages.search call with the same parameters: messages.getSearchCounters + * Get the participants of a supergroup/channel: channels.getParticipants + * Get the phone call with the specified user ID: getCallByPeer + * Get the progress of a currently running broadcast: getBroadcastProgress + * Get the reaction and interaction list of a story posted to a channel, along with the sender of each reaction: stories.getStoryReactionsList + * Get the set of accent color palettes » that can be used for message accents: help.getPeerColors + * Get the set of accent color palettes » that can be used in profile page backgrounds: help.getPeerProfileColors + * Get the telegram IDs of all contacts.: contacts.getContactIDs + * Get theme information: account.getTheme + * Get topics of a forum: channels.getForumTopics + * Get type of peer: getType + * Get unread messages where we were mentioned: messages.getUnreadMentions + * Get unread reactions to messages you sent: messages.getUnreadReactions + * Get users and geochats near you, see here » for more info: contacts.getLocated + * Get various warnings to show to the user in the web UI: getWebWarnings + * Get web login widget authorizations: account.getWebAuthorizations + * Get which users read a specific message: only available for groups and supergroups with less than chat_read_mark_size_threshold members, read receipts will be stored for chat_read_mark_expire_period seconds after the message was sent, see client configuration for more info »: messages.getMessageReadParticipants + * Gets a secret chat message: getSecretMessage + * Gets current notification settings for a given user/group, from all users/all groups: account.getNotifySettings + * Gets featured custom emoji stickersets: messages.getFeaturedEmojiStickers + * Gets info of the propic of a user: getPropicInfo + * Gets the current number of boosts of a channel: premium.getBoostsStatus + * Gets the default value of the Time-To-Live setting, applied to all new chats: messages.getDefaultHistoryTTL + * Gets the list of currently installed custom emoji stickersets: messages.getEmojiStickers + * Gets the menu button action for a given user or for all users, previously set using bots.setBotMenuButton; users can see this information in the botInfo constructor: bots.getBotMenuButton + * Got popular message reactions: messages.getTopReactions + * Hide MTProxy/Public Service Announcement information: help.hidePromoData + * Hide or display the participants list in a supergroup: channels.toggleParticipantsHidden + * Hide the active stories of a specific peer, preventing them from being displayed on the action bar on the homescreen: stories.toggleAllStoriesHidden + * Hide the active stories of a user, preventing them from being displayed on the action bar on the homescreen, see here » for more info: stories.togglePeerStoriesHidden + * Hide/unhide message history for new channel/supergroup users: channels.togglePreHistoryHidden + * If the add contact action bar is active, add that user as contact: contacts.acceptContact + * If you sent an invoice requesting a shipping address and the parameter is_flexible was specified, the bot will receive an updateBotShippingQuery update. Use this method to reply to shipping queries: messages.setBotShippingResults + * Import a chat folder deep link », joining some or all the chats in the folder: chatlists.joinChatlistInvite + * Import a chat invite and join a private chat/supergroup/channel: messages.importChatInvite + * Import authorization: importAuthorization + * Import chat history from a foreign chat app into a specific Telegram chat, click here for more info about imported chats »: messages.initHistoryImport + * Imports contacts: saves a full list on the server, adds already registered contacts to the contact list, returns added contacts and their info: contacts.importContacts + * Increment the view counter of one or more stories: stories.incrementStoryViews + * Indicate to the server (from the user side) that the user is still using a web app: messages.prolongWebView + * Inflate stripped photosize to full JPG payload: inflateStripped + * Informs server about a purchase made through the App Store: for official applications only: payments.assignAppStoreTransaction + * Informs server about a purchase made through the Play Store: for official applications only: payments.assignPlayMarketTransaction + * Informs the server about the number of pending bot updates if they haven't been processed for a long time; for bots only: help.setBotUpdatesStatus + * Informs the server that the user has either:: channels.clickSponsoredMessage + * Initialize a takeout session, see here » for more info: account.initTakeoutSession + * Initialize connection: initConnection + * Initialize self-restart hack: initSelfRestart + * Initiate a 2FA password reset: can only be used if the user is already logged-in, see here for more info »: account.resetPassword + * Initiates QR code login: qrLogin + * Install a stickerset: messages.installStickerSet + * Install a theme: account.installTheme + * Install wallpaper: account.installWallPaper + * Install/uninstall wallpaper: account.saveWallPaper + * Installs a previously uploaded photo as a profile photo: photos.updateProfilePhoto + * Internal endpoint used by the download server: processDownloadServerPing + * Internal use: help.editUserInfo + * Invalidate the specified login codes, see here » for more info: account.invalidateSignInCodes + * Invite a set of users to a group call: phone.inviteToGroupCall + * Invite users to a channel/supergroup: channels.inviteToChannel + * Invoke a method within a takeout session, see here » for more info: invokeWithTakeout + * Invoke a request without subscribing the used connection for updates (this is enabled by default for file queries): invokeWithoutUpdates + * Invoke the specified query using the specified API layer: invokeWithLayer + * Invoke with the given message range: invokeWithMessagesRange + * Invokes a query after a successful completion of previous queries: invokeAfterMsgs + * Invokes a query after successful completion of one of the previous queries: invokeAfterMsg + * Join a channel/supergroup: channels.joinChannel + * Join a group call: phone.joinGroupCall + * Join channels and supergroups recently added to a chat folder deep link »: chatlists.joinChatlistUpdates + * Launch a prepaid giveaway »: payments.launchPrepaidGiveaway + * Leave a channel/supergroup: channels.leaveChannel + * Leave a group call: phone.leaveGroupCall + * List all chat folder deep links » associated to a folder: chatlists.getExportedInvites + * Load channel statistics graph asynchronously: stats.loadAsyncGraph + * Log in to telegram (via CLI or web): start + * Log out an active authorized session by its hash: account.resetAuthorization + * Log out an active web telegram login session: account.resetWebAuthorization + * Logger: logger + * Login as bot: botLogin + * Login as user: phoneLogin + * Login by importing an authorization token: auth.importWebTokenAuthorization + * Login using a redirected login token, generated in case of DC mismatch during QR code login: auth.importLoginToken + * Logout the session: logout + * Look for custom emojis associated to a UTF8 emoji: messages.searchCustomEmoji + * Look for updates of telegram's terms of service: help.getTermsOfServiceUpdate + * MTProto to TD params: MTProtoToTd + * MTProto to TDCLI params: MTProtoToTdcli + * Make a user admin in a basic group: messages.editChatAdmin + * Manually convert HTML to a message and a set of entities: htmlToMessageEntities + * Manually convert markdown to a message and a set of entities: markdownToMessageEntities + * Manually mark dialog as unread: messages.markDialogUnread + * Mark a specific sponsored message as read: channels.viewSponsoredMessage + * Mark a thread as read: messages.readDiscussion + * Mark all stories up to a certain ID as read, for a given peer; will emit an updateReadStories update to all logged-in sessions: stories.readStories + * Mark channel/supergroup history as read: channels.readHistory + * Mark channel/supergroup message contents as read: channels.readMessageContents + * Mark mentions as read: messages.readMentions + * Mark message reactions » as read: messages.readReactions + * Mark new featured stickers as read: messages.readFeaturedStickers + * Mark or unmark a sticker as favorite: messages.faveSticker + * Mark sponsored message as read: viewSponsoredMessage + * Marks message history as read: messages.readHistory + * Marks message history within a secret chat as read: messages.readEncryptedHistory + * Method for fetching previously featured stickers: messages.getOldFeaturedStickers + * Modify autosave settings: account.saveAutoSaveSettings + * Modify the admin rights of a user in a supergroup/channel: channels.editAdmin + * Notifies the sender about the recipient having listened a voice message or watched a video: messages.readMessageContents + * Notify the other user in a private chat that a screenshot of the chat was taken: messages.sendScreenshotNotification + * Notify the user that the sent passport data contains some errors The user will not be able to re-submit their Passport data to you until the errors are fixed (the contents of the field for which you returned the error must change): users.setSecureValueErrors + * Obtain a certain event handler plugin instance: getPlugin + * Obtain a list of Telegram Premium giveaway/gift code » options: payments.getPremiumGiftCodeOptions + * Obtain a list of bot commands for the specified bot scope and language code: bots.getBotCommands + * Obtain a list of channels where the user can post stories: stories.getChatsToSend + * Obtain a list of related languages that must be used when fetching emoji keyword lists »: messages.getEmojiKeywordsLanguages + * Obtain a list of similarly themed public channels, selected based on similarities in their subscriber bases: channels.getChannelRecommendations + * Obtain available message reactions »: messages.getAvailableReactions + * Obtain configuration for two-factor authorization with password: account.getPassword + * Obtain forwards of a story as a message to public chats and reposts by public channels: stats.getStoryPublicForwards + * Obtain full info about a set of stories by their IDs: stories.getStoriesByID + * Obtain info about the view count, forward count, reactions and recent viewers of one or more stories: stories.getStoriesViews + * Obtain information about a Telegram Premium giftcode »: payments.checkGiftCode + * Obtain information about a Telegram Premium giveaway »: payments.getGiveawayInfo + * Obtain information about a chat folder deep link »: chatlists.checkChatlistInvite + * Obtain information about a direct link Mini App: messages.getBotApp + * Obtain the API ID UI template: getWebAPITemplate + * Obtain the latest read story ID for all peers when first logging in, returned as a list of updateReadStories updates, see here » for more info: stories.getAllReadPeerStories + * Obtain the list of users that have viewed a specific story we posted: stories.getStoryViewsList + * Obtain user info from a temporary profile link: contacts.importContactToken + * Obtain which peers are we currently boosting, and how many boost slots we have left: premium.getMyBoosts + * Obtains a list of messages, indicating to which other public channels was a channel message forwarded.: stats.getMessagePublicForwards + * Obtains a list of peers that can be used to send messages in a specific group: channels.getSendAs + * Obtains a pipe that can be used to upload a file from a stream: getStreamPipe + * Obtains info about the boosts that were applied to a certain channel (admins only): premium.getBoostsList + * Obtains information about a chat export file, generated by a foreign chat app, click here for more info about imported chats »: messages.checkHistoryImport + * Once the user has confirmed their payment and shipping details, the bot receives an updateBotPrecheckoutQuery update.: messages.setBotPrecheckoutResults + * Only useful when consuming MadelineProto updates through an API in another language (like Javascript), **absolutely not recommended when directly writing MadelineProto bots**: getUpdates + * Open a bot mini app from a direct Mini App deep link, sending over user information after user confirmation: messages.requestAppWebView + * Open a bot mini app, sending over user information after user confirmation: messages.requestWebView + * Open a bot mini app: messages.requestSimpleWebView + * Opens a file in append-only mode: openFileAppendOnly + * Optional: notify the server that the user is currently busy in a call: this will automatically refuse all incoming phone calls until the current phone call is ended: phone.receivedCall + * Parse, update and store settings: updateSettings + * Pauses playback of the current audio file in the call: pausePlay + * Perform static analysis on a certain event handler class, to make sure it satisfies some performance requirements: validateEventHandlerClass + * Pin a message: messages.updatePinnedMessage + * Pin or unpin a saved message dialog »: messages.toggleSavedDialogPin + * Pin or unpin forum topics: channels.updatePinnedForumTopic + * Pin or unpin one or more stories: stories.togglePinned + * Pin/unpin a dialog: messages.toggleDialogPin + * Play file in call: callPlay + * Play files on hold in call: callPlayOnHold + * Positive modulo: posmod + * Press an inline callback button and get a callback answer from the bot: messages.getBotCallbackAnswer + * Provide a buffered reader for a file, URL or amp stream: openBuffered + * Provide a stream for a file, URL or amp stream: getStream + * Query an inline bot: messages.getInlineBotResults + * Rate a call, returns info about the rating message sent to the official VoIP bot: phone.setCallRating + * Rate transcribed voice message: messages.rateTranscribedAudio + * React to a story: stories.sendReaction + * React to message: messages.sendReaction + * Refresh full peer cache for a certain peer: refreshFullPeerCache + * Refresh peer cache for a certain peer: refreshPeerCache + * Register device to receive PUSH notifications: account.registerDevice + * Remove a sticker from the set where it belongs, bots only. The sticker set must have been created by the bot: stickers.removeStickerFromSet + * Removes all contacts without an associated Telegram account: contacts.resetSaved + * Renames a stickerset, bots only: stickers.renameStickerSet + * Reorder active usernames: channels.reorderUsernames + * Reorder folders: messages.updateDialogFiltersOrder + * Reorder installed stickersets: messages.reorderStickerSets + * Reorder pinned dialogs: messages.reorderPinnedDialogs + * Reorder pinned forum topics: channels.reorderPinnedForumTopics + * Reorder pinned saved message dialogs »: messages.reorderPinnedSavedDialogs + * Reorder usernames associated to a bot we own: bots.reorderUsernames + * Reorder usernames associated with the currently logged-in user: account.reorderUsernames + * Replace the contents of an entire blocklist, see here for more info »: contacts.setBlocked + * Report a message in a chat for violation of telegram's Terms of Service: messages.report + * Report a message reaction: messages.reportReaction + * Report a native antispam false positive: channels.reportAntiSpamFalsePositive + * Report a new incoming chat for spam, if the peer settings of the chat allow us to do that: messages.reportSpam + * Report a peer for violation of telegram's Terms of Service: account.reportPeer + * Report a profile photo of a dialog: account.reportProfilePhoto + * Report a secret chat for spam: messages.reportEncryptedSpam + * Report a story: stories.report + * Report an error to the previously set peer: report + * Report memory profile with memprof: reportMemoryProfile + * Reports some messages from a user in a supergroup as spam; requires administrator rights in the supergroup: channels.reportSpam + * Represents a list of emoji categories, to be used when selecting custom emojis to set as custom emoji status: messages.getEmojiStatusGroups + * Represents a list of emoji categories, to be used when selecting custom emojis to set as profile picture: messages.getEmojiProfilePhotoGroups + * Represents a list of emoji categories, to be used when selecting custom emojis: messages.getEmojiGroups + * Request VoIP call: requestCall + * Request an SMS code via Firebase: auth.requestFirebaseSms + * Request recovery code of a 2FA password, only for accounts with a recovery email configured: auth.requestPasswordRecovery + * Request secret chat: requestSecretChat + * Resend the code to verify an email to use as 2FA recovery method: account.resendPasswordEmail + * Resend the login code via another medium, the phone code type is determined by the return value of the previous auth.sendCode/auth.resendCode: see login for more info: auth.resendCode + * Reset all active web telegram login sessions: account.resetWebAuthorizations + * Reset rating of top peer: contacts.resetTopPeerRating + * Reset the 2FA password using the recovery code sent using auth.requestPasswordRecovery: auth.recoverPassword + * Reset the login email »: auth.resetLoginEmail + * Reset the update state and fetch all updates from the beginning: resetUpdateState + * Resets all notification settings from users and groups: account.resetNotifySettings + * Resolve a phone number to get user info, if their privacy settings allow it: contacts.resolvePhone + * Restart update loop: restart + * Resumes playback of the current audio file in the call: resumePlay + * Rethrow exception into event loop: rethrow + * Return all message drafts.: messages.getAllDrafts + * Return current settings: getSettings + * Returns a Telegram Passport authorization form for sharing data with a service: account.getAuthorizationForm + * Returns a list of available wallpapers: account.getWallPapers + * Returns an HTTP URL which can be used to automatically log in into translation platform and suggest new emoji keywords ». The URL will be valid for 30 seconds after generation: messages.getEmojiURL + * Returns attachment menu entry for a bot mini app that can be launched from the attachment menu »: messages.getAttachMenuBot + * Returns chat basic info on their IDs: messages.getChats + * Returns content of a web file, by proxying the request through telegram, see the webfile docs for more info: upload.getWebFile + * Returns current configuration, including data center configuration: help.getConfig + * Returns fetch the full list of custom emoji IDs » that cannot be used in channel emoji statuses »: account.getChannelRestrictedStatusEmojis + * Returns identifiers of pinned or always included chats from a chat folder imported using a chat folder deep link », which are suggested to be left when the chat folder is deleted: chatlists.getLeaveChatlistSuggestions + * Returns info on data center nearest to the user: help.getNearestDc + * Returns information about the next messages of the specified type in the chat split by days: messages.getSearchResultsCalendar + * Returns information on update availability for the current application: help.getAppUpdate + * Returns installed attachment menu bot mini apps »: messages.getAttachMenuBots + * Returns list of chats with non-default notification settings: account.getNotifyExceptions + * Returns localized text of a text message with an invitation: help.getInviteText + * Returns saved messages » forwarded from a specific peer: messages.getSavedHistory + * Returns sparse positions of messages of the specified type in the chat to be used for shared media scroll implementation: messages.getSearchResultsPositions + * Returns the conversation history with one interlocutor / within a chat: messages.getHistory + * Returns the current saved dialog list, see here » for more info: messages.getSavedDialogs + * Returns the current user dialog list: messages.getDialogs + * Returns the current user's contact list: contacts.getContacts + * Returns the list of blocked users: contacts.getBlocked + * Returns the list of messages by their IDs: messages.getMessages + * Returns the list of user photos: photos.getUserPhotos + * Returns the lists of boost that were applied to a channel by a specific user (admins only): premium.getUserBoosts + * Returns the session name: getSessionName + * Returns the support user for the "ask a question" feature: help.getSupport + * Returns users found by username substring: contacts.search + * Returns whether the current user is a bot: isSelfBot + * Returns whether the current user is a premium user, cached: isPremium + * Returns whether the current user is a user: isSelfUser + * Reupload telegram file: uploadFromTgfile + * Save a message draft associated to a chat: messages.saveDraft + * Save a theme: account.saveTheme + * Save or remove saved notification sound: account.saveRingtone + * Save phone call debug information: phone.saveCallLog + * Saves logs of application on the server: help.saveAppLog + * Search for custom emoji stickersets »: messages.searchEmojiStickerSets + * Search for messages and peers globally: messages.searchGlobal + * Search for messages: messages.search + * Search for stickersets: messages.searchStickerSets + * Securely save Telegram Passport document, for more info see the passport docs »: account.saveSecureValue + * Send VoIP signaling data: phone.sendSignalingData + * Send a custom request from a mini bot app, triggered by a web_app_invoke_custom_method event »: bots.invokeWebViewCustomMethod + * Send a media: messages.sendMedia + * Send a result obtained using messages.getInlineBotResults: messages.sendInlineBotResult + * Send an album or grouped media: messages.sendMultiMedia + * Send an email verification code: account.sendVerifyEmailCode + * Send compiled payment form: payments.sendPaymentForm + * Send confirmation code to cancel account deletion, for more info click here »: account.sendConfirmPhoneCode + * Send one or more chosen peers, as requested by a keyboardButtonRequestPeer button: messages.sendBotRequestedPeer + * Send phone call debug data to server: phone.saveCallDebug + * Send scheduled messages right away: messages.sendScheduledMessages + * Send the verification phone code for telegram passport: account.sendVerifyPhoneCode + * Send typing event by the current user to a secret chat: messages.setEncryptedTyping + * Sends a Telegram Passport authorization form, effectively sharing data with the service: account.acceptAuthorization + * Sends a current user typing event (see SendMessageAction for all event types) to a conversation partner or group: messages.setTyping + * Sends a custom request; for bots only: bots.sendCustomRequest + * Sends a document: sendDocument + * Sends a gif: sendGif + * Sends a list of messages to all peers (users, chats, channels) of the bot: broadcastMessages + * Sends a message to a chat: messages.sendMessage + * Sends a message to all report peers (admins of the bot): sendMessageToAdmins + * Sends a message with a file attachment to a secret chat: messages.sendEncryptedFile + * Sends a message: sendMessage + * Sends a photo: sendDocumentPhoto + * Sends a photo: sendPhoto + * Sends a service message to a secret chat: messages.sendEncryptedService + * Sends a sticker: sendSticker + * Sends a text message to a secret chat: messages.sendEncrypted + * Sends a video: sendVideo + * Sends a voice: sendVoice + * Sends an audio: sendAudio + * Sends an updateCustomEvent update to the event handler: sendCustomEvent + * Set NOOP update handler, ignoring all updates: setNoop + * Set a custom wallpaper » in a specific private chat with another user: messages.setChatWallPaper + * Set account self-destruction period: account.setAccountTTL + * Set an emoji status for a channel: channels.updateEmojiStatus + * Set an emoji status: account.updateEmojiStatus + * Set bot command list: bots.setBotCommands + * Set global privacy settings: account.setGlobalPrivacySettings + * Set localized name, about text and description of a bot (or of the current account, if called by a bot): bots.setBotInfo + * Set maximum Time-To-Live of all messages in the specified chat: messages.setHistoryTTL + * Set output file or stream for incoming OPUS audio packets in a call: callSetOutput + * Set peer(s) where to send errors occurred in the event loop: setReportPeers + * Set sensitive content settings (for viewing or hiding NSFW content): account.setContentSettings + * Set stickerset thumbnail: stickers.setStickerSetThumb + * Set the API ID UI template: setWebApiTemplate + * Set the callback answer to a user button press (bots only): messages.setBotCallbackAnswer + * Set the default peer that will be used to join a group call in a specific dialog: phone.saveDefaultGroupCallJoinAs + * Set the default suggested admin rights for bots being added as admins to channels, see here for more info on how to handle them »: bots.setBotBroadcastDefaultAdminRights + * Set the default suggested admin rights for bots being added as admins to groups, see here for more info on how to handle them »: bots.setBotGroupDefaultAdminRights + * Set time-to-live of current session: account.setAuthorizationTTL + * Set webhook update handler: setWebhook + * Set whether all users should join a discussion group in order to comment on a post »: channels.toggleJoinToSend + * Set whether all users should request admin approval to join the group »: channels.toggleJoinRequest + * Sets the menu button action » for a given user or for all users: bots.setBotMenuButton + * Should be called after the user hides the report spam/add as contact bar of a new chat, effectively prevents the user from executing the actions specified in the action bar »: messages.hidePeerSettingsBar + * Show or hide the real-time chat translation popup for a certain chat: messages.togglePeerTranslations + * Start a conversation with a bot using a deep linking parameter: messages.startBot + * Start a scheduled group call: phone.startScheduledGroupCall + * Start multiple instances of MadelineProto and the event handlers (enables async): startAndLoopMulti + * Start or stop recording a group call: the recorded audio and video streams will be automatically sent to Saved messages (the chat with ourselves): phone.toggleGroupCallRecord + * Start screen sharing in a call: phone.joinGroupCallPresentation + * Stop getting notifications about discussion replies of a certain user in @replies: contacts.blockFromReplies + * Stop screen sharing in a group call: phone.leaveGroupCallPresentation + * Stop update loop: stop + * Stops playing all files in the call, clears the main and the hold playlist: stopPlay + * Store RSA keys for CDN datacenters: getCdnConfig + * Submit requested order information for validation: payments.validateRequestedInfo + * Subscribe or unsubscribe to a scheduled group call: phone.toggleGroupCallStartSubscription + * Subscribe to event handler updates for a channel/supergroup we're not a member of: subscribeToUpdates + * Suggests a short name for a given stickerpack name: stickers.suggestShortName + * Telegram UTF-8 multibyte split: mbStrSplit + * Telegram UTF-8 multibyte substring: mbSubstr + * Terminate a group call: phone.discardGroupCall + * Terminate a takeout session, see here » for more info: account.finishTakeoutSession + * Terminate webview interaction started with messages.requestWebView, sending the specified message to the chat on behalf of the user: messages.sendWebViewResultMessage + * Terminates all user's authorized sessions except for the current one: auth.resetAuthorizations + * Test fibers: testFibers + * Toggle contact sign up notifications: account.setContactSignUpNotification + * Toggle supergroup slow mode: if enabled, users will only be able to send one message every seconds seconds: channels.toggleSlowMode + * Transcribe voice message: messages.transcribeAudio + * Transfer channel ownership: channels.editCreator + * Translate a given text: messages.translateText + * Turn a basic group into a supergroup: messages.migrateChat + * Uninstall a stickerset: messages.uninstallStickerSet + * Unpack base256 signed int: unpackSignedInt + * Unpack base256 signed long to string: unpackSignedLongString + * Unpack base256 signed long: unpackSignedLong + * Unpack binary double: unpackDouble + * Unpack bot API file ID: unpackFileId + * Unpin all pinned messages: messages.unpinAllMessages + * Unset event handler: unsetEventHandler + * Update folder: messages.updateDialogFilter + * Update the accent color and background custom emoji » of a channel: channels.updateColor + * Update the accent color and background custom emoji » of the current account: account.updateColor + * Update the keywords, emojis or mask coordinates of a sticker, bots only: stickers.changeSticker + * Update theme: account.updateTheme + * Updates current user profile photo: photos.uploadProfilePhoto + * Updates online user status: account.updateStatus + * Updates user profile: account.updateProfile + * Upload a custom profile picture for a contact, or suggest a new profile picture to a contact: photos.uploadContactProfilePhoto + * Upload a file and associate it to a chat (without actually sending it to the chat): messages.uploadMedia + * Upload a media file associated with an imported chat, click here for more info »: messages.uploadImportedMedia + * Upload encrypted file and associate it to a secret chat: messages.uploadEncryptedFile + * Upload file from URL: uploadFromUrl + * Upload file from callable: uploadFromCallable + * Upload file from stream: uploadFromStream + * Upload file to secret chat: uploadEncrypted + * Upload file: upload + * Upload notification sound, use account.saveRingtone to convert it and add it to the list of saved notification sounds: account.uploadRingtone + * Upload theme: account.uploadTheme + * Uploads a Telegram Story: stories.sendStory + * Use this method to obtain the online statuses of all contacts with an accessible Telegram account: contacts.getStatuses + * Use this method to set the score of the specified user in a game sent as a normal message (bots only): messages.setGameScore + * Use this method to set the score of the specified user in a game sent as an inline message (bots only): messages.setInlineGameScore + * Use this to accept a Seamless Telegram Login authorization request, for more info click here »: messages.acceptUrlAuth + * Used by the user to relay data from an opened reply keyboard bot mini app to the bot that owns it: messages.sendWebViewData + * Users may also choose to display messages from all topics of a forum as if they were sent to a normal group, using a "View as messages" setting in the local client: this setting only affects the current account, and is synced to other logged in sessions using this method: channels.toggleViewForumAsMessages + * Validates a username and checks availability: account.checkUsername + * Verify a new phone number to associate to the current account: account.sendChangePhoneCode + * Verify a phone number for telegram passport: account.verifyPhone + * Verify an email address: account.verifyEmail + * Verify an email to use as 2FA recovery method: account.confirmPasswordEmail + * View and search recently sent media.: messages.searchSentMedia + * Vote in a poll: messages.sendVote + * When called, skips to the next file in the playlist: skipPlay + * When client-side passcode lock feature is enabled, will not show message texts in incoming PUSH notifications: account.updateDeviceLocked + * When was full info for this chat last cached: fullChatLastUpdated + * Whether the currently playing audio file is paused: isPlayPaused + * Whether the user will receive notifications when contacts sign up: account.getContactSignUpNotification + * Whether this is altervista: isAltervista + * Whether we can convert any audio/video file to a VoIP OGG OPUS file, or the files must be preconverted using @libtgvoipbot: canConvertOgg + * Whether we can convert any audio/video file using ffmpeg: canUseFFmpeg + * Whether we're an IPC client instance: isIpc + * Whether we're an IPC server process (as opposed to an event handler): isIpcWorker + * Whether we're currently connected to the test DCs: isTestMode + * Wrap a Message constructor into an abstract Message object: wrapMessage + * Wrap a Pin constructor into an abstract Pinned object: wrapPin + * Wrap a media constructor into an abstract Media object: wrapMedia + * Wrap an Update constructor into an abstract Update object: wrapUpdate + * account.createBusinessChatLink + * account.deleteBusinessChatLink + * account.disablePeerConnectedBot + * account.editBusinessChatLink + * account.getBotBusinessConnection + * account.getBusinessChatLinks + * account.getConnectedBots + * account.getReactionsNotifySettings + * account.resolveBusinessChatLink + * account.setReactionsNotifySettings + * account.toggleConnectedBotPaused + * account.toggleSponsoredMessages + * account.updateBirthday + * account.updateBusinessAwayMessage + * account.updateBusinessGreetingMessage + * account.updateBusinessIntro + * account.updateBusinessLocation + * account.updateBusinessWorkHours + * account.updateConnectedBot + * account.updatePersonalChannel + * auth.reportMissingCode + * base64URL decode: base64urlDecode + * channels.reportSponsoredMessage + * channels.restrictSponsoredMessages + * channels.setBoostsToUnblockRestrictions + * channels.setEmojiStickers + * contacts.getBirthdays + * fragment.getCollectibleInfo + * help.getTimezonesList + * invokeWithBusinessConnection + * messages.checkQuickReplyShortcut + * messages.deleteQuickReplyMessages + * messages.deleteQuickReplyShortcut + * messages.editQuickReplyShortcut + * messages.getDefaultTagReactions + * messages.getEmojiStickerGroups + * messages.getMyStickers + * messages.getOutboxReadDate + * messages.getQuickReplies + * messages.getQuickReplyMessages + * messages.getSavedReactionTags + * messages.reorderQuickReplies + * messages.sendQuickReplyMessages + * messages.toggleDialogFilterTags + * messages.updateSavedReactionTag + * null-byte RLE decode: rleDecode + * null-byte RLE encode: rleEncode + * smsjobs.finishJob + * smsjobs.getSmsJob + * smsjobs.getStatus + * smsjobs.isEligibleToJoin + * smsjobs.join + * smsjobs.leave + * smsjobs.updateSettings + * stats.getBroadcastRevenueStats + * stats.getBroadcastRevenueTransactions + * stats.getBroadcastRevenueWithdrawalUrl + * stickers.replaceSticker + * stories.togglePinnedToTop + * users.getIsPremiumRequiredToContact +* [Contributing](https://docs.madelineproto.xyz/docs/CONTRIB.html) - You can contribute in various ways. + * [Translation](https://docs.madelineproto.xyz/docs/CONTRIB.html#translation) + * [Contribution guide](https://docs.madelineproto.xyz/docs/CONTRIB.html#contribution-guide) + * [Credits](https://docs.madelineproto.xyz/docs/CONTRIB.html#credits) +* [Web templates for `$MadelineProto->start()`](https://docs.madelineproto.xyz/docs/TEMPLATES.html) - The web template used for the $MadelineProto->start() and API ID web UIs can be changed. + diff --git a/docs/logo-hover.png b/docs/logo-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..87af34448ddff414293a0c9ba30605cf76a878ff GIT binary patch literal 132728 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

tafzKTL|4j=^xLx5rm$dGHY>XIQE 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 literal 0 HcmV?d00001 diff --git a/docs/logo.png b/docs/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..476ad6d58df6aea984a5eaf2f972b03665bb04ad GIT binary patch literal 82072 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

Hq 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¨~rmC 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'Enter your phone number: ')); +$authorization = $MadelineProto->completePhoneLogin(readline('Enter the code you received: ')); +if ($authorization['_'] === 'account.noPassword') { + throw new \danog\MadelineProto\Exception('2FA is enabled but no password is set!'); +} +if ($authorization['_'] === 'account.password') { + $authorization = $MadelineProto->complete2falogin(readline('Please enter your password (hint '.$authorization['hint'].'): ')); +} +if ($authorization['_'] === 'account.needSignup') { + $authorization = $MadelineProto->completeSignup(readline('Please enter your first name: '), readline('Please enter your last name (can be empty): ')); +} + +``` + diff --git a/docs/requestSecretChat.md b/docs/requestSecretChat.md new file mode 100644 index 0000000000..28c8d61abc --- /dev/null +++ b/docs/requestSecretChat.md @@ -0,0 +1,27 @@ +--- +title: requestSecretChat +description: requestSecretChat parameters, return type and example +redirect_from: /request_secret_chat.html +grand_parent: "Telegram RPC API" +parent: "Methods" +--- +## Method: requestSecretChat + + +### Parameters: + +| Name | Type | +|----------|---------------| +|id| A username, a bot API chat id, a tg-cli chat id, a [User](API_docs/types/User.html), an [InputPeer](API_docs/types/InputPeer.html), an [InputUser](API_docs/types/InputUser.html), a [Peer](API_docs/types/Peer.html)| + +### Return type: Number + +Returns the secret chat ID + +### Example ([now fully async!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +$secret_chat_id = $MadelineProto->requestSecretChat('@danogentili'); +``` + diff --git a/docs/res/bg1.png b/docs/res/bg1.png new file mode 100644 index 0000000000000000000000000000000000000000..a09782f97ff6a6e9eb9f3b28aa7f30c43e038dab GIT binary patch literal 819383 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

J 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

!ZMaf?BsKjO29k>NAv^Is%W3Oc9ZRS@{Vk=xr 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%0DZ8s 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�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

{RpAi;ih2(F%S7rlmpD%RbLBBYYvlyGye;d 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%0DECURAl4pr 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%0A8fCmB$CI;w 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 r?uUIm`^Vs+pM30n+@SFTxBdSBZ@`update2fa(['password' => 'current password', 'new_password' => 'New password', 'email' => 'daniil@daniil.it', 'hint' => 'ponies']); +} catch (RPCErrorException $e) { + if (strpos($e->rpc, 'EMAIL_UNCONFIRMED_') !== false) { + $Bool = $MadelineProto->account->confirmPasswordEmail(['code' => $MadelineProto->readline('Enter your email code: ')]); + } else { + throw $e; + } +} +``` diff --git a/template/!X.md b/template/!X.md new file mode 100644 index 0000000000..ec30994107 --- /dev/null +++ b/template/!X.md @@ -0,0 +1,11 @@ +--- +title: !X +description: Represents a TL serialized payload +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: !X +[Back to constructor index](index.html) + +Represents a TL serialized payload. +Typically you would want to provide a simple constructor or a method array here (method name under `_` as with constructors). diff --git a/template/Bool.md b/template/Bool.md new file mode 100644 index 0000000000..29aa87e0a5 --- /dev/null +++ b/template/Bool.md @@ -0,0 +1,10 @@ +--- +title: Bool +description: Represents a boolean. +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Bool +[Back to types index](index.html) + +Represents a boolean. diff --git a/template/DataJSON.md b/template/DataJSON.md new file mode 100644 index 0000000000..b7fca5c01a --- /dev/null +++ b/template/DataJSON.md @@ -0,0 +1,10 @@ +--- +title: DataJSON +description: Any json-encodable data +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: DataJSON +[Back to constructor index](index.html) + +Any json-encodable data. diff --git a/template/InputCheckPasswordSRP.md b/template/InputCheckPasswordSRP.md new file mode 100644 index 0000000000..d7eaf0e357 --- /dev/null +++ b/template/InputCheckPasswordSRP.md @@ -0,0 +1 @@ +You can also directly provide a password as a string. diff --git a/template/InputDocument.md b/template/InputDocument.md new file mode 100644 index 0000000000..01aad31026 --- /dev/null +++ b/template/InputDocument.md @@ -0,0 +1 @@ +You can also provide a [MessageMedia](MessageMedia.html), [Message](Message.html), [Update](Update.html), [Document](Document.html) here, MadelineProto will automatically convert it to the right type. diff --git a/template/InputEncryptedChat.md b/template/InputEncryptedChat.md new file mode 100644 index 0000000000..39b13615ce --- /dev/null +++ b/template/InputEncryptedChat.md @@ -0,0 +1,8 @@ +You can directly provide the [Update](Update.html) or [EncryptedMessage](EncryptedMessage.html) object here, MadelineProto will automatically extract the destination chat id. + +The following syntax can also be used: + +```php +$%s = -147286699; // Numeric chat id returned by requestSecretChat, can be positive or negative +``` + diff --git a/template/InputFile.md b/template/InputFile.md new file mode 100644 index 0000000000..6028f63392 --- /dev/null +++ b/template/InputFile.md @@ -0,0 +1,8 @@ +The following syntax can also be used: + +```php +$%s = 'filename.mp4'; // The file path can also be used +$%1$s = 'https://google.com'; // A URL can also be used +``` + +You can also use async streams, HTTP response objects, and [much more](https://docs.madelineproto.xyz/docs/FILES.html#downloading-files)! diff --git a/template/InputMedia.md b/template/InputMedia.md new file mode 100644 index 0000000000..eb602370de --- /dev/null +++ b/template/InputMedia.md @@ -0,0 +1 @@ +You can also provide a [MessageMedia](MessageMedia.html), [Message](Message.html), [Update](Update.html), [Document](Document.html), [Photo](Photo.html), [InputDocument](InputDocument.html), [InputPhoto](InputPhoto.html) here, MadelineProto will automatically convert it to the right type. diff --git a/template/InputMessage.md b/template/InputMessage.md new file mode 100644 index 0000000000..ace6a0b804 --- /dev/null +++ b/template/InputMessage.md @@ -0,0 +1,7 @@ +The following syntax can also be used: + +```php +$%s = 142; // Numeric message ID +``` + + diff --git a/template/InputPhoto.md b/template/InputPhoto.md new file mode 100644 index 0000000000..f430af0518 --- /dev/null +++ b/template/InputPhoto.md @@ -0,0 +1 @@ +You can also provide a [MessageMedia](MessageMedia.html), [Message](Message.html), [Update](Update.html), [Photo](Photo.html) here, MadelineProto will automatically convert it to the right type. diff --git a/template/KeyboardButton.md b/template/KeyboardButton.md new file mode 100644 index 0000000000..69a1b90637 --- /dev/null +++ b/template/KeyboardButton.md @@ -0,0 +1,21 @@ +Clicking these buttons: + +To click these buttons simply run the `click` method: + +```php +$result = $%s->click(); +``` + +`$result` can be one of the following: + + +* A string - If the button is a keyboardButtonUrl + +* [Updates](Updates.html) - If the button is a keyboardButton, the message will be sent to the chat, in reply to the message with the keyboard + +* [messages.BotCallbackAnswer](messages.BotCallbackAnswer.html) - If the button is a keyboardButtonCallback or a keyboardButtonGame the button will be pressed and the result will be returned + +* `false` - If the button is an unsupported button, like keyboardButtonRequestPhone, keyboardButtonRequestGeoLocation, keyboardButtonSwitchInlinekeyboardButtonBuy; you will have to parse data from these buttons manually + + +You can also access the properties of the constructor as a normal array, for example `$button['name']` diff --git a/template/Method.md b/template/Method.md new file mode 100644 index 0000000000..c4baa61157 --- /dev/null +++ b/template/Method.md @@ -0,0 +1,12 @@ +--- +title: "%s" +description: "%s" +grand_parent: "Telegram RPC API" +parent: "Methods" +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png%s +--- +# Method: %s +[Back to methods index](index.html) + + + diff --git a/template/PhoneCall.md b/template/PhoneCall.md new file mode 100644 index 0000000000..9918a418a9 --- /dev/null +++ b/template/PhoneCall.md @@ -0,0 +1 @@ +See [here »](https://docs.madelineproto.xyz/PHP/danog/MadelineProto/VoIP.html) for the full documentation! \ No newline at end of file diff --git a/template/ReplyMarkup.md b/template/ReplyMarkup.md new file mode 100644 index 0000000000..63ccc23351 --- /dev/null +++ b/template/ReplyMarkup.md @@ -0,0 +1,6 @@ +For simplicity, you can also provide a bot API markup object, one of: +- [bot API InlineKeyboardMarkup](https://core.telegram.org/bots/api#inlinekeyboardmarkup) +- [bot API ReplyKeyboardMarkup](https://core.telegram.org/bots/api#replykeyboardmarkup) +- [bot API ReplyKeyboardRemove](https://core.telegram.org/bots/api#replykeyboardremove) +- [bot API ForceReply](https://core.telegram.org/bots/api#forcereply) + diff --git a/template/Type.md b/template/Type.md new file mode 100644 index 0000000000..016d2a3035 --- /dev/null +++ b/template/Type.md @@ -0,0 +1,19 @@ +--- +title: %s +description: constructors and methods of type %1$s +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png%s +--- +# Type: %s +[Back to types index](index.html) + +%s + +### Possible values (constructors): + +%s + +### Methods that return an object of this type (methods): + +%s + diff --git a/template/Updates.md b/template/Updates.md new file mode 100644 index 0000000000..2a21f2b5b2 --- /dev/null +++ b/template/Updates.md @@ -0,0 +1,15 @@ +You can use the following methods to extract information from this constructor: + +```php +// Extract an array of Update constructors +$vector_of_update = $MadelineProto->extractUpdates($Updates); + +// Extract an updateNewMessage, updateNewChannelMessage, updateEditMessage, updateEditChannelMessage constructor +$message_update = $MadelineProto->extractMessageUpdate($Updates); + +// Extract a message constructor +$message = $MadelineProto->extractMessage($Updates); + +// Extract a message ID +$message = $MadelineProto->extractMessageId($Updates); +``` diff --git a/template/User.md b/template/User.md new file mode 100644 index 0000000000..ef5270d15b --- /dev/null +++ b/template/User.md @@ -0,0 +1,35 @@ +You can directly provide the [Update](Update.html) or [Message](Message.html) object here, MadelineProto will automatically extract the destination chat id. + +The following syntaxes can also be used: + +```php +$%1$s = '@username'; // Username + +$%1$s = $update; // Update objects received in the event handler + +$%1$s = 'me'; // The currently logged-in user + +$%1$s = 44700; // bot API id (users) +$%1$s = -492772765; // bot API id (chats) +$%1$s = -10038575794; // bot API id (channels) + +$%1$s = 'https://t.me/danogentili'; // t.me URLs +$%1$s = 'https://t.me/joinchat/asfln1-21fa_'; // t.me invite links + +``` + +You can also provide one of the following objects, instead, MadelineProto will handle conversion automatically: + +- [Chat](Chat.html) +- [User](User.html) +- [InputPeer](InputPeer.html) +- [InputDialogPeer](InputDialogPeer.html) +- [InputNotifyPeer](InputNotifyPeer.html) +- [InputUser](InputUser.html) +- [InputChannel](InputChannel.html) +- [Peer](Peer.html) +- [DialogPeer](DialogPeer.html) +- [NotifyPeer](NotifyPeer.html) +- [Chat](Chat.html) + + diff --git a/template/boolFalse.md b/template/boolFalse.md new file mode 100644 index 0000000000..a3fd4f1a87 --- /dev/null +++ b/template/boolFalse.md @@ -0,0 +1,10 @@ +--- +title: boolFalse +description: Represents a boolean with value equal to false +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# boolFalse +[Back to constructor index](index.html) + +Represents a boolean with value equal to `false`. diff --git a/template/boolTrue.md b/template/boolTrue.md new file mode 100644 index 0000000000..3e6866f9b0 --- /dev/null +++ b/template/boolTrue.md @@ -0,0 +1,10 @@ +--- +title: boolTrue +description: Represents a boolean with value equal to true +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# boolTrue +[Back to constructor index](index.html) + +Represents a boolean with value equal to `true`. diff --git a/template/bytes.md b/template/bytes.md new file mode 100644 index 0000000000..ff1d00fbe5 --- /dev/null +++ b/template/bytes.md @@ -0,0 +1,13 @@ +--- +title: bytes +description: A string of variable length +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: bytes +[Back to constructor index](index.html) + +```php +$bytes = "simple string of bytes"; +``` + diff --git a/template/chunks.md b/template/chunks.md new file mode 100644 index 0000000000..ec073df826 --- /dev/null +++ b/template/chunks.md @@ -0,0 +1,6 @@ + +## Return value + +If the length of the provided message is bigger than 4096, the message will be split in chunks and the method will be called multiple times, with the same parameters (except for the message), and an array of [%s](../types/%s.html) will be returned instead. + + diff --git a/template/constructor-example.md b/template/constructor-example.md new file mode 100644 index 0000000000..68ffcded4c --- /dev/null +++ b/template/constructor-example.md @@ -0,0 +1,5 @@ +### Example: + +``` +$%s = %s; +``` diff --git a/template/constructors-index.md b/template/constructors-index.md new file mode 100644 index 0000000000..2dc26b1c7f --- /dev/null +++ b/template/constructors-index.md @@ -0,0 +1,10 @@ +--- +title: Constructors +description: List of constructors +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructors +[Back to API documentation index](..) + +%s diff --git a/template/disallow.json b/template/disallow.json new file mode 100644 index 0000000000..6f7ab35a45 --- /dev/null +++ b/template/disallow.json @@ -0,0 +1,41 @@ +{ + "__messages.getHistory": "Please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html)", + "__channels.getMessages": "Please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html)", + "__messages.getMessages": "Please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html)", + "account.updatePasswordSettings": "You cannot use this method directly; use $MadelineProto->update2fa($params), instead (see https:\/\/docs.madelineproto.xyz for more info)", + "account.getPasswordSettings": "You cannot use this method directly; use $MadelineProto->update2fa($params), instead (see https:\/\/docs.madelineproto.xyz for more info)", + "messages.receivedQueue": "You cannot use this method directly", + "messages.getDhConfig": "You cannot use this method directly, instead use $MadelineProto->getDhConfig();", + "auth.bindTempAuthKey": "You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https:\/\/docs.madelineproto.xyz\/docs\/SETTINGS.html for more info", + "auth.exportAuthorization": "You cannot use this method directly, use $MadelineProto->exportAuthorization() instead, see https:\/\/docs.madelineproto.xyz\/docs\/LOGIN.html", + "auth.importAuthorization": "You cannot use this method directly, use $MadelineProto->importAuthorization($authorization) instead, see https:\/\/docs.madelineproto.xyz\/docs\/LOGIN.html", + "auth.logOut": "You cannot use this method directly, use the logout method instead (see https:\/\/docs.madelineproto.xyz for more info)", + "auth.importBotAuthorization": "You cannot use this method directly, use the botLogin method instead (see https:\/\/docs.madelineproto.xyz for more info)", + "auth.sendCode": "You cannot use this method directly, use the phoneLogin method instead (see https:\/\/docs.madelineproto.xyz for more info)", + "auth.signIn": "You cannot use this method directly, use the completePhoneLogin method instead (see https:\/\/docs.madelineproto.xyz for more info)", + "auth.checkPassword": "You cannot use this method directly, use the complete2falogin method instead (see https:\/\/docs.madelineproto.xyz for more info)", + "auth.signUp": "You cannot use this method directly, use the completeSignup method instead (see https:\/\/docs.madelineproto.xyz for more info)", + "users.getFullUser": "You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https:\/\/docs.madelineproto.xyz for more info)", + "users.getUsers": "You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https:\/\/docs.madelineproto.xyz for more info)", + "channels.getChannels": "You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https:\/\/docs.madelineproto.xyz for more info)", + "channels.getFullChannel": "You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https:\/\/docs.madelineproto.xyz for more info)", + "messages.getFullChat": "You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https:\/\/docs.madelineproto.xyz for more info)", + "contacts.resolveUsername": "You cannot use this method directly, use the resolveUsername, getPwrChat, getInfo, getFullInfo methods instead (see https:\/\/docs.madelineproto.xyz for more info)", + "messages.acceptEncryption": "You cannot use this method directly, see https:\/\/docs.madelineproto.xyz for more info on handling secret chats", + "messages.discardEncryption": "You cannot use this method directly, see https:\/\/docs.madelineproto.xyz for more info on handling secret chats", + "messages.requestEncryption": "You cannot use this method directly, see https:\/\/docs.madelineproto.xyz for more info on handling secret chats", + "phone.requestCall": "You cannot use this method directly, see https:\/\/docs.madelineproto.xyz#calls for more info on handling calls", + "phone.acceptCall": "You cannot use this method directly, see https:\/\/docs.madelineproto.xyz#calls for more info on handling calls", + "phone.confirmCall": "You cannot use this method directly, see https:\/\/docs.madelineproto.xyz#calls for more info on handling calls", + "phone.discardCall": "You cannot use this method directly, see https:\/\/docs.madelineproto.xyz#calls for more info on handling calls", + "updates.getChannelDifference": "You cannot use this method directly, please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html), instead.", + "updates.getDifference": "You cannot use this method directly, please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html), instead.", + "updates.getState": "You cannot use this method directly, please use the [event handler](https://docs.madelineproto.xyz/docs/UPDATES.html), instead.", + "upload.getCdnFile": "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https:\/\/docs.madelineproto.xyz for more info", + "upload.getFileHashes": "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https:\/\/docs.madelineproto.xyz for more info", + "upload.getCdnFileHashes": "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https:\/\/docs.madelineproto.xyz for more info", + "upload.reuploadCdnFile": "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https:\/\/docs.madelineproto.xyz for more info", + "upload.getFile": "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https:\/\/docs.madelineproto.xyz for more info", + "upload.saveFilePart": "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https:\/\/docs.madelineproto.xyz for more info", + "upload.saveBigFilePart": "You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https:\/\/docs.madelineproto.xyz for more info" +} diff --git a/template/double.md b/template/double.md new file mode 100644 index 0000000000..6a0545ce05 --- /dev/null +++ b/template/double.md @@ -0,0 +1,10 @@ +--- +title: double +description: A double precision floating point number +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: double +[Back to constructor index](index.html) + +A double precision floating point number, single precision can also be used (float). diff --git a/template/index.md b/template/index.md new file mode 100644 index 0000000000..4c2b3c0b86 --- /dev/null +++ b/template/index.md @@ -0,0 +1,17 @@ +--- +title: "Telegram RPC API" +description: "%s" +has_children: true +has_toc: false +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Telegram RPC API + +[Back to main documentation](..) + + +[Methods](methods/) + +[Constructors](constructors/) + +[Types](types/) diff --git a/template/int.md b/template/int.md new file mode 100644 index 0000000000..59ad4e6570 --- /dev/null +++ b/template/int.md @@ -0,0 +1,10 @@ +--- +title: integer +description: A 32 bit signed integer ranging from -2147483648 to 2147483647 +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: int +[Back to constructor index](index.html) + +A 32 bit signed integer ranging from `-2147483648` to `2147483647`. diff --git a/template/int128.md b/template/int128.md new file mode 100644 index 0000000000..2f28592d0c --- /dev/null +++ b/template/int128.md @@ -0,0 +1,10 @@ +--- +title: int128 +description: A 128 bit signed integer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: int128 +[Back to constructor index](index.html) + +A 128 bit signed integer represented in little-endian base256 (`string`) format. diff --git a/template/int256.md b/template/int256.md new file mode 100644 index 0000000000..6a67124c18 --- /dev/null +++ b/template/int256.md @@ -0,0 +1,10 @@ +--- +title: int256 +description: A 256 bit signed integer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: int256 +[Back to constructor index](index.html) + +A 256 bit signed integer represented in little-endian base256 (`string`) format. diff --git a/template/int512.md b/template/int512.md new file mode 100644 index 0000000000..756bedce57 --- /dev/null +++ b/template/int512.md @@ -0,0 +1,10 @@ +--- +title: int512 +description: A 512 bit signed integer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: int512 +[Back to constructor index](index.html) + +A 512 bit signed integer represented in little-endian base256 (`string`) format. diff --git a/template/int53.md b/template/int53.md new file mode 100644 index 0000000000..90a1e5ef7c --- /dev/null +++ b/template/int53.md @@ -0,0 +1,10 @@ +--- +title: integer +description: A 53 bit signed integer +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: int53 +[Back to constructor index](index.html) + +A 53 bit signed integer. diff --git a/template/long.md b/template/long.md new file mode 100644 index 0000000000..4465a550d2 --- /dev/null +++ b/template/long.md @@ -0,0 +1,10 @@ +--- +title: long +description: A 32 bit signed integer ranging from -9223372036854775808 to 9223372036854775807 +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: long +[Back to constructor index](index.html) + +A 64 bit signed integer ranging from `-9223372036854775808` to `9223372036854775807`. diff --git a/template/method-example.md b/template/method-example.md new file mode 100644 index 0000000000..8e1c5a8ff5 --- /dev/null +++ b/template/method-example.md @@ -0,0 +1,15 @@ +### MadelineProto Example ([now async for huge speed and parallelism!](https://docs.madelineproto.xyz/docs/ASYNC.html)): + + +```php +if (!file_exists('madeline.php')) { + copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); +} +include 'madeline.php'; + +$MadelineProto = new \danog\MadelineProto\API('session.madeline'); +$MadelineProto->start(); + +$%s = $MadelineProto->%s(%s); +``` + diff --git a/template/methods-api-index.md b/template/methods-api-index.md new file mode 100644 index 0000000000..5ffa801351 --- /dev/null +++ b/template/methods-api-index.md @@ -0,0 +1,38 @@ +--- +title: Methods (API) +description: List of methods +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Methods +[Back to API documentation index](..) + +[Go to the new description-version method index](%s) + +$MadelineProto->[logout](https://docs.madelineproto.xyz/logout.html)(); + +$MadelineProto->[phoneLogin](https://docs.madelineproto.xyz/phoneLogin.html)($number); + +$MadelineProto->[completePhoneLogin](https://docs.madelineproto.xyz/completePhoneLogin.html)($code); + +$MadelineProto->[complete2FALogin](https://docs.madelineproto.xyz/complete2FAlogin.html)($password); + +$MadelineProto->[botLogin](https://docs.madelineproto.xyz/botLogin.html)($token); + + +$MadelineProto->[getDialogs](https://docs.madelineproto.xyz/getDialogs.html)(); + +$MadelineProto->[getPwrChat](https://docs.madelineproto.xyz/getPwrChat.html)($id); + +$MadelineProto->[getInfo](https://docs.madelineproto.xyz/getInfo.html)($id); + +$MadelineProto->[getFullInfo](https://docs.madelineproto.xyz/getFullInfo.html)($id); + +$MadelineProto->[getSelf](https://docs.madelineproto.xyz/getSelf.html)(); + + +$MadelineProto->[requestCall](https://docs.madelineproto.xyz/requestCall.html)($id); + +$MadelineProto->[requestSecretChat](https://docs.madelineproto.xyz/requestSecretChat.html)($id); + +%s diff --git a/template/methods-index.md b/template/methods-index.md new file mode 100644 index 0000000000..6fc8a5a936 --- /dev/null +++ b/template/methods-index.md @@ -0,0 +1,37 @@ +--- +title: Methods +description: What do you want to do? +parent: "Telegram RPC API" +has_children: true +nav_order: 3 +has_toc: false +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# What do you want to do? +[Go back to API documentation index](..) + +[Go to the old code-version method index](api_%s) + +* [Login](https://docs.madelineproto.xyz/docs/LOGIN.html) + +* [Change 2FA password: update2FA](https://docs.madelineproto.xyz/update2fa.html) + +* [Get all chats, broadcast a message to all chats: getDialogIds, getDialogs, getFullDialogs](https://docs.madelineproto.xyz/docs/DIALOGS.html) + +* [Get the full participant list of a channel/group/supergroup: getPwrChat](https://docs.madelineproto.xyz/getPwrChat.html) + +* [Get full info about a user/chat/supergroup/channel: getFullInfo](https://docs.madelineproto.xyz/getFullInfo.html) + +* [Get info about a user/chat/supergroup/channel: getInfo](https://docs.madelineproto.xyz/getInfo.html) + +* [Get the ID of a user/chat/supergroup/channel/update: getID](https://docs.madelineproto.xyz/getId.html) + +* [Get info about the currently logged-in user: getSelf](https://docs.madelineproto.xyz/getSelf.html) + +* [Upload or download files up to 4 GB: uploadFrom*, downloadTo*](https://docs.madelineproto.xyz/docs/FILES.html) + +* [Make a phone call and play a song](https://docs.madelineproto.xyz/docs/CALLS.html) + +* [Create a secret chat bot](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html) + +%s diff --git a/template/null.md b/template/null.md new file mode 100644 index 0000000000..1c1812ad71 --- /dev/null +++ b/template/null.md @@ -0,0 +1,10 @@ +--- +title: null +description: Represents a null value +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# null +[Back to constructor index](index.html) + +Represents a `null` value. diff --git a/template/parse_mode.md b/template/parse_mode.md new file mode 100644 index 0000000000..1ba9856034 --- /dev/null +++ b/template/parse_mode.md @@ -0,0 +1,60 @@ + +## Usage of parse_mode: + +Set parse_mode to html to enable HTML parsing of the message. + +Set parse_mode to Markdown to enable markdown parsing of the message. + +The following tags are currently supported: + +```html +
a newline +bold works ok, internal tags are stripped +bold +italic +italic +underline +strikethrough +strikethrough +strikethrough +inline fixed-width code +

pre-formatted fixed-width code block
+
pre-formatted fixed-width code block
+
URL +Mention by username +Mention by user id +Mention by user id +Custom emoji: 👍 +Custom emoji: 👍 +
Pre tags can have a language attribute
+Spoiler +Spoiler +``` + +You can also use normal markdown ([bot API MarkdownV2 syntax](https://core.telegram.org/bots/api#markdownv2-style)), note that to create mentions you can also use the `mention:` syntax like in html: + +```markdown +*bold \*text* +_italic \*text_ +__underline__ +~strikethrough~ +||spoiler|| +*bold _italic bold ~italic bold strikethrough ||italic bold strikethrough spoiler||~ __underline italic bold___ bold* +[inline URL](http://www.example.com/) +[inline mention of a user](tg://user?id=123456789) +![👍](tg://emoji?id=5368324170671202286) +\`inline fixed-width code\` +\`\`\` +pre-formatted fixed-width code block +\`\`\` +\`\`\`php +pre-formatted fixed-width code block written in the PHP programming language +\`\`\` + +[Mention by username](mention:@danogentili) +[Mention by user id](mention:186785362) +[Mention by user id](tg://user?id=186785362) +[👍](emoji:5368324170671202286) +[👍](tg://emoji?id=5368324170671202286) +``` + diff --git a/template/photoStrippedSize.md b/template/photoStrippedSize.md new file mode 100644 index 0000000000..9608d86d79 --- /dev/null +++ b/template/photoStrippedSize.md @@ -0,0 +1,35 @@ +--- +title: photoStrippedSize +description: Just the image's content +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Constructor: photoStrippedSize +[Back to constructors index](index.html) + + + +Just the image's content + +### Attributes: + +| Name | Type | Required | Description | +|----------|---------------|----------|-------------| +|type|[string](../types/string.html) | Yes|Thumbnail type| +|bytes|[bytes](../types/bytes.html) | Yes|Thumbnail data| +|inflated|[bytes](../types/bytes.html) | Yes|JPG image data| + + + +### Type: [PhotoSize](../types/PhotoSize.html) + + +### Example: + +```php +$photoStrippedSize = ['_' => 'photoStrippedSize', 'type' => 'string', 'bytes' => 'bytes']; +``` + + + + diff --git a/template/reply_markup.md b/template/reply_markup.md new file mode 100644 index 0000000000..14f9503b9d --- /dev/null +++ b/template/reply_markup.md @@ -0,0 +1,6 @@ + +## Usage of reply_markup + +You can provide bot API reply_markup objects here. + + diff --git a/template/string.md b/template/string.md new file mode 100644 index 0000000000..95353ffd00 --- /dev/null +++ b/template/string.md @@ -0,0 +1,10 @@ +--- +title: string +description: A UTF8 string of variable length +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: string +[Back to constructor index](index.html) + +A UTF8 string of variable length. The total length in bytes of the string must not be bigger than 16777215. diff --git a/template/types-index.md b/template/types-index.md new file mode 100644 index 0000000000..730268f206 --- /dev/null +++ b/template/types-index.md @@ -0,0 +1,9 @@ +--- +title: Types +description: List of types +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +# Types +[Back to API documentation index](..) + diff --git a/template/waveform.md b/template/waveform.md new file mode 100644 index 0000000000..8867f420ca --- /dev/null +++ b/template/waveform.md @@ -0,0 +1,16 @@ +--- +title: waveform +description: An array representing the waveform of a voice message +nav_exclude: true +image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png +--- +## Type: waveform +[Back to constructor index](index.html) + +The waveform of a voice message is represented by an array of 100 elements, containing integers ranging from 0 to 31. + +```php +$waveform = array_fill(0, 100, 0); +$waveform = array_fill(0, 100, 31); +``` +