This commit is contained in:
Daniil Gentili 2020-04-29 14:57:21 +02:00
commit 17e85d361c
Signed by: danog
GPG Key ID: 8C1BE3B34B230CA7
3 changed files with 40 additions and 5 deletions

@ -1 +1 @@
Subproject commit 945a5ca6fb6411ddcad077d78018150983f53ede Subproject commit 3027150b5e9a5bb88acbfe97e7c5b0b7748c7bcf

View File

@ -85,7 +85,7 @@ class MTProto extends AsyncConstruct implements TLCallback
* *
* @var int * @var int
*/ */
const V = 137; const V = 138;
/** /**
* String release version. * String release version.
* *
@ -1180,12 +1180,12 @@ class MTProto extends AsyncConstruct implements TLCallback
'lang_pack' => $lang_pack, 'lang_pack' => $lang_pack,
], 'tl_schema' => [ ], 'tl_schema' => [
// TL scheme files // TL scheme files
'layer' => 111, 'layer' => 112,
// layer version // layer version
'src' => [ 'src' => [
'mtproto' => __DIR__.'/../../../schemas/TL_mtproto_v1.tl', 'mtproto' => __DIR__.'/../../../schemas/TL_mtproto_v1.tl',
// mtproto TL scheme // mtproto TL scheme
'telegram' => __DIR__.'/../../../schemas/TL_telegram_v111.tl', 'telegram' => __DIR__.'/../../../schemas/TL_telegram_v112.tl',
// telegram TL scheme // telegram TL scheme
'secret' => __DIR__.'/../../../schemas/TL_secret.tl', 'secret' => __DIR__.'/../../../schemas/TL_secret.tl',
// secret chats TL scheme // secret chats TL scheme

View File

@ -502,6 +502,7 @@ trait Files
list($res) = yield \danog\MadelineProto\Tools::all([$read, $write]); list($res) = yield \danog\MadelineProto\Tools::all([$read, $write]);
return $res; return $res;
} }
private function genAllFile($media): \Generator private function genAllFile($media): \Generator
{ {
$res = [$this->TL->getConstructors()->findByPredicate($media['_'])['type'] => $media]; $res = [$this->TL->getConstructors()->findByPredicate($media['_'])['type'] => $media];
@ -509,11 +510,45 @@ trait Files
case 'messageMediaPoll': case 'messageMediaPoll':
$res['Poll'] = $media['poll']; $res['Poll'] = $media['poll'];
$res['InputMedia'] = ['_' => 'inputMediaPoll', 'poll' => $res['Poll']]; $res['InputMedia'] = ['_' => 'inputMediaPoll', 'poll' => $res['Poll']];
if (isset($res['Poll']['quiz']) && $res['Poll']['quiz']) {
if (empty($media['results']['results'])) {
//quizzes need a correct answer
throw new \danog\MadelineProto\Exception('No poll results');
}
foreach ($media['results']['results'] as $answer) {
if ($answer['correct']) {
$res['InputMedia']['correct_answers'][] = $answer['option'];
}
}
}
if (isset($media['results']['solution'])) {
$res['InputMedia']['solution'] = $media['results']['solution'];
}
if (isset($media['results']['solution_entities'])) {
$res['InputMedia']['solution_entities'] = $media['results']['solution_entities'];
}
break; break;
case 'updateMessagePoll': case 'updateMessagePoll':
$res['Poll'] = $media['poll']; $res['Poll'] = $media['poll'];
$res['InputMedia'] = ['_' => 'inputMediaPoll', 'poll' => $res['Poll']]; $res['InputMedia'] = ['_' => 'inputMediaPoll', 'poll' => $res['Poll']];
$res['MessageMedia'] = ['_' => 'messageMediaPoll', 'poll' => $res['Poll'], 'results' => $media['results']]; $res['MessageMedia'] = ['_' => 'messageMediaPoll', 'poll' => $res['Poll'], 'results' => $media['results']];
if (isset($res['Poll']['quiz']) && $res['Poll']['quiz']) {
if (empty($media['results']['results'])) {
//quizzes need a correct answer
throw new \danog\MadelineProto\Exception('No poll results');
}
foreach ($media['results']['results'] as $answer) {
if ($answer['correct']) {
$res['InputMedia']['correct_answers'][] = $answer['option'];
}
}
}
if (isset($media['results']['solution'])) {
$res['InputMedia']['solution'] = $media['results']['solution'];
}
if (isset($media['results']['solution_entities'])) {
$res['InputMedia']['solution_entities'] = $media['results']['solution_entities'];
}
break; break;
case 'messageMediaPhoto': case 'messageMediaPhoto':
if (!isset($media['photo']['access_hash'])) { if (!isset($media['photo']['access_hash'])) {
@ -538,7 +573,7 @@ trait Files
} }
break; break;
case 'messageMediaDice': case 'messageMediaDice':
$res['InputMedia'] = ['_' => 'inputMediaDice']; $res['InputMedia'] = ['_' => 'inputMediaDice', 'emoticon' => $media['emoticon']];
break; break;
case 'poll': case 'poll':
$res['InputMedia'] = ['_' => 'inputMediaPoll', 'poll' => $res['Poll']]; $res['InputMedia'] = ['_' => 'inputMediaPoll', 'poll' => $res['Poll']];