This commit is contained in:
Daniil Gentili 2017-01-15 00:24:14 +01:00
parent 491c15e5e3
commit 6711f6e814
6 changed files with 53 additions and 37 deletions

View File

@ -20,6 +20,7 @@ class Logger
public static $mode = null; public static $mode = null;
public static $optional = null; public static $optional = null;
public static $constructed = false; public static $constructed = false;
public static $prefix = '';
/* /*
* Constructor function * Constructor function
@ -29,7 +30,7 @@ class Logger
* 2 - Log to file defined in second parameter * 2 - Log to file defined in second parameter
* 3 - Echo logs * 3 - Echo logs
*/ */
public static function constructor(&$mode, &$optional = null) public static function constructor(&$mode, &$optional = null, $prefix = '')
{ {
if ($mode == null) { if ($mode == null) {
throw new Exception('No mode was specified!'); throw new Exception('No mode was specified!');
@ -37,6 +38,7 @@ class Logger
self::$mode = &$mode; self::$mode = &$mode;
self::$optional = &$optional; self::$optional = &$optional;
self::$constructed = true; self::$constructed = true;
self::$prefix = $prefix === '' ? '' : ', '.$prefix;
} }
public static function log(...$params) public static function log(...$params)
@ -48,7 +50,7 @@ class Logger
if (!is_string($param)) { if (!is_string($param)) {
$param = var_export($param, true); $param = var_export($param, true);
} }
$param = str_pad(basename(debug_backtrace()[0]['file'], '.php').': ', 16)."\t".$param; $param = str_pad(basename(debug_backtrace()[0]['file'], '.php').self::$prefix.': ', 16+strlen(self::$prefix))."\t".$param;
switch (self::$mode) { switch (self::$mode) {
case 1: case 1:
error_log($param); error_log($param);

View File

@ -226,10 +226,10 @@ Slv8kg9qv1m6XHVQY3PnEw+QQtqSIXklHwIDAQAB
public function setup_logger() public function setup_logger()
{ {
if (!\danog\MadelineProto\Logger::$constructed) { //if (!\danog\MadelineProto\Logger::$constructed) {
// Set up logger class // Set up logger class
\danog\MadelineProto\Logger::constructor($this->settings['logger']['logger'], $this->settings['logger']['logger_param']); \danog\MadelineProto\Logger::constructor($this->settings['logger']['logger'], $this->settings['logger']['logger_param'], isset($this->datacenter->authorization['user']) ? (isset($this->datacenter->authorization['user']['username']) ? $this->datacenter->authorization['user']['username'] : $this->datacenter->authorization['user']['id']) : '');
} //}
} }
public function reset_session() public function reset_session()

View File

@ -29,7 +29,13 @@ trait PeerHandler
if (!isset($this->chats[$user['id']]) || $this->chats[$user['id']] !== $user) { if (!isset($this->chats[$user['id']]) || $this->chats[$user['id']] !== $user) {
$this->chats[$user['id']] = $user; $this->chats[$user['id']] = $user;
$this->should_serialize = true; $this->should_serialize = true;
try {
$this->get_pwr_chat($user['id'], false, true); $this->get_pwr_chat($user['id'], false, true);
} catch (\danog\MadelineProto\Exception $e) {
\danog\MadelineProto\Logger::log($e->getMessage());
} catch (\danog\MadelineProto\RPCErrorException $e) {
\danog\MadelineProto\Logger::log($e->getMessage());
}
} }
case 'userEmpty': case 'userEmpty':
break; break;
@ -50,7 +56,13 @@ trait PeerHandler
if (!isset($this->chats[-$chat['id']]) || $this->chats[-$chat['id']] !== $chat) { if (!isset($this->chats[-$chat['id']]) || $this->chats[-$chat['id']] !== $chat) {
$this->chats[-$chat['id']] = $chat; $this->chats[-$chat['id']] = $chat;
$this->should_serialize = true; $this->should_serialize = true;
try {
$this->get_pwr_chat(-$chat['id'], true, true); $this->get_pwr_chat(-$chat['id'], true, true);
} catch (\danog\MadelineProto\Exception $e) {
\danog\MadelineProto\Logger::log($e->getMessage());
} catch (\danog\MadelineProto\RPCErrorException $e) {
\danog\MadelineProto\Logger::log($e->getMessage());
}
} }
case 'channelEmpty': case 'channelEmpty':
@ -60,7 +72,13 @@ trait PeerHandler
if (!isset($this->chats[(int) ('-100'.$chat['id'])]) || $this->chats[(int) ('-100'.$chat['id'])] !== $chat) { if (!isset($this->chats[(int) ('-100'.$chat['id'])]) || $this->chats[(int) ('-100'.$chat['id'])] !== $chat) {
$this->chats[(int) ('-100'.$chat['id'])] = $chat; $this->chats[(int) ('-100'.$chat['id'])] = $chat;
$this->should_serialize = true; $this->should_serialize = true;
try {
$this->get_pwr_chat('-100'.$chat['id'], true, true); $this->get_pwr_chat('-100'.$chat['id'], true, true);
} catch (\danog\MadelineProto\Exception $e) {
\danog\MadelineProto\Logger::log($e->getMessage());
} catch (\danog\MadelineProto\RPCErrorException $e) {
\danog\MadelineProto\Logger::log($e->getMessage());
}
} }
break; break;
default: default:

View File

@ -74,38 +74,12 @@ trait ResponseHandler
$response = $this->datacenter->incoming_messages[$current_msg_id]['content']; $response = $this->datacenter->incoming_messages[$current_msg_id]['content'];
\danog\MadelineProto\Logger::log('Received '.$response['_'].'.'); \danog\MadelineProto\Logger::log('Received '.$response['_'].'.');
if (isset($response['users'])) {
$this->add_users($response['users']);
}
if (isset($response['chats'])) {
$this->add_chats($response['chats']);
}
if (isset($response['result']['users'])) {
$this->add_users($response['result']['users']);
}
if (isset($response['result']['chats'])) {
$this->add_chats($response['result']['chats']);
}
if (isset($response['result']['_'])) { if (isset($response['result']['_'])) {
switch ($this->constructors->find_by_predicate($response['result']['_'])['type']) { switch ($this->constructors->find_by_predicate($response['result']['_'])['type']) {
case 'Update': case 'Update':
$this->handle_update($response['result']); $this->handle_update($response['result']);
break; break;
case 'userFull':
$this->chats[$response['result']['user']['id']] = $response['result'];
$this->should_serialize = true;
break;
case 'chatFull':
$this->chats[-$response['result']['chat']['id']] = $response['result'];
$this->should_serialize = true;
break;
case 'channelFull':
$this->chats[(int) ('-100'.$response['result']['channel']['id'])] = $response['result'];
$this->should_serialize = true;
break;
} }
} }
switch ($response['_']) { switch ($response['_']) {
@ -266,6 +240,18 @@ trait ResponseHandler
} }
break; break;
} }
if (isset($response['users'])) {
$this->add_users($response['users']);
}
if (isset($response['chats'])) {
$this->add_chats($response['chats']);
}
if (isset($response['result']['users'])) {
$this->add_users($response['result']['users']);
}
if (isset($response['result']['chats'])) {
$this->add_chats($response['result']['chats']);
}
} }
} }

