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:09:05 +02:00
$settings = [ 'app_info' => [ 'api_id' => 6 , 'api_hash' => 'eb06d4abfb49dc3eeb1aeb98ae0f581e' ]];
2017-05-16 22:08:46 +02:00
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-06-09 21:56:13 +02:00
//var_dump($MadelineProto->API->get_config([], ['datacenter' => $MadelineProto->API->datacenter->curdc]));
//var_dump($MadelineProto->API->settings['connection']);
2017-07-24 13:43:09 +02:00
/*
$dialog_params = [ 'limit' => 0 , 'offset_date' => 0 , 'offset_id' => 0 , 'offset_peer' => [ '_' => 'inputPeerEmpty' ]];
$MadelineProto -> API -> updates_state [ 'sync_loading' ] = true ;
$res = [ 'dialogs' => [ 0 ]];
$datacenter = $MadelineProto -> API -> datacenter -> curdc ;
$count = 0 ;
while ( count ( $res [ 'dialogs' ])) {
\danog\MadelineProto\Logger :: log ([ 'Getting dialogs...' ]);
$res = $MadelineProto -> API -> method_call ( 'messages.getDialogs' , $MadelineProto -> API -> dialog_params , [ 'datacenter' => $datacenter , 'FloodWaitLimit' => 100 ]);
$count += count ( $res [ 'dialogs' ]);
$old_params = $MadelineProto -> API -> dialog_params ;
$MadelineProto -> API -> dialog_params [ 'offset_date' ] = end ( $res [ 'messages' ])[ 'date' ];
$MadelineProto -> API -> dialog_params [ 'offset_peer' ] = end ( $res [ 'dialogs' ])[ 'peer' ];
$MadelineProto -> API -> dialog_params [ 'offset_id' ] = end ( $res [ 'messages' ])[ 'id' ];
if ( $MadelineProto -> API -> dialog_params === $old_params ) {
break ;
}
}
2017-05-19 18:26:35 +02:00
2017-07-24 13:43:09 +02:00
$MadelineProto -> API -> updates_state [ 'sync_loading' ] = false ;
*/
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-07-23 17:44:01 +02:00
if ( isset ( $update [ 'update' ][ 'message' ][ 'from_id' ]) && 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 ;
}