2017-01-09 17:23:00 +01:00
#!/usr/bin/env php
2017-01-04 13:22:03 +01:00
< ? php
2017-02-11 15:30:37 +01:00
/*
Copyright 2016 - 2017 Daniil Gentili
( https :// daniil . it )
This file is part of MadelineProto .
MadelineProto is free software : you can redistribute it and / or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation , either version 3 of the License , or ( at your option ) any later version .
MadelineProto is distributed in the hope that it will be useful , but WITHOUT ANY WARRANTY ; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE .
See the GNU Affero General Public License for more details .
You should have received a copy of the GNU General Public License along with MadelineProto .
If not , see < http :// www . gnu . org / licenses />.
*/
2017-01-07 12:40:51 +01:00
2017-01-04 13:22:03 +01:00
require 'vendor/autoload.php' ;
2017-05-16 22:08:46 +02:00
$settings = [ " app_info " => [ " api_id " => 6 , " api_hash " => " eb06d4abfb49dc3eeb1aeb98ae0f581e " ]];
2017-02-12 19:55:49 +01:00
try {
2017-02-12 19:56:11 +01:00
$MadelineProto = \danog\MadelineProto\Serialization :: deserialize ( 'bot.madeline' );
2017-02-12 19:55:49 +01:00
} catch ( \danog\MadelineProto\Exception $e ) {
2017-05-16 22:08:46 +02:00
if ( file_exists ( 'token.php' )) {
require_once 'token.php' ;
2017-02-12 19:56:11 +01:00
$MadelineProto = new \danog\MadelineProto\API ( $settings );
$authorization = $MadelineProto -> bot_login ( $token );
\danog\MadelineProto\Logger :: log ([ $authorization ], \danog\MadelineProto\Logger :: NOTICE );
2017-03-24 21:01:08 +01:00
} else {
2017-05-16 22:08:46 +02:00
echo 'token.php does not exist' ;
2017-03-24 21:01:08 +01:00
die ;
2017-02-12 19:56:11 +01:00
}
2017-02-12 19:55:49 +01:00
}
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-05-16 22:08:46 +02:00
//\danog\MadelineProto\Logger::log([$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
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-05-16 22:08:46 +02:00
$MadelineProto -> messages -> sendMessage ([ 'peer' => $update [ 'update' ][ '_' ] === 'updateNewMessage' ? $update [ 'update' ][ 'message' ][ 'from_id' ] : $update [ 'update' ][ 'message' ][ 'to_id' ], 'message' => $res , 'reply_to_msg_id' => $update [ 'update' ][ 'message' ][ 'id' ], 'entities' => [[ '_' => 'messageEntityPre' , 'offset' => 0 , 'length' => strlen ( $res ), 'language' => 'json' ]]]);
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 ;
}