View File

@ -22,14 +22,24 @@ trait UpdateHandler
public $updates = []; public $updates = [];
public $updates_key = 0; public $updates_key = 0;
private $getting_state = false; private $getting_state = false;
public $full_chats;
public function full_chat_last_updated($id) {
$id = $this->get_info($id)['bot_api_id'];
return isset($this->full_chats[$id]['last_update']) ? $this->full_chats[$id]['last_update'] : 0;
}
public function pwr_update_handler($update) public function pwr_update_handler($update)
{ {
if (isset($update['message']['to_id'])) { if (isset($update['message']['to_id']) && time() - $this->full_chat_last_updated($update['message']['to_id']) <= 600) {
$full_chat = $this->get_pwr_chat($update['message']['to_id']); $full_chat = $this->get_pwr_chat($update['message']['to_id']);
$full_chat['last_update'] = time();
$this->full_chats[$full_chat['id']] = $full_chat;
} }
if (isset($update['message']['from_id'])) { if (isset($update['message']['from_id']) && time() - $this->full_chat_last_updated($update['message']['from_id']) <= 600) {
$full_chat = $this->get_pwr_chat($update['message']['from_id']); $full_chat = $this->get_pwr_chat($update['message']['from_id']);
$full_chat['last_update'] = time();
$this->full_chats[$full_chat['id']] = $full_chat;
} }
} }

View File

@ -268,7 +268,7 @@ trait TL
} }
throw new Exception('Missing required parameter ('.$current_argument['name'].')'); throw new Exception('Missing required parameter ('.$current_argument['name'].')');
} }
\danog\MadelineProto\Logger::log('Serializing '.$current_argument['name'].' of type '.$current_argument['type']); //\danog\MadelineProto\Logger::log('Serializing '.$current_argument['name'].' of type '.$current_argument['type']);
$serialized .= $this->serialize_object($current_argument, $arguments[$current_argument['name']]); $serialized .= $this->serialize_object($current_argument, $arguments[$current_argument['name']]);
} }