2017-01-09 17:23:00 +01:00
#!/usr/bin/env php
2017-01-04 13:22:03 +01:00
< ? php
2017-01-07 12:40:51 +01:00
2017-01-04 13:22:03 +01:00
require 'vendor/autoload.php' ;
$settings = [];
2017-01-14 12:53:50 +01:00
2017-01-04 13:22:03 +01:00
$MadelineProto = \danog\MadelineProto\Serialization :: deserialize ( 'bot.madeline' );
if ( file_exists ( 'token.php' ) && $MadelineProto === false ) {
include_once 'token.php' ;
$MadelineProto = new \danog\MadelineProto\API ( $settings );
$authorization = $MadelineProto -> bot_login ( $token );
2017-01-27 22:05:24 +01:00
\danog\MadelineProto\Logger :: log ([ $authorization ], \danog\MadelineProto\Logger :: NOTICE );
2017-01-04 13:22:03 +01:00
}
$offset = 0 ;
while ( true ) {
$updates = $MadelineProto -> API -> get_updates ([ 'offset' => $offset , 'limit' => 50 , 'timeout' => 0 ]); // Just like in the bot API, you can specify an offset, a limit and a timeout
2017-01-29 22:42:21 +01:00
var_dump ( $updates );
2017-01-04 13:22:03 +01:00
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
2017-01-29 22:42:21 +01:00
//var_dump($update);
2017-01-04 13:22:03 +01:00
switch ( $update [ 'update' ][ '_' ]) {
case 'updateNewMessage' :
2017-01-29 22:42:21 +01:00
case 'updateNewChannelMessage' :
if ( isset ( $update [ 'update' ][ 'message' ][ 'out' ]) && $update [ 'update' ][ 'message' ][ 'out' ]) {
2017-01-07 12:40:51 +01:00
continue ;
}
2017-01-04 13:22:03 +01:00
$res = json_encode ( $update , JSON_PRETTY_PRINT );
2017-01-07 12:40:51 +01:00
if ( $res == '' ) {
$res = var_export ( $update , true );
}
2017-01-07 12:39:11 +01:00
try {
2017-01-29 22:42:53 +01:00
//var_dump($update);
2017-01-29 22:42:21 +01:00
$MadelineProto -> messages -> sendMessage ([ 'peer' => $update [ 'update' ][ 'message' ][ 'to_id' ], 'message' => $res , 'reply_to_msg_id' => $update [ 'update' ][ 'message' ][ 'id' ], 'entities' => [[ '_' => 'messageEntityPre' , 'offset' => 0 , 'length' => strlen ( $res ), 'language' => 'json' ]]]);
2017-01-07 12:40:51 +01:00
} catch ( \danog\MadelineProto\RPCErrorException $e ) {
$MadelineProto -> messages -> sendMessage ([ 'peer' => '@danogentili' , 'message' => $e -> getCode () . ': ' . $e -> getMessage () . PHP_EOL . $e -> getTraceAsString ()]);
}
2017-01-07 12:39:11 +01:00
try {
2017-01-09 17:23:00 +01:00
if ( isset ( $update [ 'update' ][ 'message' ][ 'media' ]) && $update [ 'update' ][ 'message' ][ 'media' ] == 'messageMediaPhoto' && $update [ 'update' ][ 'message' ][ 'media' ] == 'messageMediaDocument' ) {
2017-01-07 12:39:11 +01:00
$time = time ();
$file = $MadelineProto -> download_to_dir ( $update [ 'update' ][ 'message' ][ 'media' ], '/tmp' );
2017-01-07 12:40:51 +01:00
$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' ]]]);
2017-01-07 12:39:11 +01:00
}
2017-01-07 12:40:51 +01:00
} catch ( \danog\MadelineProto\RPCErrorException $e ) {
$MadelineProto -> messages -> sendMessage ([ 'peer' => '@danogentili' , 'message' => $e -> getCode () . ': ' . $e -> getMessage () . PHP_EOL . $e -> getTraceAsString ()]);
}
2017-01-04 13:22:03 +01:00
}
}
echo 'Wrote ' . \danog\MadelineProto\Serialization :: serialize ( 'bot.madeline' , $MadelineProto ) . ' bytes' . PHP_EOL ;
}