MUUUAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA BUUURN SNAKES BUUURN MUAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA cough

This commit is contained in:
Daniil Gentili 2019-10-29 22:41:31 +01:00
parent 40496d374e
commit 92717a2d05
Signed by: danog
GPG Key ID: 8C1BE3B34B230CA7
55 changed files with 459 additions and 437 deletions

View File

@ -29,7 +29,7 @@ $MadelineProto->async(true);
$MadelineProto->loop(function () use ($MadelineProto) { $MadelineProto->loop(function () use ($MadelineProto) {
yield $MadelineProto->start(); yield $MadelineProto->start();
$me = yield $MadelineProto->get_self(); $me = yield $MadelineProto->getSelf();
$MadelineProto->logger($me); $MadelineProto->logger($me);
@ -168,10 +168,10 @@ Tip: if you receive an error (or nothing), [send us](https://t.me/pwrtelegramgro
* [Login](https://docs.madelineproto.xyz/docs/LOGIN.html) * [Login](https://docs.madelineproto.xyz/docs/LOGIN.html)
* [Change 2FA password](https://docs.madelineproto.xyz/update_2fa.html) * [Change 2FA password](https://docs.madelineproto.xyz/update_2fa.html)
* [Get all chats, broadcast a message to all chats](https://docs.madelineproto.xyz/docs/DIALOGS.html) * [Get all chats, broadcast a message to all chats](https://docs.madelineproto.xyz/docs/DIALOGS.html)
* [Get the full participant list of a channel/group/supergroup](https://docs.madelineproto.xyz/get_pwr_chat.html) * [Get the full participant list of a channel/group/supergroup](https://docs.madelineproto.xyz/getPwrChat.html)
* [Get full info about a user/chat/supergroup/channel](https://docs.madelineproto.xyz/get_full_info.html) * [Get full info about a user/chat/supergroup/channel](https://docs.madelineproto.xyz/getFullInfo.html)
* [Get info about a user/chat/supergroup/channel](https://docs.madelineproto.xyz/get_info.html) * [Get info about a user/chat/supergroup/channel](https://docs.madelineproto.xyz/getInfo.html)
* [Get info about the currently logged-in user](https://docs.madelineproto.xyz/get_self.html) * [Get info about the currently logged-in user](https://docs.madelineproto.xyz/getSelf.html)
* [Upload or download files up to 1.5 GB](https://docs.madelineproto.xyz/docs/FILES.html) * [Upload or download files up to 1.5 GB](https://docs.madelineproto.xyz/docs/FILES.html)
* [Make a phone call and play a song](https://docs.madelineproto.xyz/docs/CALLS.html) * [Make a phone call and play a song](https://docs.madelineproto.xyz/docs/CALLS.html)
* [Create a secret chat bot](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html) * [Create a secret chat bot](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html)
@ -276,7 +276,7 @@ Tip: if you receive an error (or nothing), [send us](https://t.me/pwrtelegramgro
* <a href="https://docs.madelineproto.xyz/API_docs/methods/contacts_getBlocked.html" name="contacts_getBlocked">Get blocked users: contacts.getBlocked</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/contacts_getBlocked.html" name="contacts_getBlocked">Get blocked users: contacts.getBlocked</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/phone_getCallConfig.html" name="phone_getCallConfig">Get call configuration: phone.getCallConfig</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/phone_getCallConfig.html" name="phone_getCallConfig">Get call configuration: phone.getCallConfig</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/channels_getMessages.html" name="channels_getMessages">Get channel/supergroup messages: channels.getMessages</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/channels_getMessages.html" name="channels_getMessages">Get channel/supergroup messages: channels.getMessages</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/channels_getParticipants.html" name="channels_getParticipants">Get channel/supergroup participants (you should use `$MadelineProto->get_pwr_chat($id)` instead): channels.getParticipants</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/channels_getParticipants.html" name="channels_getParticipants">Get channel/supergroup participants (you should use `$MadelineProto->getPwrChat($id)` instead): channels.getParticipants</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_getCommonChats.html" name="messages_getCommonChats">Get chats in common with a user: messages.getCommonChats</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_getCommonChats.html" name="messages_getCommonChats">Get chats in common with a user: messages.getCommonChats</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/contacts_getContactIDs.html" name="contacts_getContactIDs">Get contacts by IDs: contacts.getContactIDs</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/contacts_getContactIDs.html" name="contacts_getContactIDs">Get contacts by IDs: contacts.getContactIDs</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/help_getDeepLinkInfo.html" name="help_getDeepLinkInfo">Get deep link info: help.getDeepLinkInfo</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/help_getDeepLinkInfo.html" name="help_getDeepLinkInfo">Get deep link info: help.getDeepLinkInfo</a>
@ -354,7 +354,7 @@ Tip: if you receive an error (or nothing), [send us](https://t.me/pwrtelegramgro
* <a href="https://docs.madelineproto.xyz/API_docs/methods/account_getWallPaper.html" name="account_getWallPaper">Get wallpaper info: account.getWallPaper</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/account_getWallPaper.html" name="account_getWallPaper">Get wallpaper info: account.getWallPaper</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_getWebPage.html" name="messages_getWebPage">Get webpage preview: messages.getWebPage</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_getWebPage.html" name="messages_getWebPage">Get webpage preview: messages.getWebPage</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_getWebPagePreview.html" name="messages_getWebPagePreview">Get webpage preview: messages.getWebPagePreview</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_getWebPagePreview.html" name="messages_getWebPagePreview">Get webpage preview: messages.getWebPagePreview</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_getDialogs.html" name="messages_getDialogs">Gets list of chats: you should use $MadelineProto->get_dialogs() instead: https://docs.madelineproto.xyz/docs/DIALOGS.html: messages.getDialogs</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_getDialogs.html" name="messages_getDialogs">Gets list of chats: you should use $MadelineProto->getDialogs() instead: https://docs.madelineproto.xyz/docs/DIALOGS.html: messages.getDialogs</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_searchGlobal.html" name="messages_searchGlobal">Global message search: messages.searchGlobal</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_searchGlobal.html" name="messages_searchGlobal">Global message search: messages.searchGlobal</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_hidePeerSettingsBar.html" name="messages_hidePeerSettingsBar">Hide peer settings bar: messages.hidePeerSettingsBar</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_hidePeerSettingsBar.html" name="messages_hidePeerSettingsBar">Hide peer settings bar: messages.hidePeerSettingsBar</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_importChatInvite.html" name="messages_importChatInvite">Import chat invite: messages.importChatInvite</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_importChatInvite.html" name="messages_importChatInvite">Import chat invite: messages.importChatInvite</a>
@ -463,7 +463,7 @@ Tip: if you receive an error (or nothing), [send us](https://t.me/pwrtelegramgro
* <a href="https://docs.madelineproto.xyz/API_docs/methods/account_verifyEmail.html" name="account_verifyEmail">Verify email address: account.verifyEmail</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/account_verifyEmail.html" name="account_verifyEmail">Verify email address: account.verifyEmail</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/account_verifyPhone.html" name="account_verifyPhone">Verify phone number: account.verifyPhone</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/account_verifyPhone.html" name="account_verifyPhone">Verify phone number: account.verifyPhone</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/auth_bindTempAuthKey.html" name="auth_bindTempAuthKey">You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info: auth.bindTempAuthKey</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/auth_bindTempAuthKey.html" name="auth_bindTempAuthKey">You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info: auth.bindTempAuthKey</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_getDhConfig.html" name="messages_getDhConfig">You cannot use this method directly, instead use $MadelineProto->get_dh_config();: messages.getDhConfig</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_getDhConfig.html" name="messages_getDhConfig">You cannot use this method directly, instead use $MadelineProto->getDhConfig();: messages.getDhConfig</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_acceptEncryption.html" name="messages_acceptEncryption">You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats: messages.acceptEncryption</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_acceptEncryption.html" name="messages_acceptEncryption">You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats: messages.acceptEncryption</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_discardEncryption.html" name="messages_discardEncryption">You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats: messages.discardEncryption</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_discardEncryption.html" name="messages_discardEncryption">You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats: messages.discardEncryption</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_requestEncryption.html" name="messages_requestEncryption">You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats: messages.requestEncryption</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages_requestEncryption.html" name="messages_requestEncryption">You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats: messages.requestEncryption</a>
@ -474,8 +474,8 @@ Tip: if you receive an error (or nothing), [send us](https://t.me/pwrtelegramgro
* <a href="https://docs.madelineproto.xyz/API_docs/methods/phone_confirmCall.html" name="phone_confirmCall">You cannot use this method directly, see https://docs.madelineproto.xyz#calls for more info on handling calls: phone.confirmCall</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/phone_confirmCall.html" name="phone_confirmCall">You cannot use this method directly, see https://docs.madelineproto.xyz#calls for more info on handling calls: phone.confirmCall</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/phone_discardCall.html" name="phone_discardCall">You cannot use this method directly, see https://docs.madelineproto.xyz#calls for more info on handling calls: phone.discardCall</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/phone_discardCall.html" name="phone_discardCall">You cannot use this method directly, see https://docs.madelineproto.xyz#calls for more info on handling calls: phone.discardCall</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/phone_requestCall.html" name="phone_requestCall">You cannot use this method directly, see https://docs.madelineproto.xyz#calls for more info on handling calls: phone.requestCall</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/phone_requestCall.html" name="phone_requestCall">You cannot use this method directly, see https://docs.madelineproto.xyz#calls for more info on handling calls: phone.requestCall</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/auth_exportAuthorization.html" name="auth_exportAuthorization">You cannot use this method directly, use $MadelineProto->export_authorization() instead, see https://docs.madelineproto.xyz/docs/LOGIN.html: auth.exportAuthorization</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/auth_exportAuthorization.html" name="auth_exportAuthorization">You cannot use this method directly, use $MadelineProto->exportAuthorization() instead, see https://docs.madelineproto.xyz/docs/LOGIN.html: auth.exportAuthorization</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/auth_importAuthorization.html" name="auth_importAuthorization">You cannot use this method directly, use $MadelineProto->import_authorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html: auth.importAuthorization</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/auth_importAuthorization.html" name="auth_importAuthorization">You cannot use this method directly, use $MadelineProto->importAuthorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html: auth.importAuthorization</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/auth_importBotAuthorization.html" name="auth_importBotAuthorization">You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info): auth.importBotAuthorization</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/auth_importBotAuthorization.html" name="auth_importBotAuthorization">You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info): auth.importBotAuthorization</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/auth_checkPassword.html" name="auth_checkPassword">You cannot use this method directly, use the complete_2fa_login method instead (see https://docs.madelineproto.xyz for more info): auth.checkPassword</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/auth_checkPassword.html" name="auth_checkPassword">You cannot use this method directly, use the complete_2fa_login method instead (see https://docs.madelineproto.xyz for more info): auth.checkPassword</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/auth_signIn.html" name="auth_signIn">You cannot use this method directly, use the complete_phone_login method instead (see https://docs.madelineproto.xyz for more info): auth.signIn</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/auth_signIn.html" name="auth_signIn">You cannot use this method directly, use the complete_phone_login method instead (see https://docs.madelineproto.xyz for more info): auth.signIn</a>

2
docs

@ -1 +1 @@
Subproject commit acdcb1ab5446e148c7476c36b6db9265a47e5bec Subproject commit 9f21080a2952ff2d62af31aebbebae8743653aa9

View File

@ -63,7 +63,7 @@ class EventHandler extends \danog\MadelineProto\EventHandler
['_' => 'documentAttributeFilename', 'file_name' => 'document.txt'] ['_' => 'documentAttributeFilename', 'file_name' => 'document.txt']
] ]
],]);*/ ],]);*/
//yield $this->download_to_dir($update, '/tmp'); //yield $this->downloadToDir($update, '/tmp');
} }
} catch (\danog\MadelineProto\RPCErrorException $e) { } catch (\danog\MadelineProto\RPCErrorException $e) {
$this->logger((string) $e, \danog\MadelineProto\Logger::FATAL_ERROR); $this->logger((string) $e, \danog\MadelineProto\Logger::FATAL_ERROR);

View File

@ -23,7 +23,7 @@ require 'vendor/autoload.php';
$MadelineProto = new \danog\MadelineProto\API('session.madeline'); $MadelineProto = new \danog\MadelineProto\API('session.madeline');
$me = $MadelineProto->start(); $me = $MadelineProto->start();
$me = $MadelineProto->get_self(); $me = $MadelineProto->getSelf();
\danog\MadelineProto\Logger::log($me); \danog\MadelineProto\Logger::log($me);

View File

@ -26,11 +26,11 @@ if (!\is_object($Lua)) {
} }
switch ($res) { switch ($res) {
case 'u': case 'u':
$sentCode = $MadelineProto->phone_login(\readline('Enter your phone number: ')); $sentCode = $MadelineProto->phoneLogin(\readline('Enter your phone number: '));
\danog\MadelineProto\Logger::log($sentCode, \danog\MadelineProto\Logger::NOTICE); \danog\MadelineProto\Logger::log($sentCode, \danog\MadelineProto\Logger::NOTICE);
echo 'Enter the code you received: '; echo 'Enter the code you received: ';
$code = \fgets(STDIN, (isset($sentCode['type']['length']) ? $sentCode['type']['length'] : 5) + 1); $code = \fgets(STDIN, (isset($sentCode['type']['length']) ? $sentCode['type']['length'] : 5) + 1);
$authorization = $MadelineProto->complete_phone_login($code); $authorization = $MadelineProto->completePhoneLogin($code);
\danog\MadelineProto\Logger::log($authorization, \danog\MadelineProto\Logger::NOTICE); \danog\MadelineProto\Logger::log($authorization, \danog\MadelineProto\Logger::NOTICE);
if ($authorization['_'] === 'account.noPassword') { if ($authorization['_'] === 'account.noPassword') {
throw new \danog\MadelineProto\Exception('2FA is enabled but no password is set!'); throw new \danog\MadelineProto\Exception('2FA is enabled but no password is set!');
@ -41,13 +41,13 @@ if (!\is_object($Lua)) {
} }
if ($authorization['_'] === 'account.needSignup') { if ($authorization['_'] === 'account.needSignup') {
\danog\MadelineProto\Logger::log('Registering new user', \danog\MadelineProto\Logger::NOTICE); \danog\MadelineProto\Logger::log('Registering new user', \danog\MadelineProto\Logger::NOTICE);
$authorization = $MadelineProto->complete_signup(\readline('Please enter your first name: '), \readline('Please enter your last name (can be empty): ')); $authorization = $MadelineProto->completeSignup(\readline('Please enter your first name: '), \readline('Please enter your last name (can be empty): '));
} }
\danog\MadelineProto\Logger::log($authorization, \danog\MadelineProto\Logger::NOTICE); \danog\MadelineProto\Logger::log($authorization, \danog\MadelineProto\Logger::NOTICE);
$Lua = new \danog\MadelineProto\Lua('madeline.lua', $MadelineProto); $Lua = new \danog\MadelineProto\Lua('madeline.lua', $MadelineProto);
break; break;
case 'b': case 'b':
$authorization = $MadelineProto->bot_login(\readline('Please enter a bot token: ')); $authorization = $MadelineProto->botLogin(\readline('Please enter a bot token: '));
\danog\MadelineProto\Logger::log($authorization, \danog\MadelineProto\Logger::NOTICE); \danog\MadelineProto\Logger::log($authorization, \danog\MadelineProto\Logger::NOTICE);
$Lua = new \danog\MadelineProto\Lua('madeline.lua', $MadelineProto); $Lua = new \danog\MadelineProto\Lua('madeline.lua', $MadelineProto);
break; break;
@ -56,10 +56,10 @@ if (!\is_object($Lua)) {
$offset = 0; $offset = 0;
while (true) { while (true) {
$updates = $Lua->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 $updates = $Lua->MadelineProto->getUpdates(['offset' => $offset, 'limit' => 50, 'timeout' => 0]); // Just like in the bot API, you can specify an offset, a limit and a timeout
foreach ($updates as $update) { 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 $offset = $update['update_id'] + 1; // Just like in the bot API, the offset must be set to the last update_id
$Lua->tdcli_update_callback($update['update']); $Lua->tdcliUpdateCallback($update['update']);
} }
echo 'Wrote '.\danog\MadelineProto\Serialization::serialize('td.madeline', $Lua).' bytes'.PHP_EOL; echo 'Wrote '.\danog\MadelineProto\Serialization::serialize('td.madeline', $Lua).' bytes'.PHP_EOL;
} }

View File

@ -27,14 +27,14 @@ try {
$MadelineProto = new \danog\MadelineProto\API('b.madeline'); $MadelineProto = new \danog\MadelineProto\API('b.madeline');
} catch (\danog\MadelineProto\Exception $e) { } catch (\danog\MadelineProto\Exception $e) {
$MadelineProto = new \danog\MadelineProto\API($settings); $MadelineProto = new \danog\MadelineProto\API($settings);
$authorization = $MadelineProto->bot_login($pwrtelegram_debug_token); $authorization = $MadelineProto->botLogin($pwrtelegram_debug_token);
\danog\MadelineProto\Logger::log($authorization, \danog\MadelineProto\Logger::NOTICE); \danog\MadelineProto\Logger::log($authorization, \danog\MadelineProto\Logger::NOTICE);
} }
function base64url_decode($data) function base64urlDecode($data)
{ {
return \base64_decode(\str_pad(\strtr($data, '-_', '+/'), \strlen($data) % 4, '=', STR_PAD_RIGHT)); return \base64_decode(\str_pad(\strtr($data, '-_', '+/'), \strlen($data) % 4, '=', STR_PAD_RIGHT));
} }
function rle_decode($string) function rleDecode($string)
{ {
$base256 = ''; $base256 = '';
$last = ''; $last = '';
@ -118,7 +118,7 @@ function recurse($array, $prefix = '')
} }
$offset = 0; $offset = 0;
while (true) { 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 $updates = $MadelineProto->getUpdates(['offset' => $offset, 'limit' => 50, 'timeout' => 0]); // Just like in the bot API, you can specify an offset, a limit and a timeout
foreach ($updates as $update) { 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 $offset = $update['update_id'] + 1; // Just like in the bot API, the offset must be set to the last update_id
switch ($update['update']['_']) { switch ($update['update']['_']) {
@ -131,8 +131,8 @@ while (true) {
if (isset($update['update']['message']['media'])) { if (isset($update['update']['message']['media'])) {
getfiles($pwrtelegram_debug_token, $res); getfiles($pwrtelegram_debug_token, $res);
$bot_api_id = $message = $res['files'][$update['update']['message']['id']]; $bot_api_id = $message = $res['files'][$update['update']['message']['id']];
$bot_api_id_b256 = base64url_decode($bot_api_id); $bot_api_id_b256 = base64urlDecode($bot_api_id);
$bot_api_id_rledecoded = rle_decode($bot_api_id_b256); $bot_api_id_rledecoded = rleDecode($bot_api_id_b256);
$message .= PHP_EOL.PHP_EOL; $message .= PHP_EOL.PHP_EOL;
for ($x = 0; $x < \strlen($bot_api_id_rledecoded) - 3; $x++) { for ($x = 0; $x < \strlen($bot_api_id_rledecoded) - 3; $x++) {
$message .= 'Bytes '.$x.'-'.($x + 4).': '.\danog\PHP\Struct::unpack('<i', \substr($bot_api_id_rledecoded, $x, 4))[0].PHP_EOL; $message .= 'Bytes '.$x.'-'.($x + 4).': '.\danog\PHP\Struct::unpack('<i', \substr($bot_api_id_rledecoded, $x, 4))[0].PHP_EOL;
@ -147,7 +147,7 @@ while (true) {
'Total length (rledecoded): '.\strlen($bot_api_id_rledecoded).PHP_EOL. 'Total length (rledecoded): '.\strlen($bot_api_id_rledecoded).PHP_EOL.
PHP_EOL.'<b>param (value): start-end (length)</b>'.PHP_EOL.PHP_EOL; PHP_EOL.'<b>param (value): start-end (length)</b>'.PHP_EOL.PHP_EOL;
$bot_api = foreach_offset_length($bot_api_id_rledecoded); $bot_api = foreach_offset_length($bot_api_id_rledecoded);
//$mtproto = $MadelineProto->get_download_info($update['update']['message']['media'])['InputFileLocation']; //$mtproto = $MadelineProto->getDownloadInfo($update['update']['message']['media'])['InputFileLocation'];
//unset($mtproto['_']); //unset($mtproto['_']);
$m = []; $m = [];
$mtproto = recurse($update['update']['message']); $mtproto = recurse($update['update']['message']);
@ -198,7 +198,7 @@ while (true) {
try { try {
if (isset($update['update']['message']['media']) && $update['update']['message']['media'] == 'messageMediaPhoto' && $update['update']['message']['media'] == 'messageMediaDocument') { if (isset($update['update']['message']['media']) && $update['update']['message']['media'] == 'messageMediaPhoto' && $update['update']['message']['media'] == 'messageMediaDocument') {
$time = \time(); $time = \time();
// $file = $MadelineProto->download_to_dir($update['update']['message']['media'], '/tmp'); // $file = $MadelineProto->downloadToDir($update['update']['message']['media'], '/tmp');
// $MadelineProto->messages->sendMessage(['peer' => $update['update']['message']['from_id'], 'message' => 'Downloaded to '.$file.' in '.(time() - $time).' seconds', 'reply_to_msg_id' => $update['update']['message']['id'], 'entities' => [['_' => 'messageEntityPre', 'offset' => 0, 'length' => strlen($res), 'language' => 'json']]]); // $MadelineProto->messages->sendMessage(['peer' => $update['update']['message']['from_id'], 'message' => 'Downloaded to '.$file.' in '.(time() - $time).' seconds', 'reply_to_msg_id' => $update['update']['message']['id'], 'entities' => [['_' => 'messageEntityPre', 'offset' => 0, 'length' => strlen($res), 'language' => 'json']]]);
} }
} catch (\danog\MadelineProto\RPCErrorException $e) { } catch (\danog\MadelineProto\RPCErrorException $e) {

View File

@ -41,7 +41,7 @@ class EventHandler extends \danog\MadelineProto\EventHandler
{ {
try { try {
if (isset($update['message']['decrypted_message']['media'])) { if (isset($update['message']['decrypted_message']['media'])) {
\danog\MadelineProto\Logger::log($this->download_to_dir($update, '.')); \danog\MadelineProto\Logger::log($this->downloadToDir($update, '.'));
} }
if (isset($this->sent[$update['message']['chat_id']])) { if (isset($this->sent[$update['message']['chat_id']])) {
return; return;

View File

@ -226,8 +226,8 @@ class API extends InternalDoc
} }
$methods = \get_class_methods($this->API); $methods = \get_class_methods($this->API);
foreach ($methods as $method) { foreach ($methods as $method) {
if ($method == 'method_call_async_read') { if ($method == 'methodCallAsyncRead') {
unset($methods[\array_search('method_call', $methods)]); unset($methods[\array_search('methodCall', $methods)]);
} elseif (\stripos($method, 'async') !== false) { } elseif (\stripos($method, 'async') !== false) {
if (\strpos($method, '_async') !== false) { if (\strpos($method, '_async') !== false) {
unset($methods[\array_search(\str_ireplace('_async', '', $method), $methods)]); unset($methods[\array_search(\str_ireplace('_async', '', $method), $methods)]);
@ -240,8 +240,8 @@ class API extends InternalDoc
foreach ($methods as $method) { foreach ($methods as $method) {
$actual_method = $method; $actual_method = $method;
if ($method == 'method_call_async_read') { if ($method == 'methodCallAsyncRead') {
$method = 'method_call'; $method = 'methodCall';
} elseif (\stripos($method, 'async') !== false) { } elseif (\stripos($method, 'async') !== false) {
if (\strpos($method, '_async') !== false) { if (\strpos($method, '_async') !== false) {
$method = \str_ireplace('_async', '', $method); $method = \str_ireplace('_async', '', $method);
@ -249,7 +249,7 @@ class API extends InternalDoc
$method = \str_ireplace('async', '', $method); $method = \str_ireplace('async', '', $method);
} }
} }
$actual_method = $actual_method === 'get_self_async' ? [$this, 'my_get_self'] : [$this->API, $actual_method]; $actual_method = $actual_method === 'getSelf' ? [$this, 'myGetSelf'] : [$this->API, $actual_method];
$this->methods[\strtolower($method)] = $actual_method; $this->methods[\strtolower($method)] = $actual_method;
if (\strpos($method, '_') !== false) { if (\strpos($method, '_') !== false) {
$this->methods[\strtolower(\str_replace('_', '', $method))] = $actual_method; $this->methods[\strtolower(\str_replace('_', '', $method))] = $actual_method;

View File

@ -143,8 +143,8 @@ class AnnotationsBuilder
$methods = $class->getMethods(\ReflectionMethod::IS_STATIC | \ReflectionMethod::IS_PUBLIC); $methods = $class->getMethods(\ReflectionMethod::IS_STATIC | \ReflectionMethod::IS_PUBLIC);
foreach ($methods as $key => $method) { foreach ($methods as $key => $method) {
$name = $method->getName(); $name = $method->getName();
if ($method == 'method_call_async_read') { if ($method == 'methodCallAsyncRead') {
unset($methods[\array_search('method_call', $methods)]); unset($methods[\array_search('methodCall', $methods)]);
} elseif (\strpos($name, '__') === 0) { } elseif (\strpos($name, '__') === 0) {
unset($methods[$key]); unset($methods[$key]);
} elseif (\stripos($name, 'async') !== false) { } elseif (\stripos($name, 'async') !== false) {
@ -161,8 +161,8 @@ class AnnotationsBuilder
continue; continue;
} }
if ($name == 'method_call_async_read') { if ($name == 'methodCallAsyncRead') {
$name = 'method_call'; $name = 'methodCall';
} elseif (\stripos($name, 'async') !== false) { } elseif (\stripos($name, 'async') !== false) {
if (\strpos($name, '_async') !== false) { if (\strpos($name, '_async') !== false) {
$name = \str_ireplace('_async', '', $name); $name = \str_ireplace('_async', '', $name);

View File

@ -238,8 +238,8 @@ class CombinedAPI
if ($instance->API->authorized !== MTProto::LOGGED_IN) { if ($instance->API->authorized !== MTProto::LOGGED_IN) {
continue; continue;
} }
if (!$instance->API->settings['updates']['handle_updates']) { if (!$instance->API->settings['updates']['handleUpdates']) {
$instance->API->settings['updates']['handle_updates'] = true; $instance->API->settings['updates']['handleUpdates'] = true;
$instance->API->startUpdateSystem(); $instance->API->startUpdateSystem();
} }
$instance->setCallback(function ($update) use ($path) { $instance->setCallback(function ($update) use ($path) {

View File

@ -398,7 +398,7 @@ class Connection extends Session
* // only in outgoing messages * // only in outgoing messages
* 'body' => deserialized body, (optional if container) * 'body' => deserialized body, (optional if container)
* 'serialized_body' => 'serialized body', (optional if container) * 'serialized_body' => 'serialized body', (optional if container)
* 'content_related' => bool, * 'contentRelated' => bool,
* '_' => 'predicate', * '_' => 'predicate',
* 'promise' => deferred promise that gets resolved when a response to the message is received (optional), * 'promise' => deferred promise that gets resolved when a response to the message is received (optional),
* 'send_promise' => deferred promise that gets resolved when the message is sent (optional), * 'send_promise' => deferred promise that gets resolved when the message is sent (optional),
@ -431,10 +431,10 @@ class Connection extends Session
if (!isset($message['serialized_body'])) { if (!isset($message['serialized_body'])) {
$body = \is_object($message['body']) ? yield $message['body'] : $message['body']; $body = \is_object($message['body']) ? yield $message['body'] : $message['body'];
$refresh_next = isset($message['refresh_next']) && $message['refresh_next']; $refreshNext = isset($message['refreshNext']) && $message['refreshNext'];
//$refresh_next = true; //$refreshNext = true;
if ($refresh_next) { if ($refreshNext) {
$this->API->referenceDatabase->refreshNext(true); $this->API->referenceDatabase->refreshNext(true);
} }
@ -443,7 +443,7 @@ class Connection extends Session
} else { } else {
$body = yield $this->API->serializeObject(['type' => $message['_']], $body, $message['_']); $body = yield $this->API->serializeObject(['type' => $message['_']], $body, $message['_']);
} }
if ($refresh_next) { if ($refreshNext) {
$this->API->referenceDatabase->refreshNext(false); $this->API->referenceDatabase->refreshNext(false);
} }
$message['serialized_body'] = $body; $message['serialized_body'] = $body;

View File

@ -433,7 +433,7 @@ class DataCenter
} }
// The following hack looks like the only way to detect connection refused errors with PHP's stream sockets. // The following hack looks like the only way to detect connection refused errors with PHP's stream sockets.
if (\stream_socket_get_name($socket, true) === false) { if (\stream_socket_getName($socket, true) === false) {
\fclose($socket); \fclose($socket);
throw new ConnectException(\sprintf( throw new ConnectException(\sprintf(
"Connection to %s refused%s", "Connection to %s refused%s",

View File

@ -158,7 +158,7 @@ A [Chat](Chat.md), a [User](User.md), an [InputPeer](InputPeer.md), an [InputDia
The following syntax can also be used: The following syntax can also be used:
``` ```
$'.$type.' = -147286699; // Numeric chat id returned by request_secret_chat, can be positive or negative $'.$type.' = -147286699; // Numeric chat id returned by requestSecretChat, can be positive or negative
``` ```
@ -215,7 +215,7 @@ $result = $'.$type.'->click();
* [Updates](Updates.md) - If the button is a keyboardButton, the message will be sent to the chat, in reply to the message with the keyboard * [Updates](Updates.md) - If the button is a keyboardButton, the message will be sent to the chat, in reply to the message with the keyboard
* [messages_BotCallbackAnswer](messages_BotCallbackAnswer.md) - If the button is a keyboardButtonCallback or a keyboardButtonGame the button will be pressed and the result will be returned * [messages.BotCallbackAnswer](messages.BotCallbackAnswer.md) - If the button is a keyboardButtonCallback or a keyboardButtonGame the button will be pressed and the result will be returned
* `false` - If the button is an unsupported button, like keyboardButtonRequestPhone, keyboardButtonRequestGeoLocation, keyboardButtonSwitchInlinekeyboardButtonBuy; you will have to parse data from these buttons manually * `false` - If the button is an unsupported button, like keyboardButtonRequestPhone, keyboardButtonRequestGeoLocation, keyboardButtonSwitchInlinekeyboardButtonBuy; you will have to parse data from these buttons manually

View File

@ -233,11 +233,11 @@ You can provide bot API reply_markup objects here.
} }
if ($hasentities) { if ($hasentities) {
$example .= ' $example .= '
## Usage of parse_mode: ## Usage of parseMode:
Set parse_mode to html to enable HTML parsing of the message. Set parseMode to html to enable HTML parsing of the message.
Set parse_mode to Markdown to enable markown AND html parsing of the message. Set parseMode to Markdown to enable markown AND html parsing of the message.
The following tags are currently supported: The following tags are currently supported:

View File

@ -53,7 +53,7 @@ trait Methods
$this->human_docs_methods = []; $this->human_docs_methods = [];
$this->logger->logger('Generating methods documentation...', \danog\MadelineProto\Logger::NOTICE); $this->logger->logger('Generating methods documentation...', \danog\MadelineProto\Logger::NOTICE);
foreach ($this->methods->by_id as $id => $data) { foreach ($this->methods->by_id as $id => $data) {
$method = \str_replace('.', '_', $data['method']); $method = $data['method'];
$php_method = \str_replace('.', '->', $data['method']); $php_method = \str_replace('.', '->', $data['method']);
$type = \str_replace(['.', '<', '>'], ['_', '_of_', ''], $data['type']); $type = \str_replace(['.', '<', '>'], ['_', '_of_', ''], $data['type']);
$php_type = \preg_replace('/.*_of_/', '', $type); $php_type = \preg_replace('/.*_of_/', '', $type);
@ -77,7 +77,7 @@ trait Methods
} }
$type_or_subtype = isset($param['subtype']) ? 'subtype' : 'type'; $type_or_subtype = isset($param['subtype']) ? 'subtype' : 'type';
$type_or_bare_type = \ctype_upper($this->end(\explode('.', $param[$type_or_subtype]))[0]) || \in_array($param[$type_or_subtype], ['!X', 'X', 'bytes', 'true', 'false', 'double', 'string', 'Bool', 'int', 'long', 'int128', 'int256', 'int512', 'int53']) ? 'types' : 'constructors'; $type_or_bare_type = \ctype_upper($this->end(\explode('.', $param[$type_or_subtype]))[0]) || \in_array($param[$type_or_subtype], ['!X', 'X', 'bytes', 'true', 'false', 'double', 'string', 'Bool', 'int', 'long', 'int128', 'int256', 'int512', 'int53']) ? 'types' : 'constructors';
$param[$type_or_subtype] = \str_replace(['.', 'true', 'false'], ['_', 'Bool', 'Bool'], $param[$type_or_subtype]); $param[$type_or_subtype] = \str_replace(['true', 'false'], ['Bool', 'Bool'], $param[$type_or_subtype]);
$param[$type_or_subtype] = '['.$this->escape($param[$type_or_subtype]).'](../'.$type_or_bare_type.'/'.$param[$type_or_subtype].'.md)'; $param[$type_or_subtype] = '['.$this->escape($param[$type_or_subtype]).'](../'.$type_or_bare_type.'/'.$param[$type_or_subtype].'.md)';
$params .= "'".$param['name']."' => ".(isset($param['subtype']) ? '\\['.$param[$type_or_subtype].'\\]' : $param[$type_or_subtype]).', '; $params .= "'".$param['name']."' => ".(isset($param['subtype']) ? '\\['.$param[$type_or_subtype].'\\]' : $param[$type_or_subtype]).', ';
} }
@ -134,7 +134,7 @@ trait Methods
$param['type'] = 'Vector t'; $param['type'] = 'Vector t';
$param['subtype'] = 'int'; $param['subtype'] = 'int';
} }
$ptype = \str_replace('.', '_', $param[$type_or_subtype = isset($param['subtype']) ? 'subtype' : 'type']); $ptype = $param[$type_or_subtype = isset($param['subtype']) ? 'subtype' : 'type'];
switch ($ptype) { switch ($ptype) {
case 'true': case 'true':
case 'false': case 'false':
@ -194,9 +194,9 @@ trait Methods
$table .= '|parse\\_mode| [string](../types/string.md) | Whether to parse HTML or Markdown markup in the message| Optional | $table .= '|parse\\_mode| [string](../types/string.md) | Whether to parse HTML or Markdown markup in the message| Optional |
'; ';
$params .= "'parse_mode' => 'string', "; $params .= "'parse_mode' => 'string', ";
$lua_params .= "parse_mode='string', "; $lua_params .= "parseMode='string', ";
$json_params .= '"parse_mode": "string"'; $json_params .= '"parseMode": "string"';
$pwr_params = "parse_mode - string\n"; $pwr_params = "parseMode - string\n";
} }
} }
$description = isset($this->td_descriptions['methods'][$data['method']]) ? $this->td_descriptions['methods'][$data['method']]['description'] : $data['method'].' parameters, return type and example'; $description = isset($this->td_descriptions['methods'][$data['method']]) ? $this->td_descriptions['methods'][$data['method']]['description'] : $data['method'].' parameters, return type and example';
@ -275,11 +275,11 @@ If the length of the provided message is bigger than 4096, the message will be s
} }
if ($hasentities) { if ($hasentities) {
$example .= ' $example .= '
## Usage of parse_mode: ## Usage of parseMode:
Set parse_mode to html to enable HTML parsing of the message. Set parseMode to html to enable HTML parsing of the message.
Set parse_mode to Markdown to enable markown AND html parsing of the message. Set parseMode to Markdown to enable markown AND html parsing of the message.
The following tags are currently supported: The following tags are currently supported:
@ -351,29 +351,29 @@ image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
$MadelineProto->[logout](https://docs.madelineproto.xyz/logout.html)(); $MadelineProto->[logout](https://docs.madelineproto.xyz/logout.html)();
$MadelineProto->[phone_login](https://docs.madelineproto.xyz/phone_login.html)($number); $MadelineProto->[phoneLogin](https://docs.madelineproto.xyz/phoneLogin.html)($number);
$MadelineProto->[complete_phone_login](https://docs.madelineproto.xyz/complete_phone_login.html)($code); $MadelineProto->[completePhoneLogin](https://docs.madelineproto.xyz/completePhoneLogin.html)($code);
$MadelineProto->[complete_2FA_login](https://docs.madelineproto.xyz/complete_2FA_login.html)($password); $MadelineProto->[complete_2FA_login](https://docs.madelineproto.xyz/complete_2FA_login.html)($password);
$MadelineProto->[bot_login](https://docs.madelineproto.xyz/bot_login.html)($token); $MadelineProto->[botLogin](https://docs.madelineproto.xyz/botLogin.html)($token);
$MadelineProto->[get_dialogs](https://docs.madelineproto.xyz/get_dialogs.html)(); $MadelineProto->[getDialogs](https://docs.madelineproto.xyz/getDialogs.html)();
$MadelineProto->[get_pwr_chat](https://docs.madelineproto.xyz/get_pwr_chat.html)($id); $MadelineProto->[getPwrChat](https://docs.madelineproto.xyz/getPwrChat.html)($id);
$MadelineProto->[get_info](https://docs.madelineproto.xyz/get_info.html)($id); $MadelineProto->[getInfo](https://docs.madelineproto.xyz/getInfo.html)($id);
$MadelineProto->[get_full_info](https://docs.madelineproto.xyz/get_full_info.html)($id); $MadelineProto->[getFullInfo](https://docs.madelineproto.xyz/getFullInfo.html)($id);
$MadelineProto->[get_self](https://docs.madelineproto.xyz/get_self.html)(); $MadelineProto->[getSelf](https://docs.madelineproto.xyz/getSelf.html)();
$MadelineProto->[request_call](https://docs.madelineproto.xyz/request_call.html)($id); $MadelineProto->[requestCall](https://docs.madelineproto.xyz/requestCall.html)($id);
$MadelineProto->[request_secret_chat](https://docs.madelineproto.xyz/request_secret_chat.html)($id); $MadelineProto->[requestSecretChat](https://docs.madelineproto.xyz/requestSecretChat.html)($id);
'.\implode('', $this->docs_methods)); '.\implode('', $this->docs_methods));
@ -395,13 +395,13 @@ image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
* [Get all chats, broadcast a message to all chats](https://docs.madelineproto.xyz/docs/DIALOGS.html) * [Get all chats, broadcast a message to all chats](https://docs.madelineproto.xyz/docs/DIALOGS.html)
* [Get the full participant list of a channel/group/supergroup](https://docs.madelineproto.xyz/get_pwr_chat.html) * [Get the full participant list of a channel/group/supergroup](https://docs.madelineproto.xyz/getPwrChat.html)
* [Get full info about a user/chat/supergroup/channel](https://docs.madelineproto.xyz/get_full_info.html) * [Get full info about a user/chat/supergroup/channel](https://docs.madelineproto.xyz/getFullInfo.html)
* [Get info about a user/chat/supergroup/channel](https://docs.madelineproto.xyz/get_info.html) * [Get info about a user/chat/supergroup/channel](https://docs.madelineproto.xyz/getInfo.html)
* [Get info about the currently logged-in user](https://docs.madelineproto.xyz/get_self.html) * [Get info about the currently logged-in user](https://docs.madelineproto.xyz/getSelf.html)
* [Upload or download files up to 1.5 GB](https://docs.madelineproto.xyz/docs/FILES.html) * [Upload or download files up to 1.5 GB](https://docs.madelineproto.xyz/docs/FILES.html)

View File

@ -10,13 +10,13 @@ namespace danog\MadelineProto;
interface auth interface auth
{ {
/** /**
* Use phone_login instead. * Use phoneLogin instead.
* *
* Parameters: * Parameters:
* * `string` **phone_number** - Use phone_login instead * * `string` **phone_number** - Use phoneLogin instead
* * `int` **api_id** - Use phone_login instead * * `int` **api_id** - Use phoneLogin instead
* * `string` **api_hash** - Use phone_login instead * * `string` **api_hash** - Use phoneLogin instead
* * `CodeSettings` **settings** - You cannot use this method directly, use the phone_login method instead (see https://docs.madelineproto.xyz for more info) * * `CodeSettings` **settings** - You cannot use this method directly, use the phoneLogin method instead (see https://docs.madelineproto.xyz for more info)
* *
* @param array $params Parameters * @param array $params Parameters
* *
@ -25,13 +25,13 @@ interface auth
public function sendCode($params); public function sendCode($params);
/** /**
* You cannot use this method directly, use the complete_signup method instead (see https://docs.madelineproto.xyz for more info). * You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info).
* *
* Parameters: * Parameters:
* * `string` **phone_number** - You cannot use this method directly, use the complete_signup method instead (see https://docs.madelineproto.xyz for more info) * * `string` **phone_number** - You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info)
* * `string` **phone_code_hash** - You cannot use this method directly, use the complete_signup method instead (see https://docs.madelineproto.xyz for more info) * * `string` **phone_code_hash** - You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info)
* * `string` **first_name** - You cannot use this method directly, use the complete_signup method instead (see https://docs.madelineproto.xyz for more info) * * `string` **first_name** - You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info)
* * `string` **last_name** - You cannot use this method directly, use the complete_signup method instead (see https://docs.madelineproto.xyz for more info) * * `string` **last_name** - You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info)
* *
* @param array $params Parameters * @param array $params Parameters
* *
@ -40,12 +40,12 @@ interface auth
public function signUp($params); public function signUp($params);
/** /**
* You cannot use this method directly, use the complete_phone_login method instead (see https://docs.madelineproto.xyz for more info). * You cannot use this method directly, use the completePhoneLogin method instead (see https://docs.madelineproto.xyz for more info).
* *
* Parameters: * Parameters:
* * `string` **phone_number** - You cannot use this method directly, use the complete_phone_login method instead (see https://docs.madelineproto.xyz for more info) * * `string` **phone_number** - You cannot use this method directly, use the completePhoneLogin method instead (see https://docs.madelineproto.xyz for more info)
* * `string` **phone_code_hash** - You cannot use this method directly, use the complete_phone_login method instead (see https://docs.madelineproto.xyz for more info) * * `string` **phone_code_hash** - You cannot use this method directly, use the completePhoneLogin method instead (see https://docs.madelineproto.xyz for more info)
* * `string` **phone_code** - You cannot use this method directly, use the complete_phone_login method instead (see https://docs.madelineproto.xyz for more info) * * `string` **phone_code** - You cannot use this method directly, use the completePhoneLogin method instead (see https://docs.madelineproto.xyz for more info)
* *
* @param array $params Parameters * @param array $params Parameters
* *
@ -68,10 +68,10 @@ interface auth
public function resetAuthorizations(); public function resetAuthorizations();
/** /**
* You cannot use this method directly, use $MadelineProto->export_authorization() instead, see https://docs.madelineproto.xyz/docs/LOGIN.html. * You cannot use this method directly, use $MadelineProto->exportAuthorization() instead, see https://docs.madelineproto.xyz/docs/LOGIN.html.
* *
* Parameters: * Parameters:
* * `int` **dc_id** - You cannot use this method directly, use $MadelineProto->export_authorization() instead, see https://docs.madelineproto.xyz/docs/LOGIN.html * * `int` **dc_id** - You cannot use this method directly, use $MadelineProto->exportAuthorization() instead, see https://docs.madelineproto.xyz/docs/LOGIN.html
* *
* @param array $params Parameters * @param array $params Parameters
* *
@ -80,11 +80,11 @@ interface auth
public function exportAuthorization($params); public function exportAuthorization($params);
/** /**
* You cannot use this method directly, use $MadelineProto->import_authorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html. * You cannot use this method directly, use $MadelineProto->importAuthorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html.
* *
* Parameters: * Parameters:
* * `int` **id** - You cannot use this method directly, use $MadelineProto->import_authorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html * * `int` **id** - You cannot use this method directly, use $MadelineProto->importAuthorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html
* * `bytes` **bytes** - You cannot use this method directly, use $MadelineProto->import_authorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html * * `bytes` **bytes** - You cannot use this method directly, use $MadelineProto->importAuthorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html
* *
* @param array $params Parameters * @param array $params Parameters
* *
@ -108,12 +108,12 @@ interface auth
public function bindTempAuthKey($params); public function bindTempAuthKey($params);
/** /**
* You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info). * You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info).
* *
* Parameters: * Parameters:
* * `int` **api_id** - You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info) * * `int` **api_id** - You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)
* * `string` **api_hash** - You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info) * * `string` **api_hash** - You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)
* * `string` **bot_auth_token** - You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info) * * `string` **bot_auth_token** - You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)
* *
* @param array $params Parameters * @param array $params Parameters
* *
@ -952,10 +952,10 @@ interface users
public function getUsers($params); public function getUsers($params);
/** /**
* You cannot use this method directly, use the get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info). * You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info).
* *
* Parameters: * Parameters:
* * `InputUser` **id** - You cannot use this method directly, use the get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info) * * `InputUser` **id** - You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)
* *
* @param array $params Parameters * @param array $params Parameters
* *
@ -1097,10 +1097,10 @@ interface contacts
public function search($params); public function search($params);
/** /**
* You cannot use this method directly, use the resolve_username, get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info). * You cannot use this method directly, use the resolveUsername, getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info).
* *
* Parameters: * Parameters:
* * `string` **username** - You cannot use this method directly, use the resolve_username, get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info) * * `string` **username** - You cannot use this method directly, use the resolveUsername, getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)
* *
* @param array $params Parameters * @param array $params Parameters
* *
@ -1225,7 +1225,7 @@ interface messages
public function getMessages($params); public function getMessages($params);
/** /**
* Gets list of chats: you should use $MadelineProto->get_dialogs() instead: https://docs.madelineproto.xyz/docs/DIALOGS.html. * Gets list of chats: you should use $MadelineProto->getDialogs() instead: https://docs.madelineproto.xyz/docs/DIALOGS.html.
* *
* Parameters: * Parameters:
* * `boolean` **exclude_pinned** - Optional: Do not fetch pinned chats * * `boolean` **exclude_pinned** - Optional: Do not fetch pinned chats
@ -1462,10 +1462,10 @@ interface messages
public function getChats($params); public function getChats($params);
/** /**
* You cannot use this method directly, use the get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info). * You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info).
* *
* Parameters: * Parameters:
* * `InputPeer` **chat_id** - You cannot use this method directly, use the get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info) * * `InputPeer` **chat_id** - You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)
* *
* @param array $params Parameters * @param array $params Parameters
* *
@ -1540,11 +1540,11 @@ interface messages
public function createChat($params); public function createChat($params);
/** /**
* You cannot use this method directly, instead use $MadelineProto->get_dh_config();. * You cannot use this method directly, instead use $MadelineProto->getDhConfig();.
* *
* Parameters: * Parameters:
* * `int` **version** - You cannot use this method directly, instead use $MadelineProto->get_dh_config(); * * `int` **version** - You cannot use this method directly, instead use $MadelineProto->getDhConfig();
* * `int` **random_length** - You cannot use this method directly, instead use $MadelineProto->get_dh_config(); * * `int` **random_length** - You cannot use this method directly, instead use $MadelineProto->getDhConfig();
* *
* @param array $params Parameters * @param array $params Parameters
* *
@ -2896,12 +2896,12 @@ interface photos
interface upload interface upload
{ {
/** /**
* You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info. * You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info.
* *
* Parameters: * Parameters:
* * `long` **file_id** - You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info * * `long` **file_id** - You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info
* * `int` **file_part** - You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info * * `int` **file_part** - You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info
* * `bytes` **bytes** - You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info * * `bytes` **bytes** - You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info
* *
* @param array $params Parameters * @param array $params Parameters
* *
@ -2910,13 +2910,13 @@ interface upload
public function saveFilePart($params); public function saveFilePart($params);
/** /**
* You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info. * You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info.
* *
* Parameters: * Parameters:
* * `boolean` **precise** - Optional: You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info * * `boolean` **precise** - Optional: You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info
* * `InputFileLocation` **location** - You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info * * `InputFileLocation` **location** - You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info
* * `int` **offset** - You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info * * `int` **offset** - You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info
* * `int` **limit** - You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info * * `int` **limit** - You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info
* *
* @param array $params Parameters * @param array $params Parameters
* *
@ -2925,13 +2925,13 @@ interface upload
public function getFile($params); public function getFile($params);
/** /**
* You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info. * You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info.
* *
* Parameters: * Parameters:
* * `long` **file_id** - You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info * * `long` **file_id** - You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info
* * `int` **file_part** - You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info * * `int` **file_part** - You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info
* * `int` **file_total_parts** - You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info * * `int` **file_total_parts** - You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info
* * `bytes` **bytes** - You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info * * `bytes` **bytes** - You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info
* *
* @param array $params Parameters * @param array $params Parameters
* *
@ -2954,12 +2954,12 @@ interface upload
public function getWebFile($params); public function getWebFile($params);
/** /**
* You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info. * You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info.
* *
* Parameters: * Parameters:
* * `bytes` **file_token** - You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info * * `bytes` **file_token** - You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info
* * `int` **offset** - You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info * * `int` **offset** - You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info
* * `int` **limit** - You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info * * `int` **limit** - You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info
* *
* @param array $params Parameters * @param array $params Parameters
* *
@ -2968,11 +2968,11 @@ interface upload
public function getCdnFile($params); public function getCdnFile($params);
/** /**
* You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info. * You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info.
* *
* Parameters: * Parameters:
* * `bytes` **file_token** - You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info * * `bytes` **file_token** - You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info
* * `bytes` **request_token** - You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info * * `bytes` **request_token** - You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info
* *
* @param array $params Parameters * @param array $params Parameters
* *
@ -2981,11 +2981,11 @@ interface upload
public function reuploadCdnFile($params); public function reuploadCdnFile($params);
/** /**
* You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info. * You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info.
* *
* Parameters: * Parameters:
* * `bytes` **file_token** - You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info * * `bytes` **file_token** - You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info
* * `int` **offset** - You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info * * `int` **offset** - You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info
* *
* @param array $params Parameters * @param array $params Parameters
* *
@ -3265,7 +3265,7 @@ interface channels
public function getMessages($params); public function getMessages($params);
/** /**
* Get channel/supergroup participants (you should use `$MadelineProto->get_pwr_chat($id)` instead). * Get channel/supergroup participants (you should use `$MadelineProto->getPwrChat($id)` instead).
* *
* Parameters: * Parameters:
* * `InputChannel` **channel** - The channel * * `InputChannel` **channel** - The channel
@ -3306,10 +3306,10 @@ interface channels
public function getChannels($params); public function getChannels($params);
/** /**
* You cannot use this method directly, use the get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info). * You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info).
* *
* Parameters: * Parameters:
* * `InputChannel` **channel** - You cannot use this method directly, use the get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info) * * `InputChannel` **channel** - You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)
* *
* @param array $params Parameters * @param array $params Parameters
* *
@ -4303,7 +4303,7 @@ class InternalDoc extends APIFactory
return $this->__call(__FUNCTION__, [$id, $extra]); return $this->__call(__FUNCTION__, [$id, $extra]);
} }
/** /**
* Synchronous wrapper for method_call. * Synchronous wrapper for methodCall.
* *
* @param string $method Method name * @param string $method Method name
* @param array $args Arguments * @param array $args Arguments

View File

@ -40,7 +40,7 @@ class Lang
'socket_status_5' => 'AVVIATO', 'socket_status_5' => 'AVVIATO',
'api_not_set' => 'Devi specificare una chiave ed un ID API, ottienili su https://my.telegram.org', 'api_not_set' => 'Devi specificare una chiave ed un ID API, ottienili su https://my.telegram.org',
'session_corrupted' => 'La sessione si è corrotta!', 'session_corrupted' => 'La sessione si è corrotta!',
'reset_session_seqno' => 'Resettando ID sessione e numero di sequenza sul DC %s...', 'resetSession_seqno' => 'Resettando ID sessione e numero di sequenza sul DC %s...',
'gen_perm_auth_key' => 'Generando chiave di autorizzazione permanente per il DC %s...', 'gen_perm_auth_key' => 'Generando chiave di autorizzazione permanente per il DC %s...',
'gen_temp_auth_key' => 'Generando chiave di autorizzazione temporanea per il DC %s...', 'gen_temp_auth_key' => 'Generando chiave di autorizzazione temporanea per il DC %s...',
'copy_auth_dcs' => 'Copiando autorizzazione dal DC %s al DC %s...', 'copy_auth_dcs' => 'Copiando autorizzazione dal DC %s al DC %s...',
@ -81,21 +81,21 @@ class Lang
'madelineproto_ready' => 'MadelineProto è pronto!', 'madelineproto_ready' => 'MadelineProto è pronto!',
'logout_error' => 'C\'è stato un errore durante il logout!', 'logout_error' => 'C\'è stato un errore durante il logout!',
'logout_ok' => 'Il logout è stato eseguito correttamente!', 'logout_ok' => 'Il logout è stato eseguito correttamente!',
'already_logged_in' => 'Questa istanza di MadelineProto è già loggata, prima faccio il logout...', 'already_loggedIn' => 'Questa istanza di MadelineProto è già loggata, prima faccio il logout...',
'login_ok' => 'Il login è stato eseguito correttamente!', 'login_ok' => 'Il login è stato eseguito correttamente!',
'login_user' => 'Sto eseguendo il login come utente normale...', 'login_user' => 'Sto eseguendo il login come utente normale...',
'login_bot' => 'Sto eseguendo il login come bot...', 'login_bot' => 'Sto eseguendo il login come bot...',
'login_code_sending' => 'Sto inviando il codice...', 'login_code_sending' => 'Sto inviando il codice...',
'login_code_sent' => 'Il codice è stato inviato correttamente! Una volta ricevuto il codice dovrai usare la funzione complete_phone_login.', 'login_code_sent' => 'Il codice è stato inviato correttamente! Una volta ricevuto il codice dovrai usare la funzione completePhoneLogin.',
'login_code_uncalled' => 'Non sto aspettando il codice! Usa la funzione phone_login.', 'login_code_uncalled' => 'Non sto aspettando il codice! Usa la funzione phoneLogin.',
'login_2fa_enabled' => 'L\'autenticazione a due fattori è abilitata, dovrai chiamare il metodo complete_2fa_login...', 'login_2fa_enabled' => 'L\'autenticazione a due fattori è abilitata, dovrai chiamare il metodo complete_2fa_login...',
'login_need_signup' => 'Questo numero non è registrato su telegram, dovrai chiamare la funzione complete_signup...', 'login_need_signup' => 'Questo numero non è registrato su telegram, dovrai chiamare la funzione completeSignup...',
'login_auth_key' => 'Sto facendo il login con la chiave di autorizzazione...', 'login_auth_key' => 'Sto facendo il login con la chiave di autorizzazione...',
'not_logged_in' => 'Non ho ancora fatto il login!', 'not_loggedIn' => 'Non ho ancora fatto il login!',
'signup_uncalled' => 'Chiama prima le funzioni phone_login e complete_phone_login.', 'signup_uncalled' => 'Chiama prima le funzioni phoneLogin e completePhoneLogin.',
'signing_up' => 'Mi sto registrando su telegram come utente normale...', 'signing_up' => 'Mi sto registrando su telegram come utente normale...',
'signup_ok' => 'Mi sono registrato su Telegram!', 'signup_ok' => 'Mi sono registrato su Telegram!',
'2fa_uncalled' => 'Non sto aspettando la password, chiama prima le funzioni phone_login e complete_phone_login!', '2fa_uncalled' => 'Non sto aspettando la password, chiama prima le funzioni phoneLogin e completePhoneLogin!',
'getting_dialogs' => 'Sto ottenendo la lista delle chat...', 'getting_dialogs' => 'Sto ottenendo la lista delle chat...',
'libtgvoip_required' => 'È necessario installare l\'estensione php-libtgvoip per accettare e gestire chiamate vocali, vistate https://docs.madelineproto.xyz per più info.', 'libtgvoip_required' => 'È necessario installare l\'estensione php-libtgvoip per accettare e gestire chiamate vocali, vistate https://docs.madelineproto.xyz per più info.',
'peer_not_in_db' => 'Questo utente/gruppo/canale non è presente nel database interno MadelineProto', 'peer_not_in_db' => 'Questo utente/gruppo/canale non è presente nel database interno MadelineProto',
@ -187,7 +187,7 @@ class Lang
'socket_status_5' => 'WORKING', 'socket_status_5' => 'WORKING',
'api_not_set' => 'You must provide an api key and an api id, get your own @ my.telegram.org', 'api_not_set' => 'You must provide an api key and an api id, get your own @ my.telegram.org',
'session_corrupted' => 'The session is corrupted!', 'session_corrupted' => 'The session is corrupted!',
'reset_session_seqno' => 'Resetting session id and seq_no in DC %s...', 'resetSession_seqno' => 'Resetting session id and seq_no in DC %s...',
'gen_perm_auth_key' => 'Generating permanent authorization key for DC %s...', 'gen_perm_auth_key' => 'Generating permanent authorization key for DC %s...',
'gen_temp_auth_key' => 'Generating temporary authorization key for DC %s...', 'gen_temp_auth_key' => 'Generating temporary authorization key for DC %s...',
'copy_auth_dcs' => 'Copying authorization from DC %s to DC %s...', 'copy_auth_dcs' => 'Copying authorization from DC %s to DC %s...',
@ -228,21 +228,21 @@ class Lang
'madelineproto_ready' => 'MadelineProto is ready!', 'madelineproto_ready' => 'MadelineProto is ready!',
'logout_error' => 'An error occurred while logging out!', 'logout_error' => 'An error occurred while logging out!',
'logout_ok' => 'Logged out successfully!', 'logout_ok' => 'Logged out successfully!',
'already_logged_in' => 'This instance of MadelineProto is already logged in. Logging out first...', 'already_loggedIn' => 'This instance of MadelineProto is already logged in. Logging out first...',
'login_ok' => 'Logged in successfully!', 'login_ok' => 'Logged in successfully!',
'login_user' => 'Logging in as a normal user...', 'login_user' => 'Logging in as a normal user...',
'login_bot' => 'Logging in as a bot...', 'login_bot' => 'Logging in as a bot...',
'login_code_sending' => 'Sending code...', 'login_code_sending' => 'Sending code...',
'login_code_sent' => 'Code sent successfully! Once you receive the code you should use the complete_phone_login function.', 'login_code_sent' => 'Code sent successfully! Once you receive the code you should use the completePhoneLogin function.',
'login_code_uncalled' => 'I\'m not waiting for the code! Please call the phone_login method first', 'login_code_uncalled' => 'I\'m not waiting for the code! Please call the phoneLogin method first',
'login_2fa_enabled' => '2FA enabled, you will have to call the complete_2fa_login function...', 'login_2fa_enabled' => '2FA enabled, you will have to call the complete_2fa_login function...',
'login_need_signup' => 'An account has not been created for this number, you will have to call the complete_signup function...', 'login_need_signup' => 'An account has not been created for this number, you will have to call the completeSignup function...',
'login_auth_key' => 'Logging in using auth key...', 'login_auth_key' => 'Logging in using auth key...',
'not_logged_in' => 'I\'m not logged in!', 'not_loggedIn' => 'I\'m not logged in!',
'signup_uncalled' => 'I\'m not waiting to signup! Please call the phone_login and the complete_phone_login methods first!', 'signup_uncalled' => 'I\'m not waiting to signup! Please call the phoneLogin and the completePhoneLogin methods first!',
'signing_up' => 'Signing up as a normal user...', 'signing_up' => 'Signing up as a normal user...',
'signup_ok' => 'Signed up in successfully!', 'signup_ok' => 'Signed up in successfully!',
'2fa_uncalled' => 'I\'m not waiting for the password! Please call the phone_login and the complete_phone_login methods first!', '2fa_uncalled' => 'I\'m not waiting for the password! Please call the phoneLogin and the completePhoneLogin methods first!',
'getting_dialogs' => 'Getting dialogs...', 'getting_dialogs' => 'Getting dialogs...',
'libtgvoip_required' => 'The php-libtgvoip extension is required to accept and manage calls. See daniil.it/MadelineProto for more info.', 'libtgvoip_required' => 'The php-libtgvoip extension is required to accept and manage calls. See daniil.it/MadelineProto for more info.',
'peer_not_in_db' => 'This peer is not present in the internal peer database', 'peer_not_in_db' => 'This peer is not present in the internal peer database',
@ -355,41 +355,41 @@ class Lang
'method_invokeWithoutUpdates_param_query_type_!X' => 'The query', 'method_invokeWithoutUpdates_param_query_type_!X' => 'The query',
'method_auth.checkPhone' => 'Check if this phone number is registered on telegram', 'method_auth.checkPhone' => 'Check if this phone number is registered on telegram',
'method_auth.checkPhone_param_phone_number_type_string' => 'The phone number to check', 'method_auth.checkPhone_param_phone_number_type_string' => 'The phone number to check',
'method_auth.sendCode' => 'Use phone_login instead', 'method_auth.sendCode' => 'Use phoneLogin instead',
'method_auth.sendCode_param_allow_flashcall_type_true' => 'Use phone_login instead', 'method_auth.sendCode_param_allow_flashcall_type_true' => 'Use phoneLogin instead',
'method_auth.sendCode_param_phone_number_type_string' => 'Use phone_login instead', 'method_auth.sendCode_param_phone_number_type_string' => 'Use phoneLogin instead',
'method_auth.sendCode_param_current_number_type_Bool' => 'Use phone_login instead', 'method_auth.sendCode_param_current_number_type_Bool' => 'Use phoneLogin instead',
'method_auth.sendCode_param_api_id_type_int' => 'Use phone_login instead', 'method_auth.sendCode_param_api_id_type_int' => 'Use phoneLogin instead',
'method_auth.sendCode_param_api_hash_type_string' => 'Use phone_login instead', 'method_auth.sendCode_param_api_hash_type_string' => 'Use phoneLogin instead',
'method_auth.signUp' => 'You cannot use this method directly, use the complete_signup method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signUp' => 'You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.signUp_param_phone_number_type_string' => 'You cannot use this method directly, use the complete_signup method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signUp_param_phone_number_type_string' => 'You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.signUp_param_phone_code_hash_type_string' => 'You cannot use this method directly, use the complete_signup method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signUp_param_phone_code_hash_type_string' => 'You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.signUp_param_phone_code_type_string' => 'You cannot use this method directly, use the complete_signup method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signUp_param_phone_code_type_string' => 'You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.signUp_param_first_name_type_string' => 'You cannot use this method directly, use the complete_signup method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signUp_param_first_name_type_string' => 'You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.signUp_param_last_name_type_string' => 'You cannot use this method directly, use the complete_signup method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signUp_param_last_name_type_string' => 'You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.signIn' => 'You cannot use this method directly, use the complete_phone_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signIn' => 'You cannot use this method directly, use the completePhoneLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.signIn_param_phone_number_type_string' => 'You cannot use this method directly, use the complete_phone_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signIn_param_phone_number_type_string' => 'You cannot use this method directly, use the completePhoneLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.signIn_param_phone_code_hash_type_string' => 'You cannot use this method directly, use the complete_phone_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signIn_param_phone_code_hash_type_string' => 'You cannot use this method directly, use the completePhoneLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.signIn_param_phone_code_type_string' => 'You cannot use this method directly, use the complete_phone_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signIn_param_phone_code_type_string' => 'You cannot use this method directly, use the completePhoneLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.logOut' => 'You cannot use this method directly, use the logout method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.logOut' => 'You cannot use this method directly, use the logout method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.resetAuthorizations' => 'Delete all logged-in sessions.', 'method_auth.resetAuthorizations' => 'Delete all logged-in sessions.',
'method_auth.sendInvites' => 'Invite friends to telegram!', 'method_auth.sendInvites' => 'Invite friends to telegram!',
'method_auth.sendInvites_param_phone_numbers_type_Vector t' => 'Phone numbers to invite', 'method_auth.sendInvites_param_phone_numbers_type_Vector t' => 'Phone numbers to invite',
'method_auth.sendInvites_param_message_type_string' => 'The message to send', 'method_auth.sendInvites_param_message_type_string' => 'The message to send',
'method_auth.exportAuthorization' => 'You cannot use this method directly, use $MadelineProto->export_authorization() instead, see https://docs.madelineproto.xyz/docs/LOGIN.html', 'method_auth.exportAuthorization' => 'You cannot use this method directly, use $MadelineProto->exportAuthorization() instead, see https://docs.madelineproto.xyz/docs/LOGIN.html',
'method_auth.exportAuthorization_param_dc_id_type_int' => 'You cannot use this method directly, use $MadelineProto->export_authorization() instead, see https://docs.madelineproto.xyz/docs/LOGIN.html', 'method_auth.exportAuthorization_param_dc_id_type_int' => 'You cannot use this method directly, use $MadelineProto->exportAuthorization() instead, see https://docs.madelineproto.xyz/docs/LOGIN.html',
'method_auth.importAuthorization' => 'You cannot use this method directly, use $MadelineProto->import_authorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html', 'method_auth.importAuthorization' => 'You cannot use this method directly, use $MadelineProto->importAuthorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html',
'method_auth.importAuthorization_param_id_type_int' => 'You cannot use this method directly, use $MadelineProto->import_authorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html', 'method_auth.importAuthorization_param_id_type_int' => 'You cannot use this method directly, use $MadelineProto->importAuthorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html',
'method_auth.importAuthorization_param_bytes_type_bytes' => 'You cannot use this method directly, use $MadelineProto->import_authorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html', 'method_auth.importAuthorization_param_bytes_type_bytes' => 'You cannot use this method directly, use $MadelineProto->importAuthorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html',
'method_auth.bindTempAuthKey' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info', 'method_auth.bindTempAuthKey' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info',
'method_auth.bindTempAuthKey_param_perm_auth_key_id_type_long' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info', 'method_auth.bindTempAuthKey_param_perm_auth_key_id_type_long' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info',
'method_auth.bindTempAuthKey_param_nonce_type_long' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info', 'method_auth.bindTempAuthKey_param_nonce_type_long' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info',
'method_auth.bindTempAuthKey_param_expires_at_type_int' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info', 'method_auth.bindTempAuthKey_param_expires_at_type_int' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info',
'method_auth.bindTempAuthKey_param_encrypted_message_type_bytes' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info', 'method_auth.bindTempAuthKey_param_encrypted_message_type_bytes' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info',
'method_auth.importBotAuthorization' => 'You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.importBotAuthorization' => 'You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.importBotAuthorization_param_api_id_type_int' => 'You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.importBotAuthorization_param_api_id_type_int' => 'You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.importBotAuthorization_param_api_hash_type_string' => 'You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.importBotAuthorization_param_api_hash_type_string' => 'You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.importBotAuthorization_param_bot_auth_token_type_string' => 'You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.importBotAuthorization_param_bot_auth_token_type_string' => 'You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.checkPassword' => 'You cannot use this method directly, use the complete_2fa_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.checkPassword' => 'You cannot use this method directly, use the complete_2fa_login method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.checkPassword_param_password_hash_type_bytes' => 'You cannot use this method directly, use the complete_2fa_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.checkPassword_param_password_hash_type_bytes' => 'You cannot use this method directly, use the complete_2fa_login method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.requestPasswordRecovery' => 'Send an email to recover the 2FA password', 'method_auth.requestPasswordRecovery' => 'Send an email to recover the 2FA password',
@ -477,8 +477,8 @@ class Lang
'method_account.resetWebAuthorizations' => 'Reset all telegram web login authorizations', 'method_account.resetWebAuthorizations' => 'Reset all telegram web login authorizations',
'method_users.getUsers' => 'Get info about users', 'method_users.getUsers' => 'Get info about users',
'method_users.getUsers_param_id_type_Vector t' => 'The ids of the users', 'method_users.getUsers_param_id_type_Vector t' => 'The ids of the users',
'method_users.getFullUser' => 'You cannot use this method directly, use the get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info)', 'method_users.getFullUser' => 'You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)',
'method_users.getFullUser_param_id_type_InputUser' => 'You cannot use this method directly, use the get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info)', 'method_users.getFullUser_param_id_type_InputUser' => 'You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)',
'method_contacts.getStatuses' => 'Get online status of all users', 'method_contacts.getStatuses' => 'Get online status of all users',
'method_contacts.getContacts' => 'Get all contacts', 'method_contacts.getContacts' => 'Get all contacts',
'method_contacts.getContacts_param_hash_type_int' => 'User ids of contacts previously fetched with this method', 'method_contacts.getContacts_param_hash_type_int' => 'User ids of contacts previously fetched with this method',
@ -501,8 +501,8 @@ class Lang
'method_contacts.search' => 'Search contacts', 'method_contacts.search' => 'Search contacts',
'method_contacts.search_param_q_type_string' => 'The search query', 'method_contacts.search_param_q_type_string' => 'The search query',
'method_contacts.search_param_limit_type_int' => 'How many results should be returned', 'method_contacts.search_param_limit_type_int' => 'How many results should be returned',
'method_contacts.resolveUsername' => 'You cannot use this method directly, use the resolve_username, get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info)', 'method_contacts.resolveUsername' => 'You cannot use this method directly, use the resolveUsername, getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)',
'method_contacts.resolveUsername_param_username_type_string' => 'You cannot use this method directly, use the resolve_username, get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info)', 'method_contacts.resolveUsername_param_username_type_string' => 'You cannot use this method directly, use the resolveUsername, getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)',
'method_contacts.getTopPeers' => 'Get most used chats', 'method_contacts.getTopPeers' => 'Get most used chats',
'method_contacts.getTopPeers_param_correspondents_type_true' => 'Fetch users?', 'method_contacts.getTopPeers_param_correspondents_type_true' => 'Fetch users?',
'method_contacts.getTopPeers_param_bots_pm_type_true' => 'Fetch bots?', 'method_contacts.getTopPeers_param_bots_pm_type_true' => 'Fetch bots?',
@ -519,7 +519,7 @@ class Lang
'method_contacts.resetSaved' => 'Reset saved contacts', 'method_contacts.resetSaved' => 'Reset saved contacts',
'method_messages.getMessages' => 'Get messages', 'method_messages.getMessages' => 'Get messages',
'method_messages.getMessages_param_id_type_Vector t' => 'The IDs of messages to fetch (only for users and normal groups)', 'method_messages.getMessages_param_id_type_Vector t' => 'The IDs of messages to fetch (only for users and normal groups)',
'method_messages.getDialogs' => 'Gets list of chats: you should use $MadelineProto->get_dialogs() instead: https://docs.madelineproto.xyz/docs/DIALOGS.html', 'method_messages.getDialogs' => 'Gets list of chats: you should use $MadelineProto->getDialogs() instead: https://docs.madelineproto.xyz/docs/DIALOGS.html',
'method_messages.getDialogs_param_exclude_pinned_type_true' => 'Do not fetch pinned chats', 'method_messages.getDialogs_param_exclude_pinned_type_true' => 'Do not fetch pinned chats',
'method_messages.getDialogs_param_offset_date_type_int' => 'End($res[\'messages\'])[\'date\'];', 'method_messages.getDialogs_param_offset_date_type_int' => 'End($res[\'messages\'])[\'date\'];',
'method_messages.getDialogs_param_offset_id_type_int' => 'End($res[\'messages\'])[\'id\'];', 'method_messages.getDialogs_param_offset_id_type_int' => 'End($res[\'messages\'])[\'id\'];',
@ -597,8 +597,8 @@ class Lang
'method_messages.getPeerSettings_param_peer_type_InputPeer' => 'The peer', 'method_messages.getPeerSettings_param_peer_type_InputPeer' => 'The peer',
'method_messages.getChats' => 'Get info about chats', 'method_messages.getChats' => 'Get info about chats',
'method_messages.getChats_param_id_type_Vector t' => 'The MTProto IDs of chats to fetch info about', 'method_messages.getChats_param_id_type_Vector t' => 'The MTProto IDs of chats to fetch info about',
'method_messages.getFullChat' => 'You cannot use this method directly, use the get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info)', 'method_messages.getFullChat' => 'You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)',
'method_messages.getFullChat_param_chat_id_type_InputPeer' => 'You cannot use this method directly, use the get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info)', 'method_messages.getFullChat_param_chat_id_type_InputPeer' => 'You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)',
'method_messages.editChatTitle' => 'Edit the title of a normal chat (not supergroup)', 'method_messages.editChatTitle' => 'Edit the title of a normal chat (not supergroup)',
'method_messages.editChatTitle_param_chat_id_type_InputPeer' => 'The ID of the chat', 'method_messages.editChatTitle_param_chat_id_type_InputPeer' => 'The ID of the chat',
'method_messages.editChatTitle_param_title_type_string' => 'The new title', 'method_messages.editChatTitle_param_title_type_string' => 'The new title',
@ -615,9 +615,9 @@ class Lang
'method_messages.createChat' => 'Create a chat (not supergroup)', 'method_messages.createChat' => 'Create a chat (not supergroup)',
'method_messages.createChat_param_users_type_Vector t' => 'The users to add to the chat', 'method_messages.createChat_param_users_type_Vector t' => 'The users to add to the chat',
'method_messages.createChat_param_title_type_string' => 'The new chat\'s title', 'method_messages.createChat_param_title_type_string' => 'The new chat\'s title',
'method_messages.getDhConfig' => 'You cannot use this method directly, instead use $MadelineProto->get_dh_config();', 'method_messages.getDhConfig' => 'You cannot use this method directly, instead use $MadelineProto->getDhConfig();',
'method_messages.getDhConfig_param_version_type_int' => 'You cannot use this method directly, instead use $MadelineProto->get_dh_config();', 'method_messages.getDhConfig_param_version_type_int' => 'You cannot use this method directly, instead use $MadelineProto->getDhConfig();',
'method_messages.getDhConfig_param_random_length_type_int' => 'You cannot use this method directly, instead use $MadelineProto->get_dh_config();', 'method_messages.getDhConfig_param_random_length_type_int' => 'You cannot use this method directly, instead use $MadelineProto->getDhConfig();',
'method_messages.requestEncryption' => 'You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats', 'method_messages.requestEncryption' => 'You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats',
'method_messages.requestEncryption_param_user_id_type_InputUser' => 'You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats', 'method_messages.requestEncryption_param_user_id_type_InputUser' => 'You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats',
'method_messages.requestEncryption_param_g_a_type_bytes' => 'You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats', 'method_messages.requestEncryption_param_g_a_type_bytes' => 'You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats',
@ -891,33 +891,33 @@ class Lang
'method_photos.getUserPhotos_param_offset_type_int' => 'Offset', 'method_photos.getUserPhotos_param_offset_type_int' => 'Offset',
'method_photos.getUserPhotos_param_max_id_type_long' => 'Maximum ID of photo to return', 'method_photos.getUserPhotos_param_max_id_type_long' => 'Maximum ID of photo to return',
'method_photos.getUserPhotos_param_limit_type_int' => 'Number of photos to return', 'method_photos.getUserPhotos_param_limit_type_int' => 'Number of photos to return',
'method_upload.saveFilePart' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.saveFilePart' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.saveFilePart_param_file_id_type_long' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.saveFilePart_param_file_id_type_long' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.saveFilePart_param_file_part_type_int' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.saveFilePart_param_file_part_type_int' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.saveFilePart_param_bytes_type_bytes' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.saveFilePart_param_bytes_type_bytes' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getFile' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getFile' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getFile_param_location_type_InputFileLocation' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getFile_param_location_type_InputFileLocation' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getFile_param_offset_type_int' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getFile_param_offset_type_int' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getFile_param_limit_type_int' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getFile_param_limit_type_int' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.saveBigFilePart' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.saveBigFilePart' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.saveBigFilePart_param_file_id_type_long' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.saveBigFilePart_param_file_id_type_long' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.saveBigFilePart_param_file_part_type_int' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.saveBigFilePart_param_file_part_type_int' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.saveBigFilePart_param_file_total_parts_type_int' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.saveBigFilePart_param_file_total_parts_type_int' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.saveBigFilePart_param_bytes_type_bytes' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.saveBigFilePart_param_bytes_type_bytes' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getWebFile' => 'Download a file through telegram', 'method_upload.getWebFile' => 'Download a file through telegram',
'method_upload.getWebFile_param_location_type_InputWebFileLocation' => 'The file', 'method_upload.getWebFile_param_location_type_InputWebFileLocation' => 'The file',
'method_upload.getWebFile_param_offset_type_int' => 'The offset in bytes', 'method_upload.getWebFile_param_offset_type_int' => 'The offset in bytes',
'method_upload.getWebFile_param_limit_type_int' => 'The number of bytes to fetch', 'method_upload.getWebFile_param_limit_type_int' => 'The number of bytes to fetch',
'method_upload.getCdnFile' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getCdnFile' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getCdnFile_param_file_token_type_bytes' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getCdnFile_param_file_token_type_bytes' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getCdnFile_param_offset_type_int' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getCdnFile_param_offset_type_int' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getCdnFile_param_limit_type_int' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getCdnFile_param_limit_type_int' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.reuploadCdnFile' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.reuploadCdnFile' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.reuploadCdnFile_param_file_token_type_bytes' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.reuploadCdnFile_param_file_token_type_bytes' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.reuploadCdnFile_param_request_token_type_bytes' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.reuploadCdnFile_param_request_token_type_bytes' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getCdnFileHashes' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getCdnFileHashes' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getCdnFileHashes_param_file_token_type_bytes' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getCdnFileHashes_param_file_token_type_bytes' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getCdnFileHashes_param_offset_type_int' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getCdnFileHashes_param_offset_type_int' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_help.getConfig' => 'Get server configuration', 'method_help.getConfig' => 'Get server configuration',
'method_help.getNearestDc' => 'Get nearest datacenter', 'method_help.getNearestDc' => 'Get nearest datacenter',
'method_help.getAppUpdate' => 'Get info about app updates', 'method_help.getAppUpdate' => 'Get info about app updates',
@ -950,7 +950,7 @@ class Lang
'method_channels.getMessages' => 'Get channel/supergroup messages', 'method_channels.getMessages' => 'Get channel/supergroup messages',
'method_channels.getMessages_param_channel_type_InputChannel' => 'The channel/supergroup', 'method_channels.getMessages_param_channel_type_InputChannel' => 'The channel/supergroup',
'method_channels.getMessages_param_id_type_Vector t' => 'The message IDs', 'method_channels.getMessages_param_id_type_Vector t' => 'The message IDs',
'method_channels.getParticipants' => 'Get channel/supergroup participants (you should use `$MadelineProto->get_pwr_chat($id)` instead)', 'method_channels.getParticipants' => 'Get channel/supergroup participants (you should use `$MadelineProto->getPwrChat($id)` instead)',
'method_channels.getParticipants_param_channel_type_InputChannel' => 'The channel', 'method_channels.getParticipants_param_channel_type_InputChannel' => 'The channel',
'method_channels.getParticipants_param_filter_type_ChannelParticipantsFilter' => 'Member filter', 'method_channels.getParticipants_param_filter_type_ChannelParticipantsFilter' => 'Member filter',
'method_channels.getParticipants_param_offset_type_int' => 'Offset', 'method_channels.getParticipants_param_offset_type_int' => 'Offset',
@ -961,8 +961,8 @@ class Lang
'method_channels.getParticipant_param_user_id_type_InputUser' => 'The user to fetch info about', 'method_channels.getParticipant_param_user_id_type_InputUser' => 'The user to fetch info about',
'method_channels.getChannels' => 'Get info about multiple channels/supergroups', 'method_channels.getChannels' => 'Get info about multiple channels/supergroups',
'method_channels.getChannels_param_id_type_Vector t' => 'The channel/supergroup MTProto IDs', 'method_channels.getChannels_param_id_type_Vector t' => 'The channel/supergroup MTProto IDs',
'method_channels.getFullChannel' => 'You cannot use this method directly, use the get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info)', 'method_channels.getFullChannel' => 'You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)',
'method_channels.getFullChannel_param_channel_type_InputChannel' => 'You cannot use this method directly, use the get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info)', 'method_channels.getFullChannel_param_channel_type_InputChannel' => 'You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)',
'method_channels.createChannel' => 'Create channel/supergroup', 'method_channels.createChannel' => 'Create channel/supergroup',
'method_channels.createChannel_param_broadcast_type_true' => 'Set this to true to create a channel', 'method_channels.createChannel_param_broadcast_type_true' => 'Set this to true to create a channel',
'method_channels.createChannel_param_megagroup_type_true' => 'Set this to true to create a supergroup', 'method_channels.createChannel_param_megagroup_type_true' => 'Set this to true to create a supergroup',
@ -1110,8 +1110,8 @@ class Lang
'method_langpack.getDifference' => 'Get language pack updates', 'method_langpack.getDifference' => 'Get language pack updates',
'method_langpack.getDifference_param_from_version_type_int' => 'Previous version', 'method_langpack.getDifference_param_from_version_type_int' => 'Previous version',
'method_langpack.getLanguages' => 'Get available languages', 'method_langpack.getLanguages' => 'Get available languages',
'method_auth.sendCode_param_sms_type_type_int' => 'You cannot use this method directly, use the phone_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.sendCode_param_sms_type_type_int' => 'You cannot use this method directly, use the phoneLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.sendCode_param_lang_code_type_string' => 'You cannot use this method directly, use the phone_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.sendCode_param_lang_code_type_string' => 'You cannot use this method directly, use the phoneLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.sendCall' => 'Send verification phone call', 'method_auth.sendCall' => 'Send verification phone call',
'method_auth.sendCall_param_phone_number_type_string' => 'The phone number', 'method_auth.sendCall_param_phone_number_type_string' => 'The phone number',
'method_auth.sendCall_param_phone_code_hash_type_string' => 'The phone code hash', 'method_auth.sendCall_param_phone_code_hash_type_string' => 'The phone code hash',
@ -1272,10 +1272,10 @@ class Lang
'method_contest.saveDeveloperInfo_param_phone_number_type_string' => 'Phone number', 'method_contest.saveDeveloperInfo_param_phone_number_type_string' => 'Phone number',
'method_contest.saveDeveloperInfo_param_age_type_int' => 'Age', 'method_contest.saveDeveloperInfo_param_age_type_int' => 'Age',
'method_contest.saveDeveloperInfo_param_city_type_string' => 'City', 'method_contest.saveDeveloperInfo_param_city_type_string' => 'City',
'method_auth.importBotAuthorization_param_a_type_true' => 'You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.importBotAuthorization_param_a_type_true' => 'You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.importBotAuthorization_param_b_type_true' => 'You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.importBotAuthorization_param_b_type_true' => 'You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.importBotAuthorization_param_c_type_true' => 'You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.importBotAuthorization_param_c_type_true' => 'You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.importBotAuthorization_param_d_type_true' => 'You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.importBotAuthorization_param_d_type_true' => 'You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)',
'object_vector' => 'Array', 'object_vector' => 'Array',
'object_resPQ' => 'Contains pq to factorize', 'object_resPQ' => 'Contains pq to factorize',
'object_resPQ_param_nonce_type_int128' => 'Nonce', 'object_resPQ_param_nonce_type_int128' => 'Nonce',
@ -2871,23 +2871,23 @@ class Lang
'object_inputBotInlineResult_param_w_type_int' => 'Width', 'object_inputBotInlineResult_param_w_type_int' => 'Width',
'object_inputBotInlineResult_param_h_type_int' => 'Height', 'object_inputBotInlineResult_param_h_type_int' => 'Height',
'object_inputBotInlineResult_param_duration_type_int' => 'Duration', 'object_inputBotInlineResult_param_duration_type_int' => 'Duration',
'object_inputBotInlineResult_param_send_message_type_InputBotInlineMessage' => 'Message to send', 'object_inputBotInlineResult_param_sendMessage_type_InputBotInlineMessage' => 'Message to send',
'object_inputBotInlineResultPhoto' => 'Bot inline result photo', 'object_inputBotInlineResultPhoto' => 'Bot inline result photo',
'object_inputBotInlineResultPhoto_param_id_type_string' => 'ID', 'object_inputBotInlineResultPhoto_param_id_type_string' => 'ID',
'object_inputBotInlineResultPhoto_param_type_type_string' => 'Type', 'object_inputBotInlineResultPhoto_param_type_type_string' => 'Type',
'object_inputBotInlineResultPhoto_param_photo_type_InputPhoto' => 'Photo', 'object_inputBotInlineResultPhoto_param_photo_type_InputPhoto' => 'Photo',
'object_inputBotInlineResultPhoto_param_send_message_type_InputBotInlineMessage' => 'Message to send', 'object_inputBotInlineResultPhoto_param_sendMessage_type_InputBotInlineMessage' => 'Message to send',
'object_inputBotInlineResultDocument' => 'Bot inline result document', 'object_inputBotInlineResultDocument' => 'Bot inline result document',
'object_inputBotInlineResultDocument_param_id_type_string' => 'ID', 'object_inputBotInlineResultDocument_param_id_type_string' => 'ID',
'object_inputBotInlineResultDocument_param_type_type_string' => 'Type', 'object_inputBotInlineResultDocument_param_type_type_string' => 'Type',
'object_inputBotInlineResultDocument_param_title_type_string' => 'Title', 'object_inputBotInlineResultDocument_param_title_type_string' => 'Title',
'object_inputBotInlineResultDocument_param_description_type_string' => 'Description', 'object_inputBotInlineResultDocument_param_description_type_string' => 'Description',
'object_inputBotInlineResultDocument_param_document_type_InputDocument' => 'Document', 'object_inputBotInlineResultDocument_param_document_type_InputDocument' => 'Document',
'object_inputBotInlineResultDocument_param_send_message_type_InputBotInlineMessage' => 'Message to send', 'object_inputBotInlineResultDocument_param_sendMessage_type_InputBotInlineMessage' => 'Message to send',
'object_inputBotInlineResultGame' => 'Bot inline result game', 'object_inputBotInlineResultGame' => 'Bot inline result game',
'object_inputBotInlineResultGame_param_id_type_string' => 'ID', 'object_inputBotInlineResultGame_param_id_type_string' => 'ID',
'object_inputBotInlineResultGame_param_short_name_type_string' => 'Short name', 'object_inputBotInlineResultGame_param_short_name_type_string' => 'Short name',
'object_inputBotInlineResultGame_param_send_message_type_InputBotInlineMessage' => 'Message to send', 'object_inputBotInlineResultGame_param_sendMessage_type_InputBotInlineMessage' => 'Message to send',
'object_botInlineMessageMediaAuto' => 'Bot inline message media auto', 'object_botInlineMessageMediaAuto' => 'Bot inline message media auto',
'object_botInlineMessageMediaAuto_param_message_type_string' => 'Message', 'object_botInlineMessageMediaAuto_param_message_type_string' => 'Message',
'object_botInlineMessageMediaAuto_param_entities_type_Vector t' => 'Entities', 'object_botInlineMessageMediaAuto_param_entities_type_Vector t' => 'Entities',
@ -2925,7 +2925,7 @@ class Lang
'object_botInlineResult_param_w_type_int' => 'Width', 'object_botInlineResult_param_w_type_int' => 'Width',
'object_botInlineResult_param_h_type_int' => 'Height', 'object_botInlineResult_param_h_type_int' => 'Height',
'object_botInlineResult_param_duration_type_int' => 'Duration', 'object_botInlineResult_param_duration_type_int' => 'Duration',
'object_botInlineResult_param_send_message_type_BotInlineMessage' => 'Message to send', 'object_botInlineResult_param_sendMessage_type_BotInlineMessage' => 'Message to send',
'object_botInlineMediaResult' => 'Bot inline media result', 'object_botInlineMediaResult' => 'Bot inline media result',
'object_botInlineMediaResult_param_id_type_string' => 'ID', 'object_botInlineMediaResult_param_id_type_string' => 'ID',
'object_botInlineMediaResult_param_type_type_string' => 'Type', 'object_botInlineMediaResult_param_type_type_string' => 'Type',
@ -2933,7 +2933,7 @@ class Lang
'object_botInlineMediaResult_param_document_type_Document' => 'Document', 'object_botInlineMediaResult_param_document_type_Document' => 'Document',
'object_botInlineMediaResult_param_title_type_string' => 'Title', 'object_botInlineMediaResult_param_title_type_string' => 'Title',
'object_botInlineMediaResult_param_description_type_string' => 'Description', 'object_botInlineMediaResult_param_description_type_string' => 'Description',
'object_botInlineMediaResult_param_send_message_type_BotInlineMessage' => 'Send message', 'object_botInlineMediaResult_param_sendMessage_type_BotInlineMessage' => 'Send message',
'object_messages.botResults' => 'Bot results', 'object_messages.botResults' => 'Bot results',
'object_messages.botResults_param_gallery_type_true' => 'Gallery?', 'object_messages.botResults_param_gallery_type_true' => 'Gallery?',
'object_messages.botResults_param_query_id_type_long' => 'Query ID', 'object_messages.botResults_param_query_id_type_long' => 'Query ID',
@ -3369,7 +3369,7 @@ class Lang
'object_channelAdminRights_param_add_admins_type_true' => 'Add other admins', 'object_channelAdminRights_param_add_admins_type_true' => 'Add other admins',
'object_channelBannedRights' => 'Banned user rights (when true, the user will NOT be able to do that thing)', 'object_channelBannedRights' => 'Banned user rights (when true, the user will NOT be able to do that thing)',
'object_channelBannedRights_param_view_messages_type_true' => 'Disallow viewing messages', 'object_channelBannedRights_param_view_messages_type_true' => 'Disallow viewing messages',
'object_channelBannedRights_param_send_messages_type_true' => 'Disallow sending messages', 'object_channelBannedRights_param_sendMessages_type_true' => 'Disallow sending messages',
'object_channelBannedRights_param_send_media_type_true' => 'Disallow sending media', 'object_channelBannedRights_param_send_media_type_true' => 'Disallow sending media',
'object_channelBannedRights_param_send_stickers_type_true' => 'Disallow sending stickers', 'object_channelBannedRights_param_send_stickers_type_true' => 'Disallow sending stickers',
'object_channelBannedRights_param_send_gifs_type_true' => 'Disallow sending gifs', 'object_channelBannedRights_param_send_gifs_type_true' => 'Disallow sending gifs',
@ -4043,12 +4043,12 @@ class Lang
'object_botInlineMediaResultDocument_param_id_type_string' => 'ID', 'object_botInlineMediaResultDocument_param_id_type_string' => 'ID',
'object_botInlineMediaResultDocument_param_type_type_string' => 'Type', 'object_botInlineMediaResultDocument_param_type_type_string' => 'Type',
'object_botInlineMediaResultDocument_param_document_type_Document' => 'Document', 'object_botInlineMediaResultDocument_param_document_type_Document' => 'Document',
'object_botInlineMediaResultDocument_param_send_message_type_BotInlineMessage' => 'Send message', 'object_botInlineMediaResultDocument_param_sendMessage_type_BotInlineMessage' => 'Send message',
'object_botInlineMediaResultPhoto' => 'Bot inline media result photo', 'object_botInlineMediaResultPhoto' => 'Bot inline media result photo',
'object_botInlineMediaResultPhoto_param_id_type_string' => 'ID', 'object_botInlineMediaResultPhoto_param_id_type_string' => 'ID',
'object_botInlineMediaResultPhoto_param_type_type_string' => 'Type', 'object_botInlineMediaResultPhoto_param_type_type_string' => 'Type',
'object_botInlineMediaResultPhoto_param_photo_type_Photo' => 'Photo', 'object_botInlineMediaResultPhoto_param_photo_type_Photo' => 'Photo',
'object_botInlineMediaResultPhoto_param_send_message_type_BotInlineMessage' => 'Send message', 'object_botInlineMediaResultPhoto_param_sendMessage_type_BotInlineMessage' => 'Send message',
'object_inputMediaVideo_param_video_type_InputVideo' => 'Video', 'object_inputMediaVideo_param_video_type_InputVideo' => 'Video',
'object_inputMediaAudio_param_audio_type_InputAudio' => 'Audio', 'object_inputMediaAudio_param_audio_type_InputAudio' => 'Audio',
'object_inputMediaDocument_param_document_id_type_InputDocument' => 'Document ID', 'object_inputMediaDocument_param_document_id_type_InputDocument' => 'Document ID',
@ -4751,7 +4751,7 @@ class Lang
'object_chatOnlines_param_onlines_type_int' => 'Onlines', 'object_chatOnlines_param_onlines_type_int' => 'Onlines',
'object_statsURL' => 'Stats URL', 'object_statsURL' => 'Stats URL',
'object_statsURL_param_url_type_string' => 'URL', 'object_statsURL_param_url_type_string' => 'URL',
'method_auth.sendCode_param_settings_type_CodeSettings' => 'You cannot use this method directly, use the phone_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.sendCode_param_settings_type_CodeSettings' => 'You cannot use this method directly, use the phoneLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_account.getWallPapers_param_hash_type_Vector t' => 'IDs of previously fetched wallpapers', 'method_account.getWallPapers_param_hash_type_Vector t' => 'IDs of previously fetched wallpapers',
'method_account.sendChangePhoneCode_param_settings_type_CodeSettings' => 'Code settings', 'method_account.sendChangePhoneCode_param_settings_type_CodeSettings' => 'Code settings',
'method_account.sendConfirmPhoneCode_param_settings_type_CodeSettings' => 'Code settings', 'method_account.sendConfirmPhoneCode_param_settings_type_CodeSettings' => 'Code settings',
@ -4825,7 +4825,7 @@ class Lang
'object_chatAdminRights_param_add_admins_type_true' => 'Can add other admins?', 'object_chatAdminRights_param_add_admins_type_true' => 'Can add other admins?',
'object_chatBannedRights' => 'Banned rights (when true, the user will NOT be able to do that thing)', 'object_chatBannedRights' => 'Banned rights (when true, the user will NOT be able to do that thing)',
'object_chatBannedRights_param_view_messages_type_true' => 'Can view messages?', 'object_chatBannedRights_param_view_messages_type_true' => 'Can view messages?',
'object_chatBannedRights_param_send_messages_type_true' => 'Can send messages?', 'object_chatBannedRights_param_sendMessages_type_true' => 'Can send messages?',
'object_chatBannedRights_param_send_media_type_true' => 'Can send media?', 'object_chatBannedRights_param_send_media_type_true' => 'Can send media?',
'object_chatBannedRights_param_send_stickers_type_true' => 'Can send stickers?', 'object_chatBannedRights_param_send_stickers_type_true' => 'Can send stickers?',
'object_chatBannedRights_param_send_gifs_type_true' => 'Can send gifs?', 'object_chatBannedRights_param_send_gifs_type_true' => 'Can send gifs?',
@ -5136,7 +5136,7 @@ class Lang
'object_peerLocated_param_expires_type_int' => 'Expiry date', 'object_peerLocated_param_expires_type_int' => 'Expiry date',
'object_peerLocated_param_distance_type_int' => 'Distance', 'object_peerLocated_param_distance_type_int' => 'Distance',
'method_account.registerDevice_param_no_muted_type_true' => 'Idk yet', 'method_account.registerDevice_param_no_muted_type_true' => 'Idk yet',
'method_upload.getFile_param_precise_type_true' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getFile_param_precise_type_true' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_channels.editAdmin_param_rank_type_string' => 'Admin rank, an arbitrary string', 'method_channels.editAdmin_param_rank_type_string' => 'Admin rank, an arbitrary string',
'method_channels.toggleSlowMode' => 'Toggle slow mode', 'method_channels.toggleSlowMode' => 'Toggle slow mode',
'method_channels.toggleSlowMode_param_channel_type_InputChannel' => 'Supergroup', 'method_channels.toggleSlowMode_param_channel_type_InputChannel' => 'Supergroup',
@ -5272,7 +5272,7 @@ class Lang
'socket_status_5' => 'WORKING', 'socket_status_5' => 'WORKING',
'api_not_set' => 'You must provide an api key and an api id, get your own @ my.telegram.org', 'api_not_set' => 'You must provide an api key and an api id, get your own @ my.telegram.org',
'session_corrupted' => 'The session is corrupted!', 'session_corrupted' => 'The session is corrupted!',
'reset_session_seqno' => 'Resetting session id and seq_no in DC %s...', 'resetSession_seqno' => 'Resetting session id and seq_no in DC %s...',
'gen_perm_auth_key' => 'Generating permanent authorization key for DC %s...', 'gen_perm_auth_key' => 'Generating permanent authorization key for DC %s...',
'gen_temp_auth_key' => 'Generating temporary authorization key for DC %s...', 'gen_temp_auth_key' => 'Generating temporary authorization key for DC %s...',
'copy_auth_dcs' => 'Copying authorization from DC %s to DC %s...', 'copy_auth_dcs' => 'Copying authorization from DC %s to DC %s...',
@ -5313,21 +5313,21 @@ class Lang
'madelineproto_ready' => 'MadelineProto is ready!', 'madelineproto_ready' => 'MadelineProto is ready!',
'logout_error' => 'An error occurred while logging out!', 'logout_error' => 'An error occurred while logging out!',
'logout_ok' => 'Logged out successfully!', 'logout_ok' => 'Logged out successfully!',
'already_logged_in' => 'This instance of MadelineProto is already logged in. Logging out first...', 'already_loggedIn' => 'This instance of MadelineProto is already logged in. Logging out first...',
'login_ok' => 'Logged in successfully!', 'login_ok' => 'Logged in successfully!',
'login_user' => 'Logging in as a normal user...', 'login_user' => 'Logging in as a normal user...',
'login_bot' => 'Logging in as a bot...', 'login_bot' => 'Logging in as a bot...',
'login_code_sending' => 'Sending code...', 'login_code_sending' => 'Sending code...',
'login_code_sent' => 'Code sent successfully! Once you receive the code you should use the complete_phone_login function.', 'login_code_sent' => 'Code sent successfully! Once you receive the code you should use the completePhoneLogin function.',
'login_code_uncalled' => 'I\'m not waiting for the code! Please call the phone_login method first', 'login_code_uncalled' => 'I\'m not waiting for the code! Please call the phoneLogin method first',
'login_2fa_enabled' => '2FA enabled, you will have to call the complete_2fa_login function...', 'login_2fa_enabled' => '2FA enabled, you will have to call the complete_2fa_login function...',
'login_need_signup' => 'An account has not been created for this number, you will have to call the complete_signup function...', 'login_need_signup' => 'An account has not been created for this number, you will have to call the completeSignup function...',
'login_auth_key' => 'Logging in using auth key...', 'login_auth_key' => 'Logging in using auth key...',
'not_logged_in' => 'I\'m not logged in!', 'not_loggedIn' => 'I\'m not logged in!',
'signup_uncalled' => 'I\'m not waiting to signup! Please call the phone_login and the complete_phone_login methods first!', 'signup_uncalled' => 'I\'m not waiting to signup! Please call the phoneLogin and the completePhoneLogin methods first!',
'signing_up' => 'Signing up as a normal user...', 'signing_up' => 'Signing up as a normal user...',
'signup_ok' => 'Signed up in successfully!', 'signup_ok' => 'Signed up in successfully!',
'2fa_uncalled' => 'I\'m not waiting for the password! Please call the phone_login and the complete_phone_login methods first!', '2fa_uncalled' => 'I\'m not waiting for the password! Please call the phoneLogin and the completePhoneLogin methods first!',
'getting_dialogs' => 'Getting dialogs...', 'getting_dialogs' => 'Getting dialogs...',
'libtgvoip_required' => 'The php-libtgvoip extension is required to accept and manage calls. See daniil.it/MadelineProto for more info.', 'libtgvoip_required' => 'The php-libtgvoip extension is required to accept and manage calls. See daniil.it/MadelineProto for more info.',
'peer_not_in_db' => 'This peer is not present in the internal peer database', 'peer_not_in_db' => 'This peer is not present in the internal peer database',
@ -5440,41 +5440,41 @@ class Lang
'method_invokeWithoutUpdates_param_query_type_!X' => 'The query', 'method_invokeWithoutUpdates_param_query_type_!X' => 'The query',
'method_auth.checkPhone' => 'Check if this phone number is registered on telegram', 'method_auth.checkPhone' => 'Check if this phone number is registered on telegram',
'method_auth.checkPhone_param_phone_number_type_string' => 'The phone number to check', 'method_auth.checkPhone_param_phone_number_type_string' => 'The phone number to check',
'method_auth.sendCode' => 'Use phone_login instead', 'method_auth.sendCode' => 'Use phoneLogin instead',
'method_auth.sendCode_param_allow_flashcall_type_true' => 'Use phone_login instead', 'method_auth.sendCode_param_allow_flashcall_type_true' => 'Use phoneLogin instead',
'method_auth.sendCode_param_phone_number_type_string' => 'Use phone_login instead', 'method_auth.sendCode_param_phone_number_type_string' => 'Use phoneLogin instead',
'method_auth.sendCode_param_current_number_type_Bool' => 'Use phone_login instead', 'method_auth.sendCode_param_current_number_type_Bool' => 'Use phoneLogin instead',
'method_auth.sendCode_param_api_id_type_int' => 'Use phone_login instead', 'method_auth.sendCode_param_api_id_type_int' => 'Use phoneLogin instead',
'method_auth.sendCode_param_api_hash_type_string' => 'Use phone_login instead', 'method_auth.sendCode_param_api_hash_type_string' => 'Use phoneLogin instead',
'method_auth.signUp' => 'You cannot use this method directly, use the complete_signup method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signUp' => 'You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.signUp_param_phone_number_type_string' => 'You cannot use this method directly, use the complete_signup method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signUp_param_phone_number_type_string' => 'You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.signUp_param_phone_code_hash_type_string' => 'You cannot use this method directly, use the complete_signup method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signUp_param_phone_code_hash_type_string' => 'You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.signUp_param_phone_code_type_string' => 'You cannot use this method directly, use the complete_signup method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signUp_param_phone_code_type_string' => 'You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.signUp_param_first_name_type_string' => 'You cannot use this method directly, use the complete_signup method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signUp_param_first_name_type_string' => 'You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.signUp_param_last_name_type_string' => 'You cannot use this method directly, use the complete_signup method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signUp_param_last_name_type_string' => 'You cannot use this method directly, use the completeSignup method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.signIn' => 'You cannot use this method directly, use the complete_phone_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signIn' => 'You cannot use this method directly, use the completePhoneLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.signIn_param_phone_number_type_string' => 'You cannot use this method directly, use the complete_phone_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signIn_param_phone_number_type_string' => 'You cannot use this method directly, use the completePhoneLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.signIn_param_phone_code_hash_type_string' => 'You cannot use this method directly, use the complete_phone_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signIn_param_phone_code_hash_type_string' => 'You cannot use this method directly, use the completePhoneLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.signIn_param_phone_code_type_string' => 'You cannot use this method directly, use the complete_phone_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.signIn_param_phone_code_type_string' => 'You cannot use this method directly, use the completePhoneLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.logOut' => 'You cannot use this method directly, use the logout method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.logOut' => 'You cannot use this method directly, use the logout method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.resetAuthorizations' => 'Delete all logged-in sessions.', 'method_auth.resetAuthorizations' => 'Delete all logged-in sessions.',
'method_auth.sendInvites' => 'Invite friends to telegram!', 'method_auth.sendInvites' => 'Invite friends to telegram!',
'method_auth.sendInvites_param_phone_numbers_type_Vector t' => 'Phone numbers to invite', 'method_auth.sendInvites_param_phone_numbers_type_Vector t' => 'Phone numbers to invite',
'method_auth.sendInvites_param_message_type_string' => 'The message to send', 'method_auth.sendInvites_param_message_type_string' => 'The message to send',
'method_auth.exportAuthorization' => 'You cannot use this method directly, use $MadelineProto->export_authorization() instead, see https://docs.madelineproto.xyz/docs/LOGIN.html', 'method_auth.exportAuthorization' => 'You cannot use this method directly, use $MadelineProto->exportAuthorization() instead, see https://docs.madelineproto.xyz/docs/LOGIN.html',
'method_auth.exportAuthorization_param_dc_id_type_int' => 'You cannot use this method directly, use $MadelineProto->export_authorization() instead, see https://docs.madelineproto.xyz/docs/LOGIN.html', 'method_auth.exportAuthorization_param_dc_id_type_int' => 'You cannot use this method directly, use $MadelineProto->exportAuthorization() instead, see https://docs.madelineproto.xyz/docs/LOGIN.html',
'method_auth.importAuthorization' => 'You cannot use this method directly, use $MadelineProto->import_authorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html', 'method_auth.importAuthorization' => 'You cannot use this method directly, use $MadelineProto->importAuthorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html',
'method_auth.importAuthorization_param_id_type_int' => 'You cannot use this method directly, use $MadelineProto->import_authorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html', 'method_auth.importAuthorization_param_id_type_int' => 'You cannot use this method directly, use $MadelineProto->importAuthorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html',
'method_auth.importAuthorization_param_bytes_type_bytes' => 'You cannot use this method directly, use $MadelineProto->import_authorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html', 'method_auth.importAuthorization_param_bytes_type_bytes' => 'You cannot use this method directly, use $MadelineProto->importAuthorization($authorization) instead, see https://docs.madelineproto.xyz/docs/LOGIN.html',
'method_auth.bindTempAuthKey' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info', 'method_auth.bindTempAuthKey' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info',
'method_auth.bindTempAuthKey_param_perm_auth_key_id_type_long' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info', 'method_auth.bindTempAuthKey_param_perm_auth_key_id_type_long' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info',
'method_auth.bindTempAuthKey_param_nonce_type_long' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info', 'method_auth.bindTempAuthKey_param_nonce_type_long' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info',
'method_auth.bindTempAuthKey_param_expires_at_type_int' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info', 'method_auth.bindTempAuthKey_param_expires_at_type_int' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info',
'method_auth.bindTempAuthKey_param_encrypted_message_type_bytes' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info', 'method_auth.bindTempAuthKey_param_encrypted_message_type_bytes' => 'You cannot use this method directly, instead modify the PFS and default_temp_auth_key_expires_in settings, see https://docs.madelineproto.xyz/docs/SETTINGS.html for more info',
'method_auth.importBotAuthorization' => 'You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.importBotAuthorization' => 'You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.importBotAuthorization_param_api_id_type_int' => 'You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.importBotAuthorization_param_api_id_type_int' => 'You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.importBotAuthorization_param_api_hash_type_string' => 'You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.importBotAuthorization_param_api_hash_type_string' => 'You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.importBotAuthorization_param_bot_auth_token_type_string' => 'You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.importBotAuthorization_param_bot_auth_token_type_string' => 'You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.checkPassword' => 'You cannot use this method directly, use the complete_2fa_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.checkPassword' => 'You cannot use this method directly, use the complete_2fa_login method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.checkPassword_param_password_hash_type_bytes' => 'You cannot use this method directly, use the complete_2fa_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.checkPassword_param_password_hash_type_bytes' => 'You cannot use this method directly, use the complete_2fa_login method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.requestPasswordRecovery' => 'Send an email to recover the 2FA password', 'method_auth.requestPasswordRecovery' => 'Send an email to recover the 2FA password',
@ -5562,8 +5562,8 @@ class Lang
'method_account.resetWebAuthorizations' => 'Reset all telegram web login authorizations', 'method_account.resetWebAuthorizations' => 'Reset all telegram web login authorizations',
'method_users.getUsers' => 'Get info about users', 'method_users.getUsers' => 'Get info about users',
'method_users.getUsers_param_id_type_Vector t' => 'The ids of the users', 'method_users.getUsers_param_id_type_Vector t' => 'The ids of the users',
'method_users.getFullUser' => 'You cannot use this method directly, use the get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info)', 'method_users.getFullUser' => 'You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)',
'method_users.getFullUser_param_id_type_InputUser' => 'You cannot use this method directly, use the get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info)', 'method_users.getFullUser_param_id_type_InputUser' => 'You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)',
'method_contacts.getStatuses' => 'Get online status of all users', 'method_contacts.getStatuses' => 'Get online status of all users',
'method_contacts.getContacts' => 'Get all contacts', 'method_contacts.getContacts' => 'Get all contacts',
'method_contacts.getContacts_param_hash_type_int' => 'User ids of contacts previously fetched with this method', 'method_contacts.getContacts_param_hash_type_int' => 'User ids of contacts previously fetched with this method',
@ -5586,8 +5586,8 @@ class Lang
'method_contacts.search' => 'Search contacts', 'method_contacts.search' => 'Search contacts',
'method_contacts.search_param_q_type_string' => 'The search query', 'method_contacts.search_param_q_type_string' => 'The search query',
'method_contacts.search_param_limit_type_int' => 'How many results should be returned', 'method_contacts.search_param_limit_type_int' => 'How many results should be returned',
'method_contacts.resolveUsername' => 'You cannot use this method directly, use the resolve_username, get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info)', 'method_contacts.resolveUsername' => 'You cannot use this method directly, use the resolveUsername, getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)',
'method_contacts.resolveUsername_param_username_type_string' => 'You cannot use this method directly, use the resolve_username, get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info)', 'method_contacts.resolveUsername_param_username_type_string' => 'You cannot use this method directly, use the resolveUsername, getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)',
'method_contacts.getTopPeers' => 'Get most used chats', 'method_contacts.getTopPeers' => 'Get most used chats',
'method_contacts.getTopPeers_param_correspondents_type_true' => 'Fetch users?', 'method_contacts.getTopPeers_param_correspondents_type_true' => 'Fetch users?',
'method_contacts.getTopPeers_param_bots_pm_type_true' => 'Fetch bots?', 'method_contacts.getTopPeers_param_bots_pm_type_true' => 'Fetch bots?',
@ -5604,7 +5604,7 @@ class Lang
'method_contacts.resetSaved' => 'Reset saved contacts', 'method_contacts.resetSaved' => 'Reset saved contacts',
'method_messages.getMessages' => 'Get messages', 'method_messages.getMessages' => 'Get messages',
'method_messages.getMessages_param_id_type_Vector t' => 'The IDs of messages to fetch (only for users and normal groups)', 'method_messages.getMessages_param_id_type_Vector t' => 'The IDs of messages to fetch (only for users and normal groups)',
'method_messages.getDialogs' => 'Gets list of chats: you should use $MadelineProto->get_dialogs() instead: https://docs.madelineproto.xyz/docs/DIALOGS.html', 'method_messages.getDialogs' => 'Gets list of chats: you should use $MadelineProto->getDialogs() instead: https://docs.madelineproto.xyz/docs/DIALOGS.html',
'method_messages.getDialogs_param_exclude_pinned_type_true' => 'Do not fetch pinned chats', 'method_messages.getDialogs_param_exclude_pinned_type_true' => 'Do not fetch pinned chats',
'method_messages.getDialogs_param_offset_date_type_int' => 'End($res[\'messages\'])[\'date\'];', 'method_messages.getDialogs_param_offset_date_type_int' => 'End($res[\'messages\'])[\'date\'];',
'method_messages.getDialogs_param_offset_id_type_int' => 'End($res[\'messages\'])[\'id\'];', 'method_messages.getDialogs_param_offset_id_type_int' => 'End($res[\'messages\'])[\'id\'];',
@ -5682,8 +5682,8 @@ class Lang
'method_messages.getPeerSettings_param_peer_type_InputPeer' => 'The peer', 'method_messages.getPeerSettings_param_peer_type_InputPeer' => 'The peer',
'method_messages.getChats' => 'Get info about chats', 'method_messages.getChats' => 'Get info about chats',
'method_messages.getChats_param_id_type_Vector t' => 'The MTProto IDs of chats to fetch info about', 'method_messages.getChats_param_id_type_Vector t' => 'The MTProto IDs of chats to fetch info about',
'method_messages.getFullChat' => 'You cannot use this method directly, use the get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info)', 'method_messages.getFullChat' => 'You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)',
'method_messages.getFullChat_param_chat_id_type_InputPeer' => 'You cannot use this method directly, use the get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info)', 'method_messages.getFullChat_param_chat_id_type_InputPeer' => 'You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)',
'method_messages.editChatTitle' => 'Edit the title of a normal chat (not supergroup)', 'method_messages.editChatTitle' => 'Edit the title of a normal chat (not supergroup)',
'method_messages.editChatTitle_param_chat_id_type_InputPeer' => 'The ID of the chat', 'method_messages.editChatTitle_param_chat_id_type_InputPeer' => 'The ID of the chat',
'method_messages.editChatTitle_param_title_type_string' => 'The new title', 'method_messages.editChatTitle_param_title_type_string' => 'The new title',
@ -5700,9 +5700,9 @@ class Lang
'method_messages.createChat' => 'Create a chat (not supergroup)', 'method_messages.createChat' => 'Create a chat (not supergroup)',
'method_messages.createChat_param_users_type_Vector t' => 'The users to add to the chat', 'method_messages.createChat_param_users_type_Vector t' => 'The users to add to the chat',
'method_messages.createChat_param_title_type_string' => 'The new chat\'s title', 'method_messages.createChat_param_title_type_string' => 'The new chat\'s title',
'method_messages.getDhConfig' => 'You cannot use this method directly, instead use $MadelineProto->get_dh_config();', 'method_messages.getDhConfig' => 'You cannot use this method directly, instead use $MadelineProto->getDhConfig();',
'method_messages.getDhConfig_param_version_type_int' => 'You cannot use this method directly, instead use $MadelineProto->get_dh_config();', 'method_messages.getDhConfig_param_version_type_int' => 'You cannot use this method directly, instead use $MadelineProto->getDhConfig();',
'method_messages.getDhConfig_param_random_length_type_int' => 'You cannot use this method directly, instead use $MadelineProto->get_dh_config();', 'method_messages.getDhConfig_param_random_length_type_int' => 'You cannot use this method directly, instead use $MadelineProto->getDhConfig();',
'method_messages.requestEncryption' => 'You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats', 'method_messages.requestEncryption' => 'You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats',
'method_messages.requestEncryption_param_user_id_type_InputUser' => 'You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats', 'method_messages.requestEncryption_param_user_id_type_InputUser' => 'You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats',
'method_messages.requestEncryption_param_g_a_type_bytes' => 'You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats', 'method_messages.requestEncryption_param_g_a_type_bytes' => 'You cannot use this method directly, see https://docs.madelineproto.xyz for more info on handling secret chats',
@ -5976,33 +5976,33 @@ class Lang
'method_photos.getUserPhotos_param_offset_type_int' => 'Offset', 'method_photos.getUserPhotos_param_offset_type_int' => 'Offset',
'method_photos.getUserPhotos_param_max_id_type_long' => 'Maximum ID of photo to return', 'method_photos.getUserPhotos_param_max_id_type_long' => 'Maximum ID of photo to return',
'method_photos.getUserPhotos_param_limit_type_int' => 'Number of photos to return', 'method_photos.getUserPhotos_param_limit_type_int' => 'Number of photos to return',
'method_upload.saveFilePart' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.saveFilePart' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.saveFilePart_param_file_id_type_long' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.saveFilePart_param_file_id_type_long' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.saveFilePart_param_file_part_type_int' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.saveFilePart_param_file_part_type_int' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.saveFilePart_param_bytes_type_bytes' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.saveFilePart_param_bytes_type_bytes' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getFile' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getFile' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getFile_param_location_type_InputFileLocation' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getFile_param_location_type_InputFileLocation' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getFile_param_offset_type_int' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getFile_param_offset_type_int' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getFile_param_limit_type_int' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getFile_param_limit_type_int' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.saveBigFilePart' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.saveBigFilePart' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.saveBigFilePart_param_file_id_type_long' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.saveBigFilePart_param_file_id_type_long' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.saveBigFilePart_param_file_part_type_int' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.saveBigFilePart_param_file_part_type_int' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.saveBigFilePart_param_file_total_parts_type_int' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.saveBigFilePart_param_file_total_parts_type_int' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.saveBigFilePart_param_bytes_type_bytes' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.saveBigFilePart_param_bytes_type_bytes' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getWebFile' => 'Download a file through telegram', 'method_upload.getWebFile' => 'Download a file through telegram',
'method_upload.getWebFile_param_location_type_InputWebFileLocation' => 'The file', 'method_upload.getWebFile_param_location_type_InputWebFileLocation' => 'The file',
'method_upload.getWebFile_param_offset_type_int' => 'The offset in bytes', 'method_upload.getWebFile_param_offset_type_int' => 'The offset in bytes',
'method_upload.getWebFile_param_limit_type_int' => 'The number of bytes to fetch', 'method_upload.getWebFile_param_limit_type_int' => 'The number of bytes to fetch',
'method_upload.getCdnFile' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getCdnFile' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getCdnFile_param_file_token_type_bytes' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getCdnFile_param_file_token_type_bytes' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getCdnFile_param_offset_type_int' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getCdnFile_param_offset_type_int' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getCdnFile_param_limit_type_int' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getCdnFile_param_limit_type_int' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.reuploadCdnFile' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.reuploadCdnFile' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.reuploadCdnFile_param_file_token_type_bytes' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.reuploadCdnFile_param_file_token_type_bytes' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.reuploadCdnFile_param_request_token_type_bytes' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.reuploadCdnFile_param_request_token_type_bytes' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getCdnFileHashes' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getCdnFileHashes' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getCdnFileHashes_param_file_token_type_bytes' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getCdnFileHashes_param_file_token_type_bytes' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_upload.getCdnFileHashes_param_offset_type_int' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getCdnFileHashes_param_offset_type_int' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_help.getConfig' => 'Get server configuration', 'method_help.getConfig' => 'Get server configuration',
'method_help.getNearestDc' => 'Get nearest datacenter', 'method_help.getNearestDc' => 'Get nearest datacenter',
'method_help.getAppUpdate' => 'Get info about app updates', 'method_help.getAppUpdate' => 'Get info about app updates',
@ -6035,7 +6035,7 @@ class Lang
'method_channels.getMessages' => 'Get channel/supergroup messages', 'method_channels.getMessages' => 'Get channel/supergroup messages',
'method_channels.getMessages_param_channel_type_InputChannel' => 'The channel/supergroup', 'method_channels.getMessages_param_channel_type_InputChannel' => 'The channel/supergroup',
'method_channels.getMessages_param_id_type_Vector t' => 'The message IDs', 'method_channels.getMessages_param_id_type_Vector t' => 'The message IDs',
'method_channels.getParticipants' => 'Get channel/supergroup participants (you should use `$MadelineProto->get_pwr_chat($id)` instead)', 'method_channels.getParticipants' => 'Get channel/supergroup participants (you should use `$MadelineProto->getPwrChat($id)` instead)',
'method_channels.getParticipants_param_channel_type_InputChannel' => 'The channel', 'method_channels.getParticipants_param_channel_type_InputChannel' => 'The channel',
'method_channels.getParticipants_param_filter_type_ChannelParticipantsFilter' => 'Member filter', 'method_channels.getParticipants_param_filter_type_ChannelParticipantsFilter' => 'Member filter',
'method_channels.getParticipants_param_offset_type_int' => 'Offset', 'method_channels.getParticipants_param_offset_type_int' => 'Offset',
@ -6046,8 +6046,8 @@ class Lang
'method_channels.getParticipant_param_user_id_type_InputUser' => 'The user to fetch info about', 'method_channels.getParticipant_param_user_id_type_InputUser' => 'The user to fetch info about',
'method_channels.getChannels' => 'Get info about multiple channels/supergroups', 'method_channels.getChannels' => 'Get info about multiple channels/supergroups',
'method_channels.getChannels_param_id_type_Vector t' => 'The channel/supergroup MTProto IDs', 'method_channels.getChannels_param_id_type_Vector t' => 'The channel/supergroup MTProto IDs',
'method_channels.getFullChannel' => 'You cannot use this method directly, use the get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info)', 'method_channels.getFullChannel' => 'You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)',
'method_channels.getFullChannel_param_channel_type_InputChannel' => 'You cannot use this method directly, use the get_pwr_chat, get_info, get_full_info methods instead (see https://docs.madelineproto.xyz for more info)', 'method_channels.getFullChannel_param_channel_type_InputChannel' => 'You cannot use this method directly, use the getPwrChat, getInfo, getFullInfo methods instead (see https://docs.madelineproto.xyz for more info)',
'method_channels.createChannel' => 'Create channel/supergroup', 'method_channels.createChannel' => 'Create channel/supergroup',
'method_channels.createChannel_param_broadcast_type_true' => 'Set this to true to create a channel', 'method_channels.createChannel_param_broadcast_type_true' => 'Set this to true to create a channel',
'method_channels.createChannel_param_megagroup_type_true' => 'Set this to true to create a supergroup', 'method_channels.createChannel_param_megagroup_type_true' => 'Set this to true to create a supergroup',
@ -6195,8 +6195,8 @@ class Lang
'method_langpack.getDifference' => 'Get language pack updates', 'method_langpack.getDifference' => 'Get language pack updates',
'method_langpack.getDifference_param_from_version_type_int' => 'Previous version', 'method_langpack.getDifference_param_from_version_type_int' => 'Previous version',
'method_langpack.getLanguages' => 'Get available languages', 'method_langpack.getLanguages' => 'Get available languages',
'method_auth.sendCode_param_sms_type_type_int' => 'You cannot use this method directly, use the phone_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.sendCode_param_sms_type_type_int' => 'You cannot use this method directly, use the phoneLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.sendCode_param_lang_code_type_string' => 'You cannot use this method directly, use the phone_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.sendCode_param_lang_code_type_string' => 'You cannot use this method directly, use the phoneLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.sendCall' => 'Send verification phone call', 'method_auth.sendCall' => 'Send verification phone call',
'method_auth.sendCall_param_phone_number_type_string' => 'The phone number', 'method_auth.sendCall_param_phone_number_type_string' => 'The phone number',
'method_auth.sendCall_param_phone_code_hash_type_string' => 'The phone code hash', 'method_auth.sendCall_param_phone_code_hash_type_string' => 'The phone code hash',
@ -6357,10 +6357,10 @@ class Lang
'method_contest.saveDeveloperInfo_param_phone_number_type_string' => 'Phone number', 'method_contest.saveDeveloperInfo_param_phone_number_type_string' => 'Phone number',
'method_contest.saveDeveloperInfo_param_age_type_int' => 'Age', 'method_contest.saveDeveloperInfo_param_age_type_int' => 'Age',
'method_contest.saveDeveloperInfo_param_city_type_string' => 'City', 'method_contest.saveDeveloperInfo_param_city_type_string' => 'City',
'method_auth.importBotAuthorization_param_a_type_true' => 'You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.importBotAuthorization_param_a_type_true' => 'You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.importBotAuthorization_param_b_type_true' => 'You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.importBotAuthorization_param_b_type_true' => 'You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.importBotAuthorization_param_c_type_true' => 'You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.importBotAuthorization_param_c_type_true' => 'You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_auth.importBotAuthorization_param_d_type_true' => 'You cannot use this method directly, use the bot_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.importBotAuthorization_param_d_type_true' => 'You cannot use this method directly, use the botLogin method instead (see https://docs.madelineproto.xyz for more info)',
'object_vector' => 'Array', 'object_vector' => 'Array',
'object_resPQ' => 'Contains pq to factorize', 'object_resPQ' => 'Contains pq to factorize',
'object_resPQ_param_nonce_type_int128' => 'Nonce', 'object_resPQ_param_nonce_type_int128' => 'Nonce',
@ -7956,23 +7956,23 @@ class Lang
'object_inputBotInlineResult_param_w_type_int' => 'Width', 'object_inputBotInlineResult_param_w_type_int' => 'Width',
'object_inputBotInlineResult_param_h_type_int' => 'Height', 'object_inputBotInlineResult_param_h_type_int' => 'Height',
'object_inputBotInlineResult_param_duration_type_int' => 'Duration', 'object_inputBotInlineResult_param_duration_type_int' => 'Duration',
'object_inputBotInlineResult_param_send_message_type_InputBotInlineMessage' => 'Message to send', 'object_inputBotInlineResult_param_sendMessage_type_InputBotInlineMessage' => 'Message to send',
'object_inputBotInlineResultPhoto' => 'Bot inline result photo', 'object_inputBotInlineResultPhoto' => 'Bot inline result photo',
'object_inputBotInlineResultPhoto_param_id_type_string' => 'ID', 'object_inputBotInlineResultPhoto_param_id_type_string' => 'ID',
'object_inputBotInlineResultPhoto_param_type_type_string' => 'Type', 'object_inputBotInlineResultPhoto_param_type_type_string' => 'Type',
'object_inputBotInlineResultPhoto_param_photo_type_InputPhoto' => 'Photo', 'object_inputBotInlineResultPhoto_param_photo_type_InputPhoto' => 'Photo',
'object_inputBotInlineResultPhoto_param_send_message_type_InputBotInlineMessage' => 'Message to send', 'object_inputBotInlineResultPhoto_param_sendMessage_type_InputBotInlineMessage' => 'Message to send',
'object_inputBotInlineResultDocument' => 'Bot inline result document', 'object_inputBotInlineResultDocument' => 'Bot inline result document',
'object_inputBotInlineResultDocument_param_id_type_string' => 'ID', 'object_inputBotInlineResultDocument_param_id_type_string' => 'ID',
'object_inputBotInlineResultDocument_param_type_type_string' => 'Type', 'object_inputBotInlineResultDocument_param_type_type_string' => 'Type',
'object_inputBotInlineResultDocument_param_title_type_string' => 'Title', 'object_inputBotInlineResultDocument_param_title_type_string' => 'Title',
'object_inputBotInlineResultDocument_param_description_type_string' => 'Description', 'object_inputBotInlineResultDocument_param_description_type_string' => 'Description',
'object_inputBotInlineResultDocument_param_document_type_InputDocument' => 'Document', 'object_inputBotInlineResultDocument_param_document_type_InputDocument' => 'Document',
'object_inputBotInlineResultDocument_param_send_message_type_InputBotInlineMessage' => 'Message to send', 'object_inputBotInlineResultDocument_param_sendMessage_type_InputBotInlineMessage' => 'Message to send',
'object_inputBotInlineResultGame' => 'Bot inline result game', 'object_inputBotInlineResultGame' => 'Bot inline result game',
'object_inputBotInlineResultGame_param_id_type_string' => 'ID', 'object_inputBotInlineResultGame_param_id_type_string' => 'ID',
'object_inputBotInlineResultGame_param_short_name_type_string' => 'Short name', 'object_inputBotInlineResultGame_param_short_name_type_string' => 'Short name',
'object_inputBotInlineResultGame_param_send_message_type_InputBotInlineMessage' => 'Message to send', 'object_inputBotInlineResultGame_param_sendMessage_type_InputBotInlineMessage' => 'Message to send',
'object_botInlineMessageMediaAuto' => 'Bot inline message media auto', 'object_botInlineMessageMediaAuto' => 'Bot inline message media auto',
'object_botInlineMessageMediaAuto_param_message_type_string' => 'Message', 'object_botInlineMessageMediaAuto_param_message_type_string' => 'Message',
'object_botInlineMessageMediaAuto_param_entities_type_Vector t' => 'Entities', 'object_botInlineMessageMediaAuto_param_entities_type_Vector t' => 'Entities',
@ -8010,7 +8010,7 @@ class Lang
'object_botInlineResult_param_w_type_int' => 'Width', 'object_botInlineResult_param_w_type_int' => 'Width',
'object_botInlineResult_param_h_type_int' => 'Height', 'object_botInlineResult_param_h_type_int' => 'Height',
'object_botInlineResult_param_duration_type_int' => 'Duration', 'object_botInlineResult_param_duration_type_int' => 'Duration',
'object_botInlineResult_param_send_message_type_BotInlineMessage' => 'Message to send', 'object_botInlineResult_param_sendMessage_type_BotInlineMessage' => 'Message to send',
'object_botInlineMediaResult' => 'Bot inline media result', 'object_botInlineMediaResult' => 'Bot inline media result',
'object_botInlineMediaResult_param_id_type_string' => 'ID', 'object_botInlineMediaResult_param_id_type_string' => 'ID',
'object_botInlineMediaResult_param_type_type_string' => 'Type', 'object_botInlineMediaResult_param_type_type_string' => 'Type',
@ -8018,7 +8018,7 @@ class Lang
'object_botInlineMediaResult_param_document_type_Document' => 'Document', 'object_botInlineMediaResult_param_document_type_Document' => 'Document',
'object_botInlineMediaResult_param_title_type_string' => 'Title', 'object_botInlineMediaResult_param_title_type_string' => 'Title',
'object_botInlineMediaResult_param_description_type_string' => 'Description', 'object_botInlineMediaResult_param_description_type_string' => 'Description',
'object_botInlineMediaResult_param_send_message_type_BotInlineMessage' => 'Send message', 'object_botInlineMediaResult_param_sendMessage_type_BotInlineMessage' => 'Send message',
'object_messages.botResults' => 'Bot results', 'object_messages.botResults' => 'Bot results',
'object_messages.botResults_param_gallery_type_true' => 'Gallery?', 'object_messages.botResults_param_gallery_type_true' => 'Gallery?',
'object_messages.botResults_param_query_id_type_long' => 'Query ID', 'object_messages.botResults_param_query_id_type_long' => 'Query ID',
@ -8454,7 +8454,7 @@ class Lang
'object_channelAdminRights_param_add_admins_type_true' => 'Add other admins', 'object_channelAdminRights_param_add_admins_type_true' => 'Add other admins',
'object_channelBannedRights' => 'Banned user rights (when true, the user will NOT be able to do that thing)', 'object_channelBannedRights' => 'Banned user rights (when true, the user will NOT be able to do that thing)',
'object_channelBannedRights_param_view_messages_type_true' => 'Disallow viewing messages', 'object_channelBannedRights_param_view_messages_type_true' => 'Disallow viewing messages',
'object_channelBannedRights_param_send_messages_type_true' => 'Disallow sending messages', 'object_channelBannedRights_param_sendMessages_type_true' => 'Disallow sending messages',
'object_channelBannedRights_param_send_media_type_true' => 'Disallow sending media', 'object_channelBannedRights_param_send_media_type_true' => 'Disallow sending media',
'object_channelBannedRights_param_send_stickers_type_true' => 'Disallow sending stickers', 'object_channelBannedRights_param_send_stickers_type_true' => 'Disallow sending stickers',
'object_channelBannedRights_param_send_gifs_type_true' => 'Disallow sending gifs', 'object_channelBannedRights_param_send_gifs_type_true' => 'Disallow sending gifs',
@ -9128,12 +9128,12 @@ class Lang
'object_botInlineMediaResultDocument_param_id_type_string' => 'ID', 'object_botInlineMediaResultDocument_param_id_type_string' => 'ID',
'object_botInlineMediaResultDocument_param_type_type_string' => 'Type', 'object_botInlineMediaResultDocument_param_type_type_string' => 'Type',
'object_botInlineMediaResultDocument_param_document_type_Document' => 'Document', 'object_botInlineMediaResultDocument_param_document_type_Document' => 'Document',
'object_botInlineMediaResultDocument_param_send_message_type_BotInlineMessage' => 'Send message', 'object_botInlineMediaResultDocument_param_sendMessage_type_BotInlineMessage' => 'Send message',
'object_botInlineMediaResultPhoto' => 'Bot inline media result photo', 'object_botInlineMediaResultPhoto' => 'Bot inline media result photo',
'object_botInlineMediaResultPhoto_param_id_type_string' => 'ID', 'object_botInlineMediaResultPhoto_param_id_type_string' => 'ID',
'object_botInlineMediaResultPhoto_param_type_type_string' => 'Type', 'object_botInlineMediaResultPhoto_param_type_type_string' => 'Type',
'object_botInlineMediaResultPhoto_param_photo_type_Photo' => 'Photo', 'object_botInlineMediaResultPhoto_param_photo_type_Photo' => 'Photo',
'object_botInlineMediaResultPhoto_param_send_message_type_BotInlineMessage' => 'Send message', 'object_botInlineMediaResultPhoto_param_sendMessage_type_BotInlineMessage' => 'Send message',
'object_inputMediaVideo_param_video_type_InputVideo' => 'Video', 'object_inputMediaVideo_param_video_type_InputVideo' => 'Video',
'object_inputMediaAudio_param_audio_type_InputAudio' => 'Audio', 'object_inputMediaAudio_param_audio_type_InputAudio' => 'Audio',
'object_inputMediaDocument_param_document_id_type_InputDocument' => 'Document ID', 'object_inputMediaDocument_param_document_id_type_InputDocument' => 'Document ID',
@ -9836,7 +9836,7 @@ class Lang
'object_chatOnlines_param_onlines_type_int' => 'Onlines', 'object_chatOnlines_param_onlines_type_int' => 'Onlines',
'object_statsURL' => 'Stats URL', 'object_statsURL' => 'Stats URL',
'object_statsURL_param_url_type_string' => 'URL', 'object_statsURL_param_url_type_string' => 'URL',
'method_auth.sendCode_param_settings_type_CodeSettings' => 'You cannot use this method directly, use the phone_login method instead (see https://docs.madelineproto.xyz for more info)', 'method_auth.sendCode_param_settings_type_CodeSettings' => 'You cannot use this method directly, use the phoneLogin method instead (see https://docs.madelineproto.xyz for more info)',
'method_account.getWallPapers_param_hash_type_Vector t' => 'IDs of previously fetched wallpapers', 'method_account.getWallPapers_param_hash_type_Vector t' => 'IDs of previously fetched wallpapers',
'method_account.sendChangePhoneCode_param_settings_type_CodeSettings' => 'Code settings', 'method_account.sendChangePhoneCode_param_settings_type_CodeSettings' => 'Code settings',
'method_account.sendConfirmPhoneCode_param_settings_type_CodeSettings' => 'Code settings', 'method_account.sendConfirmPhoneCode_param_settings_type_CodeSettings' => 'Code settings',
@ -9910,7 +9910,7 @@ class Lang
'object_chatAdminRights_param_add_admins_type_true' => 'Can add other admins?', 'object_chatAdminRights_param_add_admins_type_true' => 'Can add other admins?',
'object_chatBannedRights' => 'Banned rights (when true, the user will NOT be able to do that thing)', 'object_chatBannedRights' => 'Banned rights (when true, the user will NOT be able to do that thing)',
'object_chatBannedRights_param_view_messages_type_true' => 'Can view messages?', 'object_chatBannedRights_param_view_messages_type_true' => 'Can view messages?',
'object_chatBannedRights_param_send_messages_type_true' => 'Can send messages?', 'object_chatBannedRights_param_sendMessages_type_true' => 'Can send messages?',
'object_chatBannedRights_param_send_media_type_true' => 'Can send media?', 'object_chatBannedRights_param_send_media_type_true' => 'Can send media?',
'object_chatBannedRights_param_send_stickers_type_true' => 'Can send stickers?', 'object_chatBannedRights_param_send_stickers_type_true' => 'Can send stickers?',
'object_chatBannedRights_param_send_gifs_type_true' => 'Can send gifs?', 'object_chatBannedRights_param_send_gifs_type_true' => 'Can send gifs?',
@ -10221,7 +10221,7 @@ class Lang
'object_peerLocated_param_expires_type_int' => 'Expiry date', 'object_peerLocated_param_expires_type_int' => 'Expiry date',
'object_peerLocated_param_distance_type_int' => 'Distance', 'object_peerLocated_param_distance_type_int' => 'Distance',
'method_account.registerDevice_param_no_muted_type_true' => 'Idk yet', 'method_account.registerDevice_param_no_muted_type_true' => 'Idk yet',
'method_upload.getFile_param_precise_type_true' => 'You cannot use this method directly, use the upload, download_to_stream, download_to_file, download_to_dir methods instead; see https://docs.madelineproto.xyz for more info', 'method_upload.getFile_param_precise_type_true' => 'You cannot use this method directly, use the upload, downloadToStream, downloadToFile, downloadToDir methods instead; see https://docs.madelineproto.xyz for more info',
'method_channels.editAdmin_param_rank_type_string' => 'Admin rank, an arbitrary string', 'method_channels.editAdmin_param_rank_type_string' => 'Admin rank, an arbitrary string',
'method_channels.toggleSlowMode' => 'Toggle slow mode', 'method_channels.toggleSlowMode' => 'Toggle slow mode',
'method_channels.toggleSlowMode_param_channel_type_InputChannel' => 'Supergroup', 'method_channels.toggleSlowMode_param_channel_type_InputChannel' => 'Supergroup',

View File

@ -81,7 +81,7 @@ class HttpWaitLoop extends ResumableSignalLoop
} }
$API->logger->logger("DC $datacenter: request {$connection->countHttpSent()}, response {$connection->countHttpReceived()}"); $API->logger->logger("DC $datacenter: request {$connection->countHttpSent()}, response {$connection->countHttpReceived()}");
if ($connection->countHttpSent() === $connection->countHttpReceived() && (!empty($connection->pending_outgoing) || (!empty($connection->new_outgoing) && !$connection->hasPendingCalls()))) { if ($connection->countHttpSent() === $connection->countHttpReceived() && (!empty($connection->pending_outgoing) || (!empty($connection->new_outgoing) && !$connection->hasPendingCalls()))) {
yield $connection->sendMessage(['_' => 'http_wait', 'body' => ['max_wait' => 30000, 'wait_after' => 0, 'max_delay' => 0], 'content_related' => true, 'unencrypted' => false, 'method' => false]); yield $connection->sendMessage(['_' => 'http_wait', 'body' => ['max_wait' => 30000, 'wait_after' => 0, 'max_delay' => 0], 'contentRelated' => true, 'unencrypted' => false, 'method' => false]);
} }
$API->logger->logger("DC $datacenter: request {$connection->countHttpSent()}, response {$connection->countHttpReceived()}"); $API->logger->logger("DC $datacenter: request {$connection->countHttpSent()}, response {$connection->countHttpReceived()}");
} }

View File

@ -127,7 +127,7 @@ class ReadLoop extends SignalLoop
$connection->httpReceived(); $connection->httpReceived();
Loop::defer([$connection, 'handle_messages']); Loop::defer([$connection, 'handleMessages']);
if ($shared->isHttp()) { if ($shared->isHttp()) {
Loop::defer([$connection, 'pingHttpWaiter']); Loop::defer([$connection, 'pingHttpWaiter']);

View File

@ -182,7 +182,7 @@ class WriteLoop extends ResumableSignalLoop
$temporary_keys = []; $temporary_keys = [];
if (\count($to_ack = $connection->ack_queue)) { if (\count($to_ack = $connection->ack_queue)) {
foreach (\array_chunk($connection->ack_queue, 8192) as $acks) { foreach (\array_chunk($connection->ack_queue, 8192) as $acks) {
$connection->pending_outgoing[$connection->pending_outgoing_key] = ['_' => 'msgs_ack', 'serialized_body' => yield $this->API->serializeObject(['type' => 'msgs_ack'], ['msg_ids' => $acks], 'msgs_ack'), 'content_related' => false, 'unencrypted' => false, 'method' => false]; $connection->pending_outgoing[$connection->pending_outgoing_key] = ['_' => 'msgs_ack', 'serialized_body' => yield $this->API->serializeObject(['type' => 'msgs_ack'], ['msg_ids' => $acks], 'msgs_ack'), 'contentRelated' => false, 'unencrypted' => false, 'method' => false];
$temporary_keys[$connection->pending_outgoing_key] = true; $temporary_keys[$connection->pending_outgoing_key] = true;
$API->logger->logger("Adding msgs_ack {$connection->pending_outgoing_key}", Logger::ULTRA_VERBOSE); $API->logger->logger("Adding msgs_ack {$connection->pending_outgoing_key}", Logger::ULTRA_VERBOSE);
$connection->pending_outgoing_key++; $connection->pending_outgoing_key++;
@ -200,7 +200,7 @@ class WriteLoop extends ResumableSignalLoop
} }
if ($shared->isHttp() && !$has_http_wait) { if ($shared->isHttp() && !$has_http_wait) {
$API->logger->logger("Adding http_wait {$connection->pending_outgoing_key}", Logger::ULTRA_VERBOSE); $API->logger->logger("Adding http_wait {$connection->pending_outgoing_key}", Logger::ULTRA_VERBOSE);
$connection->pending_outgoing[$connection->pending_outgoing_key] = ['_' => 'http_wait', 'serialized_body' => yield $this->API->serializeObject(['type' => ''], ['_' => 'http_wait', 'max_wait' => 30000, 'wait_after' => 0, 'max_delay' => 0], 'http_wait'), 'content_related' => true, 'unencrypted' => false, 'method' => true]; $connection->pending_outgoing[$connection->pending_outgoing_key] = ['_' => 'http_wait', 'serialized_body' => yield $this->API->serializeObject(['type' => ''], ['_' => 'http_wait', 'max_wait' => 30000, 'wait_after' => 0, 'max_delay' => 0], 'http_wait'), 'contentRelated' => true, 'unencrypted' => false, 'method' => true];
$temporary_keys[$connection->pending_outgoing_key] = true; $temporary_keys[$connection->pending_outgoing_key] = true;
$connection->pending_outgoing_key++; $connection->pending_outgoing_key++;
} }
@ -234,7 +234,7 @@ class WriteLoop extends ResumableSignalLoop
$API->logger->logger("Sending {$message['_']} as encrypted message to DC {$datacenter}", \danog\MadelineProto\Logger::ULTRA_VERBOSE); $API->logger->logger("Sending {$message['_']} as encrypted message to DC {$datacenter}", \danog\MadelineProto\Logger::ULTRA_VERBOSE);
$MTmessage = ['_' => 'MTmessage', 'msg_id' => $message_id, 'body' => $message['serialized_body'], 'seqno' => $connection->generateOutSeqNo($message['content_related'])]; $MTmessage = ['_' => 'MTmessage', 'msg_id' => $message_id, 'body' => $message['serialized_body'], 'seqno' => $connection->generateOutSeqNo($message['contentRelated'])];
if (isset($message['method']) && $message['method'] && $message['_'] !== 'http_wait') { if (isset($message['method']) && $message['method'] && $message['_'] !== 'http_wait') {
if (!$shared->getTempAuthKey()->isInited() && $message['_'] !== 'auth.bindTempAuthKey' && !$inited) { if (!$shared->getTempAuthKey()->isInited() && $message['_'] !== 'auth.bindTempAuthKey' && !$inited) {
@ -312,7 +312,7 @@ class WriteLoop extends ResumableSignalLoop
$API->logger->logger("Wrapping in msg_container ($count messages of total size $total_length) as encrypted message for DC {$datacenter}", \danog\MadelineProto\Logger::ULTRA_VERBOSE); $API->logger->logger("Wrapping in msg_container ($count messages of total size $total_length) as encrypted message for DC {$datacenter}", \danog\MadelineProto\Logger::ULTRA_VERBOSE);
$message_id = $connection->generateMessageId(); $message_id = $connection->generateMessageId();
$connection->pending_outgoing[$connection->pending_outgoing_key] = ['_' => 'msg_container', 'container' => \array_values($keys), 'content_related' => false, 'method' => false, 'unencrypted' => false]; $connection->pending_outgoing[$connection->pending_outgoing_key] = ['_' => 'msg_container', 'container' => \array_values($keys), 'contentRelated' => false, 'method' => false, 'unencrypted' => false];
//var_dumP("container ".bin2hex($message_id)); //var_dumP("container ".bin2hex($message_id));
$keys[$connection->pending_outgoing_key++] = $message_id; $keys[$connection->pending_outgoing_key++] = $message_id;

View File

@ -50,11 +50,11 @@ class FeedLoop extends ResumableSignalLoop
$API = $this->API; $API = $this->API;
$this->updater = $API->updaters[$this->channelId]; $this->updater = $API->updaters[$this->channelId];
if (!$this->API->settings['updates']['handle_updates']) { if (!$this->API->settings['updates']['handleUpdates']) {
return false; return false;
} }
while (!$this->API->settings['updates']['handle_updates'] || !$API->hasAllAuth()) { while (!$this->API->settings['updates']['handleUpdates'] || !$API->hasAllAuth()) {
if (yield $this->waitSignal($this->pause())) { if (yield $this->waitSignal($this->pause())) {
return; return;
} }
@ -62,7 +62,7 @@ class FeedLoop extends ResumableSignalLoop
$this->state = $this->channelId === false ? (yield $API->loadUpdateState()) : $API->loadChannelState($this->channelId); $this->state = $this->channelId === false ? (yield $API->loadUpdateState()) : $API->loadChannelState($this->channelId);
while (true) { while (true) {
while (!$this->API->settings['updates']['handle_updates'] || !$API->hasAllAuth()) { while (!$this->API->settings['updates']['handleUpdates'] || !$API->hasAllAuth()) {
if (yield $this->waitSignal($this->pause())) { if (yield $this->waitSignal($this->pause())) {
return; return;
} }
@ -70,7 +70,7 @@ class FeedLoop extends ResumableSignalLoop
if (yield $this->waitSignal($this->pause())) { if (yield $this->waitSignal($this->pause())) {
return; return;
} }
if (!$this->API->settings['updates']['handle_updates']) { if (!$this->API->settings['updates']['handleUpdates']) {
return; return;
} }
$API->logger->logger("Resumed $this"); $API->logger->logger("Resumed $this");

View File

@ -42,11 +42,11 @@ class SeqLoop extends ResumableSignalLoop
$API = $this->API; $API = $this->API;
$this->feeder = $API->feeders[false]; $this->feeder = $API->feeders[false];
if (!$this->API->settings['updates']['handle_updates']) { if (!$this->API->settings['updates']['handleUpdates']) {
return false; return false;
} }
while (!$this->API->settings['updates']['handle_updates'] || !$API->hasAllAuth()) { while (!$this->API->settings['updates']['handleUpdates'] || !$API->hasAllAuth()) {
if (yield $this->waitSignal($this->pause())) { if (yield $this->waitSignal($this->pause())) {
return; return;
} }
@ -54,7 +54,7 @@ class SeqLoop extends ResumableSignalLoop
$this->state = yield $API->loadUpdateState(); $this->state = yield $API->loadUpdateState();
while (true) { while (true) {
while (!$this->API->settings['updates']['handle_updates'] || !$API->hasAllAuth()) { while (!$this->API->settings['updates']['handleUpdates'] || !$API->hasAllAuth()) {
if (yield $this->waitSignal($this->pause())) { if (yield $this->waitSignal($this->pause())) {
return; return;
} }
@ -62,7 +62,7 @@ class SeqLoop extends ResumableSignalLoop
if (yield $this->waitSignal($this->pause())) { if (yield $this->waitSignal($this->pause())) {
return; return;
} }
if (!$this->API->settings['updates']['handle_updates']) { if (!$this->API->settings['updates']['handleUpdates']) {
return; return;
} }
while ($this->incomingUpdates) { while ($this->incomingUpdates) {

View File

@ -47,7 +47,7 @@ class UpdateLoop extends ResumableSignalLoop
$API = $this->API; $API = $this->API;
$feeder = $this->feeder = $API->feeders[$this->channelId]; $feeder = $this->feeder = $API->feeders[$this->channelId];
while (!$API->settings['updates']['handle_updates'] || !$API->hasAllAuth()) { while (!$API->settings['updates']['handleUpdates'] || !$API->hasAllAuth()) {
if (yield $this->waitSignal($this->pause())) { if (yield $this->waitSignal($this->pause())) {
$API->logger->logger("Exiting $this due to signal"); $API->logger->logger("Exiting $this due to signal");
@ -59,7 +59,7 @@ class UpdateLoop extends ResumableSignalLoop
$timeout = $API->settings['updates']['getdifference_interval']; $timeout = $API->settings['updates']['getdifference_interval'];
$first = true; $first = true;
while (true) { while (true) {
while (!$API->settings['updates']['handle_updates'] || !$API->hasAllAuth()) { while (!$API->settings['updates']['handleUpdates'] || !$API->hasAllAuth()) {
if (yield $this->waitSignal($this->pause())) { if (yield $this->waitSignal($this->pause())) {
$API->logger->logger("Exiting $this due to signal"); $API->logger->logger("Exiting $this due to signal");

View File

@ -32,7 +32,7 @@ class Lua
throw new Exception(\danog\MadelineProto\Lang::$current_lang['script_not_exist']); throw new Exception(\danog\MadelineProto\Lang::$current_lang['script_not_exist']);
} }
$this->MadelineProto = $MadelineProto; $this->MadelineProto = $MadelineProto;
$this->MadelineProto->settings['updates']['handle_updates'] = true; $this->MadelineProto->settings['updates']['handleUpdates'] = true;
$this->MadelineProto->API->datacenter->sockets[$this->MadelineProto->settings['connection_settings']['default_dc']]->startUpdateLoop(); $this->MadelineProto->API->datacenter->sockets[$this->MadelineProto->settings['connection_settings']['default_dc']]->startUpdateLoop();
$this->script = $script; $this->script = $script;
@ -48,8 +48,8 @@ class Lua
{ {
$this->Lua = new \Lua($this->script); $this->Lua = new \Lua($this->script);
$this->madelineproto_lua = 1; $this->madelineproto_lua = 1;
$this->Lua->registerCallback('tdcli_function', [$this, 'tdcli_function']); $this->Lua->registerCallback('tdcliFunction', [$this, 'tdcliFunction']);
$this->Lua->registerCallback('madeline_function', [$this, 'madeline_function']); $this->Lua->registerCallback('madelineFunction', [$this, 'madelineFunction']);
$this->Lua->registerCallback('var_dump', 'var_dump'); $this->Lua->registerCallback('var_dump', 'var_dump');
foreach (\get_class_methods($this->MadelineProto->API) as $method) { foreach (\get_class_methods($this->MadelineProto->API) as $method) {
$this->Lua->registerCallback($method, [$this->MadelineProto, $method]); $this->Lua->registerCallback($method, [$this->MadelineProto, $method]);

File diff suppressed because one or more lines are too long

View File

@ -190,7 +190,7 @@ trait CallHandler
[ [
'_' => $method, '_' => $method,
'type' => $this->API->methods->findByMethod($method)['type'], 'type' => $this->API->methods->findByMethod($method)['type'],
'content_related' => $this->contentRelated($method), 'contentRelated' => $this->contentRelated($method),
'promise' => $deferred, 'promise' => $deferred,
'method' => true, 'method' => true,
'unencrypted' => !$this->shared->hasTempAuthKey() && \strpos($method, '.') === false 'unencrypted' => !$this->shared->hasTempAuthKey() && \strpos($method, '.') === false
@ -225,7 +225,7 @@ trait CallHandler
*/ */
public function objectCall(string $object, $args = [], array $aargs = ['msg_id' => null]): \Generator public function objectCall(string $object, $args = [], array $aargs = ['msg_id' => null]): \Generator
{ {
$message = ['_' => $object, 'body' => $args, 'content_related' => $this->contentRelated($object), 'unencrypted' => !$this->shared->hasTempAuthKey(), 'method' => false]; $message = ['_' => $object, 'body' => $args, 'contentRelated' => $this->contentRelated($object), 'unencrypted' => !$this->shared->hasTempAuthKey(), 'method' => false];
if (isset($aargs['promise'])) { if (isset($aargs['promise'])) {
$message['promise'] = $aargs['promise']; $message['promise'] = $aargs['promise'];
} }

View File

@ -370,7 +370,7 @@ trait ResponseHandler
if (\strpos($response['error_message'], 'FILE_REFERENCE_') === 0) { if (\strpos($response['error_message'], 'FILE_REFERENCE_') === 0) {
$this->logger->logger("Got {$response['error_message']}, refreshing file reference and repeating method call..."); $this->logger->logger("Got {$response['error_message']}, refreshing file reference and repeating method call...");
$request['refresh_references'] = true; $request['refreshReferences'] = true;
if (isset($request['serialized_body'])) { if (isset($request['serialized_body'])) {
unset($request['serialized_body']); unset($request['serialized_body']);
} }
@ -389,7 +389,7 @@ trait ResponseHandler
return; return;
} }
if (\in_array($response['error_message'], ['MSGID_DECREASE_RETRY', 'RPC_CALL_FAIL', 'PERSISTENT_TIMESTAMP_OUTDATED', 'RPC_MCGET_FAIL', 'no workers running'])) { if (\in_array($response['error_message'], ['MSGID_DECREASE_RETRY', 'RPC_CALL_FAIL', 'PERSISTENT_TIMESTAMP_OUTDATED', 'RPC_MCGET_FAIL', 'no workers running'])) {
Loop::delay(1 * 1000, [$this, 'method_recall'], ['message_id' => $request_id, ]); Loop::delay(1 * 1000, [$this, 'methodRecall'], ['message_id' => $request_id, ]);
return; return;
} }
$this->gotResponseForOutgoingMessageId($request_id); $this->gotResponseForOutgoingMessageId($request_id);
@ -408,7 +408,7 @@ trait ResponseHandler
if (isset($request['user_related']) && $request['user_related']) { if (isset($request['user_related']) && $request['user_related']) {
$this->API->settings['connection_settings']['default_dc'] = $this->API->authorized_dc = $this->API->datacenter->curdc; $this->API->settings['connection_settings']['default_dc'] = $this->API->authorized_dc = $this->API->datacenter->curdc;
} }
Loop::defer([$this, 'method_recall'], ['message_id' => $request_id, 'datacenter' => $datacenter]); Loop::defer([$this, 'methodRecall'], ['message_id' => $request_id, 'datacenter' => $datacenter]);
//$this->API->methodRecall('', ['message_id' => $request_id, 'datacenter' => $datacenter, 'postpone' => true]); //$this->API->methodRecall('', ['message_id' => $request_id, 'datacenter' => $datacenter, 'postpone' => true]);
return; return;
@ -522,7 +522,7 @@ trait ResponseHandler
$this->logger->logger('Flood, waiting '.$seconds.' seconds before repeating async call...', \danog\MadelineProto\Logger::NOTICE); $this->logger->logger('Flood, waiting '.$seconds.' seconds before repeating async call...', \danog\MadelineProto\Logger::NOTICE);
$request['sent'] += $seconds; $request['sent'] += $seconds;
Loop::delay($seconds * 1000, [$this, 'method_recall'], ['message_id' => $request_id, ]); Loop::delay($seconds * 1000, [$this, 'methodRecall'], ['message_id' => $request_id, ]);
return; return;
} }

View File

@ -31,9 +31,9 @@ trait SeqNoHandler
public $session_id; public $session_id;
public function generateOutSeqNo($content_related) public function generateOutSeqNo($contentRelated)
{ {
$in = $content_related ? 1 : 0; $in = $contentRelated ? 1 : 0;
$value = $this->session_out_seq_no; $value = $this->session_out_seq_no;
$this->session_out_seq_no += $in; $this->session_out_seq_no += $in;
//$this->API->logger->logger("OUT: $value + $in = ".$this->session_out_seq_no); //$this->API->logger->logger("OUT: $value + $in = ".$this->session_out_seq_no);
@ -50,9 +50,9 @@ trait SeqNoHandler
} }
} }
public function generateInSeqNo($content_related) public function generateInSeqNo($contentRelated)
{ {
$in = $content_related ? 1 : 0; $in = $contentRelated ? 1 : 0;
$value = $this->session_in_seq_no; $value = $this->session_in_seq_no;
$this->session_in_seq_no += $in; $this->session_in_seq_no += $in;
//$this->API->logger->logger("IN: $value + $in = ".$this->session_in_seq_no); //$this->API->logger->logger("IN: $value + $in = ".$this->session_in_seq_no);

View File

@ -550,7 +550,7 @@ trait AuthKeyHandler
$temp_auth_key_id = $datacenterConnection->getTempAuthKey()->getID(); $temp_auth_key_id = $datacenterConnection->getTempAuthKey()->getID();
$perm_auth_key_id = $datacenterConnection->getPermAuthKey()->getID(); $perm_auth_key_id = $datacenterConnection->getPermAuthKey()->getID();
$temp_session_id = $connection->session_id; $temp_session_id = $connection->session_id;
$message_data = yield $this->serializeObject(['type' => 'bind_auth_key_inner'], ['nonce' => $nonce, 'temp_auth_key_id' => $temp_auth_key_id, 'perm_auth_key_id' => $perm_auth_key_id, 'temp_session_id' => $temp_session_id, 'expires_at' => $expires_at], 'bind_temp_auth_key_inner'); $message_data = yield $this->serializeObject(['type' => 'bind_auth_key_inner'], ['nonce' => $nonce, 'temp_auth_key_id' => $temp_auth_key_id, 'perm_auth_key_id' => $perm_auth_key_id, 'temp_session_id' => $temp_session_id, 'expires_at' => $expires_at], 'bindTempAuthKey_inner');
$message_id = $connection->generateMessageId(); $message_id = $connection->generateMessageId();
$seq_no = 0; $seq_no = 0;
$encrypted_data = $this->random(16).$message_id.\pack('VV', $seq_no, \strlen($message_data)).$message_data; $encrypted_data = $this->random(16).$message_id.\pack('VV', $seq_no, \strlen($message_data)).$message_data;

View File

@ -27,7 +27,7 @@ use Amp\Promise;
trait CallHandler trait CallHandler
{ {
/** /**
* Synchronous wrapper for method_call. * Synchronous wrapper for methodCall.
* *
* @param string $method Method name * @param string $method Method name
* @param array $args Arguments * @param array $args Arguments

View File

@ -807,15 +807,15 @@ trait Files
header('Content-Transfer-Encoding: Binary'); header('Content-Transfer-Encoding: Binary');
header('Accept-Ranges: bytes'); header('Accept-Ranges: bytes');
//header('Content-disposition: attachment: filename="'.basename($select['file_path']).'"'); //header('Content-disposition: attachment: filename="'.basename($select['file_path']).'"');
$MadelineProto->download_to_stream($select['file_id'], fopen('php://output', 'w'), function ($percent) { $MadelineProto->downloadToStream($select['file_id'], fopen('php://output', 'w'), function ($percent) {
flush(); flush();
ob_flush(); ob_flush();
\danog\MadelineProto\Logger::log('Download status: '.$percent.'%'); \danog\MadelineProto\Logger::log('Download status: '.$percent.'%');
}, $seek_start, $seek_end + 1); }, $seek_start, $seek_end + 1);
//analytics(true, $file_path, $MadelineProto->get_self()['id'], $dbuser, $dbpassword); //analytics(true, $file_path, $MadelineProto->getSelf()['id'], $dbuser, $dbpassword);
$MadelineProto->API->getting_state = false; $MadelineProto->API->getting_state = false;
$MadelineProto->API->storeDb([], true); $MadelineProto->API->storeDb([], true);
$MadelineProto->API->reset_session(); $MadelineProto->API->resetSession();
} else { } else {
if ($seek_start > 0 || $seek_end < $select['file_size'] - 1) { if ($seek_start > 0 || $seek_end < $select['file_size'] - 1) {
header('HTTP/1.1 206 Partial Content'); header('HTTP/1.1 206 Partial Content');

View File

@ -496,7 +496,7 @@ class ReferenceDatabase implements TLCallback
if (isset($this->API->full_chats[$origin['peer']]['last_update'])) { if (isset($this->API->full_chats[$origin['peer']]['last_update'])) {
$this->API->full_chats[$origin['peer']]['last_update'] = 0; $this->API->full_chats[$origin['peer']]['last_update'] = 0;
} }
$this->API->get_full_info($origin['peer']); $this->API->getFullInfo($origin['peer']);
break; break;
// Peer (default photo ID) // Peer (default photo ID)
case self::USER_PHOTO_ORIGIN: case self::USER_PHOTO_ORIGIN:

View File

@ -35,20 +35,20 @@ trait UpdateHandler
public function pwrUpdateHandler($update) public function pwrUpdateHandler($update)
{ {
if (isset($this->settings['pwr']['update_handler'])) { if (isset($this->settings['pwr']['updateHandler'])) {
if (\is_array($this->settings['pwr']['update_handler']) && $this->settings['pwr']['update_handler'][0] === false) { if (\is_array($this->settings['pwr']['updateHandler']) && $this->settings['pwr']['updateHandler'][0] === false) {
$this->settings['pwr']['update_handler'] = $this->settings['pwr']['update_handler'][1]; $this->settings['pwr']['updateHandler'] = $this->settings['pwr']['updateHandler'][1];
} }
if (\is_string($this->settings['pwr']['update_handler'])) { if (\is_string($this->settings['pwr']['updateHandler'])) {
return $this->{$this->settings['pwr']['update_handler']}($update); return $this->{$this->settings['pwr']['updateHandler']}($update);
} }
\in_array($this->settings['pwr']['update_handler'], [['danog\\MadelineProto\\API', 'get_updates_update_handler'], 'get_updates_update_handler']) ? $this->getUpdatesUpdateHandler($update) : $this->settings['pwr']['update_handler']($update); \in_array($this->settings['pwr']['updateHandler'], [['danog\\MadelineProto\\API', 'getUpdatesUpdateHandler'], 'getUpdatesUpdateHandler']) ? $this->getUpdatesUpdateHandler($update) : $this->settings['pwr']['updateHandler']($update);
} }
} }
public function getUpdatesUpdateHandler($update) public function getUpdatesUpdateHandler($update)
{ {
if (!$this->settings['updates']['handle_updates']) { if (!$this->settings['updates']['handleUpdates']) {
return; return;
} }
$this->updates[$this->updates_key++] = $update; $this->updates[$this->updates_key++] = $update;
@ -56,8 +56,8 @@ trait UpdateHandler
public function getUpdates($params = []) public function getUpdates($params = [])
{ {
if (!$this->settings['updates']['handle_updates']) { if (!$this->settings['updates']['handleUpdates']) {
$this->settings['updates']['handle_updates'] = true; $this->settings['updates']['handleUpdates'] = true;
$this->startUpdateSystem(); $this->startUpdateSystem();
} }
if (!$this->settings['updates']['run_callback']) { if (!$this->settings['updates']['run_callback']) {
@ -173,7 +173,7 @@ trait UpdateHandler
public function handleUpdates($updates, $actual_updates = null) public function handleUpdates($updates, $actual_updates = null)
{ {
if (!$this->settings['updates']['handle_updates']) { if (!$this->settings['updates']['handleUpdates']) {
return; return;
} }
if ($actual_updates) { if ($actual_updates) {
@ -365,7 +365,7 @@ trait UpdateHandler
//if ($update['_'] === 'updateServiceNotification' && strpos($update['type'], 'AUTH_KEY_DROP_') === 0) { //if ($update['_'] === 'updateServiceNotification' && strpos($update['type'], 'AUTH_KEY_DROP_') === 0) {
//} //}
if (!$this->settings['updates']['handle_updates']) { if (!$this->settings['updates']['handleUpdates']) {
return; return;
} }
if (isset($update['message']['_']) && $update['message']['_'] === 'messageEmpty') { if (isset($update['message']['_']) && $update['message']['_'] === 'messageEmpty') {
@ -375,7 +375,7 @@ trait UpdateHandler
$update['message']['out'] = true; $update['message']['out'] = true;
} }
//$this->logger->logger('Saving an update of type '.$update['_'].'...', \danog\MadelineProto\Logger::ULTRA_VERBOSE); //$this->logger->logger('Saving an update of type '.$update['_'].'...', \danog\MadelineProto\Logger::ULTRA_VERBOSE);
if (isset($this->settings['pwr']['strict']) && $this->settings['pwr']['strict'] && isset($this->settings['pwr']['update_handler'])) { if (isset($this->settings['pwr']['strict']) && $this->settings['pwr']['strict'] && isset($this->settings['pwr']['updateHandler'])) {
$this->pwrUpdateHandler($update); $this->pwrUpdateHandler($update);
} elseif ($this->settings['updates']['run_callback']) { } elseif ($this->settings['updates']['run_callback']) {
$this->getUpdatesUpdateHandler($update); $this->getUpdatesUpdateHandler($update);

View File

@ -38,7 +38,7 @@ class Magic
public static $BIG_ENDIAN = false; public static $BIG_ENDIAN = false;
public static $bigint = true; public static $bigint = true;
public static $isatty = false; public static $isatty = false;
public static $is_fork = false; public static $isFork = false;
public static $can_getmypid = true; public static $can_getmypid = true;
public static $can_parallel = false; public static $can_parallel = false;
public static $can_getcwd = false; public static $can_getcwd = false;
@ -76,7 +76,7 @@ class Magic
public static function classExists() public static function classExists()
{ {
\set_error_handler(['\\danog\\MadelineProto\\Exception', 'ExceptionErrorHandler']); \set_error_handler(['\\danog\\MadelineProto\\Exception', 'ExceptionErrorHandler']);
\set_exception_handler(['\\danog\\MadelineProto\\Exception', 'ExceptionHandler']); \set_exceptionHandler(['\\danog\\MadelineProto\\Exception', 'ExceptionHandler']);
if (!self::$inited) { if (!self::$inited) {
if (!\defined('\\phpseclib\\Crypt\\Common\\SymmetricKey::MODE_IGE') || \phpseclib\Crypt\Common\SymmetricKey::MODE_IGE !== 7) { if (!\defined('\\phpseclib\\Crypt\\Common\\SymmetricKey::MODE_IGE') || \phpseclib\Crypt\Common\SymmetricKey::MODE_IGE !== 7) {
throw new Exception(\danog\MadelineProto\Lang::$current_lang['phpseclib_fork']); throw new Exception(\danog\MadelineProto\Lang::$current_lang['phpseclib_fork']);
@ -202,7 +202,7 @@ class Magic
public static function isFork() public static function isFork()
{ {
if (self::$is_fork) { if (self::$isFork) {
return true; return true;
} }
if (!self::$can_getmypid) { if (!self::$can_getmypid) {
@ -214,7 +214,7 @@ class Magic
self::$pid = \getmypid(); self::$pid = \getmypid();
} }
return self::$is_fork = self::$pid !== \getmypid(); return self::$isFork = self::$pid !== \getmypid();
} catch (\danog\MadelineProto\Exception $e) { } catch (\danog\MadelineProto\Exception $e) {
return self::$can_getmypid = false; return self::$can_getmypid = false;
} }

View File

@ -121,7 +121,7 @@ class RPCErrorException extends \Exception
$additional = []; $additional = [];
foreach ($this->getTrace() as $level) { foreach ($this->getTrace() as $level) {
if (isset($level['function']) && $level['function'] === 'method_call') { if (isset($level['function']) && $level['function'] === 'methodCall') {
$this->line = $level['line']; $this->line = $level['line'];
$this->file = $level['file']; $this->file = $level['file'];
$additional = $level['args']; $additional = $level['args'];

View File

@ -46,9 +46,9 @@ class Server
public function start() public function start()
{ {
\pcntl_signal(SIGTERM, [$this, 'sig_handler']); \pcntl_signal(SIGTERM, [$this, 'sigHandler']);
\pcntl_signal(SIGINT, [$this, 'sig_handler']); \pcntl_signal(SIGINT, [$this, 'sigHandler']);
\pcntl_signal(SIGCHLD, [$this, 'sig_handler']); \pcntl_signal(SIGCHLD, [$this, 'sigHandler']);
$this->sock = new \Socket($this->settings['type'], SOCK_STREAM, $this->settings['protocol']); $this->sock = new \Socket($this->settings['type'], SOCK_STREAM, $this->settings['protocol']);
$this->sock->bind($this->settings['address'], $this->settings['port']); $this->sock->bind($this->settings['address'], $this->settings['port']);

View File

@ -104,7 +104,7 @@ class Handler extends \danog\MadelineProto\Connection
$buffer = ''; $buffer = '';
} else { } else {
$time = \time(); $time = \time();
$message = $this->read_message(); $message = $this->readMessage();
} }
} catch (\danog\MadelineProto\NothingInTheSocketException $e) { } catch (\danog\MadelineProto\NothingInTheSocketException $e) {
echo $e; echo $e;
@ -148,10 +148,10 @@ class Handler extends \danog\MadelineProto\Connection
if ($method[0] === '__construct') { if ($method[0] === '__construct') {
if (\count($args) === 1 && \is_array($args[0])) { if (\count($args) === 1 && \is_array($args[0])) {
$args[0]['logger'] = ['logger' => 4, 'logger_param' => [$this, 'logger']]; $args[0]['logger'] = ['logger' => 4, 'logger_param' => [$this, 'logger']];
$args[0]['updates']['callback'] = [$this, 'update_handler']; $args[0]['updates']['callback'] = [$this, 'updateHandler'];
} elseif (\count($args) === 2 && \is_array($args[1])) { } elseif (\count($args) === 2 && \is_array($args[1])) {
$args[1]['logger'] = ['logger' => 4, 'logger_param' => [$this, 'logger']]; $args[1]['logger'] = ['logger' => 4, 'logger_param' => [$this, 'logger']];
$args[1]['updates']['callback'] = [$this, 'update_handler']; $args[1]['updates']['callback'] = [$this, 'updateHandler'];
} }
$this->madeline = new \danog\MadelineProto\API(...$args); $this->madeline = new \danog\MadelineProto\API(...$args);
@ -227,7 +227,7 @@ class Handler extends \danog\MadelineProto\Connection
$tl = false; $tl = false;
foreach (\array_reverse($e->getTrace()) as $k => $frame) { foreach (\array_reverse($e->getTrace()) as $k => $frame) {
$tl_frame = ['_' => 'socketTLFrame']; $tl_frame = ['_' => 'socketTLFrame'];
if (isset($frame['function']) && \in_array($frame['function'], ['serialize_params', 'serialize_object'])) { if (isset($frame['function']) && \in_array($frame['function'], ['serializeParams', 'serializeObject'])) {
if ($frame['args'][2] !== '') { if ($frame['args'][2] !== '') {
$tl_frame['tl_param'] = (string) $frame['args'][2]; $tl_frame['tl_param'] = (string) $frame['args'][2];
$tl = true; $tl = true;
@ -290,7 +290,7 @@ class Handler extends \danog\MadelineProto\Connection
} }
try { try {
$this->send_message($message); $this->sendMessage($message);
} catch (\danog\MadelineProto\Exception $e) { } catch (\danog\MadelineProto\Exception $e) {
$this->__destruct(); $this->__destruct();
die; die;

View File

@ -89,11 +89,11 @@ class Proxy extends \danog\MadelineProto\Connection
\Socket::select($read, $write, $except, $timeout); \Socket::select($read, $write, $except, $timeout);
if (isset($read[0])) { if (isset($read[0])) {
//\danog\MadelineProto\Logger::log("Will write to DC $dc on ".\danog\MadelineProto\Magic::$pid); //\danog\MadelineProto\Logger::log("Will write to DC $dc on ".\danog\MadelineProto\Magic::$pid);
$socket->send_message($this->read_message()); $socket->sendMessage($this->readMessage());
} }
if (isset($read[1])) { if (isset($read[1])) {
//\danog\MadelineProto\Logger::log("Will read from DC $dc on ".\danog\MadelineProto\Magic::$pid); //\danog\MadelineProto\Logger::log("Will read from DC $dc on ".\danog\MadelineProto\Magic::$pid);
$this->send_message($socket->read_message()); $this->sendMessage($socket->readMessage());
} }
if (empty($read)) { if (empty($read)) {
throw new \danog\MadelineProto\NothingInTheSocketException('Inactivity'); throw new \danog\MadelineProto\NothingInTheSocketException('Inactivity');

View File

@ -27,7 +27,7 @@ trait TD
return $params; return $params;
} }
if (!isset($params['ID'])) { if (!isset($params['ID'])) {
\array_walk($params, [$this, 'tdcli_to_td']); \array_walk($params, [$this, 'tdcliToTd']);
return $params; return $params;
} }

View File

@ -88,7 +88,7 @@ trait PrettyException
} }
$tl = false; $tl = false;
foreach (\array_reverse($trace ?? $this->getTrace()) as $k => $frame) { foreach (\array_reverse($trace ?? $this->getTrace()) as $k => $frame) {
if (isset($frame['function']) && \in_array($frame['function'], ['serialize_params', 'serialize_object'])) { if (isset($frame['function']) && \in_array($frame['function'], ['serializeParams', 'serializeObject'])) {
if ($frame['args'][2] !== '') { if ($frame['args'][2] !== '') {
$this->tl_trace .= $tl ? "['".$frame['args'][2]."']" : "While serializing: \t".$frame['args'][2]; $this->tl_trace .= $tl ? "['".$frame['args'][2]."']" : "While serializing: \t".$frame['args'][2];
$tl = true; $tl = true;

View File

@ -46,7 +46,7 @@ class Button implements \JsonSerializable, \ArrayAccess
$donotwait = false; $donotwait = false;
} }
$async = $params['async'] ?? (isset($this->info['API']->wrapper) ? $this->info['API']->wrapper->async : true); $async = $params['async'] ?? (isset($this->info['API']->wrapper) ? $this->info['API']->wrapper->async : true);
$method = $donotwait ? 'method_call_async_write' : 'method_call_async_read'; $method = $donotwait ? 'methodCallAsyncWrite' : 'methodCallAsyncRead';
switch ($this->data['_']) { switch ($this->data['_']) {
default: default:
return false; return false;

View File

@ -245,7 +245,7 @@ trait AuthKeyHandler
if (isset($this->settings['pwr']['strict']) && $this->settings['pwr']['strict']) { if (isset($this->settings['pwr']['strict']) && $this->settings['pwr']['strict']) {
$this->pwrUpdateHandler($update); $this->pwrUpdateHandler($update);
} else { } else {
\in_array($this->settings['updates']['callback'], [['danog\\MadelineProto\\API', 'get_updates_update_handler'], 'get_updates_update_handler']) ? $this->getUpdatesUpdateHandler($update) : $this->settings['updates']['callback']($update); \in_array($this->settings['updates']['callback'], [['danog\\MadelineProto\\API', 'getUpdatesUpdateHandler'], 'getUpdatesUpdateHandler']) ? $this->getUpdatesUpdateHandler($update) : $this->settings['updates']['callback']($update);
} }
unset($this->calls[$call['id']]); unset($this->calls[$call['id']]);
} }

View File

@ -76,7 +76,7 @@ Note that you can also provide the API parameters directly in the code using the
} else { } else {
yield $this->webAPIEcho(); yield $this->webAPIEcho();
} }
} elseif (!$this->my_telegram_org_wrapper->logged_in()) { } elseif (!$this->my_telegram_org_wrapper->loggedIn()) {
if (isset($_POST['code'])) { if (isset($_POST['code'])) {
yield $this->webAPICompleteLogin(); yield $this->webAPICompleteLogin();
if (yield $this->my_telegram_org_wrapper->hasApp()) { if (yield $this->my_telegram_org_wrapper->hasApp()) {

View File

@ -82,7 +82,7 @@ trait ApiTemplates
yield $stdout->write($this->webAPIEchoTemplate('Do you want to enter the API id and the API hash manually or automatically?<br>Note that you can also provide it directly in the code using the <a href="https://docs.madelineproto.xyz/docs/SETTINGS.html#settingsapp_infoapi_id">settings</a>.<b>'.$message.'</b>', '<select name="type"><option value="automatic">Automatically</option><option value="manual">Manually</option></select>')); yield $stdout->write($this->webAPIEchoTemplate('Do you want to enter the API id and the API hash manually or automatically?<br>Note that you can also provide it directly in the code using the <a href="https://docs.madelineproto.xyz/docs/SETTINGS.html#settingsapp_infoapi_id">settings</a>.<b>'.$message.'</b>', '<select name="type"><option value="automatic">Automatically</option><option value="manual">Manually</option></select>'));
} }
} else { } else {
if (!$this->my_telegram_org_wrapper->logged_in()) { if (!$this->my_telegram_org_wrapper->loggedIn()) {
yield $stdout->write($this->webAPIEchoTemplate('Enter your code<br><b>'.$message.'</b>', '<input type="text" name="code" placeholder="Code" required/>')); yield $stdout->write($this->webAPIEchoTemplate('Enter your code<br><b>'.$message.'</b>', '<input type="text" name="code" placeholder="Code" required/>'));
} else { } else {
yield $stdout->write($this->webAPIEchoTemplate( yield $stdout->write($this->webAPIEchoTemplate(

View File

@ -28,7 +28,7 @@ trait Callback
{ {
$this->settings['updates']['callback'] = $callback; $this->settings['updates']['callback'] = $callback;
$this->settings['updates']['run_callback'] = true; $this->settings['updates']['run_callback'] = true;
$this->settings['updates']['handle_updates'] = true; $this->settings['updates']['handleUpdates'] = true;
$this->startUpdateSystem(); $this->startUpdateSystem();
} }
} }

View File

@ -58,8 +58,8 @@ trait Events
} }
} }
$this->settings['updates']['callback'] = [$this, 'event_update_handler']; $this->settings['updates']['callback'] = [$this, 'eventUpdateHandler'];
$this->settings['updates']['handle_updates'] = true; $this->settings['updates']['handleUpdates'] = true;
$this->settings['updates']['run_callback'] = true; $this->settings['updates']['run_callback'] = true;
if (!$this->asyncInitPromise) { if (!$this->asyncInitPromise) {
$this->startUpdateSystem(); $this->startUpdateSystem();

View File

@ -40,7 +40,7 @@ trait Login
public function botLogin($token) public function botLogin($token)
{ {
if ($this->authorized === self::LOGGED_IN) { if ($this->authorized === self::LOGGED_IN) {
$this->logger->logger(\danog\MadelineProto\Lang::$current_lang['already_logged_in'], \danog\MadelineProto\Logger::NOTICE); $this->logger->logger(\danog\MadelineProto\Lang::$current_lang['already_loggedIn'], \danog\MadelineProto\Logger::NOTICE);
yield $this->logout(); yield $this->logout();
} }
$callbacks = [$this, $this->referenceDatabase]; $callbacks = [$this, $this->referenceDatabase];
@ -64,7 +64,7 @@ trait Login
public function phoneLogin($number, $sms_type = 5) public function phoneLogin($number, $sms_type = 5)
{ {
if ($this->authorized === self::LOGGED_IN) { if ($this->authorized === self::LOGGED_IN) {
$this->logger->logger(\danog\MadelineProto\Lang::$current_lang['already_logged_in'], \danog\MadelineProto\Logger::NOTICE); $this->logger->logger(\danog\MadelineProto\Lang::$current_lang['already_loggedIn'], \danog\MadelineProto\Logger::NOTICE);
yield $this->logout(); yield $this->logout();
} }
$this->logger->logger(\danog\MadelineProto\Lang::$current_lang['login_code_sending'], \danog\MadelineProto\Logger::NOTICE); $this->logger->logger(\danog\MadelineProto\Lang::$current_lang['login_code_sending'], \danog\MadelineProto\Logger::NOTICE);
@ -134,7 +134,7 @@ trait Login
public function importAuthorization($authorization) public function importAuthorization($authorization)
{ {
if ($this->authorized === self::LOGGED_IN) { if ($this->authorized === self::LOGGED_IN) {
$this->logger->logger(\danog\MadelineProto\Lang::$current_lang['already_logged_in'], \danog\MadelineProto\Logger::NOTICE); $this->logger->logger(\danog\MadelineProto\Lang::$current_lang['already_loggedIn'], \danog\MadelineProto\Logger::NOTICE);
yield $this->logout(); yield $this->logout();
} }
$this->logger->logger(\danog\MadelineProto\Lang::$current_lang['login_auth_key'], \danog\MadelineProto\Logger::NOTICE); $this->logger->logger(\danog\MadelineProto\Lang::$current_lang['login_auth_key'], \danog\MadelineProto\Logger::NOTICE);
@ -169,7 +169,7 @@ trait Login
public function exportAuthorization() public function exportAuthorization()
{ {
if ($this->authorized !== self::LOGGED_IN) { if ($this->authorized !== self::LOGGED_IN) {
throw new \danog\MadelineProto\Exception(\danog\MadelineProto\Lang::$current_lang['not_logged_in']); throw new \danog\MadelineProto\Exception(\danog\MadelineProto\Lang::$current_lang['not_loggedIn']);
} }
yield $this->getSelf(); yield $this->getSelf();
$this->authorized_dc = $this->datacenter->curdc; $this->authorized_dc = $this->datacenter->curdc;

View File

@ -52,7 +52,7 @@ trait Loop
return false; return false;
} }
if (\in_array($this->settings['updates']['callback'], [['danog\\MadelineProto\\API', 'get_updates_update_handler'], 'get_updates_update_handler'])) { if (\in_array($this->settings['updates']['callback'], [['danog\\MadelineProto\\API', 'getUpdatesUpdateHandler'], 'getUpdatesUpdateHandler'])) {
$this->logger->logger('Getupdates event handler is enabled, exiting from loop', \danog\MadelineProto\Logger::FATAL_ERROR); $this->logger->logger('Getupdates event handler is enabled, exiting from loop', \danog\MadelineProto\Logger::FATAL_ERROR);
return false; return false;
@ -140,8 +140,8 @@ trait Loop
$this->closeConnection('Bot was started'); $this->closeConnection('Bot was started');
} }
if (!$this->settings['updates']['handle_updates']) { if (!$this->settings['updates']['handleUpdates']) {
$this->settings['updates']['handle_updates'] = true; $this->settings['updates']['handleUpdates'] = true;
} }
if (!$this->settings['updates']['run_callback']) { if (!$this->settings['updates']['run_callback']) {
$this->settings['updates']['run_callback'] = true; $this->settings['updates']['run_callback'] = true;

View File

@ -25,7 +25,7 @@ trait Noop
{ {
$this->settings['updates']['callback'] = [$this, 'noop']; $this->settings['updates']['callback'] = [$this, 'noop'];
$this->settings['updates']['run_callback'] = false; $this->settings['updates']['run_callback'] = false;
$this->settings['updates']['handle_updates'] = true; $this->settings['updates']['handleUpdates'] = true;
$this->startUpdateSystem(); $this->startUpdateSystem();
} }

View File

@ -35,8 +35,8 @@ trait TOS
if (!$this->tos['accepted']) { if (!$this->tos['accepted']) {
$this->logger->logger('Telegram has updated their Terms Of Service', \danog\MadelineProto\Logger::ERROR); $this->logger->logger('Telegram has updated their Terms Of Service', \danog\MadelineProto\Logger::ERROR);
$this->logger->logger('Accept the TOS before proceeding by calling $MadelineProto->accept_tos().', \danog\MadelineProto\Logger::ERROR); $this->logger->logger('Accept the TOS before proceeding by calling $MadelineProto->acceptTos().', \danog\MadelineProto\Logger::ERROR);
$this->logger->logger('You can also decline the TOS by calling $MadelineProto->decline_tos().', \danog\MadelineProto\Logger::ERROR); $this->logger->logger('You can also decline the TOS by calling $MadelineProto->declineTos().', \danog\MadelineProto\Logger::ERROR);
$this->logger->logger('By declining the TOS, the currently logged in account will be PERMANENTLY DELETED.', \danog\MadelineProto\Logger::FATAL_ERROR); $this->logger->logger('By declining the TOS, the currently logged in account will be PERMANENTLY DELETED.', \danog\MadelineProto\Logger::FATAL_ERROR);
$this->logger->logger('Read the following TOS very carefully: ', \danog\MadelineProto\Logger::ERROR); $this->logger->logger('Read the following TOS very carefully: ', \danog\MadelineProto\Logger::ERROR);
$this->logger->logger($this->tos); $this->logger->logger($this->tos);

View File

@ -28,9 +28,9 @@ trait Webhook
{ {
$this->pem_path = $pem_path; $this->pem_path = $pem_path;
$this->hook_url = $hook_url; $this->hook_url = $hook_url;
$this->settings['updates']['callback'] = [$this, 'pwr_webhook']; $this->settings['updates']['callback'] = [$this, 'pwrWebhook'];
$this->settings['updates']['run_callback'] = true; $this->settings['updates']['run_callback'] = true;
$this->settings['updates']['handle_updates'] = true; $this->settings['updates']['handleUpdates'] = true;
$this->startUpdateSystem(); $this->startUpdateSystem();
} }
} }

View File

@ -55,14 +55,14 @@ $MadelineProto->start();
$MadelineProto->async(false); $MadelineProto->async(false);
try { try {
$MadelineProto->get_self(); $MadelineProto->getSelf();
} catch (\danog\MadelineProto\Exception $e) { } catch (\danog\MadelineProto\Exception $e) {
if ($e->getMessage() === 'TOS action required, check the logs') { if ($e->getMessage() === 'TOS action required, check the logs') {
$MadelineProto->accept_tos(); $MadelineProto->acceptTos();
} }
} }
//var_dump(count($MadelineProto->get_pwr_chat('@madelineproto')['participants'])); //var_dump(count($MadelineProto->getPwrChat('@madelineproto')['participants']));
/* /*
* Test logging * Test logging
@ -83,13 +83,13 @@ $message = (\getenv('TRAVIS_COMMIT') == '') ? 'I iz works always (io laborare se
* Try making a phone call * Try making a phone call
*/ */
if (!\getenv('TRAVIS_COMMIT') && \stripos($MadelineProto->readline('Do you want to make a call? (y/n): '), 'y') !== false) { if (!\getenv('TRAVIS_COMMIT') && \stripos($MadelineProto->readline('Do you want to make a call? (y/n): '), 'y') !== false) {
$controller = $MadelineProto->request_call(\getenv('TEST_SECRET_CHAT'))->play('input.raw')->then('input.raw')->playOnHold(['input.raw'])->setOutputFile('output.raw'); $controller = $MadelineProto->requestCall(\getenv('TEST_SECRET_CHAT'))->play('input.raw')->then('input.raw')->playOnHold(['input.raw'])->setOutputFile('output.raw');
while ($controller->getCallState() < \danog\MadelineProto\VoIP::CALL_STATE_READY) { while ($controller->getCallState() < \danog\MadelineProto\VoIP::CALL_STATE_READY) {
$MadelineProto->get_updates(); $MadelineProto->getUpdates();
} }
\danog\MadelineProto\Logger::log($controller->configuration); \danog\MadelineProto\Logger::log($controller->configuration);
while ($controller->getCallState() < \danog\MadelineProto\VoIP::CALL_STATE_ENDED) { while ($controller->getCallState() < \danog\MadelineProto\VoIP::CALL_STATE_ENDED) {
$MadelineProto->get_updates(); $MadelineProto->getUpdates();
} }
} }
@ -100,7 +100,7 @@ if (!\getenv('TRAVIS_COMMIT') && \stripos($MadelineProto->readline('Do you want
$howmany = $MadelineProto->readline('How many calls would you like me to handle? '); $howmany = $MadelineProto->readline('How many calls would you like me to handle? ');
$offset = 0; $offset = 0;
while ($howmany > 0) { while ($howmany > 0) {
$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 $updates = $MadelineProto->getUpdates(['offset' => $offset, 'limit' => 50, 'timeout' => 0]); // Just like in the bot API, you can specify an offset, a limit and a timeout
foreach ($updates as $update) { foreach ($updates as $update) {
\danog\MadelineProto\Logger::log($update); \danog\MadelineProto\Logger::log($update);
$offset = $update['update_id'] + 1; // Just like in the bot API, the offset must be set to the last update_id $offset = $update['update_id'] + 1; // Just like in the bot API, the offset must be set to the last update_id
@ -122,14 +122,14 @@ if (!\getenv('TRAVIS_COMMIT') && \stripos($MadelineProto->readline('Do you want
/** /**
* Request a secret chat. * Request a secret chat.
*/ */
$secret_chat_id = $MadelineProto->request_secret_chat(\getenv('TEST_SECRET_CHAT')); $secret_chat_id = $MadelineProto->requestSecretChat(\getenv('TEST_SECRET_CHAT'));
echo 'Waiting for '.\getenv('TEST_SECRET_CHAT').' (secret chat id '.$secret_chat_id.') to accept the secret chat...'.PHP_EOL; echo 'Waiting for '.\getenv('TEST_SECRET_CHAT').' (secret chat id '.$secret_chat_id.') to accept the secret chat...'.PHP_EOL;
/* /*
* Wait until the other party accepts it * Wait until the other party accepts it
*/ */
while ($MadelineProto->secret_chat_status($secret_chat_id) !== 2) { while ($MadelineProto->secretChatStatus($secret_chat_id) !== 2) {
$MadelineProto->get_updates(); $MadelineProto->getUpdates();
} }
/** /**
@ -219,7 +219,7 @@ if (!\getenv('TRAVIS_COMMIT') && \stripos($MadelineProto->readline('Do you want
} }
} }
$mention = $MadelineProto->get_info(\getenv('TEST_USERNAME')); // Returns an array with all of the constructors that can be extracted from a username or an id $mention = $MadelineProto->getInfo(\getenv('TEST_USERNAME')); // Returns an array with all of the constructors that can be extracted from a username or an id
$mention = $mention['user_id']; // Selects only the numeric user id $mention = $mention['user_id']; // Selects only the numeric user id
$media = []; $media = [];
@ -242,7 +242,7 @@ $media['voice'] = ['_' => 'inputMediaUploadedDocument', 'file' => 'tests/mosconi
$media['document'] = ['_' => 'inputMediaUploadedDocument', 'file' => 'tests/60', 'mime_type' => 'magic/magic', 'attributes' => [['_' => 'documentAttributeFilename', 'file_name' => 'magic.magic']]]; $media['document'] = ['_' => 'inputMediaUploadedDocument', 'file' => 'tests/60', 'mime_type' => 'magic/magic', 'attributes' => [['_' => 'documentAttributeFilename', 'file_name' => 'magic.magic']]];
$message = 'yay '.\PHP_VERSION_ID; $message = 'yay '.\PHP_VERSION_ID;
$mention = $MadelineProto->get_info(\getenv('TEST_USERNAME')); // Returns an array with all of the constructors that can be extracted from a username or an id $mention = $MadelineProto->getInfo(\getenv('TEST_USERNAME')); // Returns an array with all of the constructors that can be extracted from a username or an id
$mention = $mention['user_id']; // Selects only the numeric user id $mention = $mention['user_id']; // Selects only the numeric user id
/* /*

View File

@ -58,7 +58,7 @@ $new = getTL($argv[2]);
$res = ''; $res = '';
foreach (['methods', 'constructors'] as $type) { foreach (['methods', 'constructors'] as $type) {
$finder = $type === 'methods' ? 'find_by_method' : 'find_by_predicate'; $finder = $type === 'methods' ? 'findByMethod' : 'findByPredicate';
$key = $type === 'methods' ? 'method' : 'predicate'; $key = $type === 'methods' ? 'method' : 'predicate';
// New constructors // New constructors

View File

@ -24,11 +24,15 @@ function ssort($a, $b)
$find = []; $find = [];
$replace = []; $replace = [];
$findDocs = [];
$replaceDocs = [];
foreach ($methods as $methodObj) { foreach ($methods as $methodObj) {
$method = $methodObj->getName(); $method = $methodObj->getName();
if (\strpos($method, '__') === 0 || $method === 'async') { if (\strpos($method, '__') === 0 || $method === 'async') {
continue; continue;
} }
$method = Tools::fromCamelCase($method);
$new = Tools::fromSnakeCase($method); $new = Tools::fromSnakeCase($method);
$new = \str_ireplace(['mtproto', 'api'], ['MTProto', 'API'], $new); $new = \str_ireplace(['mtproto', 'api'], ['MTProto', 'API'], $new);
$new = \preg_replace('/TL$/i', 'TL', $new); $new = \preg_replace('/TL$/i', 'TL', $new);
@ -36,14 +40,32 @@ foreach ($methods as $methodObj) {
$new = \preg_replace('/async$/i', '', $new); $new = \preg_replace('/async$/i', '', $new);
} }
$findDocs []= Tools::fromCamelCase($new).'(';
$replaceDocs []= $new.'(';
$findDocs []= $method.'(';
$replaceDocs []= $new.'(';
$findDocs []= Tools::fromCamelCase($new).'.';
$replaceDocs []= $new.'.';
$findDocs []= $method.'.';
$replaceDocs []= $new.'.';
$findDocs []= Tools::fromCamelCase($new).']';
$replaceDocs []= $new.']';
$findDocs []= $method.']';
$replaceDocs []= $new.']';
if (\method_exists((string) $methodObj->getDeclaringClass(), \preg_replace('/async$/i', '', $method))) { if (\method_exists((string) $methodObj->getDeclaringClass(), \preg_replace('/async$/i', '', $method))) {
\var_dump("Skipping $method => $new"); \var_dump("Skipping $method => $new");
continue; continue;
} }
if (!\function_exists($method)) { if (!\function_exists($method)) {
$find[] = "$method("; $find[] = "$method";
$replace[] = "$new("; $replace[] = "$new";
continue; continue;
} }
$find[] = ">$method("; $find[] = ">$method(";
@ -68,16 +90,16 @@ exit;
foreach (new RegexIterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator(\realpath('docs'))), '/\.md$/') as $filename) { foreach (new RegexIterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator(\realpath('docs'))), '/\.md$/') as $filename) {
$filename = (string) $filename; $filename = (string) $filename;
$new = \str_replace($find, $replace, $old = \file_get_contents($filename)); $new = \str_replace($findDocs, $replaceDocs, $old = \file_get_contents($filename));
do { do {
\file_put_contents($filename, $new); \file_put_contents($filename, $new);
$new = \str_replace($find, $replace, $old = \file_get_contents($filename)); $new = \str_replace($findDocs, $replaceDocs, $old = \file_get_contents($filename));
} while ($old !== $new); } while ($old !== $new);
} }
$filename = 'README.md'; $filename = 'README.md';
$new = \str_replace($find, $replace, $old = \file_get_contents($filename)); $new = \str_replace($findDocs, $replaceDocs, $old = \file_get_contents($filename));
do { do {
\file_put_contents($filename, $new); \file_put_contents($filename, $new);
$new = \str_replace($find, $replace, $old = \file_get_contents($filename)); $new = \str_replace($findDocs, $replaceDocs, $old = \file_get_contents($filename));
} while ($old !== $new); } while ($old !== $new);

View File

@ -28,7 +28,7 @@ class Lang
// THIS WILL BE OVERWRITTEN BY $lang["en"] // THIS WILL BE OVERWRITTEN BY $lang["en"]
public static $current_lang = %s; public static $current_lang = %s;
}'; }';
function from_camel_case($input) function fromCamelCase($input)
{ {
\preg_match_all('!([A-Z][A-Z0-9]*(?=$|[A-Z][a-z0-9])|[A-Za-z][a-z0-9]+)!', $input, $matches); \preg_match_all('!([A-Z][A-Z0-9]*(?=$|[A-Z][a-z0-9])|[A-Za-z][a-z0-9]+)!', $input, $matches);
$ret = $matches[0]; $ret = $matches[0];
@ -92,7 +92,7 @@ foreach (\danog\MadelineProto\Lang::$current_lang as $key => $value) {
$l = \str_replace('_', ' ', $param_name); $l = \str_replace('_', ' ', $param_name);
} else { } else {
$l = \explode('.', $method_name); $l = \explode('.', $method_name);
$l = from_camel_case(\end($l)); $l = fromCamelCase(\end($l));
} }
$l = \ucfirst(\strtolower($l)); $l = \ucfirst(\strtolower($l));
if (\preg_match('/ empty$/', $l)) { if (\preg_match('/ empty$/', $l)) {