MadelineProto, a PHP MTProto telegram client Created by Daniil Gentili #StandWithUkraine ???? Do join the official channel, @MadelineProto and the support groups ! 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 ! Getting started ( now fully async! ) <?php // PHP 8.2+ is required. if (!file_exists( 'madeline.php' )) { copy( 'https://phar.madelineproto.xyz/madeline.php' , 'madeline.php' ); } include 'madeline.php' ; $ MadelineProto = new \danog\ MadelineProto \ API ( 'session.madeline' ); $ MadelineProto -> 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 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 - Multifeatured Telegram VoIP webradio TelegramApiServer - Fast, simple, async php telegram api server: an HTTP JSON API for MadelineProto! simpleBot.php - Extremely basic example tgstories_dl_bot.php - Source code of @tgstories_dl_bot - Bot to download any Telegram Story! downloadRenameBot.php - Download files by URL and rename Telegram files using this async parallelized bot! secret_bot.php - Secret chat bot! pipesbot.php - Creating inline bots and using other inline bots via a userbot! bot.php - Examples for how to use filters, updates, get download links for any file, Telegram Stories and much more! Want to add your own open-source project to this list? Click here! Some of MadelineProto's core components are also available as separate, standalone libraries: danog/async-orm - Async ORM based on AMPHP v3 and fibers. danog/telegram-entities - A library to work with Telegram UTF-16 styled text entities. danog/tg-file-decoder - A library to work with Telegram bot API file IDs. danog/tg-dialog-id - A library to work with Telegram bot API dialog IDs. danog/loop - Loop/actor model abstraction for AMPHP. danog/ipc - Async IPC component for AMPHP. danog/dns-over-https - Async DNS-over-HTTPS resolution for AMPHP. Documentation Creating a client - This page explains how to create a MadelineProto instance. Login - There are many ways you can login with MadelineProto. Getting permission to use the telegram API Automatic Manual (user) API ID Manual (bot) QR code login (user) Features - MadelineProto can do everything official clients can do, and more! Requirements - MadelineProto requires the mbstring, xml, json, fileinfo, gmp, openssl, iconv, gd extensions to function properly. 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. Getting started CLI bot (recommended) Databases on docker Web docker Custom extensions Installation - There are various ways to install MadelineProto: Simple Composer from existing project Composer from scratch Broadcasting messages to all users - MadelineProto can be used to broadcast messages to all users, chats and channels of a bot or userbot. Handling updates (new messages & other events) - Update handling can be done in different ways: Async Event driven Full example Bound methods Filters Simple filters Attribute filters MTProto filters Plugins Cron Persisting data and IPC Built-in ORM IPC Restarting Self-restart on webhosts Multi-account Automatic static analysis Avoiding the use of filesystem functions Webhook (for HTTP APIs) getUpdates (only for Javascript APIs) Noop (default) danog\MadelineProto\Broadcast\Progress ≫ Full property list ≫ Full bound method list ≫ danog\MadelineProto\EventHandler\BotCommands ≫ - The command set danog\MadelineProto\EventHandler\Channel\ChannelParticipant ≫ - A participant has left, joined, was banned or admined in a channel or supergroup danog\MadelineProto\EventHandler\Delete\DeleteChannelMessages ≫ - Some messages in a supergroup/channel danog\MadelineProto\EventHandler\Delete\DeleteScheduledMessages ≫ - Some scheduled messages danog\MadelineProto\EventHandler\Message\Service\DialogChannelMigrateFrom ≫ - Indicates the channel was migrated danog\MadelineProto\EventHandler\Message\Service\DialogChatMigrateTo ≫ - Indicates the chat was migrated danog\MadelineProto\EventHandler\Message\Service\DialogPeerRequested ≫ - Contains info about a peer that the user shared with the bot after clicking on a keyboardButtonRequestPeer danog\MadelineProto\EventHandler\Message\Service\DialogSetChatWallPaper ≫ - The wallpaper danog\MadelineProto\EventHandler\Message\Service\DialogSuggestProfilePhoto ≫ - A new profile picture was suggested using photos.uploadContactProfilePhoto danog\MadelineProto\EventHandler\Message\Service\DialogTopicCreated ≫ - A forum topic danog\MadelineProto\EventHandler\Message\Service\DialogTopicEdited ≫ - Forum topic danog\MadelineProto\EventHandler\Message\Service\DialogWebView ≫ - Data from an opened reply keyboard bot web app was relayed to the bot that owns it (user & bot side service message) danog\MadelineProto\EventHandler\Pinned\PinnedChannelMessages ≫ - Represents messages that were pinned/unpinned in a channel danog\MadelineProto\EventHandler\Pinned\PinnedGroupMessages ≫ - Represents messages that were pinned/unpinned in a chat/supergroup danog\MadelineProto\EventHandler\Typing\SupergroupUserTyping ≫ - A user is typing in a supergroup danog\MadelineProto\EventHandler\User\Status\Emoji ≫ - The emoji status danog\MadelineProto\VoIP ≫ Full property list ≫ Full bound method list ≫ Simple filters ≫ Attribute filters ≫ MTProto filters ≫ Configuration Creating and uploading text files Logging Filters - MadelineProto offers a very simple and intuitive message filtering system, based on PHP's type system and attributes. Simple filters Attribute filters Creating custom attribute filters MTProto filters Plugins - MadelineProto offers a native plugin system, based on event handlers! Installing plugins Simple installation Composer installation Builtin plugins Creating plugins Full plugin example Limitations Namespace requirements Distribution danog\MadelineProto\EventHandler\Plugin\RestartPlugin ≫ Configuration Creating and uploading text files Logging 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!), reducing RAM usage. \danog\MadelineProto\Settings\Database\Memory: Memory backend settings. \danog\MadelineProto\Settings\Database\Mysql: MySQL backend settings. \danog\MadelineProto\Settings\Database\Postgres: Postgres backend settings. \danog\MadelineProto\Settings\Database\Redis: Redis backend settings. Settings - MadelineProto has lots of settings that can be used to modify the behaviour of the library. AppInfo: App information. Auth: Cryptography settings. Connection: Connection settings. Files: File management settings. Logger: Logger settings. Peer: Peer database settings. Pwr: PWRTelegram settings. RPC: RPC settings. SecretChats: Secret chat settings. Serialization: Serialization settings. TLSchema: TL schema settings. Templates: Web and CLI template settings for login. VoIP: VoIP settings. Database\Memory: Memory backend settings. Database\Mysql: MySQL backend settings. Database\Postgres: Postgres backend settings. Database\Redis: Redis backend settings. Getting info about the current user - Here's how you can fetch info about the currently logged in user Exceptions - MadelineProto can throw lots of different exceptions. List of exception types Pretty TL trace Getting the TL trace 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. Logging - MadelineProto provides a unified class for logging messages to the logging destination defined in settings. Telegram VoIP phone calls - MadelineProto provides an easy wrapper to work with phone calls. Requesting a call Playing audio files Webhost support! Accepting calls 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. Bot API file IDs Uploading & sending files Security notice Photos Photos as documents Documents GIFs Videos Music Voice Stickers Uploading files Reusing uploaded files Renaming files Downloading files Extracting download info Getting a download link Downloading profile pictures Download to directory Download to file Download to stream Download to callback Download to http-server Download to browser Getting progress 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 Full chat info Reduced chat info (very fast) Just the chat ID (extremely fast) 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 Full dialog info Inline buttons - You can easily click inline buttons using MadelineProto, just access the correct button: Secret chats - MadelineProto provides wrappers to work with secret chats. Requesting secret chats Accepting secret chats Checking secret chat status Sending secret messages Using a proxy - You can use a proxy with MadelineProto. How to set a proxy Multiple proxies with automatic switch Use pre-built MTProxy Use pre-built Socks5 proxy Use pre-built HTTP proxy Build your own proxy Async - MadelineProto now features async, for incredible speed improvements, and parallel processing, all powered by amphp. Usage Async in event handler Multiple async Ignored async Combining async operations MadelineProto and AMPHP async APIs Helper methods Async sleep Async readline Async echo MadelineProto HTTP client Async forking Async flock MadelineProto async loop APIs FAQ - Here's a list of common MadelineProto questions and answers. 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. Using methods - There are simplifications for many, if not all of, these methods. Named arguments Peers Files Secret chats Entities (Markdown & HTML) reply_markup (keyboards & inline keyboards) bot API objects No result Multiple method calls Cancellation FULL API Documentation with descriptions Login Change 2FA password: update2FA Get all chats, broadcast a message to all chats: getDialogIds, getDialogs, getFullDialogs Get the full participant list of a channel/group/supergroup: getPwrChat Get full info about a user/chat/supergroup/channel: getFullInfo Get info about a user/chat/supergroup/channel: getInfo Get the ID of a user/chat/supergroup/channel/update: getID Get info about the currently logged-in user: getSelf Upload or download files up to 4 GB: uploadFrom*, downloadTo* Make a phone call and play a song Create a secret chat bot 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 Creates and returns a prometheus counter: getPromCounter Creates and returns a prometheus gauge: getPromGauge Creates and returns a prometheus histogram: getPromHistogram Creates and returns a prometheus summary: getPromSummary 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 Renders prometheus stats using the specified renderer: renderPromStats 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 - You can contribute in various ways. Translation Contribution guide Credits Web templates for $MadelineProto->start() - The web template used for the $MadelineProto->start() and API ID web UIs can be changed.