Documentation rework (#349)

* Documentation rework

* Apply fixes from StyleCI

* Documentation fixes

* Login as bot through web/cli API, allow using invite links in joinChannel, full invite links in importChatInvite and checkChatInvite, non-invite links in importChatInvite

* Apply fixes from StyleCI

* Logging fixes

* Build docs

* Add methods to modify start template, bugfix to logging and keyboard conversion

* Add TL documentator

* Document MTProto methods

* Documenting methods...

* 7% documented

* Bugfixes

* Update docs

* Update docs

* Simplify file management

* Implement automatic object conversion for media, and more awesome stuff

* Implement automatic object conversion for media, and more awesome stuff

* Implement event update handler and file upload/download callback

* Auto-detect mime type, duration, width and height of media

* Update docs

* Document new file functions

* Fix links

* Fix links

* Update bot.php to use event loop

* Implement webhook update handler and forking in main loop

* Build docs

* Better docs

* Fixes to secret chats

* Almost finished updating docs

* Bugfixes, implemented infinite loop for loop() method, almost finished docs

* Finish writing docs

* Add automatic documentation builder script

* Finished writing docs
This commit is contained in:
Daniil Gentili 2018-03-20 12:48:05 +01:00 committed by GitHub
parent c6a0a04731
commit 7a0153a139
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7239 changed files with 100384 additions and 46093 deletions

118
README.md
View File

@ -1,6 +1,6 @@
# MadelineProto, a PHP MTProto telegram client
Do join the official channel, [@MadelineProto](https://t.me/MadelineProto)!
Do join the official channel, [@MadelineProto](https://t.me/MadelineProto) and the [support groups](https://t.me/pwrtelegramgroup)!
## What's this?
@ -9,16 +9,14 @@ This library can be used to easily interact with Telegram **without** the bot AP
It can login with a phone number (MTProto API), or with a bot token (MTProto API, **no bot API involved!**).
## Installation
Simply download [madeline.php](https://phar.madelineproto.xyz/madeline.php).
## Getting started
```
<?php
if (!file_exists('madeline.php')) {
copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php');
}
include 'madeline.php';
// !!! This API id/API hash combination will not work !!!
@ -27,40 +25,94 @@ $api_id = 0;
$api_hash = '';
$MadelineProto = new \danog\MadelineProto\API('session.madeline', ['app_info' => ['api_id' => $api_id, 'api_hash' => $api_hash]]);
$MadelineProto->start();
$MadelineProto->phone_login(readline('Enter your phone number: '));
$authorization = $MadelineProto->complete_phone_login(readline('Enter the phone code: '));
if ($authorization['_'] === 'account.password') {
$authorization = $MadelineProto->complete_2fa_login(readline('Please enter your password (hint '.$authorization['hint'].'): '));
}
if ($authorization['_'] === 'account.needSignup') {
$authorization = $MadelineProto->complete_signup(readline('Please enter your first name: '), readline('Please enter your last name (can be empty): '));
}
```
## Simple example
```
$MadelineProto->messages->sendMessage(['peer' => '@danogentili', 'message' => "Hi!\nThanks for creating MadelineProto! <3"]);
$MadelineProto->channels->joinChannel(['channel' => '@MadelineProto']);
```
Run this code in a browser or in a console.
## Documentation
- [Features](https://docs.madelineproto.xyz/FULL_README.html#features)
- [Full method list](https://docs.madelineproto.xyz/API_docs/methods)
- [How to use these methods](https://docs.madelineproto.xyz/FULL_README.html#methods)
- [Clicking inline buttons](https://docs.madelineproto.xyz/FULL_README.html#inline-buttons)
- [Uploading and downloading files](https://docs.madelineproto.xyz/FULL_README.html#uploading-and-downloading-files)
- [Changing settings](https://docs.madelineproto.xyz/FULL_README.html#settings)
- [Update management (getting incoming messages)](https://docs.madelineproto.xyz/FULL_README.html#handling-updates)
- [Using a proxy](https://docs.madelineproto.xyz/FULL_README.html#using-a-proxy)
- [Calls](https://docs.madelineproto.xyz/FULL_README.html#calls)
- [Secret chats](https://docs.madelineproto.xyz/FULL_README.html#secret-chats)
- [Storing sessions](https://docs.madelineproto.xyz/FULL_README.html#storing-sessions)
- [Exceptions](https://docs.madelineproto.xyz/FULL_README.html#exceptions)
- [Lua binding](https://docs.madelineproto.xyz/FULL_README.html#lua-binding)
* [Creating a client](https://docs.madelineproto.xyz/docs/CREATING_A_CLIENT.html)
* [Logging in](https://docs.madelineproto.xyz/docs/LOGIN.html)
* [Automatic](https://docs.madelineproto.xyz/docs/LOGIN.html#automatic)
* [Manual (user)](https://docs.madelineproto.xyz/docs/LOGIN.html#manual-user)
* [Manual (bot)](https://docs.madelineproto.xyz/docs/LOGIN.html#manual-bot)
* [Logout](https://docs.madelineproto.xyz/docs/LOGIN.html#logout)
* [Features](https://docs.madelineproto.xyz/docs/FEATURES.html)
* [Requirements](https://docs.madelineproto.xyz/docs/REQUIREMENTS.html)
* [Installation](https://docs.madelineproto.xyz/docs/INSTALLATION.html)
* [Simple](https://docs.madelineproto.xyz/docs/INSTALLATION.html#simple)
* [Simple (manual)](https://docs.madelineproto.xyz/docs/INSTALLATION.html#simple-manual)
* [Composer from scratch](https://docs.madelineproto.xyz/docs/INSTALLATION.html#composer-from-scratch)
* [Composer from existing project](https://docs.madelineproto.xyz/docs/INSTALLATION.html#composer-from-existing-project)
* [Git](https://docs.madelineproto.xyz/docs/INSTALLATION.html#git)
* [Handling updates](https://docs.madelineproto.xyz/docs/UPDATES.html)
* [Event driven](https://docs.madelineproto.xyz/docs/UPDATES.html#event-handler)
* [Event driven multithreaded](https://docs.madelineproto.xyz/docs/UPDATES.html#multithreaded-event-handler)
* [Webhook](https://docs.madelineproto.xyz/docs/UPDATES.html#webhook)
* [Webhook multithreaded](https://docs.madelineproto.xyz/docs/UPDATES.html#multithreaded-webhook)
* [Long polling (getupdates)](https://docs.madelineproto.xyz/docs/UPDATES.html#getupdates)
* [Callback](https://docs.madelineproto.xyz/docs/UPDATES.html#callback)
* [Callback multithreaded](https://docs.madelineproto.xyz/docs/UPDATES.html#multithreaded-callback)
* [Settings](https://docs.madelineproto.xyz/docs/SETTINGS.html)
* [Getting info about the current user](https://docs.madelineproto.xyz/docs/SELF.html)
* [Exceptions](https://docs.madelineproto.xyz/docs/EXCEPTIONS.html)
* [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)
* [Logging](https://docs.madelineproto.xyz/docs/LOGGING.html)
* [Using methods](https://docs.madelineproto.xyz/docs/USING_METHODS.html)
* [Peers](https://docs.madelineproto.xyz/docs/USING_METHODS.html#peers)
* [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)
* [Queues](https://docs.madelineproto.xyz/docs/USING_METHODS.html#queues)
* [Uploading and downloading files](https://docs.madelineproto.xyz/docs/FILES.html)
* [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#inputmediauploadedphoto)
* [Documents](https://docs.madelineproto.xyz/docs/FILES.html#inputmediauploadeddocument)
* [Documents](https://docs.madelineproto.xyz/docs/FILES.html#documentattributefilename-to-send-a-document)
* [Photos as documents](https://docs.madelineproto.xyz/docs/FILES.html#documentattributeimagesize-to-send-a-photo-as-document)
* [GIFs](https://docs.madelineproto.xyz/docs/FILES.html#documentattributeanimated-to-send-a-gif)
* [Videos](https://docs.madelineproto.xyz/docs/FILES.html#documentattributevideo-to-send-a-video)
* [Audio & Voice](https://docs.madelineproto.xyz/docs/FILES.html#documentattributeaudio-to-send-an-audio-file)
* [Uploading files](https://docs.madelineproto.xyz/docs/FILES.html#uploading-files)
* [Bot API file IDs](https://docs.madelineproto.xyz/docs/FILES.html#bot-api-file-ids)
* [Reusing uploaded files](https://docs.madelineproto.xyz/docs/FILES.html#reusing-uploaded-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)
* [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 browser (streaming)](https://docs.madelineproto.xyz/docs/FILES.html#download-to-browser-with-streams)
* [Getting progress](https://docs.madelineproto.xyz/docs/FILES.html#getting-progress)
* [Getting info about chats](https://docs.madelineproto.xyz/docs/CHAT_INFO.html)
* [Full chat info with full list of participants](https://docs.madelineproto.xyz/docs/CHAT_INFO.html#get_pwr_chat)
* [Full chat info](https://docs.madelineproto.xyz/docs/CHAT_INFO.html#get_full_info)
* [Reduced chat info (very fast)](https://docs.madelineproto.xyz/docs/CHAT_INFO.html#get_info)
* [Getting all chats](https://docs.madelineproto.xyz/docs/DIALOGS.html)
* [As user](https://docs.madelineproto.xyz/docs/DIALOGS.html#user-get_dialogs)
* [As bot](https://docs.madelineproto.xyz/docs/DIALOGS.html#bot-internal-peer-database)
* [Inline buttons](https://docs.madelineproto.xyz/docs/INLINE_BUTTONS.html)
* [Calls](https://docs.madelineproto.xyz/docs/CALLS.html)
* [Requesting a call](https://docs.madelineproto.xyz/docs/CALLS.html#requesting-a-call)
* [Playing mp3 files](https://docs.madelineproto.xyz/docs/CALLS.html#playing-mp3-files)
* [Playing streams](https://docs.madelineproto.xyz/docs/CALLS.html#playing-streams)
* [Changing audio quality](https://docs.madelineproto.xyz/docs/CALLS.html#changing-audio-quality)
* [Putting it all together](https://docs.madelineproto.xyz/docs/CALLS.html#putting-it-all-together)
* [Accepting calls](https://docs.madelineproto.xyz/docs/CALLS.html#accepting-calls)
* [Secret chats](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html)
* [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)
* [Lua binding](https://docs.madelineproto.xyz/docs/LUA.html)
* [Using a proxy](https://docs.madelineproto.xyz/docs/PROXY.html)
## Very complex and complete examples

100
bot.php
View File

@ -12,51 +12,67 @@ If not, see <http://www.gnu.org/licenses/>.
*/
set_include_path(get_include_path().':'.realpath(dirname(__FILE__).'/MadelineProto/'));
require 'vendor/autoload.php';
$settings = ['app_info' => ['api_id' => 6, 'api_hash' => 'eb06d4abfb49dc3eeb1aeb98ae0f581e']]; //, 'connection_settings' => ['all' => ['test_mode' => true]]];
/**
* Various ways to load MadelineProto
*/
if (!file_exists(__DIR__.'/vendor/autoload.php')) {
echo 'You did not run composer update, using madeline.php'.PHP_EOL;
if (!file_exists('madeline.php')) {
copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php');
}
include 'madeline.php';
} else {
require_once 'vendor/autoload.php';
}
class EventHandler extends \danog\MadelineProto\EventHandler
{
public function onAny($update)
{
\danog\MadelineProto\Logger::log("Received an update of type ".$update['_']);
}
public function onUpdateNewChannelMessage($update)
{
$this->onUpdateNewMessage($update);
}
public function onUpdateNewMessage($update)
{
if (isset($update['message']['out']) && $update['message']['out']) {
return;
}
$res = json_encode($update, JSON_PRETTY_PRINT);
if ($res == '') {
$res = var_export($update, true);
}
try {
$this->messages->sendMessage(['peer' => $update, 'message' => $res, 'reply_to_msg_id' => $update['message']['id'], 'entities' => [['_' => 'messageEntityPre', 'offset' => 0, 'length' => strlen($res), 'language' => 'json']]]);
} catch (\danog\MadelineProto\RPCErrorException $e) {
$this->messages->sendMessage(['peer' => '@danogentili', 'message' => $e->getCode().': '.$e->getMessage().PHP_EOL.$e->getTraceAsString()]);
}
try {
if (isset($update['message']['media']) && ($update['message']['media']['_'] == 'messageMediaPhoto' || $update['message']['media']['_'] == 'messageMediaDocument')) {
$time = microtime(true);
$file = $this->download_to_dir($update, '/tmp');
$this->messages->sendMessage(['peer' => $update, 'message' => 'Downloaded to '.$file.' in '.(microtime(true) - $time).' seconds', 'reply_to_msg_id' => $update['message']['id'], 'entities' => [['_' => 'messageEntityPre', 'offset' => 0, 'length' => strlen($res), 'language' => 'json']]]);
}
} catch (\danog\MadelineProto\RPCErrorException $e) {
$this->messages->sendMessage(['peer' => '@danogentili', 'message' => $e->getCode().': '.$e->getMessage().PHP_EOL.$e->getTraceAsString()]);
}
}
}
$settings = ['app_info' => ['api_id' => 6, 'api_hash' => 'eb06d4abfb49dc3eeb1aeb98ae0f581e'], 'updates' => ['handle_updates' => true]]; //, 'connection_settings' => ['all' => ['test_mode' => true]]];
try {
$MadelineProto = new \danog\MadelineProto\API('bot.madeline', $settings);
} catch (\danog\MadelineProto\Exception $e) {
\danog\MadelineProto\Logger::log($e->getMessage());
$MadelineProto = new \danog\MadelineProto\API($settings);
$authorization = $MadelineProto->bot_login(readline('Enter a bot token: '));
\danog\MadelineProto\Logger::log($authorization, \danog\MadelineProto\Logger::NOTICE);
}
$MadelineProto->session = 'bot.madeline';
$offset = 0;
while (true) {
$updates = $MadelineProto->get_updates(['offset' => $offset, 'limit' => 50, 'timeout' => 0]); // Just like in the bot API, you can specify an offset, a limit and a timeout
\danog\MadelineProto\Logger::log($updates);
foreach ($updates as $update) {
$offset = $update['update_id'] + 1; // Just like in the bot API, the offset must be set to the last update_id
switch ($update['update']['_']) {
case 'updateNewMessage':
case 'updateNewChannelMessage':
if (isset($update['update']['message']['out']) && $update['update']['message']['out']) {
continue;
}
$res = json_encode($update, JSON_PRETTY_PRINT);
if ($res == '') {
$res = var_export($update, true);
}
try {
$MadelineProto->messages->sendMessage(['peer' => $update['update']['_'] === 'updateNewMessage' ? $update['update']['message']['from_id'] : $update['update']['message']['to_id'], 'message' => $res, 'reply_to_msg_id' => $update['update']['message']['id'], 'entities' => [['_' => 'messageEntityPre', 'offset' => 0, 'length' => strlen($res), 'language' => 'json']]]);
} catch (\danog\MadelineProto\RPCErrorException $e) {
$MadelineProto->messages->sendMessage(['peer' => '@danogentili', 'message' => $e->getCode().': '.$e->getMessage().PHP_EOL.$e->getTraceAsString()]);
}
try {
if (isset($update['update']['message']['media']) && ($update['update']['message']['media']['_'] == 'messageMediaPhoto' || $update['update']['message']['media']['_'] == 'messageMediaDocument')) {
$time = microtime(true);
$file = $MadelineProto->download_to_dir($update['update']['message']['media'], '/tmp');
$MadelineProto->messages->sendMessage(['peer' => isset($update['update']['message']['from_id']) ? $update['update']['message']['from_id'] : $update['update']['message']['to_id'], 'message' => 'Downloaded to '.$file.' in '.(microtime(true) - $time).' seconds', 'reply_to_msg_id' => $update['update']['message']['id'], 'entities' => [['_' => 'messageEntityPre', 'offset' => 0, 'length' => strlen($res), 'language' => 'json']]]);
}
} catch (\danog\MadelineProto\RPCErrorException $e) {
$MadelineProto->messages->sendMessage(['peer' => '@danogentili', 'message' => $e->getCode().': '.$e->getMessage().PHP_EOL.$e->getTraceAsString()]);
}
}
}
unlink('bot.madeline');
$MadelineProto = new \danog\MadelineProto\API('bot.madeline', $settings);
}
$MadelineProto->start();
$MadelineProto->setEventHandler('\EventHandler');
$MadelineProto->loop();

64
build_docs_index.php Normal file
View File

@ -0,0 +1,64 @@
<?php
$index = '';
$files = glob('docs/docs/*md');
foreach ($files as $file) {
$base = basename($file, '.md');
if ($base === 'CREATING_A_CLIENT') {
$orderedfiles[0] = $file;
} else if ($base === 'LOGIN') {
$orderedfiles[1] = $file;
} else if ($base === 'FEATURES') {
$orderedfiles[2] = $file;
} else if ($base === 'REQUIREMENTS') {
$orderedfiles[3] = $file;
} else if ($base === 'INSTALLATION') {
$orderedfiles[4] = $file;
} else if ($base === 'UPDATES') {
$orderedfiles[5] = $file;
} else if ($base === 'SETTINGS') {
$orderedfiles[6] = $file;
} else if ($base === 'SELF') {
$orderedfiles[7] = $file;
} else if ($base === 'EXCEPTIONS') {
$orderedfiles[8] = $file;
} else if ($base === 'LOGGING') {
$orderedfiles[9] = $file;
} else if ($base === 'USING_METHODS') {
$orderedfiles[10] = $file;
} else if ($base === 'FILES') {
$orderedfiles[11] = $file;
} else if ($base === 'CHAT_INFO') {
$orderedfiles[12] = $file;
} else if ($base === 'DIALOGS') {
$orderedfiles[13] = $file;
} else if ($base === 'INLINE_BUTTONS') {
$orderedfiles[14] = $file;
} else if ($base === 'CALLS') {
$orderedfiles[15] = $file;
} else if ($base === 'SECRET_CHATS') {
$orderedfiles[16] = $file;
} else if ($base === 'LUA') {
$orderedfiles[17] = $file;
} else if ($base === 'PROXY') {
$orderedfiles[18] = $file;
} else {
$orderedfiles[] = $file;
}
}
ksort($orderedfiles);
foreach ($orderedfiles as $filename) {
preg_match('|^# (.*)|', $file = file_get_contents($filename), $matches);
$title = $matches[1];
preg_match_all('|( *)\* \[(.*)\]\(#(.*)\)|', $file, $matches);
$file = "https://docs.madelineproto.xyz/docs/".basename($filename, '.md').".html";
$index .= "* [$title]($file)\n";
if (basename($filename) !== 'FEATURES.md') {
foreach ($matches[1] as $key => $match) {
$spaces = " $match";
$name = $matches[2][$key];
$url = $file."#".$matches[3][$key];
$index .= "$spaces* [$name]($url)\n";
}
}
}
echo $index;

View File

@ -10,8 +10,8 @@
},
"require": {
"php": ">=5.6.0",
"danog/primemodule": "dev-master",
"danog/magicalserializer": "dev-master",
"danog/primemodule": "^1.0.2",
"danog/magicalserializer": "^1.0",
"phpseclib/phpseclib": "dev-master#27370df",
"vlucas/phpdotenv": "^2.4",
"erusev/parsedown": "^1.6",

2006
docs/API_docs/Lang.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -21,7 +21,7 @@ description: account_authorizations attributes, type and example
### Example:
```
$account_authorizations = ['_' => 'account.authorizations', 'authorizations' => [Authorization]];
$account_authorizations = ['_' => 'account.authorizations', 'authorizations' => [Authorization, Authorization]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -22,7 +22,7 @@ description: account_privacyRules attributes, type and example
### Example:
```
$account_privacyRules = ['_' => 'account.privacyRules', 'rules' => [PrivacyRule], 'users' => [User]];
$account_privacyRules = ['_' => 'account.privacyRules', 'rules' => [PrivacyRule, PrivacyRule], 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -22,7 +22,7 @@ description: account_webAuthorizations attributes, type and example
### Example:
```
$account_webAuthorizations = ['_' => 'account.webAuthorizations', 'authorizations' => [WebAuthorization], 'users' => [User]];
$account_webAuthorizations = ['_' => 'account.webAuthorizations', 'authorizations' => [WebAuthorization, WebAuthorization], 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -23,7 +23,7 @@ description: botInfo attributes, type and example
### Example:
```
$botInfo = ['_' => 'botInfo', 'user_id' => int, 'description' => 'string', 'commands' => [BotCommand]];
$botInfo = ['_' => 'botInfo', 'user_id' => int, 'description' => 'string', 'commands' => [BotCommand, BotCommand]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -23,7 +23,7 @@ description: botInlineMessageMediaAuto attributes, type and example
### Example:
```
$botInlineMessageMediaAuto = ['_' => 'botInlineMessageMediaAuto', 'message' => 'string', 'entities' => [MessageEntity], 'reply_markup' => ReplyMarkup];
$botInlineMessageMediaAuto = ['_' => 'botInlineMessageMediaAuto', 'message' => 'string', 'entities' => [MessageEntity, MessageEntity], 'reply_markup' => ReplyMarkup];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -24,7 +24,7 @@ description: botInlineMessageText attributes, type and example
### Example:
```
$botInlineMessageText = ['_' => 'botInlineMessageText', 'no_webpage' => Bool, 'message' => 'string', 'entities' => [MessageEntity], 'reply_markup' => ReplyMarkup];
$botInlineMessageText = ['_' => 'botInlineMessageText', 'no_webpage' => Bool, 'message' => 'string', 'entities' => [MessageEntity, MessageEntity], 'reply_markup' => ReplyMarkup];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -21,7 +21,7 @@ description: cdnConfig attributes, type and example
### Example:
```
$cdnConfig = ['_' => 'cdnConfig', 'public_keys' => [CdnPublicKey]];
$cdnConfig = ['_' => 'cdnConfig', 'public_keys' => [CdnPublicKey, CdnPublicKey]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -42,7 +42,7 @@ description: channelFull attributes, type and example
### Example:
```
$channelFull = ['_' => 'channelFull', 'can_view_participants' => Bool, 'can_set_username' => Bool, 'can_set_stickers' => Bool, 'hidden_prehistory' => Bool, 'id' => int, 'about' => 'string', 'participants_count' => int, 'admins_count' => int, 'kicked_count' => int, 'banned_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], 'migrated_from_chat_id' => int, 'migrated_from_max_id' => int, 'pinned_msg_id' => int, 'stickerset' => StickerSet, 'available_min_id' => int];
$channelFull = ['_' => 'channelFull', 'can_view_participants' => Bool, 'can_set_username' => Bool, 'can_set_stickers' => Bool, 'hidden_prehistory' => Bool, 'id' => int, 'about' => 'string', 'participants_count' => int, 'admins_count' => int, 'kicked_count' => int, 'banned_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' => int, 'migrated_from_max_id' => int, 'pinned_msg_id' => int, 'stickerset' => StickerSet, 'available_min_id' => int];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -22,7 +22,7 @@ description: channelMessagesFilter attributes, type and example
### Example:
```
$channelMessagesFilter = ['_' => 'channelMessagesFilter', 'exclude_new_messages' => Bool, 'ranges' => [MessageRange]];
$channelMessagesFilter = ['_' => 'channelMessagesFilter', 'exclude_new_messages' => Bool, 'ranges' => [MessageRange, MessageRange]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -23,7 +23,7 @@ description: channels_adminLogResults attributes, type and example
### Example:
```
$channels_adminLogResults = ['_' => 'channels.adminLogResults', 'events' => [ChannelAdminLogEvent], 'chats' => [Chat], 'users' => [User]];
$channels_adminLogResults = ['_' => 'channels.adminLogResults', 'events' => [ChannelAdminLogEvent, ChannelAdminLogEvent], 'chats' => [Chat, Chat], 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -22,7 +22,7 @@ description: channels_channelParticipant attributes, type and example
### Example:
```
$channels_channelParticipant = ['_' => 'channels.channelParticipant', 'participant' => ChannelParticipant, 'users' => [User]];
$channels_channelParticipant = ['_' => 'channels.channelParticipant', 'participant' => ChannelParticipant, 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -23,7 +23,7 @@ description: channels_channelParticipants attributes, type and example
### Example:
```
$channels_channelParticipants = ['_' => 'channels.channelParticipants', 'count' => int, 'participants' => [ChannelParticipant], 'users' => [User]];
$channels_channelParticipants = ['_' => 'channels.channelParticipants', 'count' => int, 'participants' => [ChannelParticipant, ChannelParticipant], 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -26,7 +26,7 @@ description: chatFull attributes, type and example
### Example:
```
$chatFull = ['_' => 'chatFull', 'id' => int, 'participants' => ChatParticipants, 'chat_photo' => Photo, 'notify_settings' => PeerNotifySettings, 'exported_invite' => ExportedChatInvite, 'bot_info' => [BotInfo]];
$chatFull = ['_' => 'chatFull', 'id' => int, 'participants' => ChatParticipants, 'chat_photo' => Photo, 'notify_settings' => PeerNotifySettings, 'exported_invite' => ExportedChatInvite, 'bot_info' => [BotInfo, BotInfo]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -28,7 +28,7 @@ description: chatInvite attributes, type and example
### Example:
```
$chatInvite = ['_' => 'chatInvite', 'channel' => Bool, 'broadcast' => Bool, 'public' => Bool, 'megagroup' => Bool, 'title' => 'string', 'photo' => ChatPhoto, 'participants_count' => int, 'participants' => [User]];
$chatInvite = ['_' => 'chatInvite', 'channel' => Bool, 'broadcast' => Bool, 'public' => Bool, 'megagroup' => Bool, 'title' => 'string', 'photo' => ChatPhoto, 'participants_count' => int, 'participants' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -23,7 +23,7 @@ description: chatParticipants attributes, type and example
### Example:
```
$chatParticipants = ['_' => 'chatParticipants', 'chat_id' => int, 'participants' => [ChatParticipant], 'version' => int];
$chatParticipants = ['_' => 'chatParticipants', 'chat_id' => int, 'participants' => [ChatParticipant, ChatParticipant], 'version' => int];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -55,7 +55,7 @@ description: config attributes, type and example
### Example:
```
$config = ['_' => 'config', 'phonecalls_enabled' => Bool, 'default_p2p_contacts' => Bool, 'date' => int, 'expires' => int, 'test_mode' => Bool, 'this_dc' => int, 'dc_options' => [DcOption], '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, 'chat_big_size' => int, 'push_chat_period_ms' => int, 'push_chat_limit' => int, 'saved_gifs_limit' => int, 'edit_time_limit' => int, 'rating_e_decay' => int, 'stickers_recent_limit' => int, 'stickers_faved_limit' => int, 'channels_read_media_period' => int, 'tmp_sessions' => int, 'pinned_dialogs_count_max' => int, 'call_receive_timeout_ms' => int, 'call_ring_timeout_ms' => int, 'call_connect_timeout_ms' => int, 'call_packet_timeout_ms' => int, 'me_url_prefix' => 'string', 'suggested_lang_code' => 'string', 'lang_pack_version' => int, 'disabled_features' => [DisabledFeature]];
$config = ['_' => 'config', 'phonecalls_enabled' => Bool, 'default_p2p_contacts' => Bool, 'date' => int, 'expires' => int, 'test_mode' => Bool, 'this_dc' => int, 'dc_options' => [DcOption, DcOption], '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, 'chat_big_size' => int, 'push_chat_period_ms' => int, 'push_chat_limit' => int, 'saved_gifs_limit' => int, 'edit_time_limit' => int, 'rating_e_decay' => int, 'stickers_recent_limit' => int, 'stickers_faved_limit' => int, 'channels_read_media_period' => int, 'tmp_sessions' => int, 'pinned_dialogs_count_max' => int, 'call_receive_timeout_ms' => int, 'call_ring_timeout_ms' => int, 'call_connect_timeout_ms' => int, 'call_packet_timeout_ms' => int, 'me_url_prefix' => 'string', 'suggested_lang_code' => 'string', 'lang_pack_version' => int, 'disabled_features' => [DisabledFeature, DisabledFeature]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -22,7 +22,7 @@ description: contacts_blocked attributes, type and example
### Example:
```
$contacts_blocked = ['_' => 'contacts.blocked', 'blocked' => [ContactBlocked], 'users' => [User]];
$contacts_blocked = ['_' => 'contacts.blocked', 'blocked' => [ContactBlocked, ContactBlocked], 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -23,7 +23,7 @@ description: contacts_blockedSlice attributes, type and example
### Example:
```
$contacts_blockedSlice = ['_' => 'contacts.blockedSlice', 'count' => int, 'blocked' => [ContactBlocked], 'users' => [User]];
$contacts_blockedSlice = ['_' => 'contacts.blockedSlice', 'count' => int, 'blocked' => [ContactBlocked, ContactBlocked], 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -23,7 +23,7 @@ description: contacts_contacts attributes, type and example
### Example:
```
$contacts_contacts = ['_' => 'contacts.contacts', 'contacts' => [Contact], 'saved_count' => int, 'users' => [User]];
$contacts_contacts = ['_' => 'contacts.contacts', 'contacts' => [Contact, Contact], 'saved_count' => int, 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -24,7 +24,7 @@ description: contacts_found attributes, type and example
### Example:
```
$contacts_found = ['_' => 'contacts.found', 'my_results' => [Peer], 'results' => [Peer], 'chats' => [Chat], 'users' => [User]];
$contacts_found = ['_' => 'contacts.found', 'my_results' => [Peer, Peer], 'results' => [Peer, Peer], 'chats' => [Chat, Chat], 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -24,7 +24,7 @@ description: contacts_importedContacts attributes, type and example
### Example:
```
$contacts_importedContacts = ['_' => 'contacts.importedContacts', 'imported' => [ImportedContact], 'popular_invites' => [PopularContact], 'retry_contacts' => [long], 'users' => [User]];
$contacts_importedContacts = ['_' => 'contacts.importedContacts', 'imported' => [ImportedContact, ImportedContact], 'popular_invites' => [PopularContact, PopularContact], 'retry_contacts' => [long, long], 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -23,7 +23,7 @@ description: contacts_resolvedPeer attributes, type and example
### Example:
```
$contacts_resolvedPeer = ['_' => 'contacts.resolvedPeer', 'peer' => Peer, 'chats' => [Chat], 'users' => [User]];
$contacts_resolvedPeer = ['_' => 'contacts.resolvedPeer', 'peer' => Peer, 'chats' => [Chat, Chat], 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -23,7 +23,7 @@ description: contacts_topPeers attributes, type and example
### Example:
```
$contacts_topPeers = ['_' => 'contacts.topPeers', 'categories' => [TopPeerCategoryPeers], 'chats' => [Chat], 'users' => [User]];
$contacts_topPeers = ['_' => 'contacts.topPeers', 'categories' => [TopPeerCategoryPeers, TopPeerCategoryPeers], 'chats' => [Chat, Chat], 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -21,7 +21,7 @@ description: decryptedMessageActionDeleteMessages attributes, type and example
### Example:
```
$decryptedMessageActionDeleteMessages_8 = ['_' => 'decryptedMessageActionDeleteMessages', 'random_ids' => [long]];
$decryptedMessageActionDeleteMessages_8 = ['_' => 'decryptedMessageActionDeleteMessages', 'random_ids' => [long, long]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -21,7 +21,7 @@ description: decryptedMessageActionReadMessages attributes, type and example
### Example:
```
$decryptedMessageActionReadMessages_8 = ['_' => 'decryptedMessageActionReadMessages', 'random_ids' => [long]];
$decryptedMessageActionReadMessages_8 = ['_' => 'decryptedMessageActionReadMessages', 'random_ids' => [long, long]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -21,7 +21,7 @@ description: decryptedMessageActionScreenshotMessages attributes, type and examp
### Example:
```
$decryptedMessageActionScreenshotMessages_8 = ['_' => 'decryptedMessageActionScreenshotMessages', 'random_ids' => [long]];
$decryptedMessageActionScreenshotMessages_8 = ['_' => 'decryptedMessageActionScreenshotMessages', 'random_ids' => [long, long]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -14,8 +14,6 @@ description: decryptedMessageMediaAudio attributes, type and example
|duration|[int](../types/int.md) | Yes|
|mime\_type|[string](../types/string.md) | Yes|
|size|[int](../types/int.md) | Yes|
|key|[bytes](../types/bytes.md) | Yes|
|iv|[bytes](../types/bytes.md) | Yes|
@ -25,13 +23,13 @@ description: decryptedMessageMediaAudio attributes, type and example
### Example:
```
$decryptedMessageMediaAudio_17 = ['_' => 'decryptedMessageMediaAudio', 'duration' => int, 'mime_type' => 'string', 'size' => int, 'key' => 'bytes', 'iv' => 'bytes'];
$decryptedMessageMediaAudio_17 = ['_' => 'decryptedMessageMediaAudio', 'duration' => int, 'mime_type' => 'string', 'size' => int];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:
```
{"_": "decryptedMessageMediaAudio", "duration": int, "mime_type": "string", "size": int, "key": "bytes", "iv": "bytes"}
{"_": "decryptedMessageMediaAudio", "duration": int, "mime_type": "string", "size": int}
```
@ -39,7 +37,7 @@ Or, if you're into Lua:
```
decryptedMessageMediaAudio_17={_='decryptedMessageMediaAudio', duration=int, mime_type='string', size=int, key='bytes', iv='bytes'}
decryptedMessageMediaAudio_17={_='decryptedMessageMediaAudio', duration=int, mime_type='string', size=int}
```

View File

@ -13,8 +13,6 @@ description: decryptedMessageMediaAudio attributes, type and example
|----------|---------------|----------|
|duration|[int](../types/int.md) | Yes|
|size|[int](../types/int.md) | Yes|
|key|[bytes](../types/bytes.md) | Yes|
|iv|[bytes](../types/bytes.md) | Yes|
@ -24,13 +22,13 @@ description: decryptedMessageMediaAudio attributes, type and example
### Example:
```
$decryptedMessageMediaAudio_8 = ['_' => 'decryptedMessageMediaAudio', 'duration' => int, 'size' => int, 'key' => 'bytes', 'iv' => 'bytes'];
$decryptedMessageMediaAudio_8 = ['_' => 'decryptedMessageMediaAudio', 'duration' => int, 'size' => int];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:
```
{"_": "decryptedMessageMediaAudio", "duration": int, "size": int, "key": "bytes", "iv": "bytes"}
{"_": "decryptedMessageMediaAudio", "duration": int, "size": int}
```
@ -38,7 +36,7 @@ Or, if you're into Lua:
```
decryptedMessageMediaAudio_8={_='decryptedMessageMediaAudio', duration=int, size=int, key='bytes', iv='bytes'}
decryptedMessageMediaAudio_8={_='decryptedMessageMediaAudio', duration=int, size=int}
```

View File

@ -16,8 +16,6 @@ description: decryptedMessageMediaDocument attributes, type and example
|thumb\_h|[int](../types/int.md) | Yes|
|mime\_type|[string](../types/string.md) | Yes|
|size|[int](../types/int.md) | Yes|
|key|[bytes](../types/bytes.md) | Yes|
|iv|[bytes](../types/bytes.md) | Yes|
|attributes|Array of [DocumentAttribute](../types/DocumentAttribute.md) | Yes|
|caption|[string](../types/string.md) | Yes|
@ -29,13 +27,13 @@ description: decryptedMessageMediaDocument attributes, type and example
### Example:
```
$decryptedMessageMediaDocument_45 = ['_' => 'decryptedMessageMediaDocument', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'mime_type' => 'string', 'size' => int, 'key' => 'bytes', 'iv' => 'bytes', 'attributes' => [DocumentAttribute], 'caption' => 'string'];
$decryptedMessageMediaDocument_45 = ['_' => 'decryptedMessageMediaDocument', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'mime_type' => 'string', 'size' => int, 'attributes' => [DocumentAttribute, DocumentAttribute], 'caption' => 'string'];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:
```
{"_": "decryptedMessageMediaDocument", "thumb": "bytes", "thumb_w": int, "thumb_h": int, "mime_type": "string", "size": int, "key": "bytes", "iv": "bytes", "attributes": [DocumentAttribute], "caption": "string"}
{"_": "decryptedMessageMediaDocument", "thumb": "bytes", "thumb_w": int, "thumb_h": int, "mime_type": "string", "size": int, "attributes": [DocumentAttribute], "caption": "string"}
```
@ -43,7 +41,7 @@ Or, if you're into Lua:
```
decryptedMessageMediaDocument_45={_='decryptedMessageMediaDocument', thumb='bytes', thumb_w=int, thumb_h=int, mime_type='string', size=int, key='bytes', iv='bytes', attributes={DocumentAttribute}, caption='string'}
decryptedMessageMediaDocument_45={_='decryptedMessageMediaDocument', thumb='bytes', thumb_w=int, thumb_h=int, mime_type='string', size=int, attributes={DocumentAttribute}, caption='string'}
```

View File

@ -17,8 +17,6 @@ description: decryptedMessageMediaDocument attributes, type and example
|file\_name|[string](../types/string.md) | Yes|
|mime\_type|[string](../types/string.md) | Yes|
|size|[int](../types/int.md) | Yes|
|key|[bytes](../types/bytes.md) | Yes|
|iv|[bytes](../types/bytes.md) | Yes|
@ -28,13 +26,13 @@ description: decryptedMessageMediaDocument attributes, type and example
### Example:
```
$decryptedMessageMediaDocument_8 = ['_' => 'decryptedMessageMediaDocument', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'file_name' => 'string', 'mime_type' => 'string', 'size' => int, 'key' => 'bytes', 'iv' => 'bytes'];
$decryptedMessageMediaDocument_8 = ['_' => 'decryptedMessageMediaDocument', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'file_name' => 'string', 'mime_type' => 'string', 'size' => int];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:
```
{"_": "decryptedMessageMediaDocument", "thumb": "bytes", "thumb_w": int, "thumb_h": int, "file_name": "string", "mime_type": "string", "size": int, "key": "bytes", "iv": "bytes"}
{"_": "decryptedMessageMediaDocument", "thumb": "bytes", "thumb_w": int, "thumb_h": int, "file_name": "string", "mime_type": "string", "size": int}
```
@ -42,7 +40,7 @@ Or, if you're into Lua:
```
decryptedMessageMediaDocument_8={_='decryptedMessageMediaDocument', thumb='bytes', thumb_w=int, thumb_h=int, file_name='string', mime_type='string', size=int, key='bytes', iv='bytes'}
decryptedMessageMediaDocument_8={_='decryptedMessageMediaDocument', thumb='bytes', thumb_w=int, thumb_h=int, file_name='string', mime_type='string', size=int}
```

View File

@ -28,7 +28,7 @@ description: decryptedMessageMediaExternalDocument attributes, type and example
### Example:
```
$decryptedMessageMediaExternalDocument_23 = ['_' => 'decryptedMessageMediaExternalDocument', 'id' => long, 'access_hash' => long, 'date' => int, 'mime_type' => 'string', 'size' => int, 'thumb' => PhotoSize, 'dc_id' => int, 'attributes' => [DocumentAttribute]];
$decryptedMessageMediaExternalDocument_23 = ['_' => 'decryptedMessageMediaExternalDocument', 'id' => long, 'access_hash' => long, 'date' => int, 'mime_type' => 'string', 'size' => int, 'thumb' => PhotoSize, 'dc_id' => int, 'attributes' => [DocumentAttribute, DocumentAttribute]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -17,8 +17,6 @@ description: decryptedMessageMediaPhoto attributes, type and example
|w|[int](../types/int.md) | Yes|
|h|[int](../types/int.md) | Yes|
|size|[int](../types/int.md) | Yes|
|key|[bytes](../types/bytes.md) | Yes|
|iv|[bytes](../types/bytes.md) | Yes|
|caption|[string](../types/string.md) | Yes|
@ -29,13 +27,13 @@ description: decryptedMessageMediaPhoto attributes, type and example
### Example:
```
$decryptedMessageMediaPhoto_45 = ['_' => 'decryptedMessageMediaPhoto', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'w' => int, 'h' => int, 'size' => int, 'key' => 'bytes', 'iv' => 'bytes', 'caption' => 'string'];
$decryptedMessageMediaPhoto_45 = ['_' => 'decryptedMessageMediaPhoto', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'w' => int, 'h' => int, 'size' => int, 'caption' => 'string'];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:
```
{"_": "decryptedMessageMediaPhoto", "thumb": "bytes", "thumb_w": int, "thumb_h": int, "w": int, "h": int, "size": int, "key": "bytes", "iv": "bytes", "caption": "string"}
{"_": "decryptedMessageMediaPhoto", "thumb": "bytes", "thumb_w": int, "thumb_h": int, "w": int, "h": int, "size": int, "caption": "string"}
```
@ -43,7 +41,7 @@ Or, if you're into Lua:
```
decryptedMessageMediaPhoto_45={_='decryptedMessageMediaPhoto', thumb='bytes', thumb_w=int, thumb_h=int, w=int, h=int, size=int, key='bytes', iv='bytes', caption='string'}
decryptedMessageMediaPhoto_45={_='decryptedMessageMediaPhoto', thumb='bytes', thumb_w=int, thumb_h=int, w=int, h=int, size=int, caption='string'}
```

View File

@ -17,8 +17,6 @@ description: decryptedMessageMediaPhoto attributes, type and example
|w|[int](../types/int.md) | Yes|
|h|[int](../types/int.md) | Yes|
|size|[int](../types/int.md) | Yes|
|key|[bytes](../types/bytes.md) | Yes|
|iv|[bytes](../types/bytes.md) | Yes|
@ -28,13 +26,13 @@ description: decryptedMessageMediaPhoto attributes, type and example
### Example:
```
$decryptedMessageMediaPhoto_8 = ['_' => 'decryptedMessageMediaPhoto', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'w' => int, 'h' => int, 'size' => int, 'key' => 'bytes', 'iv' => 'bytes'];
$decryptedMessageMediaPhoto_8 = ['_' => 'decryptedMessageMediaPhoto', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'w' => int, 'h' => int, 'size' => int];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:
```
{"_": "decryptedMessageMediaPhoto", "thumb": "bytes", "thumb_w": int, "thumb_h": int, "w": int, "h": int, "size": int, "key": "bytes", "iv": "bytes"}
{"_": "decryptedMessageMediaPhoto", "thumb": "bytes", "thumb_w": int, "thumb_h": int, "w": int, "h": int, "size": int}
```
@ -42,7 +40,7 @@ Or, if you're into Lua:
```
decryptedMessageMediaPhoto_8={_='decryptedMessageMediaPhoto', thumb='bytes', thumb_w=int, thumb_h=int, w=int, h=int, size=int, key='bytes', iv='bytes'}
decryptedMessageMediaPhoto_8={_='decryptedMessageMediaPhoto', thumb='bytes', thumb_w=int, thumb_h=int, w=int, h=int, size=int}
```

View File

@ -19,8 +19,6 @@ description: decryptedMessageMediaVideo attributes, type and example
|w|[int](../types/int.md) | Yes|
|h|[int](../types/int.md) | Yes|
|size|[int](../types/int.md) | Yes|
|key|[bytes](../types/bytes.md) | Yes|
|iv|[bytes](../types/bytes.md) | Yes|
@ -30,13 +28,13 @@ description: decryptedMessageMediaVideo attributes, type and example
### Example:
```
$decryptedMessageMediaVideo_17 = ['_' => 'decryptedMessageMediaVideo', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'duration' => int, 'mime_type' => 'string', 'w' => int, 'h' => int, 'size' => int, 'key' => 'bytes', 'iv' => 'bytes'];
$decryptedMessageMediaVideo_17 = ['_' => 'decryptedMessageMediaVideo', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'duration' => int, 'mime_type' => 'string', 'w' => int, 'h' => int, 'size' => int];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:
```
{"_": "decryptedMessageMediaVideo", "thumb": "bytes", "thumb_w": int, "thumb_h": int, "duration": int, "mime_type": "string", "w": int, "h": int, "size": int, "key": "bytes", "iv": "bytes"}
{"_": "decryptedMessageMediaVideo", "thumb": "bytes", "thumb_w": int, "thumb_h": int, "duration": int, "mime_type": "string", "w": int, "h": int, "size": int}
```
@ -44,7 +42,7 @@ Or, if you're into Lua:
```
decryptedMessageMediaVideo_17={_='decryptedMessageMediaVideo', thumb='bytes', thumb_w=int, thumb_h=int, duration=int, mime_type='string', w=int, h=int, size=int, key='bytes', iv='bytes'}
decryptedMessageMediaVideo_17={_='decryptedMessageMediaVideo', thumb='bytes', thumb_w=int, thumb_h=int, duration=int, mime_type='string', w=int, h=int, size=int}
```

View File

@ -19,8 +19,6 @@ description: decryptedMessageMediaVideo attributes, type and example
|w|[int](../types/int.md) | Yes|
|h|[int](../types/int.md) | Yes|
|size|[int](../types/int.md) | Yes|
|key|[bytes](../types/bytes.md) | Yes|
|iv|[bytes](../types/bytes.md) | Yes|
|caption|[string](../types/string.md) | Yes|
@ -31,13 +29,13 @@ description: decryptedMessageMediaVideo attributes, type and example
### Example:
```
$decryptedMessageMediaVideo_45 = ['_' => 'decryptedMessageMediaVideo', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'duration' => int, 'mime_type' => 'string', 'w' => int, 'h' => int, 'size' => int, 'key' => 'bytes', 'iv' => 'bytes', 'caption' => 'string'];
$decryptedMessageMediaVideo_45 = ['_' => 'decryptedMessageMediaVideo', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'duration' => int, 'mime_type' => 'string', 'w' => int, 'h' => int, 'size' => int, 'caption' => 'string'];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:
```
{"_": "decryptedMessageMediaVideo", "thumb": "bytes", "thumb_w": int, "thumb_h": int, "duration": int, "mime_type": "string", "w": int, "h": int, "size": int, "key": "bytes", "iv": "bytes", "caption": "string"}
{"_": "decryptedMessageMediaVideo", "thumb": "bytes", "thumb_w": int, "thumb_h": int, "duration": int, "mime_type": "string", "w": int, "h": int, "size": int, "caption": "string"}
```
@ -45,7 +43,7 @@ Or, if you're into Lua:
```
decryptedMessageMediaVideo_45={_='decryptedMessageMediaVideo', thumb='bytes', thumb_w=int, thumb_h=int, duration=int, mime_type='string', w=int, h=int, size=int, key='bytes', iv='bytes', caption='string'}
decryptedMessageMediaVideo_45={_='decryptedMessageMediaVideo', thumb='bytes', thumb_w=int, thumb_h=int, duration=int, mime_type='string', w=int, h=int, size=int, caption='string'}
```

View File

@ -18,8 +18,6 @@ description: decryptedMessageMediaVideo attributes, type and example
|w|[int](../types/int.md) | Yes|
|h|[int](../types/int.md) | Yes|
|size|[int](../types/int.md) | Yes|
|key|[bytes](../types/bytes.md) | Yes|
|iv|[bytes](../types/bytes.md) | Yes|
@ -29,13 +27,13 @@ description: decryptedMessageMediaVideo attributes, type and example
### Example:
```
$decryptedMessageMediaVideo_8 = ['_' => 'decryptedMessageMediaVideo', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'duration' => int, 'w' => int, 'h' => int, 'size' => int, 'key' => 'bytes', 'iv' => 'bytes'];
$decryptedMessageMediaVideo_8 = ['_' => 'decryptedMessageMediaVideo', 'thumb' => 'bytes', 'thumb_w' => int, 'thumb_h' => int, 'duration' => int, 'w' => int, 'h' => int, 'size' => int];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:
```
{"_": "decryptedMessageMediaVideo", "thumb": "bytes", "thumb_w": int, "thumb_h": int, "duration": int, "w": int, "h": int, "size": int, "key": "bytes", "iv": "bytes"}
{"_": "decryptedMessageMediaVideo", "thumb": "bytes", "thumb_w": int, "thumb_h": int, "duration": int, "w": int, "h": int, "size": int}
```
@ -43,7 +41,7 @@ Or, if you're into Lua:
```
decryptedMessageMediaVideo_8={_='decryptedMessageMediaVideo', thumb='bytes', thumb_w=int, thumb_h=int, duration=int, w=int, h=int, size=int, key='bytes', iv='bytes'}
decryptedMessageMediaVideo_8={_='decryptedMessageMediaVideo', thumb='bytes', thumb_w=int, thumb_h=int, duration=int, w=int, h=int, size=int}
```

View File

@ -26,7 +26,7 @@ description: decryptedMessage attributes, type and example
### Example:
```
$decryptedMessage_45 = ['_' => 'decryptedMessage', 'ttl' => int, 'message' => 'string', 'media' => DecryptedMessageMedia, 'entities' => [MessageEntity], 'via_bot_name' => 'string', 'reply_to_random_id' => long];
$decryptedMessage_45 = ['_' => 'decryptedMessage', 'ttl' => int, 'message' => 'string', 'media' => DecryptedMessageMedia, 'entities' => [MessageEntity, MessageEntity], 'via_bot_name' => 'string', 'reply_to_random_id' => long];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -27,7 +27,7 @@ description: decryptedMessage attributes, type and example
### Example:
```
$decryptedMessage_73 = ['_' => 'decryptedMessage', 'ttl' => int, 'message' => 'string', 'media' => DecryptedMessageMedia, 'entities' => [MessageEntity], 'via_bot_name' => 'string', 'reply_to_random_id' => long, 'grouped_id' => long];
$decryptedMessage_73 = ['_' => 'decryptedMessage', 'ttl' => int, 'message' => 'string', 'media' => DecryptedMessageMedia, 'entities' => [MessageEntity, MessageEntity], 'via_bot_name' => 'string', 'reply_to_random_id' => long, 'grouped_id' => long];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -29,7 +29,7 @@ description: document attributes, type and example
### Example:
```
$document = ['_' => 'document', 'id' => long, 'access_hash' => long, 'date' => int, 'mime_type' => 'string', 'size' => int, 'thumb' => PhotoSize, 'dc_id' => int, 'version' => int, 'attributes' => [DocumentAttribute]];
$document = ['_' => 'document', 'id' => long, 'access_hash' => long, 'date' => int, 'mime_type' => 'string', 'size' => int, 'thumb' => PhotoSize, 'dc_id' => int, 'version' => int, 'attributes' => [DocumentAttribute, DocumentAttribute]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -12,7 +12,7 @@ description: documentAttributeAudio attributes, type and example
| Name | Type | Required |
|----------|---------------|----------|
|voice|[Bool](../types/Bool.md) | Optional|
|duration|[int](../types/int.md) | Yes|
|duration|[int](../types/int.md) | Optional|
|title|[string](../types/string.md) | Optional|
|performer|[string](../types/string.md) | Optional|
|waveform|[bytes](../types/bytes.md) | Optional|

View File

@ -11,7 +11,7 @@ description: documentAttributeAudio attributes, type and example
| Name | Type | Required |
|----------|---------------|----------|
|duration|[int](../types/int.md) | Yes|
|duration|[int](../types/int.md) | Optional|

View File

@ -11,7 +11,7 @@ description: documentAttributeAudio attributes, type and example
| Name | Type | Required |
|----------|---------------|----------|
|duration|[int](../types/int.md) | Yes|
|duration|[int](../types/int.md) | Optional|
|title|[string](../types/string.md) | Yes|
|performer|[string](../types/string.md) | Yes|

View File

@ -11,8 +11,8 @@ description: documentAttributeImageSize attributes, type and example
| Name | Type | Required |
|----------|---------------|----------|
|w|[int](../types/int.md) | Yes|
|h|[int](../types/int.md) | Yes|
|w|[int](../types/int.md) | Optional|
|h|[int](../types/int.md) | Optional|

View File

@ -13,9 +13,9 @@ description: documentAttributeVideo attributes, type and example
|----------|---------------|----------|
|round\_message|[Bool](../types/Bool.md) | Optional|
|supports\_streaming|[Bool](../types/Bool.md) | Optional|
|duration|[int](../types/int.md) | Yes|
|w|[int](../types/int.md) | Yes|
|h|[int](../types/int.md) | Yes|
|duration|[int](../types/int.md) | Optional|
|w|[int](../types/int.md) | Optional|
|h|[int](../types/int.md) | Optional|

View File

@ -11,9 +11,9 @@ description: documentAttributeVideo attributes, type and example
| Name | Type | Required |
|----------|---------------|----------|
|duration|[int](../types/int.md) | Yes|
|w|[int](../types/int.md) | Yes|
|h|[int](../types/int.md) | Yes|
|duration|[int](../types/int.md) | Optional|
|w|[int](../types/int.md) | Optional|
|h|[int](../types/int.md) | Optional|

View File

@ -25,7 +25,7 @@ description: draftMessage attributes, type and example
### Example:
```
$draftMessage = ['_' => 'draftMessage', 'no_webpage' => Bool, 'reply_to_msg_id' => int, 'message' => 'string', 'entities' => [MessageEntity], 'date' => int];
$draftMessage = ['_' => 'draftMessage', 'no_webpage' => Bool, 'reply_to_msg_id' => int, 'message' => 'string', 'entities' => [MessageEntity, MessageEntity], 'date' => int];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -23,7 +23,7 @@ description: help_recentMeUrls attributes, type and example
### Example:
```
$help_recentMeUrls = ['_' => 'help.recentMeUrls', 'urls' => [RecentMeUrl], 'chats' => [Chat], 'users' => [User]];
$help_recentMeUrls = ['_' => 'help.recentMeUrls', 'urls' => [RecentMeUrl, RecentMeUrl], 'chats' => [Chat, Chat], 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -23,7 +23,7 @@ description: inputBotInlineMessageMediaAuto attributes, type and example
### Example:
```
$inputBotInlineMessageMediaAuto = ['_' => 'inputBotInlineMessageMediaAuto', 'message' => 'string', 'entities' => [MessageEntity], 'reply_markup' => ReplyMarkup];
$inputBotInlineMessageMediaAuto = ['_' => 'inputBotInlineMessageMediaAuto', 'message' => 'string', 'entities' => [MessageEntity, MessageEntity], 'reply_markup' => ReplyMarkup];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -24,7 +24,7 @@ description: inputBotInlineMessageText attributes, type and example
### Example:
```
$inputBotInlineMessageText = ['_' => 'inputBotInlineMessageText', 'no_webpage' => Bool, 'message' => 'string', 'entities' => [MessageEntity], 'reply_markup' => ReplyMarkup];
$inputBotInlineMessageText = ['_' => 'inputBotInlineMessageText', 'no_webpage' => Bool, 'message' => 'string', 'entities' => [MessageEntity, MessageEntity], 'reply_markup' => ReplyMarkup];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -15,7 +15,7 @@ description: inputBotInlineResultDocument attributes, type and example
|type|[string](../types/string.md) | Yes|
|title|[string](../types/string.md) | Optional|
|description|[string](../types/string.md) | Optional|
|document|[InputDocument](../types/InputDocument.md) | Optional|
|document|[MessageMedia, Message, Update or InputDocument](../types/InputDocument.md) | Optional|
|send\_message|[InputBotInlineMessage](../types/InputBotInlineMessage.md) | Yes|

View File

@ -13,7 +13,7 @@ description: inputBotInlineResultPhoto attributes, type and example
|----------|---------------|----------|
|id|[string](../types/string.md) | Yes|
|type|[string](../types/string.md) | Yes|
|photo|[InputPhoto](../types/InputPhoto.md) | Optional|
|photo|[MessageMedia, Message, Update or InputPhoto](../types/InputPhoto.md) | Optional|
|send\_message|[InputBotInlineMessage](../types/InputBotInlineMessage.md) | Yes|

View File

@ -11,7 +11,7 @@ description: inputChatPhoto attributes, type and example
| Name | Type | Required |
|----------|---------------|----------|
|id|[InputPhoto](../types/InputPhoto.md) | Optional|
|id|[MessageMedia, Message, Update or InputPhoto](../types/InputPhoto.md) | Optional|

View File

@ -11,7 +11,7 @@ description: inputChatUploadedPhoto attributes, type and example
| Name | Type | Required |
|----------|---------------|----------|
|file|[InputFile](../types/InputFile.md) | Yes|
|file|[File path or InputFile](../types/InputFile.md) | Yes|

View File

@ -11,7 +11,7 @@ description: inputGameShortName attributes, type and example
| Name | Type | Required |
|----------|---------------|----------|
|bot\_id|[InputUser](../types/InputUser.md) | Optional|
|bot\_id|[Username, chat ID, Update, Message or InputUser](../types/InputUser.md) | Optional|
|short\_name|[string](../types/string.md) | Yes|

View File

@ -11,7 +11,7 @@ description: inputMediaDocument attributes, type and example
| Name | Type | Required |
|----------|---------------|----------|
|id|[InputDocument](../types/InputDocument.md) | Optional|
|id|[MessageMedia, Message, Update or InputDocument](../types/InputDocument.md) | Optional|
|ttl\_seconds|[int](../types/int.md) | Optional|

View File

@ -11,7 +11,7 @@ description: inputMediaPhoto attributes, type and example
| Name | Type | Required |
|----------|---------------|----------|
|id|[InputPhoto](../types/InputPhoto.md) | Optional|
|id|[MessageMedia, Message, Update or InputPhoto](../types/InputPhoto.md) | Optional|
|ttl\_seconds|[int](../types/int.md) | Optional|

View File

@ -12,11 +12,11 @@ description: inputMediaUploadedDocument attributes, type and example
| Name | Type | Required |
|----------|---------------|----------|
|nosound\_video|[Bool](../types/Bool.md) | Optional|
|file|[InputFile](../types/InputFile.md) | Yes|
|thumb|[InputFile](../types/InputFile.md) | Optional|
|mime\_type|[string](../types/string.md) | Yes|
|file|[File path or InputFile](../types/InputFile.md) | Yes|
|thumb|[File path or InputFile](../types/InputFile.md) | Optional|
|mime\_type|[string](../types/string.md) | Optional|
|attributes|Array of [DocumentAttribute](../types/DocumentAttribute.md) | Yes|
|stickers|Array of [InputDocument](../types/InputDocument.md) | Optional|
|stickers|Array of [MessageMedia, Message, Update or InputDocument](../types/InputDocument.md) | Optional|
|ttl\_seconds|[int](../types/int.md) | Optional|
@ -27,7 +27,7 @@ description: inputMediaUploadedDocument attributes, type and example
### Example:
```
$inputMediaUploadedDocument = ['_' => 'inputMediaUploadedDocument', 'nosound_video' => Bool, 'file' => InputFile, 'thumb' => InputFile, 'mime_type' => 'string', 'attributes' => [DocumentAttribute], 'stickers' => [InputDocument], 'ttl_seconds' => int];
$inputMediaUploadedDocument = ['_' => 'inputMediaUploadedDocument', 'nosound_video' => Bool, 'file' => InputFile, 'thumb' => InputFile, 'mime_type' => 'string', 'attributes' => [DocumentAttribute, DocumentAttribute], 'stickers' => [InputDocument, InputDocument], 'ttl_seconds' => int];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -11,8 +11,8 @@ description: inputMediaUploadedPhoto attributes, type and example
| Name | Type | Required |
|----------|---------------|----------|
|file|[InputFile](../types/InputFile.md) | Yes|
|stickers|Array of [InputDocument](../types/InputDocument.md) | Optional|
|file|[File path or InputFile](../types/InputFile.md) | Yes|
|stickers|Array of [MessageMedia, Message, Update or InputDocument](../types/InputDocument.md) | Optional|
|ttl\_seconds|[int](../types/int.md) | Optional|
@ -23,7 +23,7 @@ description: inputMediaUploadedPhoto attributes, type and example
### Example:
```
$inputMediaUploadedPhoto = ['_' => 'inputMediaUploadedPhoto', 'file' => InputFile, 'stickers' => [InputDocument], 'ttl_seconds' => int];
$inputMediaUploadedPhoto = ['_' => 'inputMediaUploadedPhoto', 'file' => InputFile, 'stickers' => [InputDocument, InputDocument], 'ttl_seconds' => int];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -11,7 +11,7 @@ description: inputNotifyPeer attributes, type and example
| Name | Type | Required |
|----------|---------------|----------|
|peer|[InputPeer](../types/InputPeer.md) | Optional|
|peer|[Username, chat ID, Update, Message or InputPeer](../types/InputPeer.md) | Optional|

View File

@ -11,7 +11,7 @@ description: inputPrivacyValueAllowUsers attributes, type and example
| Name | Type | Required |
|----------|---------------|----------|
|users|Array of [InputUser](../types/InputUser.md) | Yes|
|users|Array of [Username, chat ID, Update, Message or InputUser](../types/InputUser.md) | Yes|
@ -21,7 +21,7 @@ description: inputPrivacyValueAllowUsers attributes, type and example
### Example:
```
$inputPrivacyValueAllowUsers = ['_' => 'inputPrivacyValueAllowUsers', 'users' => [InputUser]];
$inputPrivacyValueAllowUsers = ['_' => 'inputPrivacyValueAllowUsers', 'users' => [InputUser, InputUser]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -11,7 +11,7 @@ description: inputPrivacyValueDisallowUsers attributes, type and example
| Name | Type | Required |
|----------|---------------|----------|
|users|Array of [InputUser](../types/InputUser.md) | Yes|
|users|Array of [Username, chat ID, Update, Message or InputUser](../types/InputUser.md) | Yes|
@ -21,7 +21,7 @@ description: inputPrivacyValueDisallowUsers attributes, type and example
### Example:
```
$inputPrivacyValueDisallowUsers = ['_' => 'inputPrivacyValueDisallowUsers', 'users' => [InputUser]];
$inputPrivacyValueDisallowUsers = ['_' => 'inputPrivacyValueDisallowUsers', 'users' => [InputUser, InputUser]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -11,7 +11,7 @@ description: inputSingleMedia attributes, type and example
| Name | Type | Required |
|----------|---------------|----------|
|media|[InputMedia](../types/InputMedia.md) | Optional|
|media|[MessageMedia, Message, Update or InputMedia](../types/InputMedia.md) | Optional|
|message|[string](../types/string.md) | Yes|
|entities|Array of [MessageEntity](../types/MessageEntity.md) | Optional|
@ -23,7 +23,7 @@ description: inputSingleMedia attributes, type and example
### Example:
```
$inputSingleMedia = ['_' => 'inputSingleMedia', 'media' => InputMedia, 'message' => 'string', 'entities' => [MessageEntity]];
$inputSingleMedia = ['_' => 'inputSingleMedia', 'media' => InputMedia, 'message' => 'string', 'entities' => [MessageEntity, MessageEntity]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -11,7 +11,7 @@ description: inputStickerSetItem attributes, type and example
| Name | Type | Required |
|----------|---------------|----------|
|document|[InputDocument](../types/InputDocument.md) | Optional|
|document|[MessageMedia, Message, Update or InputDocument](../types/InputDocument.md) | Optional|
|emoji|[string](../types/string.md) | Yes|
|mask\_coords|[MaskCoords](../types/MaskCoords.md) | Optional|

View File

@ -11,7 +11,7 @@ description: inputStickeredMediaDocument attributes, type and example
| Name | Type | Required |
|----------|---------------|----------|
|id|[InputDocument](../types/InputDocument.md) | Optional|
|id|[MessageMedia, Message, Update or InputDocument](../types/InputDocument.md) | Optional|

View File

@ -11,7 +11,7 @@ description: inputStickeredMediaPhoto attributes, type and example
| Name | Type | Required |
|----------|---------------|----------|
|id|[InputPhoto](../types/InputPhoto.md) | Optional|
|id|[MessageMedia, Message, Update or InputPhoto](../types/InputPhoto.md) | Optional|

View File

@ -24,7 +24,7 @@ description: inputWebDocument attributes, type and example
### Example:
```
$inputWebDocument = ['_' => 'inputWebDocument', 'url' => 'string', 'size' => int, 'mime_type' => 'string', 'attributes' => [DocumentAttribute]];
$inputWebDocument = ['_' => 'inputWebDocument', 'url' => 'string', 'size' => int, 'mime_type' => 'string', 'attributes' => [DocumentAttribute, DocumentAttribute]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -30,7 +30,7 @@ description: invoice attributes, type and example
### 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, 'currency' => 'string', 'prices' => [LabeledPrice]];
$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, 'currency' => 'string', 'prices' => [LabeledPrice, LabeledPrice]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -21,7 +21,7 @@ description: keyboardButtonRow attributes, type and example
### Example:
```
$keyboardButtonRow = ['_' => 'keyboardButtonRow', 'buttons' => [KeyboardButton]];
$keyboardButtonRow = ['_' => 'keyboardButtonRow', 'buttons' => [KeyboardButton, KeyboardButton]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -24,7 +24,7 @@ description: langPackDifference attributes, type and example
### Example:
```
$langPackDifference = ['_' => 'langPackDifference', 'lang_code' => 'string', 'from_version' => int, 'version' => int, 'strings' => [LangPackString]];
$langPackDifference = ['_' => 'langPackDifference', 'lang_code' => 'string', 'from_version' => int, 'version' => int, 'strings' => [LangPackString, LangPackString]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -40,7 +40,7 @@ description: message attributes, type and example
### Example:
```
$message = ['_' => 'message', 'out' => Bool, 'mentioned' => Bool, 'media_unread' => Bool, 'silent' => Bool, 'post' => Bool, 'id' => int, 'from_id' => int, 'to_id' => Peer, 'fwd_from' => MessageFwdHeader, 'via_bot_id' => int, 'reply_to_msg_id' => int, 'date' => int, 'message' => 'string', 'media' => MessageMedia, 'reply_markup' => ReplyMarkup, 'entities' => [MessageEntity], 'views' => int, 'edit_date' => int, 'post_author' => 'string', 'grouped_id' => long];
$message = ['_' => 'message', 'out' => Bool, 'mentioned' => Bool, 'media_unread' => Bool, 'silent' => Bool, 'post' => Bool, 'id' => int, 'from_id' => int, 'to_id' => Peer, 'fwd_from' => MessageFwdHeader, 'via_bot_id' => int, 'reply_to_msg_id' => int, 'date' => int, 'message' => 'string', 'media' => MessageMedia, 'reply_markup' => ReplyMarkup, 'entities' => [MessageEntity, MessageEntity], 'views' => int, 'edit_date' => int, 'post_author' => 'string', 'grouped_id' => long];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -21,7 +21,7 @@ description: messageActionChatAddUser attributes, type and example
### Example:
```
$messageActionChatAddUser = ['_' => 'messageActionChatAddUser', 'users' => [int]];
$messageActionChatAddUser = ['_' => 'messageActionChatAddUser', 'users' => [int, int]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -22,7 +22,7 @@ description: messageActionChatCreate attributes, type and example
### Example:
```
$messageActionChatCreate = ['_' => 'messageActionChatCreate', 'title' => 'string', 'users' => [int]];
$messageActionChatCreate = ['_' => 'messageActionChatCreate', 'title' => 'string', 'users' => [int, int]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -22,7 +22,7 @@ description: messages_allStickers attributes, type and example
### Example:
```
$messages_allStickers = ['_' => 'messages.allStickers', 'hash' => int, 'sets' => [StickerSet]];
$messages_allStickers = ['_' => 'messages.allStickers', 'hash' => int, 'sets' => [StickerSet, StickerSet]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -22,7 +22,7 @@ description: messages_archivedStickers attributes, type and example
### Example:
```
$messages_archivedStickers = ['_' => 'messages.archivedStickers', 'count' => int, 'sets' => [StickerSetCovered]];
$messages_archivedStickers = ['_' => 'messages.archivedStickers', 'count' => int, 'sets' => [StickerSetCovered, StickerSetCovered]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -27,7 +27,7 @@ description: messages_botResults attributes, type and example
### Example:
```
$messages_botResults = ['_' => 'messages.botResults', 'gallery' => Bool, 'query_id' => long, 'next_offset' => 'string', 'switch_pm' => InlineBotSwitchPM, 'results' => [BotInlineResult], 'cache_time' => int, 'users' => [User]];
$messages_botResults = ['_' => 'messages.botResults', 'gallery' => Bool, 'query_id' => long, 'next_offset' => 'string', 'switch_pm' => InlineBotSwitchPM, 'results' => [BotInlineResult, BotInlineResult], 'cache_time' => int, 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -25,7 +25,7 @@ description: messages_channelMessages attributes, type and example
### Example:
```
$messages_channelMessages = ['_' => 'messages.channelMessages', 'pts' => int, 'count' => int, 'messages' => [Message], 'chats' => [Chat], 'users' => [User]];
$messages_channelMessages = ['_' => 'messages.channelMessages', 'pts' => int, 'count' => int, 'messages' => [Message, Message], 'chats' => [Chat, Chat], 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -23,7 +23,7 @@ description: messages_chatFull attributes, type and example
### Example:
```
$messages_chatFull = ['_' => 'messages.chatFull', 'full_chat' => ChatFull, 'chats' => [Chat], 'users' => [User]];
$messages_chatFull = ['_' => 'messages.chatFull', 'full_chat' => ChatFull, 'chats' => [Chat, Chat], 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -21,7 +21,7 @@ description: messages_chats attributes, type and example
### Example:
```
$messages_chats = ['_' => 'messages.chats', 'chats' => [Chat]];
$messages_chats = ['_' => 'messages.chats', 'chats' => [Chat, Chat]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -22,7 +22,7 @@ description: messages_chatsSlice attributes, type and example
### Example:
```
$messages_chatsSlice = ['_' => 'messages.chatsSlice', 'count' => int, 'chats' => [Chat]];
$messages_chatsSlice = ['_' => 'messages.chatsSlice', 'count' => int, 'chats' => [Chat, Chat]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -24,7 +24,7 @@ description: messages_dialogs attributes, type and example
### Example:
```
$messages_dialogs = ['_' => 'messages.dialogs', 'dialogs' => [Dialog], 'messages' => [Message], 'chats' => [Chat], 'users' => [User]];
$messages_dialogs = ['_' => 'messages.dialogs', 'dialogs' => [Dialog, Dialog], 'messages' => [Message, Message], 'chats' => [Chat, Chat], 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -25,7 +25,7 @@ description: messages_dialogsSlice attributes, type and example
### Example:
```
$messages_dialogsSlice = ['_' => 'messages.dialogsSlice', 'count' => int, 'dialogs' => [Dialog], 'messages' => [Message], 'chats' => [Chat], 'users' => [User]];
$messages_dialogsSlice = ['_' => 'messages.dialogsSlice', 'count' => int, 'dialogs' => [Dialog, Dialog], 'messages' => [Message, Message], 'chats' => [Chat, Chat], 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -23,7 +23,7 @@ description: messages_favedStickers attributes, type and example
### Example:
```
$messages_favedStickers = ['_' => 'messages.favedStickers', 'hash' => int, 'packs' => [StickerPack], 'stickers' => [Document]];
$messages_favedStickers = ['_' => 'messages.favedStickers', 'hash' => int, 'packs' => [StickerPack, StickerPack], 'stickers' => [Document, Document]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -23,7 +23,7 @@ description: messages_featuredStickers attributes, type and example
### Example:
```
$messages_featuredStickers = ['_' => 'messages.featuredStickers', 'hash' => int, 'sets' => [StickerSetCovered], 'unread' => [long]];
$messages_featuredStickers = ['_' => 'messages.featuredStickers', 'hash' => int, 'sets' => [StickerSetCovered, StickerSetCovered], 'unread' => [long, long]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -22,7 +22,7 @@ description: messages_foundGifs attributes, type and example
### Example:
```
$messages_foundGifs = ['_' => 'messages.foundGifs', 'next_offset' => int, 'results' => [FoundGif]];
$messages_foundGifs = ['_' => 'messages.foundGifs', 'next_offset' => int, 'results' => [FoundGif, FoundGif]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -22,7 +22,7 @@ description: messages_highScores attributes, type and example
### Example:
```
$messages_highScores = ['_' => 'messages.highScores', 'scores' => [HighScore], 'users' => [User]];
$messages_highScores = ['_' => 'messages.highScores', 'scores' => [HighScore, HighScore], 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -23,7 +23,7 @@ description: messages_messages attributes, type and example
### Example:
```
$messages_messages = ['_' => 'messages.messages', 'messages' => [Message], 'chats' => [Chat], 'users' => [User]];
$messages_messages = ['_' => 'messages.messages', 'messages' => [Message, Message], 'chats' => [Chat, Chat], 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -24,7 +24,7 @@ description: messages_messagesSlice attributes, type and example
### Example:
```
$messages_messagesSlice = ['_' => 'messages.messagesSlice', 'count' => int, 'messages' => [Message], 'chats' => [Chat], 'users' => [User]];
$messages_messagesSlice = ['_' => 'messages.messagesSlice', 'count' => int, 'messages' => [Message, Message], 'chats' => [Chat, Chat], 'users' => [User, User]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -25,7 +25,7 @@ description: messages_peerDialogs attributes, type and example
### Example:
```
$messages_peerDialogs = ['_' => 'messages.peerDialogs', 'dialogs' => [Dialog], 'messages' => [Message], 'chats' => [Chat], 'users' => [User], 'state' => updates_State];
$messages_peerDialogs = ['_' => 'messages.peerDialogs', 'dialogs' => [Dialog, Dialog], 'messages' => [Message, Message], 'chats' => [Chat, Chat], 'users' => [User, User], 'state' => updates_State];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -22,7 +22,7 @@ description: messages_recentStickers attributes, type and example
### Example:
```
$messages_recentStickers = ['_' => 'messages.recentStickers', 'hash' => int, 'stickers' => [Document]];
$messages_recentStickers = ['_' => 'messages.recentStickers', 'hash' => int, 'stickers' => [Document, Document]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -22,7 +22,7 @@ description: messages_savedGifs attributes, type and example
### Example:
```
$messages_savedGifs = ['_' => 'messages.savedGifs', 'hash' => int, 'gifs' => [Document]];
$messages_savedGifs = ['_' => 'messages.savedGifs', 'hash' => int, 'gifs' => [Document, Document]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -23,7 +23,7 @@ description: messages_stickerSet attributes, type and example
### Example:
```
$messages_stickerSet = ['_' => 'messages.stickerSet', 'set' => StickerSet, 'packs' => [StickerPack], 'documents' => [Document]];
$messages_stickerSet = ['_' => 'messages.stickerSet', 'set' => StickerSet, 'packs' => [StickerPack, StickerPack], 'documents' => [Document, Document]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -21,7 +21,7 @@ description: messages_stickerSetInstallResultArchive attributes, type and exampl
### Example:
```
$messages_stickerSetInstallResultArchive = ['_' => 'messages.stickerSetInstallResultArchive', 'sets' => [StickerSetCovered]];
$messages_stickerSetInstallResultArchive = ['_' => 'messages.stickerSetInstallResultArchive', 'sets' => [StickerSetCovered, StickerSetCovered]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -22,7 +22,7 @@ description: messages_stickers attributes, type and example
### Example:
```
$messages_stickers = ['_' => 'messages.stickers', 'hash' => 'string', 'stickers' => [Document]];
$messages_stickers = ['_' => 'messages.stickers', 'hash' => 'string', 'stickers' => [Document, Document]];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -22,7 +22,7 @@ description: pageBlockCollage attributes, type and example
### Example:
```
$pageBlockCollage = ['_' => 'pageBlockCollage', 'items' => [PageBlock], 'caption' => RichText];
$pageBlockCollage = ['_' => 'pageBlockCollage', 'items' => [PageBlock, PageBlock], 'caption' => RichText];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

View File

@ -27,7 +27,7 @@ description: pageBlockEmbedPost attributes, type and example
### Example:
```
$pageBlockEmbedPost = ['_' => 'pageBlockEmbedPost', 'url' => 'string', 'webpage_id' => long, 'author_photo_id' => long, 'author' => 'string', 'date' => int, 'blocks' => [PageBlock], 'caption' => RichText];
$pageBlockEmbedPost = ['_' => 'pageBlockEmbedPost', 'url' => 'string', 'webpage_id' => long, 'author_photo_id' => long, 'author' => 'string', 'date' => int, 'blocks' => [PageBlock, PageBlock], 'caption' => RichText];
```
[PWRTelegram](https://pwrtelegram.xyz) json-encoded version:

Some files were not shown because too many files have changed in this diff Show More