diff --git a/composer.json b/composer.json index f5875f7a9..2c0c87984 100644 --- a/composer.json +++ b/composer.json @@ -73,7 +73,8 @@ "amphp/http-server": "^3", "leproxy/leproxy": "^0.2.2", "revolt/event-loop-adapter-react": "^1", - "dg/bypass-finals": "dev-master" + "dg/bypass-finals": "dev-master", + "roave/backward-compatibility-check": "^8.3" }, "suggest": { "ext-primemodule": "Install the primemodule and FFI extensions to speed up MadelineProto (https://prime.madelineproto.xyz)", diff --git a/docs b/docs index f33c74ea9..eee6d56e9 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit f33c74ea97367f14d30d2c7c32410d02f53e9453 +Subproject commit eee6d56e9f07205b5b85b09e1678d54d047c0b63 diff --git a/langs/fa.json b/langs/fa.json index e83489b3a..ed78e6275 100644 --- a/langs/fa.json +++ b/langs/fa.json @@ -127,7 +127,7 @@ "extensionRequiredInstallWithCustomInstructions": "برای نصب آن، دستورالعمل ها را در %s دنبال کنید.", "extensionRequired": "مدلین برای اجرا نیاز به افزونه %s دارد. %s", "manualAdminActionRequired": "!!!!!!!!! فعالیت دستی ادمین سیستم نیاز است !!!!!!!!!", - "must_have_declare_types": "به دلایل عملکردی و اجرایی، اولین دستور فایل ایونت‌هندلر باید declare(strict_types=1); باشد", + "must_have_declare_types": "به دلایل عملکردی و اجرایی، اولین دستور فایل ایونت‌هندلر باید دستور مقابل باشد: \"declare(strict_types=1);\"", "do_not_delete_MadelineProto.log": "فایل MadelineProto.log هیچوقت نباید حذف شود، لطفا به جای حذف، بیشترین اندازه دلخواه را در تنظیمات مشخص کنید!", "do_not_remove_MadelineProto.log_phar": "لطفا madeline.phar یا madeline.php را حذف نکنید، در غیراینصورت مدلین‌پروتو crash خواهد کرد. در صورت داشتن هرگونه مشکل با مدلین‌پروتو، آن را به https://github.com/danog/MadelineProto یا https://t.me/pwrtelegramgroup گزارش کنید", "do_not_use_deprecated_function": "تابع %s منسوخ شده، لطفا به جای آن از %s استفاده کنید", @@ -153,5 +153,7 @@ "waveform_value": "مقدار عددیwaveform باید بین 0 تا 31 باشد!", "could_not_convert_object": "نمیتوان مقدار آبجکت تایپ %s را تبدیل کرد", "mmapErrorPart1": "بیشترین مقدار حافظه تخصیص داده شده (mmap ) پر شده است (%s ) : لطفا از داخل کانفیگ های مربوط به کرنل مقدار vm.max_map_count را به مقدار 262144 افزایش دهیدتا مشکل رفع گردد.", - "could_not_connect_to_MadelineProto": "نمی توان به MadelineProto متصل شد، لطفاً proc_open را فعال کنید یا بازنویسی مسیر وب سرور را غیرفعال کنید تا مشکل رفع شود!" + "could_not_connect_to_MadelineProto": "نمی توان به مدلین‌پروتو متصل شد، لطفاً proc_open را فعال کنید یا بازنویسی مسیر وب سرور را غیرفعال کنید تا مشکل رفع شود! اگر این کار را کردید، مطمئن شوید که نسخه PHP در کامندلاین و وبسرور دقیقا یکی است (ورژن یکسان، افزونه‌های یکسان و...) و برای کسب اطلاعات بیشتر راجب اروری که مانع شروع IPC server میشود، فایل MadelineProto.log را بررسی کنید.", + "do_not_use_yield": "مدلین‌پروتو نسخه 8 نیازی به yield در توابع async ندارد و حتی آن را پشتیبانی هم نمیکند، شما باید تمام کلمات کلیدی yield را که قبلا در اجرای توابع async به کار میرفتند حذف کنید", + "windows_warning": "برای کاربران ویندوزی: لطفا اگر این ناموفق بود به لینوکس کوچ کنید. همچنین میتوانید تلاش کنید تا تنظیمات فایروال خود را تغییر دهید تا به تمام پروسه‌های PHP اجازه ساخت سوکت را بدهید (100 درصد تغییر سیستم به لینوکس آسان‌تر است، مدلین‌پروتو در لینوکس خارج از باکس کار میکند، نیازی به تغییر ندارد)" } diff --git a/src/Db/CacheContainer.php b/src/Db/CacheContainer.php index 2f3605d42..a03404db0 100644 --- a/src/Db/CacheContainer.php +++ b/src/Db/CacheContainer.php @@ -19,7 +19,6 @@ namespace danog\MadelineProto\Db; use Amp\Sync\LocalMutex; use Revolt\EventLoop; use Traversable; -use Webmozart\Assert\Assert; /** @internal */ final class CacheContainer diff --git a/src/EventHandler/Message/ChannelMessage.php b/src/EventHandler/Message/ChannelMessage.php index b81d3956c..04d9fc149 100644 --- a/src/EventHandler/Message/ChannelMessage.php +++ b/src/EventHandler/Message/ChannelMessage.php @@ -25,7 +25,7 @@ use danog\MadelineProto\MTProto; final class ChannelMessage extends Message { /** View counter */ - public readonly int $views; + public readonly ?int $views; /** Author of the post, if signatures are enabled */ public readonly ?string $signature; @@ -37,7 +37,7 @@ final class ChannelMessage extends Message ) { parent::__construct($API, $rawMessage, $info); - $this->views = $rawMessage['views']; + $this->views = $rawMessage['views'] ?? null; $this->signature = $rawMessage['post_author'] ?? null; } } diff --git a/src/Lang.php b/src/Lang.php index b89a8f5d0..5a4a7a5c4 100644 --- a/src/Lang.php +++ b/src/Lang.php @@ -141,7 +141,7 @@ If you intentionally deleted this account, ignore this message.', 'mmapErrorPart2' => 'To fix, run the following command as root: %s', 'mmapErrorPart3' => 'To persist the change across reboots: %s', 'mmapErrorPart4' => 'On Windows and WSL, increasing the size of the pagefile might help; please switch to native Linux if the issue persists.', - 'must_have_declare_types' => 'for performance reasons, the first statement of an event handler file must be declare(strict_types=1);', + 'must_have_declare_types' => 'for performance reasons, the first statement of an event handler file must be "declare(strict_types=1);"', 'nearest_dc' => 'ئێمە لە %s داین، نزیکترین DC %d ە.', 'need_dl.php' => 'Could not generate default download script (%s), please create a dl.php file with the following content: %s and pass its URL to the second parameter of getDownloadLink', 'noReportPeers' => 'Warning: no report peers are set, please add the following method to your event handler', @@ -306,7 +306,7 @@ If you intentionally deleted this account, ignore this message.', 'mmapErrorPart2' => 'To fix, run the following command as root: %s', 'mmapErrorPart3' => 'To persist the change across reboots: %s', 'mmapErrorPart4' => 'On Windows and WSL, increasing the size of the pagefile might help; please switch to native Linux if the issue persists.', - 'must_have_declare_types' => 'for performance reasons, the first statement of an event handler file must be declare(strict_types=1);', + 'must_have_declare_types' => 'for performance reasons, the first statement of an event handler file must be "declare(strict_types=1);"', 'nearest_dc' => 'We\'re in %s, nearest DC is %d.', 'need_dl.php' => 'Could not generate default download script (%s), please create a dl.php file with the following content: %s and pass its URL to the second parameter of getDownloadLink', 'noReportPeers' => 'Warning: no report peers are set, please add the following method to your event handler', @@ -403,7 +403,7 @@ If you intentionally deleted this account, ignore this message.', 'call_error_3' => 'نمیتوان تماس %s را یافت و کامل کرد', 'cli_need_dl.php_link' => 'لطفا هنگام استفاده از getDownloadLink روی CLI (محیط ترمینال)، لینک اسکریپت دانلود را مشخص کنید!', 'constructor_not_found' => 'سازنده برای این نوع پیدا نشد: ', - 'could_not_connect_to_MadelineProto' => 'نمی توان به MadelineProto متصل شد، لطفاً proc_open را فعال کنید یا بازنویسی مسیر وب سرور را غیرفعال کنید تا مشکل رفع شود!', + 'could_not_connect_to_MadelineProto' => 'نمی توان به مدلین‌پروتو متصل شد، لطفاً proc_open را فعال کنید یا بازنویسی مسیر وب سرور را غیرفعال کنید تا مشکل رفع شود! اگر این کار را کردید، مطمئن شوید که نسخه PHP در کامندلاین و وبسرور دقیقا یکی است (ورژن یکسان، افزونه‌های یکسان و...) و برای کسب اطلاعات بیشتر راجب اروری که مانع شروع IPC server میشود، فایل MadelineProto.log را بررسی کنید.', 'could_not_convert_object' => 'نمیتوان مقدار آبجکت تایپ %s را تبدیل کرد', 'deserialization_error' => 'مشکلی در سریال‌زدایی پیش آمد', 'dl.php_check_logs_make_sure_session_running' => 'هم ربات ایونت‌هندلر مدلین‌پروتو مرتبط و هم سرور IPC مدلین‌پروتو آفلاین هستند، لطفا لاگ‌ها را بررسی کنید و مطمئن شوید حداقل یکی از آنها در حال اجراست!', @@ -414,7 +414,7 @@ If you intentionally deleted this account, ignore this message.', 'do_not_use_blocking_function' => 'به دلایل عملکردی و اجرایی، ایونت‌هندلرها نباید از فانکشن %s که async نیست استفاده کنند، لطفا به جای آن از %s استفاده کنید', 'do_not_use_deprecated_function' => 'تابع %s منسوخ شده، لطفا به جای آن از %s استفاده کنید', 'do_not_use_non_root_require_in_event_handler' => 'به دلایل عملکردی و اجرایی، شما نباید از require یا include داخل کلس ایونت‌هندلر استفاده کنید، فقط require های سطح root مجاز هستند.', - 'do_not_use_yield' => 'MadelineProto 8 does not require or support the use of yield in async functions, you must remove all yield keywords previously used for async function calls', + 'do_not_use_yield' => 'مدلین‌پروتو نسخه 8 نیازی به yield در توابع async ندارد و حتی آن را پشتیبانی هم نمیکند، شما باید تمام کلمات کلیدی yield را که قبلا در اجرای توابع async به کار میرفتند حذف کنید', 'done' => 'انجام شد!', 'encode_double_error' => 'نمی‌توان به درستی double را رمزنگاری (انکد) کرد', 'extensionRecommended' => 'هشدار: افزونه %s نصب نشده است. لطفا برای افزایش سرعت مدلین‌پروتو آن را نصب کنید!', @@ -471,7 +471,7 @@ If you intentionally deleted this account, ignore this message.', 'mmapErrorPart2' => 'برای حل کردن مشکل، کامند مقابل را با دسترسی root اجرا کنید: %s', 'mmapErrorPart3' => 'برای تداوم تغییر در طول راه‌اندازی دوباره: %s', 'mmapErrorPart4' => 'روی ویندوز و WSL، افزایش سایز pagefile ممکن است کمک کند؛ اگر مشکل پافشاری کرد لطفا سیستم‌عامل خود را به لینوکس تغییر دهید.', - 'must_have_declare_types' => 'به دلایل عملکردی و اجرایی، اولین دستور فایل ایونت‌هندلر باید declare(strict_types=1); باشد', + 'must_have_declare_types' => 'به دلایل عملکردی و اجرایی، اولین دستور فایل ایونت‌هندلر باید دستور مقابل باشد: "declare(strict_types=1);"', 'nearest_dc' => 'ما در %s هستیم، نزدیک ترین دیتاسنتر %d است.', 'need_dl.php' => 'اسکریپت دانلود پیشفرض تولید نشد (%s)، لطفا یک فایل dl.php بسیازید و این محتوا را در آن قرار دهید: %s سپس لینک آن فایل را به ورودی دوم getDownloadLink بدهید', 'noReportPeers' => 'هشدار: هیچ peerی به عنوان peer گزارشات تنظیم نشده، لطفا متود زیر را به ایونت هندلر اضافه کنید', @@ -514,7 +514,7 @@ If you intentionally deleted this account, ignore this message.', 'value_smaller_than_9223372036854775808' => 'مقدار داده شده‌ی %s کمتر از -9223372036854775808 است', 'waveform_must_have_100_values' => 'آرایه waveformباید 100 مقدار داشته باشد(سایز مورد انتظار 100 است ) !', 'waveform_value' => 'مقدار عددیwaveform باید بین 0 تا 31 باشد!', - 'windows_warning' => 'For Windows users: please switch to Linux if this fails. You can also try modifying the firewall settings to allow all PHP processes to create sockets (it\'s 100% easier to just switch to Linux, on Linux MadelineProto just works out of the box, no changes needed)', + 'windows_warning' => 'برای کاربران ویندوزی: لطفا اگر این ناموفق بود به لینوکس کوچ کنید. همچنین میتوانید تلاش کنید تا تنظیمات فایروال خود را تغییر دهید تا به تمام پروسه‌های PHP اجازه ساخت سوکت را بدهید (100 درصد تغییر سیستم به لینوکس آسان‌تر است، مدلین‌پروتو در لینوکس خارج از باکس کار میکند، نیازی به تغییر ندارد)', ], 'fr' => [ @@ -636,7 +636,7 @@ If you intentionally deleted this account, ignore this message.', 'mmapErrorPart2' => 'To fix, run the following command as root: %s', 'mmapErrorPart3' => 'To persist the change across reboots: %s', 'mmapErrorPart4' => 'On Windows and WSL, increasing the size of the pagefile might help; please switch to native Linux if the issue persists.', - 'must_have_declare_types' => 'for performance reasons, the first statement of an event handler file must be declare(strict_types=1);', + 'must_have_declare_types' => 'for performance reasons, the first statement of an event handler file must be "declare(strict_types=1);"', 'nearest_dc' => 'We\'re in %s, nearest DC is %d.', 'need_dl.php' => 'Could not generate default download script (%s), please create a dl.php file with the following content: %s and pass its URL to the second parameter of getDownloadLink', 'noReportPeers' => 'Warning: no report peers are set, please add the following method to your event handler', @@ -801,7 +801,7 @@ If you intentionally deleted this account, ignore this message.', 'mmapErrorPart2' => 'To fix, run the following command as root: %s', 'mmapErrorPart3' => 'To persist the change across reboots: %s', 'mmapErrorPart4' => 'On Windows and WSL, increasing the size of the pagefile might help; please switch to native Linux if the issue persists.', - 'must_have_declare_types' => 'for performance reasons, the first statement of an event handler file must be declare(strict_types=1);', + 'must_have_declare_types' => 'for performance reasons, the first statement of an event handler file must be "declare(strict_types=1);"', 'nearest_dc' => 'אנחנו ב %s, חוות שרתי ה DC הקרובה היא %d.', 'need_dl.php' => 'Could not generate default download script (%s), please create a dl.php file with the following content: %s and pass its URL to the second parameter of getDownloadLink', 'noReportPeers' => 'Warning: no report peers are set, please add the following method to your event handler', @@ -1131,7 +1131,7 @@ If you intentionally deleted this account, ignore this message.', 'mmapErrorPart2' => 'To fix, run the following command as root: %s', 'mmapErrorPart3' => 'To persist the change across reboots: %s', 'mmapErrorPart4' => 'On Windows and WSL, increasing the size of the pagefile might help; please switch to native Linux if the issue persists.', - 'must_have_declare_types' => 'for performance reasons, the first statement of an event handler file must be declare(strict_types=1);', + 'must_have_declare_types' => 'for performance reasons, the first statement of an event handler file must be "declare(strict_types=1);"', 'nearest_dc' => 'Вы в %s, ближайший ДЦ: %d.', 'need_dl.php' => 'Could not generate default download script (%s), please create a dl.php file with the following content: %s and pass its URL to the second parameter of getDownloadLink', 'noReportPeers' => 'Warning: no report peers are set, please add the following method to your event handler', @@ -1296,7 +1296,7 @@ If you intentionally deleted this account, ignore this message.', 'mmapErrorPart2' => 'To fix, run the following command as root: %s', 'mmapErrorPart3' => 'To persist the change across reboots: %s', 'mmapErrorPart4' => 'On Windows and WSL, increasing the size of the pagefile might help; please switch to native Linux if the issue persists.', - 'must_have_declare_types' => 'for performance reasons, the first statement of an event handler file must be declare(strict_types=1);', + 'must_have_declare_types' => 'for performance reasons, the first statement of an event handler file must be "declare(strict_types=1);"', 'nearest_dc' => 'Biz %s ichidamiz, eng yaqin shahar %d.', 'need_dl.php' => 'Could not generate default download script (%s), please create a dl.php file with the following content: %s and pass its URL to the second parameter of getDownloadLink', 'noReportPeers' => 'Warning: no report peers are set, please add the following method to your event handler', @@ -1463,7 +1463,7 @@ If you intentionally deleted this account, ignore this message.', 'mmapErrorPart2' => 'To fix, run the following command as root: %s', 'mmapErrorPart3' => 'To persist the change across reboots: %s', 'mmapErrorPart4' => 'On Windows and WSL, increasing the size of the pagefile might help; please switch to native Linux if the issue persists.', - 'must_have_declare_types' => 'for performance reasons, the first statement of an event handler file must be declare(strict_types=1);', + 'must_have_declare_types' => 'for performance reasons, the first statement of an event handler file must be "declare(strict_types=1);"', 'nearest_dc' => 'We\'re in %s, nearest DC is %d.', 'need_dl.php' => 'Could not generate default download script (%s), please create a dl.php file with the following content: %s and pass its URL to the second parameter of getDownloadLink', 'noReportPeers' => 'Warning: no report peers are set, please add the following method to your event handler', diff --git a/src/VoIPController.php b/src/VoIPController.php index 742513ae2..b83345758 100644 --- a/src/VoIPController.php +++ b/src/VoIPController.php @@ -535,10 +535,11 @@ final class VoIPController if (!$it) { EventLoop::queue(Logger::log(...), "Starting conversion fiber..."); $pipe = new Pipe(4096); - EventLoop::queue(function () use ($f, $pipe) { + EventLoop::queue(function () use ($f, $pipe): void { try { Ogg::convert($f, $pipe->getSink(), $this->cancellation); - } catch (CancelledException) {} + } catch (CancelledException) { + } }); $it = new Ogg($pipe->getSource()); }