Skip to content

Commit 8dffdd0

Browse files
committed
Fixes
1 parent 2acd733 commit 8dffdd0

5 files changed

Lines changed: 26 additions & 11 deletions

File tree

‎examples/secret_bot.php‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public function handle(Incoming&SecretMessage $update): void
7979
if ($update->media) {
8080
$this->logger($update->media->downloadToDir('/tmp'));
8181
}
82-
if (isset($this->sent[$update->chatId])) {
82+
/*if (isset($this->sent[$update->chatId])) {
8383
return;
8484
}
8585
$secret_media = [];
@@ -312,7 +312,7 @@ public function handle(Incoming&SecretMessage $update): void
312312
// You can also use the sendEncrypted parameter for more options in secret chats
313313
$this->sendMessage(peer: $update->chatId, message: (string) ($i++));
314314
}
315-
$this->sent[$update->chatId] = true;
315+
$this->sent[$update->chatId] = true;*/
316316
}
317317
}
318318

‎src/EventHandler/Media.php‎

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use Amp\ByteStream\ReadableStream;
2020
use danog\MadelineProto\Ipc\IpcCapable;
2121
use danog\MadelineProto\MTProto;
22+
use danog\MadelineProto\TL\Types\Bytes;
2223
use JsonSerializable;
2324

2425
/**
@@ -62,10 +63,10 @@ abstract class Media extends IpcCapable implements JsonSerializable
6263
/** @internal Media location */
6364
public readonly array $location;
6465

65-
/** Encryption key for secret chat files */
66-
private readonly ?string $key;
67-
/** Encryption key for secret chat files */
68-
private readonly ?string $iv;
66+
/** @internal Encryption key for secret chat files */
67+
public readonly ?Bytes $key;
68+
/** @internal Encryption key for secret chat files */
69+
public readonly ?Bytes $iv;
6970

7071
/** @internal */
7172
public function __construct(
@@ -143,7 +144,7 @@ public function downloadToFile(string $file, ?callable $cb = null): string
143144
public function jsonSerialize(): mixed
144145
{
145146
$v = \get_object_vars($this);
146-
unset($v['API'], $v['session'], $v['location']);
147+
unset($v['API'], $v['session'], $v['location'], $v['key'], $v['iv']);
147148
return $v;
148149
}
149150
}

‎src/MTProtoTools/Files.php‎

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,18 @@ trait Files
7777
*/
7878
public function wrapMedia(array $media, bool $protected = false): ?Media
7979
{
80-
if ($media['_'] === 'photo' || $media['_'] === 'decryptedMessageMediaPhoto') {
80+
if ($media['_'] === 'photo') {
8181
$media = [ '_' => 'messageMediaPhoto', 'photo' => $media ];
8282
}
83-
if ($media['_'] === 'document' || $media['_'] === 'decryptedMessageMediaDocument' || $media['_'] === 'decryptedMessageMediaExternalDocument') {
83+
if ($media['_'] === 'document') {
8484
$media = [ '_' => 'messageMediaDocument', 'document' => $media];
8585
}
8686
if ($media['_'] === 'decryptedMessageMediaAudio') {
8787
return new Audio($this, $media, $media, $protected);
8888
}
89+
if ($media['_'] === 'decryptedMessageMediaPhoto') {
90+
return new Photo($this, $media, $protected);
91+
}
8992
if ($media['_'] === 'decryptedMessageMediaVideo') {
9093
return new Video($this, $media, $media, $protected);
9194
}
@@ -95,7 +98,10 @@ public function wrapMedia(array $media, bool $protected = false): ?Media
9598
}
9699
return new Photo($this, $media, $protected);
97100
}
98-
if ($media['_'] !== 'messageMediaDocument') {
101+
if ($media['_'] !== 'messageMediaDocument'
102+
&& $media['_'] === 'decryptedMessageMediaDocument'
103+
&& $media['_'] === 'decryptedMessageMediaExternalDocument'
104+
) {
99105
return null;
100106
}
101107
if (!isset($media['document'])) {

‎src/SecretChats/SecretChatController.php‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,7 @@ public function handleSent(array $request, array $response): array
404404
if (isset($response['file']) && $response['file']['_'] !== 'encryptedFileEmpty') {
405405
$msg['message']['file'] = $response['file'];
406406
$msg['message']['decrypted_message']['media']['file'] = $response['file'];
407+
$msg['message']['decrypted_message']['media']['date'] = $response['date'];
407408
}
408409
$msg['message']['decrypted_message']['out'] = true;
409410
$msg['message']['decrypted_message']['date'] = $msg['message']['date'];
@@ -426,6 +427,7 @@ private function handleDecryptedUpdate(array $update): void
426427
if ($decryptedMessage['_'] === 'decryptedMessage') {
427428
if (isset($update['message']['file']) && $update['message']['file']['_'] !== 'encryptedFileEmpty') {
428429
$update['message']['decrypted_message']['media']['file'] = $update['message']['file'];
430+
$update['message']['decrypted_message']['media']['date'] = $update['message']['date'];
429431
}
430432
$this->API->saveUpdate($update);
431433
return;

‎src/TL/Conversion/BotAPI.php‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,12 @@ public function MTProtoToBotAPI(array $data): array
388388
$res['file_id'] = (string) $fileId;
389389
$res['file_unique_id'] = $fileId->getUniqueBotAPI();
390390
return [$type_name => $res, 'caption' => $data['caption'] ?? ''];
391+
case 'decryptedMessageMediaAudio':
392+
case 'decryptedMessageMediaPhoto':
393+
case 'decryptedMessageMediaVideo':
394+
case 'decryptedMessageMediaDocument':
395+
case 'decryptedMessageMediaDocument':
396+
$data = $data['file'];
391397
case 'encryptedFile':
392398
$fileId = new FileId;
393399
$fileId->setId($data['id']);
@@ -402,7 +408,7 @@ public function MTProtoToBotAPI(array $data): array
402408
'file_size' => $data['size'],
403409
'mime_type' => 'application/octet-stream'
404410
];
405-
return ['encrypted' => $res, 'caption' => $data['caption'] ?? ''];
411+
return ['encrypted' => $res];
406412
default:
407413
throw new Exception(\sprintf(Lang::$current_lang['botapi_conversion_error'], $data['_']));
408414
}

0 commit comments

Comments
 (0)