1
0
mirror of https://github.com/danog/MadelineProto.git synced 2024-11-26 23:14:38 +01:00

Multiple fixes

This commit is contained in:
Daniil Gentili 2023-06-27 19:47:41 +02:00
parent dd9936ca4b
commit fea7f01066
Signed by: danog
GPG Key ID: 8C1BE3B34B230CA7
16 changed files with 516 additions and 91 deletions

View File

@ -272,7 +272,7 @@ Want to add your own open-source project to this list? [Click here!](https://doc
* <a href="https://docs.madelineproto.xyz/API_docs/methods/auth.checkRecoveryPassword.html" name="auth.checkRecoveryPassword">Check if the 2FA recovery code sent using auth.requestPasswordRecovery is valid, before passing it to auth.recoverPassword: auth.checkRecoveryPassword</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/auth.checkRecoveryPassword.html" name="auth.checkRecoveryPassword">Check if the 2FA recovery code sent using auth.requestPasswordRecovery is valid, before passing it to auth.recoverPassword: auth.checkRecoveryPassword</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages.checkChatInvite.html" name="messages.checkChatInvite">Check the validity of a chat invite link and get basic info about it: messages.checkChatInvite</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages.checkChatInvite.html" name="messages.checkChatInvite">Check the validity of a chat invite link and get basic info about it: messages.checkChatInvite</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages.checkHistoryImportPeer.html" name="messages.checkHistoryImportPeer">Check whether chat history exported from another chat app can be imported into a specific Telegram chat, click here for more info »: messages.checkHistoryImportPeer</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages.checkHistoryImportPeer.html" name="messages.checkHistoryImportPeer">Check whether chat history exported from another chat app can be imported into a specific Telegram chat, click here for more info »: messages.checkHistoryImportPeer</a>
* <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#issupergroup-int-id-bool" name="isSupergroup">Check whether provided bot API ID is a channel: isSupergroup</a> * <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#issupergroup-int-id-bool" name="isSupergroup">Check whether provided bot API ID is a channel or supergroup: isSupergroup</a>
* <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#hassecretchat-array-int-chat-bool" name="hasSecretChat">Check whether secret chat exists: hasSecretChat</a> * <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#hassecretchat-array-int-chat-bool" name="hasSecretChat">Check whether secret chat exists: hasSecretChat</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/stickers.checkShortName.html" name="stickers.checkShortName">Check whether the given short name is available: stickers.checkShortName</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/stickers.checkShortName.html" name="stickers.checkShortName">Check whether the given short name is available: stickers.checkShortName</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/phone.checkGroupCall.html" name="phone.checkGroupCall">Check whether the group call Server Forwarding Unit is currently receiving the streams with the specified WebRTC source IDs. : phone.checkGroupCall</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/phone.checkGroupCall.html" name="phone.checkGroupCall">Check whether the group call Server Forwarding Unit is currently receiving the streams with the specified WebRTC source IDs. : phone.checkGroupCall</a>
@ -376,8 +376,8 @@ Want to add your own open-source project to this list? [Click here!](https://doc
* <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#broadcastcustom-action-action-danog-madelineproto-broadcast-filter-filter-int" name="broadcastCustom">Executes a custom broadcast action with all peers (users, chats, channels) of the bot: broadcastCustom</a> * <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#broadcastcustom-action-action-danog-madelineproto-broadcast-filter-filter-int" name="broadcastCustom">Executes a custom broadcast action with all peers (users, chats, channels) of the bot: broadcastCustom</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/chatlists.exportChatlistInvite.html" name="chatlists.exportChatlistInvite">Export a folder », creating a chat folder deep link »: chatlists.exportChatlistInvite</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/chatlists.exportChatlistInvite.html" name="chatlists.exportChatlistInvite">Export a folder », creating a chat folder deep link »: chatlists.exportChatlistInvite</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages.exportChatInvite.html" name="messages.exportChatInvite">Export an invite link for a chat: messages.exportChatInvite</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages.exportChatInvite.html" name="messages.exportChatInvite">Export an invite link for a chat: messages.exportChatInvite</a>
* <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#exportauthorization-array-0-int-string-1-string-" name="exportAuthorization">Export authorization: exportAuthorization</a> * <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#exportauthorization-array-0-int-string-1-string" name="exportAuthorization">Export authorization: exportAuthorization</a>
* <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#extractupdates-array-updates-array-" name="extractUpdates">Extract Update constructors from an Updates constructor: extractUpdates</a> * <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#extractupdates-array-updates-array" name="extractUpdates">Extract Update constructors from an Updates constructor: extractUpdates</a>
* <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#extractmessageid-array-updates-int" name="extractMessageId">Extract a message ID from an Updates constructor: extractMessageId</a> * <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#extractmessageid-array-updates-int" name="extractMessageId">Extract a message ID from an Updates constructor: extractMessageId</a>
* <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#extractmessage-array-updates-array" name="extractMessage">Extract a message constructor from an Updates constructor: extractMessage</a> * <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#extractmessage-array-updates-array" name="extractMessage">Extract a message constructor from an Updates constructor: extractMessage</a>
* <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#extractmessageupdate-array-updates-array" name="extractMessageUpdate">Extract an update message constructor from an Updates constructor: extractMessageUpdate</a> * <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#extractmessageupdate-array-updates-array" name="extractMessageUpdate">Extract an update message constructor from an Updates constructor: extractMessageUpdate</a>
@ -387,7 +387,7 @@ Want to add your own open-source project to this list? [Click here!](https://doc
* <a href="https://docs.madelineproto.xyz/API_docs/methods/account.getSavedRingtones.html" name="account.getSavedRingtones">Fetch saved notification sounds: account.getSavedRingtones</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/account.getSavedRingtones.html" name="account.getSavedRingtones">Fetch saved notification sounds: account.getSavedRingtones</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages.getMessageEditData.html" name="messages.getMessageEditData">Find out if a media message's caption can be edited: messages.getMessageEditData</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages.getMessageEditData.html" name="messages.getMessageEditData">Find out if a media message's caption can be edited: messages.getMessageEditData</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/account.finishTakeoutSession.html" name="account.finishTakeoutSession">Finish account takeout session: account.finishTakeoutSession</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/account.finishTakeoutSession.html" name="account.finishTakeoutSession">Finish account takeout session: account.finishTakeoutSession</a>
* <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#callfork-generator-amp-future-callable-callable-mixed-args-amp-future-t-" name="callFork">Fork a new green thread and execute the passed function in the background: callFork</a> * <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#callfork-generator-amp-future-callable-callable-mixed-args-amp-future-t" name="callFork">Fork a new green thread and execute the passed function in the background: callFork</a>
* <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#broadcastforwardmessages-mixed-from_peer-list-int-message_ids-bool-drop_author-danog-madelineproto-broadcast-filter-filter-int" name="broadcastForwardMessages">Forwards a list of messages to all peers (users, chats, channels) of the bot: broadcastForwardMessages</a> * <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#broadcastforwardmessages-mixed-from_peer-list-int-message_ids-bool-drop_author-danog-madelineproto-broadcast-filter-filter-int" name="broadcastForwardMessages">Forwards a list of messages to all peers (users, chats, channels) of the bot: broadcastForwardMessages</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages.forwardMessages.html" name="messages.forwardMessages">Forwards messages by their IDs: messages.forwardMessages</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages.forwardMessages.html" name="messages.forwardMessages">Forwards messages by their IDs: messages.forwardMessages</a>
* <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#genvectorhash-array-ints-string" name="genVectorHash">Generate MTProto vector hash: genVectorHash</a> * <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#genvectorhash-array-ints-string" name="genVectorHash">Generate MTProto vector hash: genVectorHash</a>
@ -540,10 +540,10 @@ Want to add your own open-source project to this list? [Click here!](https://doc
* <a href="https://docs.madelineproto.xyz/API_docs/methods/channels.getParticipants.html" name="channels.getParticipants">Get the participants of a supergroup/channel: channels.getParticipants</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/channels.getParticipants.html" name="channels.getParticipants">Get the participants of a supergroup/channel: channels.getParticipants</a>
* <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#getbroadcastprogress-int-id-danog-madelineproto-broadcast-progress" name="getBroadcastProgress">Get the progress of a currently running broadcast: getBroadcastProgress</a> * <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#getbroadcastprogress-int-id-danog-madelineproto-broadcast-progress" name="getBroadcastProgress">Get the progress of a currently running broadcast: getBroadcastProgress</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/account.getTheme.html" name="account.getTheme">Get theme information: account.getTheme</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/account.getTheme.html" name="account.getTheme">Get theme information: account.getTheme</a>
* <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#gettype-mixed-id-user-bot-chat-supergroup-channel-" name="getType">Get type of peer: getType</a> * <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#gettype-mixed-id-danog-madelineproto-api-peer_type_" name="getType">Get type of peer: getType</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages.getUnreadMentions.html" name="messages.getUnreadMentions">Get unread messages where we were mentioned: messages.getUnreadMentions</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages.getUnreadMentions.html" name="messages.getUnreadMentions">Get unread messages where we were mentioned: messages.getUnreadMentions</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages.getUnreadReactions.html" name="messages.getUnreadReactions">Get unread reactions to messages you sent: messages.getUnreadReactions</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages.getUnreadReactions.html" name="messages.getUnreadReactions">Get unread reactions to messages you sent: messages.getUnreadReactions</a>
* <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#getupdates-array-offset-int-limit-int-timeout-float-params-list-array-update_id-mixed-update-mixed-" name="getUpdates">Get updates: getUpdates</a> * <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#getupdates-array-offset-int-limit-int-timeout-float-params-list-array-update_id-mixed-update-mixed" name="getUpdates">Get updates: getUpdates</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/account.getWebAuthorizations.html" name="account.getWebAuthorizations">Get web login widget authorizations: account.getWebAuthorizations</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/account.getWebAuthorizations.html" name="account.getWebAuthorizations">Get web login widget authorizations: account.getWebAuthorizations</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages.getMessageReadParticipants.html" name="messages.getMessageReadParticipants">Get which users read a specific message: only available for groups and supergroups with less than chat_read_mark_size_threshold members, read receipts will be stored for chat_read_mark_expire_period seconds after the message was sent, see client configuration for more info »: messages.getMessageReadParticipants</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages.getMessageReadParticipants.html" name="messages.getMessageReadParticipants">Get which users read a specific message: only available for groups and supergroups with less than chat_read_mark_size_threshold members, read receipts will be stored for chat_read_mark_expire_period seconds after the message was sent, see client configuration for more info »: messages.getMessageReadParticipants</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/account.getNotifySettings.html" name="account.getNotifySettings">Gets current notification settings for a given user/group, from all users/all groups: account.getNotifySettings</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/account.getNotifySettings.html" name="account.getNotifySettings">Gets current notification settings for a given user/group, from all users/all groups: account.getNotifySettings</a>
@ -788,12 +788,12 @@ Want to add your own open-source project to this list? [Click here!](https://doc
* <a href="https://docs.madelineproto.xyz/API_docs/methods/phone.toggleGroupCallStartSubscription.html" name="phone.toggleGroupCallStartSubscription">Subscribe or unsubscribe to a scheduled group call: phone.toggleGroupCallStartSubscription</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/phone.toggleGroupCallStartSubscription.html" name="phone.toggleGroupCallStartSubscription">Subscribe or unsubscribe to a scheduled group call: phone.toggleGroupCallStartSubscription</a>
* <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#subscribetoupdates-mixed-channel-bool-false-if-we-were-already-subscribed" name="subscribeToUpdates">Subscribe to event handler updates for a channel/supergroup we're not a member of: subscribeToUpdates</a> * <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#subscribetoupdates-mixed-channel-bool-false-if-we-were-already-subscribed" name="subscribeToUpdates">Subscribe to event handler updates for a channel/supergroup we're not a member of: subscribeToUpdates</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/stickers.suggestShortName.html" name="stickers.suggestShortName">Suggests a short name for a given stickerpack name: stickers.suggestShortName</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/stickers.suggestShortName.html" name="stickers.suggestShortName">Suggests a short name for a given stickerpack name: stickers.suggestShortName</a>
* <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#mbstrsplit-string-text-int-length-string-" name="mbStrSplit">Telegram UTF-8 multibyte split: mbStrSplit</a> * <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#mbstrsplit-string-text-int-length-string" name="mbStrSplit">Telegram UTF-8 multibyte split: mbStrSplit</a>
* <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#mbsubstr-string-text-int-offset-null-int-length-string" name="mbSubstr">Telegram UTF-8 multibyte substring: mbSubstr</a> * <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#mbsubstr-string-text-int-offset-null-int-length-string" name="mbSubstr">Telegram UTF-8 multibyte substring: mbSubstr</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/phone.discardGroupCall.html" name="phone.discardGroupCall">Terminate a group call: phone.discardGroupCall</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/phone.discardGroupCall.html" name="phone.discardGroupCall">Terminate a group call: phone.discardGroupCall</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/messages.sendWebViewResultMessage.html" name="messages.sendWebViewResultMessage">Terminate webview interaction started with messages.requestWebView, sending the specified message to the chat on behalf of the user: messages.sendWebViewResultMessage</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/messages.sendWebViewResultMessage.html" name="messages.sendWebViewResultMessage">Terminate webview interaction started with messages.requestWebView, sending the specified message to the chat on behalf of the user: messages.sendWebViewResultMessage</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/auth.resetAuthorizations.html" name="auth.resetAuthorizations">Terminates all user's authorized sessions except for the current one: auth.resetAuthorizations</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/auth.resetAuthorizations.html" name="auth.resetAuthorizations">Terminates all user's authorized sessions except for the current one: auth.resetAuthorizations</a>
* <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#testfibers-int-fibercount-array-maxfibers-int-realmemorymb-int-maps-int-maxmaps-int-" name="testFibers">Test fibers: testFibers</a> * <a href="https://docs.madelineproto.xyz/PHP/danog/MadelineProto/API.html#testfibers-int-fibercount-array-maxfibers-int-realmemorymb-int-maps-int-maxmaps-int" name="testFibers">Test fibers: testFibers</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/account.setContactSignUpNotification.html" name="account.setContactSignUpNotification">Toggle contact sign up notifications: account.setContactSignUpNotification</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/account.setContactSignUpNotification.html" name="account.setContactSignUpNotification">Toggle contact sign up notifications: account.setContactSignUpNotification</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/channels.toggleSlowMode.html" name="channels.toggleSlowMode">Toggle supergroup slow mode: if enabled, users will only be able to send one message every seconds seconds: channels.toggleSlowMode</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/channels.toggleSlowMode.html" name="channels.toggleSlowMode">Toggle supergroup slow mode: if enabled, users will only be able to send one message every seconds seconds: channels.toggleSlowMode</a>
* <a href="https://docs.madelineproto.xyz/API_docs/methods/channels.editCreator.html" name="channels.editCreator">Transfer channel ownership: channels.editCreator</a> * <a href="https://docs.madelineproto.xyz/API_docs/methods/channels.editCreator.html" name="channels.editCreator">Transfer channel ownership: channels.editCreator</a>

View File

@ -41,7 +41,7 @@ if (file_exists('vendor/autoload.php')) {
/** /**
* Event handler class. * Event handler class.
* *
* All properties are automatically stored in the database. * All properties returned by __sleep are automatically stored in the database.
*/ */
class MyEventHandler extends EventHandler class MyEventHandler extends EventHandler
{ {

122
langs/ckb.json Normal file
View File

@ -0,0 +1,122 @@
{
"apiChooseManualAutoTip": "تێبینی بکە کە دەتوانیت API ID/hash ڕاستەوخۆ لە کۆدەکەدا دابین بکەیت بە بەکارهێنانی ڕێکخستنەکان: %s",
"go": "بڕۆ",
"apiChooseManualAutoTipWeb": "تێبینی بکە کە دەتوانیت API ID/hash ڕاستەوخۆ لە کۆدەکەدا دابین بکەیت بە بەکارهێنانی <a target=\"_blank\" href=\"%s\">ڕێکخستنەکان</a>.",
"constructor_not_found": "Constructor نەدۆزرایەوە بۆ جۆری: ",
"botapi_conversion_error": "ناتوانرێت %s بگۆڕێت بۆ ئۆبجێکتی API بۆت",
"last_byte_invalid": "دوا بایتی نادروستە",
"file_type_invalid": "جۆری پەڕگەی نادروست دۆزراوەتەوە (%s)",
"apiManualInstructions2": "کلیک لەسەر create application بکە",
"signupLastNameWeb": "ناوی کۆتایی",
"apiChoosePrompt": "هەڵبژاردەی تۆ: ",
"apiManualInstructions0": "چوونەژوورەوە بۆ https://my.telegram.org",
"apiManualInstructions1": "بڕۆ بۆ ئامرازەکانی پەرەپێدانی API",
"apiAppInstructionsManual0": "ناوی ئەپەکەت دەتوانێت هەر شتێک بێت",
"apiAppInstructionsManual2": "URL ی ئەپ/ماڵپەڕەکەت، یان t.me/yourusername",
"apiAppInstructionsManual3": "هەر شتێک",
"apiAppInstructionsManual4": "لێرەدا باسی ئەپەکەت بکە",
"apiManualWeb": "API ID و API هاشەکەت دابنێ",
"apiManualPrompt1": "هاشی API ەکەت بنووسە: ",
"apiAutoPrompt0": "ژمارەی تەلەفۆنێک داخڵ بکە کە پێشتر لە تێلێگرام تۆمار کراوە: ",
"apiAutoPrompt1": "ئەو کۆدەی پشتڕاستکردنەوە کە لە تێلێگرام وەرتگرتووە داخڵ بکە: ",
"apiAppWeb": "زانیارییەکانی API داخڵ بکە",
"apiAppInstructionsAuto1": "ناوی کورتی ئەپەکە بنووسە، ئەلفوبێی ژمارەیی، ٥-٣٢ پیت: ",
"apiAppInstructionsAuto3": "چوونە ناو پلاتفۆرمی ئەپەکە: ",
"apiAppInstructionsAuto4": "باسی ئەپەکەت بکە: ",
"apiAppInstructionsAutoTypeOther": "شتی تر (لە وەسفدا دیاری بکە)",
"apiError": "هەڵە: %s. دووبارە هەوڵبدەرەوە.",
"loginChoosePromptWeb": "دەتەوێت وەک بەکارهێنەر یان وەک بۆت بچیتە ژوورەوە؟",
"loginWebQr1": "لە مۆبایلەکەتدا تێلێگرام بکەرەوە",
"loginWebQr2": "بڕۆ بۆ ڕێکخستنەکان > ئامێرەکان > بەستنەوەی ئامێری سەر مێز",
"loginOptionBot": "بۆت",
"loginOptionUser": "بەکارهێنەر",
"loginBot": "تۆکنی بۆتەکەت بنووسە: ",
"loginUser": "ژمارەی مۆبایلت داخل بکە: ",
"loginQrCodeSuccessful": "چوونەژوورەوەی کۆدی QR سەرکەوتوو بوو!",
"loginQrCodeExpired": "کۆدی QR بەسەرچوو، کۆدی نوێی دروستکرد...",
"loginManual": "یان دەتوانیت تۆکنێکی بۆت یان ژمارەی تەلەفۆنیش دابنێیت بۆ ئەوەی بە دەستی بچیتە ژوورەوە: ",
"loginUserCode": "کۆدەکە داخڵ بکە: ",
"loginUserPass": "وشەی نهێنی خۆت بنووسە (ئاماژە %s): ",
"loginUserPassWeb": "ژمارەی نهێنییەکەت داخل بکە: ",
"loginUserPassHint": "ئاماژە: %s",
"signupFirstName": "ناوی یەکەمی خۆت بنووسە: ",
"signupLastName": "ناوی کۆتایی خۆت بنووسە (دەتوانێت بەتاڵ بێت): ",
"signupWeb": "تکایە ناوت تۆمار بکە",
"signupFirstNameWeb": "ناوی یەکەم",
"loginNoCode": "تۆ کۆدی تەلەفۆنت بۆ دابین نەکرد!",
"loginNoName": "ناوی یەکەمتان دابین نەکردووە!",
"loginBotTokenWeb": "بۆت تۆکن",
"loginUserPhoneWeb": "ژمارەی تەلەفۆن",
"loginUserPhoneCodeWeb": "کۆد",
"done": "تەواو!",
"serialization_ofd": "زنجیرەییکردن بەسەرچووە، دووبارە بنیاتنانەوەی ئۆبجێکتی!",
"session_corrupted": "دانیشتنەکە گەندەڵ بووە!",
"value_bigger_than_2147483647": "بەهای دابینکراو %s گەورەترە لە 2147483647",
"value_smaller_than_2147483648": "بەهای دابینکراو %s بچووکترە لە -2147483648",
"value_bigger_than_9223372036854775807": "بەهای دابینکراو %s گەورەترە لە 9223372036854775807",
"value_smaller_than_9223372036854775808": "بەهای دابینکراو %s بچووکترە لە -9223372036854775808",
"value_bigger_than_4294967296": "بەهای مەرجدار %s گەورەترە لە 4294967296",
"value_smaller_than_0": "بەهای بە مەرجێک %s بچووکترە لە 0",
"encode_double_error": "نەتوانرا بە باشی دووانە کۆد بکات",
"file_not_exist": "فایله‌که‌ بوونی نییه‌",
"madelineproto_ready": "MadelineProto ئامادەیە!",
"logout_ok": "بە سەرکەوتوویی دەرچووە!",
"already_loggedIn": "ئەم نموونەیەی MadelineProto پێشتر چووەتە ژوورەوە!",
"login_ok": "بە سەرکەوتوویی چوونەژوورەوە!",
"login_user": "چوونە ژوورەوە وەک بەکارهێنەرێکی ئاسایی...",
"login_bot": "چوونە ژوورەوە وەک بۆتێک...",
"login_code_uncalled": "چاوەڕێی کۆدەکە ناکەم! تکایە سەرەتا پەیوەندی بە شێوازی phoneLogin بکەن",
"login_2fa_enabled": "2FA چالاک کراوە، دەبێت بانگی فەنکشنی complete2falogin بکەیت...",
"login_auth_key": "چوونە ژوورەوە بە بەکارهێنانی کلیلی auth...",
"signing_up": "ناو تۆمارکردن وەک بەکارهێنەرێکی ئاسایی...",
"signup_ok": "بە سەرکەوتوویی ناوت تۆمار کرد!",
"2fa_uncalled": "چاوەڕێی پاسۆردەکە ناکەم! تکایە سەرەتا پەیوەندی بە phoneLogin و شێوازەکانی completePhoneLogin بکەن!",
"call_error_1": "نەتوانرا پەیوەندی %s بدۆزرێتەوە و وەریبگرێت",
"accepting_call": "وەرگرتنی پەیوەندی لە %s...",
"call_already_accepted": "پەیوەندی %s پێشتر وەرگیراوە",
"call_confirming": "پشتڕاستکردنەوەی پەیوەندی لە %s...",
"call_error_3": "نەتوانرا پەیوەندی %s بدۆزرێتەوە و تەواو بکات",
"fingerprint_invalid": "پەنجەمۆری کلیل نادروستە!",
"call_discarding": "فڕێدانی پەیوەندی %s...",
"file_parsing": "پارسکردنی %s...",
"src_file_invalid": "پەڕگەی سەرچاوەی نادروست دابین کرا: ",
"not_numeric": "بەهای پێدراو ژمارەیی نییە",
"long_not_16": "بەهای پێدراو درێژییەکەی ١٦ بایت نییە",
"long_not_64": "بەهای پێدراو درێژییەکەی ٦٤ بایت نییە",
"array_invalid": "تۆ ڕیزبەندییەکی دروستت دابین نەکردووە",
"type_extract_error": "نەتوانرا جۆری \"%s\" دەربهێنرێت، پێویستە MadelineProto نوێ بکەیتەوە!",
"method_not_found": "نەتوانرا شێواز بدۆزرێتەوە: ",
"params_missing": "پارامێتری پێویست نەماوە",
"stream_handle_invalid": "دەستەیەکی نادروستی سترێم دابین کرابوو.",
"apiAppInstructionsManual1": "ناوی کورتی ئەپەکەت، ئەلفوبێی ژمارەیی، ٥-٣٢ پیت",
"apiManualPrompt0": "ناسنامەی API ی خۆت دابنێ: ",
"apiAutoWeb": "ژمارەیەکی تەلەفۆن دابنێ کە <b>پێشتر تۆمارکراوە</b> لە تێلێگرام بۆ بەدەستهێنانی ناسنامەی API",
"apiAppInstructionsAuto0": "ناوی ئەپەکە بنووسە، دەتوانێت هەر شتێک بێت: ",
"apiAppInstructionsAuto2": "URL ی ئەپ/ماڵپەڕەکە دابنێ، یان t.me/yourusername: ",
"apiParamsError": "تۆ هەموو پارامێتەرەکانی پێویستت دابین نەکردووە!",
"loginWebQr": "هەروەها دەتوانیت بە شێوەیەکی ئۆتۆماتیکی بچیتە ژوورەوە بە سکانکردنی ئەم QR کۆدە:",
"loginWebQr3": "بۆ پشتڕاستکردنەوەی چوونەژوورەوە مۆبایلەکەت ئاراستەی ئەم شاشەیە بکە",
"loginQr": "کۆدی QR ی سەرەوە سکان بکە بۆ ئەوەی بە شێوەیەکی ئۆتۆماتیکی بچیتە ژوورەوە.",
"loginNoPass": "تۆ پاسۆردەکەت دابین نەکرد!",
"nearest_dc": "ئێمە لە %s داین، نزیکترین DC %d ە.",
"api_not_set": "پێویستە کلیلی api و api id دابین بکەیت، خۆت @ my.telegram.org بەدەست بهێنە",
"deserialization_error": "هەڵەیەک لە کاتی ڕیزبەندیکردندا ڕوویدا",
"rpc_tg_error": "تێلێگرام هەڵەیەکی RPC ی گەڕاندەوە: %s (%s)، کە بەهۆی %s:%s%sTL شوێنپێهەڵگرتنەوە دروست بووە:",
"login_code_sending": "ناردنی کۆد...",
"login_code_sent": "کۆد بە سەرکەوتوویی نێردراوە! کاتێک کۆدەکەت وەرگرت پێویستە فەنکشنی completePhoneLogin بەکاربهێنیت.",
"login_need_signup": "ئەکاونتێک بۆ ئەم ژمارەیە دروست نەکراوە، دەبێت پەیوەندی بە فەنکشنی completeSignup بکەیت...",
"not_loggedIn": "من چوومەتە ژوورەوە!",
"signup_uncalled": "چاوەڕێی ناو تۆمارکردن ناکەم! تکایە سەرەتا پەیوەندی بە phoneLogin و شێوازەکانی completePhoneLogin بکەن!",
"peer_not_in_db": "ئەم هاوتایە لە بنکەدراوەی ناوخۆیی هاوتادا ئامادە نییە",
"call_already_declined": "پەیوەندی %s پێشتر ڕەتکراوەتەوە",
"call_error_2": "نەتوانرا پەیوەندی %s بدۆزرێتەوە و پشتڕاستی بکاتەوە",
"call_completing": "تەواوکردنی پەیوەندی لە %s...",
"bool_error": "نەتوانرا boolean دەربهێنرێت",
"long_not_32": "بەهای پێدراو درێژییەکەی ٣٢ بایت نییە",
"predicate_not_set": "پێشبینی (بەهای ژێر _) دانەنرابوو!",
"sec_peer_not_in_db": "ئەم هاوتا نهێنییە لە بنکەدراوەی ناوخۆیی هاوتادا ئامادە نییە",
"length_too_big": "درێژی زۆر گەورەیە",
"type_extract_error_id": "نەتوانرا جۆری: %s بە id %s دەربهێنرێت، پێویستە MadelineProto نوێ بکەیتەوە!",
"non_text_conversion": "هێشتا ناتوانرێت نامە نا کورتەکان بگۆڕدرێت!",
"secret_chat_skipping": "من چاتی نهێنی %sم لە بنکەدراوەدا نییە، نامەکەم بەجێهێشتووە..."
}

122
langs/fa.json Normal file
View File

@ -0,0 +1,122 @@
{
"apiChoosePrompt": "انتخاب شما (m/a): ",
"apiManualInstructions0": "ورود به https://my.telegram.org",
"apiAppInstructionsManual0": "اسم برنامه شما، میتواند هرچیزی باشد",
"apiAppInstructionsManual1": "اسم مخفف برنامه شما، 5 تا 32 کاراکتر الفبا اعداد",
"apiAppInstructionsManual2": "لینک برنامه/وبسایت شما، یا t.me/yourusername",
"apiAppInstructionsManual3": "هرچیزی",
"apiAppInstructionsManual4": "برنامه‌تان را اینجا توصیف کنید",
"apiManualPrompt0": "API ID خود را وارد کنید: ",
"apiManualPrompt1": "API Hash خود را وارد کنید: ",
"apiAutoPrompt0": "شماره‌ای را وارد کنید که از قبل در تلگرام ثبت‌نام کرده باشد: ",
"apiAutoPrompt1": "کد تاییدی را که در تلگرام دریافت کردید، وارد کنید ",
"apiAppWeb": "اطلاعات API را وارد کنید",
"apiAppInstructionsAuto1": "نام مخفف برنامه‌تان را وارد کنید، 5 تا 32 کاراکتر الفبا اعداد: ",
"apiAppInstructionsAuto2": "لینک برنامه/وبسایت را وارد کنید، یا t.me/yourusername: ",
"apiAppInstructionsAuto4": "برنامه‌تان را توصیف کنید: ",
"apiAppInstructionsAutoTypeOther": "مابقی (در توضیحات مشخص کنید)",
"apiChooseManualAutoTip": "به یاد داشته باشید که میتوانید به صورت مستقیم API ID و API Hash را داخل کدتان با استفاده از تنظیمات مقرر کنید. %s",
"apiChooseManualAutoTipWeb": "به یاد داشته باشید که میتوانید به صورت مستقیم API ID و API Hash را داخل کدتان با استفاده از <a target=\"_blank\" href=\"%s\">تنظیمات</a>مقرر کنید.",
"go": "برو",
"apiManualWeb": "API ID و API HASH خود را وارد کنید",
"apiAutoWeb": "برای دریافت API ID شماره‌ای را وارد کنید که از قبل در تلگرام <b>ثبت‌نام</b> کرده باشد",
"apiAppInstructionsAuto0": "نام برنامه خود را وارد کنید، میتواند هرچیزی باشد ",
"apiAppInstructionsAuto3": "سکوی (پلتفرم) برنامه را وارد کنید: ",
"apiParamsError": "شما تمام ورودی‌های موردنیاز را وارد نکردید!",
"apiError": "ارور: %s. دوباره امتحان کنید.",
"loginChoosePromptWeb": "میخواهید به عنوان یک کاربر یا به عنوان یک ربات، وارد شوید؟",
"loginWebQr": "همچنین میتوانید به صورت خودکار با اسکن QR Code پایین وارد شوید:",
"loginWebQr2": "بروید به تنظیمات > دستگاه‌ها > اتصال دستگاه دسکتاپ",
"loginWebQr3": "گوشی خود را به سمت این صفحه بگیرید تا ورود را تایید کنید",
"loginOptionBot": "ربات",
"loginOptionUser": "کاربر",
"loginBot": "توکن ربات‌تان را وارد کنید: ",
"loginUser": "شماره تلفن‌تان را وارد کنید: ",
"loginQr": "برای ورود خودکار QR Code بالا را اسکن کنید.",
"loginQrCodeSuccessful": "ورود با QR code با موفقیت انجام شد!",
"loginQrCodeExpired": "QR Code منقضی شد، در حال ساخت QR code جدید...",
"loginManual": "همچنین از سوی دیگر، میتوانید توکن ربات یا شماره تلفن خود را برای ورود خودکار وارد کنید: ",
"loginUserCode": "کد را وارد کنید: ",
"loginUserPass": "رمز خود را وارد کنید (اشاره %s): ",
"loginUserPassWeb": "رمز خود را وارد کنید: ",
"loginUserPassHint": "اشاره: %s",
"signupFirstNameWeb": "نام",
"nearest_dc": "ما در %s هستیم، نزدیک ترین دیتاسنتر %d است.",
"fingerprint_invalid": "اثرانگشت کلید نامعتبر است!",
"value_bigger_than_2147483647": "مقدار داده شده‌ی %s بیشتر از 2147483647 است",
"value_bigger_than_9223372036854775807": "مقدار داده شده‌ی %s بیشتر از 9223372036854775807 است",
"already_loggedIn": "نمونه‌ی MadelineProto از قبل وارد شده!",
"login_code_sent": "کد با موفقیت ارسال شد! زمانی که کد را دریافت کردید باید از تابع completePhoneLogin استفاده کنید.",
"apiManualInstructions2": "روی (create application) کلیک کنید",
"signupFirstName": "نام خود را وارد کنید: ",
"signupLastName": "نام خانوادگی خود را وارد کنید (می‌تواند خالی باشد): ",
"loginNoPass": "شما کلمه عبور را وارد نکردید!",
"loginNoName": "شما نام را وارد نکردید!",
"loginBotTokenWeb": "توکن ربات",
"loginUserPhoneWeb": "شماره تلفن",
"loginUserPhoneCodeWeb": "کد",
"done": "انجام شد!",
"serialization_ofd": "مرتب سازی (سریالایز) منقضی شده، درحال بازسازی شی!",
"session_corrupted": "سشن شما خراب است!",
"value_smaller_than_9223372036854775808": "مقدار داده شده‌ی %s کمتر از -9223372036854775808 است",
"value_smaller_than_2147483648": "مقدار داده شده‌ی %s کمتر از -2147483648 است",
"value_bigger_than_4294967296": "مقدار داده شده‌ی %s بیشتر از 4294967296 است",
"value_smaller_than_0": "مقدار داده شده‌ی %s کمتر از 0 است",
"file_not_exist": "فایل وجود ندارد",
"madelineproto_ready": "MadelineProto آماده است!",
"logout_ok": "با موفقیت خارج شد!",
"login_ok": "با موفقیت وارد شد!",
"login_user": "در حال ورود به عنوان یک کاربر عادی...",
"login_bot": "در حال ورود به عنوان یک ربات...",
"login_code_sending": "در حال ارسال کد...",
"login_code_uncalled": "من منتظر کد نیستم! لطفا اول تابع phoneLogin را صدا بزنید",
"login_need_signup": "حسابی برای این شماره ساخته نشده‌است، شما باید تابع completeSignup را صدا بزنید...",
"login_auth_key": "درحال ورود با استفاده از کلید هویتی...",
"not_loggedIn": "من وارد نشدم!",
"signing_up": "در حال ثبت‌نام به عنوان یک کاربر عادی...",
"signup_ok": "با موفقیت ثبت‌نام شد!",
"2fa_uncalled": "من منتظر کلمه عبور نیستم! لطفا اول توابع phoneLogin و completePhoneLogin را صدا بزنید!",
"accepting_call": "در حال پذیرش تماس از طرف %s...",
"call_already_accepted": "تماس %s از قبل پذیرفته شده",
"call_already_declined": "تماس %s از قبل رد شده",
"login_2fa_enabled": "احراز هویت دوعاملی فعال است، شما باید تابع complete2falogin را صدا بزنید...",
"call_error_3": "نمیتوان تماس %s را یافت و کامل کرد",
"call_completing": "در حال کامل کردن تماس از طرف %s...",
"call_discarding": "درحال صرف نظر کردن از تماس %s...",
"file_parsing": "درحال تجزیه %s...",
"not_numeric": "مقدار ورودی عددی نیست",
"signup_uncalled": "من منتظر ساخت حساب نیستم! لطفا اول توابع phoneLogin و completePhoneLogin را صدا بزنید!",
"call_error_1": "نمی‌توان تماس %s را پیدا کرد و پذیرفت",
"call_error_2": "نمی‌توان تماس %s را پیدا و تایید کرد",
"signupLastNameWeb": "نام خانوادگی",
"call_confirming": "در حال تایید تماس از طرف %s...",
"long_not_16": "مقدار ورودی به طول 16 بایت نیست",
"long_not_32": "مقدار ورودی به طول 32 بایت نیست",
"long_not_64": "مقدار ورودی به طول 64 بایت نیست",
"array_invalid": "شما یک آرایه معتبر وارد نکردید",
"predicate_not_set": "مستند (مقدار تحت _) تنظیم نشده!",
"type_extract_error": "نمی‌توان نوع (تایپ) \"%s\" را استخراج کرد، شما باید MadelineProto را به روز رسانی کنید!",
"apiManualInstructions1": "به ابزارهای توسعه API بروید",
"loginWebQr1": "تلگرام را در موبایل خود باز کنید",
"signupWeb": "لطفا ثبت‌نام کنید",
"loginNoCode": "شما کد شماره را وارد نکردید!",
"api_not_set": "شما باید یک api key و یک api id وارد کنید، @ خوتان را از my.telegram.org بگیرید",
"deserialization_error": "مشکلی در سریال‌زدایی پیش آمد",
"rpc_tg_error": "تلگرام یک خطای RPC برگرداند: %s (%s), ناشی از %s:%s%sTL رد:",
"peer_not_in_db": "این peer در پایگاه داده (دیتابیس) peer وجود ندارد",
"encode_double_error": "نمی‌توان به درستی double را رمزنگاری (انکد) کرد",
"method_not_found": "تابع پیدا نشد: ",
"params_missing": "ورودی موردنیاز یافت نشد",
"length_too_big": "طول بسیار بزرگ است",
"type_extract_error_id": "نمی‌توان نوع: %s را با ایدی %s استخراج کرد، شما باید MadelineProto را به روز رسانی کنید!",
"constructor_not_found": "سازنده برای این نوع پیدا نشد: ",
"botapi_conversion_error": "نمیتوان %s را به شی ربات API تبدیل کرد",
"non_text_conversion": "فعلا نمی‌توان پیام‌های غیرمتنی را تبدیل کرد!",
"file_type_invalid": "نوع فایل نامعتبر شناسایی شد (%s)",
"secret_chat_skipping": "من چت مخفی (سکرت) %s را در پایگاه داده (دیتابیس) ندارم، درحال رد شدن از پیام...",
"src_file_invalid": "منبع فایل نامعتبری لحاظ گردیده: ",
"bool_error": "نمی‌توان‌ boolean را استخراج کرد",
"sec_peer_not_in_db": "این peer مخفی در پایگاه داده (دیتابیس) داخلی peer وجود ندارد",
"last_byte_invalid": "last byte نامعتبر است",
"stream_handle_invalid": "یک کنترل‌کننده جریان (استریم هندل) نامعتبر لحاظ گردیده."
}

62
langs/fr.json Normal file
View File

@ -0,0 +1,62 @@
{
"loginUserCode": "Entrez le code: ",
"loginUserPass": "Entrez votre mot de passe (Indice %s): ",
"loginUserPassWeb": "Entrez votre mot de passe: ",
"loginUserPassHint": "Indice: %s",
"signupFirstName": "Entrez votre prénom: ",
"signupLastName": "Entrez votre nom de famille (peut être vide): ",
"loginOptionUser": "Utilisateur",
"loginUser": "Entrez votre numéro de téléphone: ",
"file_not_exist": "Le fichier n'existe pas",
"deserialization_error": "Une erreur s'est produite lors de la désérialisation",
"loginUserPhoneCodeWeb": "Code",
"loginNoName": "Vous n'avez pas fourni le prénom!",
"loginUserPhoneWeb": "Numéro de téléphone",
"login_user": "Connexion en tant qu'utilisateur normal...",
"madelineproto_ready": "MadelineProto est prêt!",
"logout_ok": "Déconnecté avec succès!",
"already_loggedIn": "Cette instance de MadelineProto est déjà connectée!",
"login_ok": "Connecté avec succès!",
"apiManualInstructions0": "Connectez-vous à https://my.telegram.org",
"apiAutoPrompt1": "Entrez le code de vérification que vous avez reçu dans Telegram: ",
"params_missing": "Paramètre requis manquant",
"array_invalid": "Vous n'avez pas fourni de tableau valide",
"not_numeric": "La valeur donnée n'est pas numérique",
"non_text_conversion": "Impossible de convertir des messages non textuels pour le moment!",
"signup_ok": "Inscription réussie!",
"login_code_sending": "Envoi du code...",
"login_code_sent": "Code envoyé avec succès! Une fois que vous avez reçu le code, vous devez utiliser la fonction completePhoneLogin.",
"loginQr": "Scannez le code QR ci-dessus pour vous connecter automatiquement.",
"loginQrCodeSuccessful": "Connexion par code QR réussie!",
"loginWebQr": "Vous pouvez également vous connecter automatiquement en scannant le code QR suivant:",
"loginWebQr1": "Ouvrez Telegram sur votre téléphone",
"loginNoPass": "Vous n'avez pas fourni le mot de passe!",
"signupFirstNameWeb": "Prénom",
"signupLastNameWeb": "Nom de famille",
"serialization_ofd": "La sérialisation est obsolète, reconstruction de l'objet!",
"session_corrupted": "La session est corrompue!",
"apiParamsError": "Vous n'avez pas fourni tous les paramètres requis!",
"apiError": "ERREUR: %s. Essayez de nouveau.",
"signupWeb": "Inscrivez-vous s'il vous plaît",
"loginWebQr3": "Pointez votre téléphone vers cet écran pour confirmer la connexion",
"login_2fa_enabled": "2FA activé, vous devrez appeler la fonction complete2falogin...",
"signing_up": "Inscription en tant qu'utilisateur normal...",
"value_bigger_than_9223372036854775807": "La valeur fournie %s est supérieure à 9223372036854775807",
"value_smaller_than_9223372036854775808": "La valeur fournie %s est inférieure à -9223372036854775808",
"value_bigger_than_4294967296": "La valeur fournie %s est supérieure à 4294967296",
"value_smaller_than_0": "La valeur fournie %s est inférieure à 0",
"value_bigger_than_2147483647": "La valeur fournie %s est supérieure à 2147483647",
"value_smaller_than_2147483648": "La valeur fournie %s est inférieure à -2147483648",
"call_error_1": "Impossible de trouver et d'accepter l'appel %s",
"accepting_call": "Acceptation de l'appel de %s...",
"call_error_2": "Impossible de trouver et de confirmer l'appel %s",
"long_not_16": "La valeur donnée ne fait pas 16 octets",
"long_not_32": "La valeur donnée ne fait pas 32 octets",
"long_not_64": "La valeur donnée ne fait pas 64 octets",
"last_byte_invalid": "Dernier octet invalide",
"call_error_3": "Impossible de trouver et de terminer l'appel %s",
"call_completing": "Fin de l'appel de %s...",
"call_confirming": "Confirmation de l'appel de %s...",
"call_discarding": "Abandon de l'appel %s...",
"file_parsing": "Analyse de %s..."
}

59
langs/ru.json Normal file
View File

@ -0,0 +1,59 @@
{
"go": "ОК",
"apiChoosePrompt": "Ваш выбор (m/a): ",
"apiManualInstructions0": "Залогинтесь в https://my.telegram.org",
"apiManualInstructions1": "Нажмите на \"API development tools\"",
"apiManualInstructions2": "Выберите \"create application\"",
"apiAppInstructionsManual0": "Имя вашего приложения, что угодно",
"apiAppInstructionsManual1": "короткое имя вашего приложения, латиница и цифры, 5-32 букв",
"apiAppInstructionsManual2": "Ссылка на сайт важего приложения, или t.me/username",
"apiAppInstructionsManual3": "что угодно",
"apiManualWeb": "Введите ваш API ID и API hash",
"apiManualPrompt0": "Введите ваш API ID: ",
"apiManualPrompt1": "Введите ваш API hash: ",
"apiAutoPrompt0": "Введите номер телефона который уже записан в Telegram: ",
"apiAutoPrompt1": "Введите код проверки, который вы получили в Telegram: ",
"apiAppWeb": "Введите API информацию",
"apiAppInstructionsAuto2": "Введите ссылку на сайт вашего приложения, или t.me/yourusername: ",
"apiAppInstructionsAuto4": "Опишите ваше приложение: ",
"apiAppInstructionsAutoTypeOther": "Другое (указано в описании)",
"apiParamsError": "Вы не заполнили все обязательные параметры!",
"apiChooseManualAutoTip": "Также можно указать API ID/hash сразу в коде используя настройки: %s",
"apiChooseManualAutoTipWeb": "Также можно указать API ID/hash сразу в коде с помощью <a target=\"_blank\" href=\"%s\">настроек</a>.",
"apiAppInstructionsManual4": "Опишите ваше приложение сдесь",
"apiAutoWeb": "Введите номер телефона который <b>уже записан</b> в Телеграме чтобы получить API ID",
"apiAppInstructionsAuto0": "Введите имя приложения, может быть что угодно: ",
"apiAppInstructionsAuto1": "Введите короткое имя вашего приложения, латиница и цифры, 5-32 букв: ",
"apiAppInstructionsAuto3": "Введите платформу приложения: ",
"apiError": "ОШИБКА: %s. Попробуйте снова.",
"loginWebQr1": "Откройте Telegram в вашем смартфоне",
"loginWebQr2": "Откройте Настройки > Устройства > Подключить устройство",
"loginUser": "Номер телефона: ",
"loginQr": "Отсканируйте QR код выше чтобы войти автоматически.",
"loginQrCodeSuccessful": "Вход по QR коду прошел успешно!",
"loginUserCode": "Введите код: ",
"loginUserPass": "Введите ваш пароль (подсказка %s): ",
"loginUserPassWeb": "Введите ваш пароль: ",
"loginUserPassHint": "Подсказка: %s",
"signupFirstName": "Введите ваше имя: ",
"loginOptionBot": "Бот",
"loginOptionUser": "Пользователь",
"loginBot": "Введите токен бота: ",
"signupWeb": "Зарегистрируйтесь, пожалуйста",
"signupFirstNameWeb": "Имя",
"signupLastNameWeb": "Фамилия",
"loginNoCode": "Вы не ввели код!",
"loginNoPass": "Вы не ввели пароль!",
"loginNoName": "Вы не ввели имя!",
"loginBotTokenWeb": "Токен бота",
"loginUserPhoneCodeWeb": "Код",
"done": "Готово!",
"nearest_dc": "Вы в %s, ближайший ДЦ: %d.",
"loginQrCodeExpired": "QR код больше не действует, генерируем новый...",
"signupLastName": "Введите вашу фамилию (может быть пустым): ",
"loginUserPhoneWeb": "Номер телефона",
"loginManual": "Вы также можете ввести токен бота или номер телефона чтобы войти вручную: ",
"loginChoosePromptWeb": "Авторизоваться как пользователь или как бот?",
"loginWebQr": "Вы также можете войти, отсканировав QR код:",
"loginWebQr3": "Наведите ваш смартфон на этот экран чтобы подтвердить вход"
}

View File

@ -52,55 +52,85 @@ final class API extends AbstractAPI
* *
* @var string * @var string
*/ */
const RELEASE = MTProto::RELEASE; public const RELEASE = MTProto::RELEASE;
/** /**
* We're not logged in. * We're not logged in.
* *
* @var int * @var int
*/ */
const NOT_LOGGED_IN = MTProto::NOT_LOGGED_IN; public const NOT_LOGGED_IN = MTProto::NOT_LOGGED_IN;
/** /**
* We're waiting for the login code. * We're waiting for the login code.
* *
* @var int * @var int
*/ */
const WAITING_CODE = MTProto::WAITING_CODE; public const WAITING_CODE = MTProto::WAITING_CODE;
/** /**
* We're waiting for parameters to sign up. * We're waiting for parameters to sign up.
* *
* @var int * @var int
*/ */
const WAITING_SIGNUP = MTProto::WAITING_SIGNUP; public const WAITING_SIGNUP = MTProto::WAITING_SIGNUP;
/** /**
* We're waiting for the 2FA password. * We're waiting for the 2FA password.
* *
* @var int * @var int
*/ */
const WAITING_PASSWORD = MTProto::WAITING_PASSWORD; public const WAITING_PASSWORD = MTProto::WAITING_PASSWORD;
/** /**
* We're logged in. * We're logged in.
* *
* @var int * @var int
*/ */
const LOGGED_IN = MTProto::LOGGED_IN; public const LOGGED_IN = MTProto::LOGGED_IN;
/** /**
* Secret chat was not found. * Secret chat was not found.
* *
* @var int * @var int
*/ */
const SECRET_EMPTY = MTProto::SECRET_EMPTY; public const SECRET_EMPTY = MTProto::SECRET_EMPTY;
/** /**
* Secret chat was requested. * Secret chat was requested.
* *
* @var int * @var int
*/ */
const SECRET_REQUESTED = MTProto::SECRET_REQUESTED; public const SECRET_REQUESTED = MTProto::SECRET_REQUESTED;
/** /**
* Secret chat was found. * Secret chat was found.
* *
* @var int * @var int
*/ */
const SECRET_READY = MTProto::SECRET_READY; public const SECRET_READY = MTProto::SECRET_READY;
/**
* This peer is a user.
*
* @var string
*/
public const PEER_TYPE_USER = MTProto::PEER_TYPE_USER;
/**
* This peer is a bot.
*
* @var string
*/
public const PEER_TYPE_BOT = MTProto::PEER_TYPE_BOT;
/**
* This peer is a normal group.
*
* @var string
*/
public const PEER_TYPE_GROUP = MTProto::PEER_TYPE_GROUP;
/**
* This peer is a supergroup.
*
* @var string
*/
public const PEER_TYPE_SUPERGROUP = MTProto::PEER_TYPE_SUPERGROUP;
/**
* This peer is a channel.
*
* @var string
*/
public const PEER_TYPE_CHANNEL = MTProto::PEER_TYPE_CHANNEL;
use Start; use Start;
/** /**
* Session paths. * Session paths.
@ -132,7 +162,7 @@ final class API extends AbstractAPI
} }
/** /**
* Magic constructor function. * Constructor function.
* *
* @param string $session Session name * @param string $session Session name
* @param array|SettingsAbstract $settings Settings * @param array|SettingsAbstract $settings Settings

View File

@ -1015,7 +1015,7 @@ abstract class InternalDoc
* *
* @param mixed $id Peer * @param mixed $id Peer
* *
* @return 'user'|'bot'|'chat'|'supergroup'|'channel' * @return \danog\MadelineProto\API::PEER_TYPE_*
*/ */
public function getType(mixed $id): string public function getType(mixed $id): string
{ {
@ -1135,7 +1135,7 @@ abstract class InternalDoc
return $this->wrapper->getAPI()->isPremium(); return $this->wrapper->getAPI()->isPremium();
} }
/** /**
* Check whether provided bot API ID is a channel. * Check whether provided bot API ID is a channel or supergroup.
* *
* @param int $id Bot API ID * @param int $id Bot API ID
*/ */

View File

@ -49,7 +49,7 @@ final class Lang
'apiManualInstructions1' => 'بڕۆ بۆ ئامرازەکانی پەرەپێدانی API', 'apiManualInstructions1' => 'بڕۆ بۆ ئامرازەکانی پەرەپێدانی API',
'apiManualInstructions2' => 'کلیک لەسەر create application بکە', 'apiManualInstructions2' => 'کلیک لەسەر create application بکە',
'apiManualPrompt0' => 'ناسنامەی API ی خۆت دابنێ: ', 'apiManualPrompt0' => 'ناسنامەی API ی خۆت دابنێ: ',
'apiManualPrompt1' => 'هاشی API ـەکەت بنووسە: ', 'apiManualPrompt1' => 'هاشی API ەکەت بنووسە: ',
'apiManualWeb' => 'API ID و API هاشەکەت دابنێ', 'apiManualWeb' => 'API ID و API هاشەکەت دابنێ',
'apiParamsError' => 'تۆ هەموو پارامێتەرەکانی پێویستت دابین نەکردووە!', 'apiParamsError' => 'تۆ هەموو پارامێتەرەکانی پێویستت دابین نەکردووە!',
'api_not_set' => 'پێویستە کلیلی api و api id دابین بکەیت، خۆت @ my.telegram.org بەدەست بهێنە', 'api_not_set' => 'پێویستە کلیلی api و api id دابین بکەیت، خۆت @ my.telegram.org بەدەست بهێنە',
@ -292,16 +292,16 @@ final class Lang
'apiChoosePrompt' => 'انتخاب شما (m/a): ', 'apiChoosePrompt' => 'انتخاب شما (m/a): ',
'apiError' => 'ارور: %s. دوباره امتحان کنید.', 'apiError' => 'ارور: %s. دوباره امتحان کنید.',
'apiManualInstructions0' => 'ورود به https://my.telegram.org', 'apiManualInstructions0' => 'ورود به https://my.telegram.org',
'apiManualInstructions1' => 'Go to API development tools', 'apiManualInstructions1' => 'به ابزارهای توسعه API بروید',
'apiManualInstructions2' => 'روی (create application) کلیک کنید', 'apiManualInstructions2' => 'روی (create application) کلیک کنید',
'apiManualPrompt0' => 'API ID خود را وارد کنید: ', 'apiManualPrompt0' => 'API ID خود را وارد کنید: ',
'apiManualPrompt1' => 'API Hash خود را وارد کنید: ', 'apiManualPrompt1' => 'API Hash خود را وارد کنید: ',
'apiManualWeb' => 'API ID و API HASH خود را وارد کنید', 'apiManualWeb' => 'API ID و API HASH خود را وارد کنید',
'apiParamsError' => 'شما تمام ورودی‌های موردنیاز را وارد نکردید!', 'apiParamsError' => 'شما تمام ورودی‌های موردنیاز را وارد نکردید!',
'api_not_set' => 'You must provide an api key and an api id, get your own @ my.telegram.org', 'api_not_set' => 'شما باید یک api key و یک api id وارد کنید، @ خوتان را از my.telegram.org بگیرید',
'array_invalid' => 'شما یک آرایه معتبر وارد نکردید', 'array_invalid' => 'شما یک آرایه معتبر وارد نکردید',
'bool_error' => 'Could not extract boolean', 'bool_error' => 'نمی‌توان‌ boolean را استخراج کرد',
'botapi_conversion_error' => 'Can\'t convert %s to a bot API object', 'botapi_conversion_error' => 'نمیتوان %s را به شی ربات API تبدیل کرد',
'call_already_accepted' => 'تماس %s از قبل پذیرفته شده', 'call_already_accepted' => 'تماس %s از قبل پذیرفته شده',
'call_already_declined' => 'تماس %s از قبل رد شده', 'call_already_declined' => 'تماس %s از قبل رد شده',
'call_completing' => 'در حال کامل کردن تماس از طرف %s...', 'call_completing' => 'در حال کامل کردن تماس از طرف %s...',
@ -310,22 +310,22 @@ final class Lang
'call_error_1' => 'نمی‌توان تماس %s را پیدا کرد و پذیرفت', 'call_error_1' => 'نمی‌توان تماس %s را پیدا کرد و پذیرفت',
'call_error_2' => 'نمی‌توان تماس %s را پیدا و تایید کرد', 'call_error_2' => 'نمی‌توان تماس %s را پیدا و تایید کرد',
'call_error_3' => 'نمیتوان تماس %s را یافت و کامل کرد', 'call_error_3' => 'نمیتوان تماس %s را یافت و کامل کرد',
'constructor_not_found' => 'Constructor not found for type: ', 'constructor_not_found' => 'سازنده برای این نوع پیدا نشد: ',
'deserialization_error' => 'An error occurred on deserialization', 'deserialization_error' => 'مشکلی در سریال‌زدایی پیش آمد',
'done' => 'انجام شد!', 'done' => 'انجام شد!',
'encode_double_error' => 'Could not properly encode double', 'encode_double_error' => 'نمی‌توان به درستی double را رمزنگاری (انکد) کرد',
'file_not_exist' => 'فایل وجود ندارد', 'file_not_exist' => 'فایل وجود ندارد',
'file_parsing' => 'درحال تجزیه %s...', 'file_parsing' => 'درحال تجزیه %s...',
'file_type_invalid' => 'Invalid file type detected (%s)', 'file_type_invalid' => 'نوع فایل نامعتبر شناسایی شد (%s)',
'fingerprint_invalid' => 'اثرانگشت کلید نامعتبر است!', 'fingerprint_invalid' => 'اثرانگشت کلید نامعتبر است!',
'go' => 'برو', 'go' => 'برو',
'last_byte_invalid' => 'Invalid last byte', 'last_byte_invalid' => 'last byte نامعتبر است',
'length_too_big' => 'Length is too big', 'length_too_big' => 'طول بسیار بزرگ است',
'loginBot' => 'توکن ربات‌تان را وارد کنید: ', 'loginBot' => 'توکن ربات‌تان را وارد کنید: ',
'loginBotTokenWeb' => 'توکن ربات', 'loginBotTokenWeb' => 'توکن ربات',
'loginChoosePromptWeb' => 'میخواهید به عنوان یک کاربر یا به عنوان یک ربات، وارد شوید؟', 'loginChoosePromptWeb' => 'میخواهید به عنوان یک کاربر یا به عنوان یک ربات، وارد شوید؟',
'loginManual' => 'همچنین از سوی دیگر، میتوانید توکن ربات یا شماره تلفن خود را برای ورود خودکار وارد کنید: ', 'loginManual' => 'همچنین از سوی دیگر، میتوانید توکن ربات یا شماره تلفن خود را برای ورود خودکار وارد کنید: ',
'loginNoCode' => 'You didn\'t provide a phone code!', 'loginNoCode' => 'شما کد شماره را وارد نکردید!',
'loginNoName' => 'شما نام را وارد نکردید!', 'loginNoName' => 'شما نام را وارد نکردید!',
'loginNoPass' => 'شما کلمه عبور را وارد نکردید!', 'loginNoPass' => 'شما کلمه عبور را وارد نکردید!',
'loginOptionBot' => 'ربات', 'loginOptionBot' => 'ربات',
@ -341,7 +341,7 @@ final class Lang
'loginUserPhoneCodeWeb' => 'کد', 'loginUserPhoneCodeWeb' => 'کد',
'loginUserPhoneWeb' => 'شماره تلفن', 'loginUserPhoneWeb' => 'شماره تلفن',
'loginWebQr' => 'همچنین میتوانید به صورت خودکار با اسکن QR Code پایین وارد شوید:', 'loginWebQr' => 'همچنین میتوانید به صورت خودکار با اسکن QR Code پایین وارد شوید:',
'loginWebQr1' => 'Open Telegram on your phone', 'loginWebQr1' => 'تلگرام را در موبایل خود باز کنید',
'loginWebQr2' => 'بروید به تنظیمات > دستگاه‌ها > اتصال دستگاه دسکتاپ', 'loginWebQr2' => 'بروید به تنظیمات > دستگاه‌ها > اتصال دستگاه دسکتاپ',
'loginWebQr3' => 'گوشی خود را به سمت این صفحه بگیرید تا ورود را تایید کنید', 'loginWebQr3' => 'گوشی خود را به سمت این صفحه بگیرید تا ورود را تایید کنید',
'login_2fa_enabled' => 'احراز هویت دوعاملی فعال است، شما باید تابع complete2falogin را صدا بزنید...', 'login_2fa_enabled' => 'احراز هویت دوعاملی فعال است، شما باید تابع complete2falogin را صدا بزنید...',
@ -358,17 +358,17 @@ final class Lang
'long_not_32' => 'مقدار ورودی به طول 32 بایت نیست', 'long_not_32' => 'مقدار ورودی به طول 32 بایت نیست',
'long_not_64' => 'مقدار ورودی به طول 64 بایت نیست', 'long_not_64' => 'مقدار ورودی به طول 64 بایت نیست',
'madelineproto_ready' => 'MadelineProto آماده است!', 'madelineproto_ready' => 'MadelineProto آماده است!',
'method_not_found' => 'Could not find method: ', 'method_not_found' => 'تابع پیدا نشد: ',
'nearest_dc' => 'ما در %s هستیم، نزدیک ترین دیتاسنتر %d است.', 'nearest_dc' => 'ما در %s هستیم، نزدیک ترین دیتاسنتر %d است.',
'non_text_conversion' => 'Can\'t convert non text messages yet!', 'non_text_conversion' => 'فعلا نمی‌توان پیام‌های غیرمتنی را تبدیل کرد!',
'not_loggedIn' => 'من وارد نشدم!', 'not_loggedIn' => 'من وارد نشدم!',
'not_numeric' => 'مقدار ورودی عددی نیست', 'not_numeric' => 'مقدار ورودی عددی نیست',
'params_missing' => 'Missing required parameter', 'params_missing' => 'ورودی موردنیاز یافت نشد',
'peer_not_in_db' => 'This peer is not present in the internal peer database', 'peer_not_in_db' => 'این peer در پایگاه داده (دیتابیس) peer وجود ندارد',
'predicate_not_set' => 'Predicate (value under _) was not set!', 'predicate_not_set' => 'مستند (مقدار تحت _) تنظیم نشده!',
'rpc_tg_error' => 'Telegram returned an RPC error: %s (%s), caused by %s:%s%sTL trace:', 'rpc_tg_error' => 'تلگرام یک خطای RPC برگرداند: %s (%s), ناشی از %s:%s%sTL رد:',
'sec_peer_not_in_db' => 'This secret peer is not present in the internal peer database', 'sec_peer_not_in_db' => 'این peer مخفی در پایگاه داده (دیتابیس) داخلی peer وجود ندارد',
'secret_chat_skipping' => 'I do not have the secret chat %s in the database, skipping message...', 'secret_chat_skipping' => 'من چت مخفی (سکرت) %s را در پایگاه داده (دیتابیس) ندارم، درحال رد شدن از پیام...',
'serialization_ofd' => 'مرتب سازی (سریالایز) منقضی شده، درحال بازسازی شی!', 'serialization_ofd' => 'مرتب سازی (سریالایز) منقضی شده، درحال بازسازی شی!',
'session_corrupted' => 'سشن شما خراب است!', 'session_corrupted' => 'سشن شما خراب است!',
'signing_up' => 'در حال ثبت‌نام به عنوان یک کاربر عادی...', 'signing_up' => 'در حال ثبت‌نام به عنوان یک کاربر عادی...',
@ -376,13 +376,13 @@ final class Lang
'signupFirstNameWeb' => 'نام', 'signupFirstNameWeb' => 'نام',
'signupLastName' => 'نام خانوادگی خود را وارد کنید (می‌تواند خالی باشد): ', 'signupLastName' => 'نام خانوادگی خود را وارد کنید (می‌تواند خالی باشد): ',
'signupLastNameWeb' => 'نام خانوادگی', 'signupLastNameWeb' => 'نام خانوادگی',
'signupWeb' => 'Sign up please', 'signupWeb' => 'لطفا ثبت‌نام کنید',
'signup_ok' => 'با موفقیت ثبت‌نام شد!', 'signup_ok' => 'با موفقیت ثبت‌نام شد!',
'signup_uncalled' => 'من منتظر ساخت حساب نیستم! لطفا اول توابع phoneLogin و completePhoneLogin را صدا بزنید!', 'signup_uncalled' => 'من منتظر ساخت حساب نیستم! لطفا اول توابع phoneLogin و completePhoneLogin را صدا بزنید!',
'src_file_invalid' => 'Invalid source file was provided: ', 'src_file_invalid' => 'منبع فایل نامعتبری لحاظ گردیده: ',
'stream_handle_invalid' => 'An invalid stream handle was provided.', 'stream_handle_invalid' => 'یک کنترل‌کننده جریان (استریم هندل) نامعتبر لحاظ گردیده.',
'type_extract_error' => 'Could not extract type "%s", you should update MadelineProto!', 'type_extract_error' => 'نمی‌توان نوع (تایپ) "%s" را استخراج کرد، شما باید MadelineProto را به روز رسانی کنید!',
'type_extract_error_id' => 'Could not extract type: %s with id %s, you should update MadelineProto!', 'type_extract_error_id' => 'نمی‌توان نوع: %s را با ایدی %s استخراج کرد، شما باید MadelineProto را به روز رسانی کنید!',
'value_bigger_than_2147483647' => 'مقدار داده شده‌ی %s بیشتر از 2147483647 است', 'value_bigger_than_2147483647' => 'مقدار داده شده‌ی %s بیشتر از 2147483647 است',
'value_bigger_than_4294967296' => 'مقدار داده شده‌ی %s بیشتر از 4294967296 است', 'value_bigger_than_4294967296' => 'مقدار داده شده‌ی %s بیشتر از 4294967296 است',
'value_bigger_than_9223372036854775807' => 'مقدار داده شده‌ی %s بیشتر از 9223372036854775807 است', 'value_bigger_than_9223372036854775807' => 'مقدار داده شده‌ی %s بیشتر از 9223372036854775807 است',
@ -776,7 +776,7 @@ final class Lang
'apiAppInstructionsManual3' => 'что угодно', 'apiAppInstructionsManual3' => 'что угодно',
'apiAppInstructionsManual4' => 'Опишите ваше приложение сдесь', 'apiAppInstructionsManual4' => 'Опишите ваше приложение сдесь',
'apiAppWeb' => 'Введите API информацию', 'apiAppWeb' => 'Введите API информацию',
'apiAutoPrompt0' => 'Введите номер телефона который уже записан в Телеграме: ', 'apiAutoPrompt0' => 'Введите номер телефона который уже записан в Telegram: ',
'apiAutoPrompt1' => 'Введите код проверки, который вы получили в Telegram: ', 'apiAutoPrompt1' => 'Введите код проверки, который вы получили в Telegram: ',
'apiAutoWeb' => 'Введите номер телефона который <b>уже записан</b> в Телеграме чтобы получить API ID', 'apiAutoWeb' => 'Введите номер телефона который <b>уже записан</b> в Телеграме чтобы получить API ID',
'apiChooseManualAutoTip' => 'Также можно указать API ID/hash сразу в коде используя настройки: %s', 'apiChooseManualAutoTip' => 'Также можно указать API ID/hash сразу в коде используя настройки: %s',
@ -804,7 +804,7 @@ final class Lang
'call_error_3' => 'Could not find and complete call %s', 'call_error_3' => 'Could not find and complete call %s',
'constructor_not_found' => 'Constructor not found for type: ', 'constructor_not_found' => 'Constructor not found for type: ',
'deserialization_error' => 'An error occurred on deserialization', 'deserialization_error' => 'An error occurred on deserialization',
'done' => 'Done!', 'done' => 'Готово!',
'encode_double_error' => 'Could not properly encode double', 'encode_double_error' => 'Could not properly encode double',
'file_not_exist' => 'File does not exist', 'file_not_exist' => 'File does not exist',
'file_parsing' => 'Parsing %s...', 'file_parsing' => 'Parsing %s...',
@ -813,29 +813,29 @@ final class Lang
'go' => 'ОК', 'go' => 'ОК',
'last_byte_invalid' => 'Invalid last byte', 'last_byte_invalid' => 'Invalid last byte',
'length_too_big' => 'Length is too big', 'length_too_big' => 'Length is too big',
'loginBot' => 'Enter your bot token: ', 'loginBot' => 'Введите токен бота: ',
'loginBotTokenWeb' => 'Bot token', 'loginBotTokenWeb' => 'Токен бота',
'loginChoosePromptWeb' => 'Do you want to login as a user or as a bot?', 'loginChoosePromptWeb' => 'Авторизоваться как пользователь или как бот?',
'loginManual' => 'Alternatively, you can also enter a bot token or phone number to login manually: ', 'loginManual' => 'Вы также можете ввести токен бота или номер телефона чтобы войти вручную: ',
'loginNoCode' => 'You didn\'t provide a phone code!', 'loginNoCode' => 'Вы не ввели код!',
'loginNoName' => 'You didn\'t provide the first name!', 'loginNoName' => 'Вы не ввели имя!',
'loginNoPass' => 'You didn\'t provide the password!', 'loginNoPass' => 'Вы не ввели пароль!',
'loginOptionBot' => 'Bot', 'loginOptionBot' => 'Бот',
'loginOptionUser' => 'User', 'loginOptionUser' => 'Пользователь',
'loginQr' => 'Scan the above QR code to login automatically.', 'loginQr' => 'Отсканируйте QR код выше чтобы войти автоматически.',
'loginQrCodeExpired' => 'The QR code expired, generating a new one...', 'loginQrCodeExpired' => 'QR код больше не действует, генерируем новый...',
'loginQrCodeSuccessful' => 'QR code login successful!', 'loginQrCodeSuccessful' => 'Вход по QR коду прошел успешно!',
'loginUser' => 'Enter your phone number: ', 'loginUser' => 'Номер телефона: ',
'loginUserCode' => 'Enter the code: ', 'loginUserCode' => 'Введите код: ',
'loginUserPass' => 'Enter your password (hint %s): ', 'loginUserPass' => 'Введите ваш пароль (подсказка %s): ',
'loginUserPassHint' => 'Hint: %s', 'loginUserPassHint' => 'Подсказка: %s',
'loginUserPassWeb' => 'Enter your password: ', 'loginUserPassWeb' => 'Введите ваш пароль: ',
'loginUserPhoneCodeWeb' => 'Code', 'loginUserPhoneCodeWeb' => 'Код',
'loginUserPhoneWeb' => 'Phone number', 'loginUserPhoneWeb' => 'Номер телефона',
'loginWebQr' => 'You can also login automatically by scanning the following QR code:', 'loginWebQr' => 'Вы также можете войти, отсканировав QR код:',
'loginWebQr1' => 'Open Telegram on your phone', 'loginWebQr1' => 'Откройте Telegram в вашем смартфоне',
'loginWebQr2' => 'Go to Settings > Devices > Link Desktop Device', 'loginWebQr2' => 'Откройте Настройки > Устройства > Подключить устройство',
'loginWebQr3' => 'Point your phone at this screen to confirm login', 'loginWebQr3' => 'Наведите ваш смартфон на этот экран чтобы подтвердить вход',
'login_2fa_enabled' => '2FA enabled, you will have to call the complete2falogin function...', 'login_2fa_enabled' => '2FA enabled, you will have to call the complete2falogin function...',
'login_auth_key' => 'Logging in using auth key...', 'login_auth_key' => 'Logging in using auth key...',
'login_bot' => 'Logging in as a bot...', 'login_bot' => 'Logging in as a bot...',
@ -851,7 +851,7 @@ final class Lang
'long_not_64' => 'Given value is not 64 bytes long', 'long_not_64' => 'Given value is not 64 bytes long',
'madelineproto_ready' => 'MadelineProto is ready!', 'madelineproto_ready' => 'MadelineProto is ready!',
'method_not_found' => 'Could not find method: ', 'method_not_found' => 'Could not find method: ',
'nearest_dc' => 'We\'re in %s, nearest DC is %d.', 'nearest_dc' => 'Вы в %s, ближайший ДЦ: %d.',
'non_text_conversion' => 'Can\'t convert non text messages yet!', 'non_text_conversion' => 'Can\'t convert non text messages yet!',
'not_loggedIn' => 'I\'m not logged in!', 'not_loggedIn' => 'I\'m not logged in!',
'not_numeric' => 'Given value isn\'t numeric', 'not_numeric' => 'Given value isn\'t numeric',
@ -864,11 +864,11 @@ final class Lang
'serialization_ofd' => 'Serialization is out of date, reconstructing object!', 'serialization_ofd' => 'Serialization is out of date, reconstructing object!',
'session_corrupted' => 'The session is corrupted!', 'session_corrupted' => 'The session is corrupted!',
'signing_up' => 'Signing up as a normal user...', 'signing_up' => 'Signing up as a normal user...',
'signupFirstName' => 'Enter your first name: ', 'signupFirstName' => 'Введите ваше имя: ',
'signupFirstNameWeb' => 'First name', 'signupFirstNameWeb' => 'Имя',
'signupLastName' => 'Enter your last name (can be empty): ', 'signupLastName' => 'Введите вашу фамилию (может быть пустым): ',
'signupLastNameWeb' => 'Last name', 'signupLastNameWeb' => 'Фамилия',
'signupWeb' => 'Sign up please', 'signupWeb' => 'Зарегистрируйтесь, пожалуйста',
'signup_ok' => 'Signed up in successfully!', 'signup_ok' => 'Signed up in successfully!',
'signup_uncalled' => 'I\'m not waiting to signup! Please call the phoneLogin and the completePhoneLogin methods first!', 'signup_uncalled' => 'I\'m not waiting to signup! Please call the phoneLogin and the completePhoneLogin methods first!',
'src_file_invalid' => 'Invalid source file was provided: ', 'src_file_invalid' => 'Invalid source file was provided: ',

View File

@ -109,7 +109,6 @@ final class Logger
private readonly PsrLogger $psr; private readonly PsrLogger $psr;
/** /**
* Default logger instance. * Default logger instance.
*
*/ */
public static ?self $default = null; public static ?self $default = null;
/** /**

View File

@ -96,7 +96,7 @@ final class ReadLoop extends Loop
$this->connection->reconnect(); $this->connection->reconnect();
} else { } else {
$this->connection->reconnect(); $this->connection->reconnect();
throw new RPCErrorException($error, $error); throw new RPCErrorException((string) $error, $error);
} }
}); });
return self::STOP; return self::STOP;

View File

@ -138,37 +138,67 @@ final class MTProto implements TLCallback, LoggerGetter
* *
* @var string * @var string
*/ */
const RELEASE = '8.0.0-beta99'; public const RELEASE = '8.0.0-beta99';
/** /**
* We're not logged in. * We're not logged in.
* *
* @var int * @var int
*/ */
const NOT_LOGGED_IN = 0; public const NOT_LOGGED_IN = 0;
/** /**
* We're waiting for the login code. * We're waiting for the login code.
* *
* @var int * @var int
*/ */
const WAITING_CODE = 1; public const WAITING_CODE = 1;
/** /**
* We're waiting for parameters to sign up. * We're waiting for parameters to sign up.
* *
* @var int * @var int
*/ */
const WAITING_SIGNUP = -1; public const WAITING_SIGNUP = -1;
/** /**
* We're waiting for the 2FA password. * We're waiting for the 2FA password.
* *
* @var int * @var int
*/ */
const WAITING_PASSWORD = 2; public const WAITING_PASSWORD = 2;
/** /**
* We're logged in. * We're logged in.
* *
* @var int * @var int
*/ */
const LOGGED_IN = 3; public const LOGGED_IN = 3;
/**
* This peer is a user.
*
* @var string
*/
public const PEER_TYPE_USER = 'user';
/**
* This peer is a bot.
*
* @var string
*/
public const PEER_TYPE_BOT = 'bot';
/**
* This peer is a normal group.
*
* @var string
*/
public const PEER_TYPE_GROUP = 'chat';
/**
* This peer is a supergroup.
*
* @var string
*/
public const PEER_TYPE_SUPERGROUP = 'supergroup';
/**
* This peer is a channel.
*
* @var string
*/
public const PEER_TYPE_CHANNEL = 'channel';
/** /**
* Bad message error codes. * Bad message error codes.
* *

View File

@ -24,6 +24,7 @@ use Amp\Sync\LocalMutex;
use AssertionError; use AssertionError;
use danog\Decoder\FileId; use danog\Decoder\FileId;
use danog\Decoder\PhotoSizeSource\PhotoSizeSourceDialogPhoto; use danog\Decoder\PhotoSizeSource\PhotoSizeSourceDialogPhoto;
use danog\MadelineProto\API;
use danog\MadelineProto\Exception; use danog\MadelineProto\Exception;
use danog\MadelineProto\Lang; use danog\MadelineProto\Lang;
use danog\MadelineProto\Logger; use danog\MadelineProto\Logger;
@ -72,7 +73,7 @@ trait PeerHandler
return (-$id) + Magic::ZERO_CHANNEL_ID; return (-$id) + Magic::ZERO_CHANNEL_ID;
} }
/** /**
* Check whether provided bot API ID is a channel. * Check whether provided bot API ID is a channel or supergroup.
* *
* @param int $id Bot API ID * @param int $id Bot API ID
*/ */
@ -552,7 +553,7 @@ trait PeerHandler
* *
* @param mixed $id Peer * @param mixed $id Peer
* *
* @return 'user'|'bot'|'chat'|'supergroup'|'channel' * @return \danog\MadelineProto\API::PEER_TYPE_*
*/ */
public function getType(mixed $id): string public function getType(mixed $id): string
{ {

View File

@ -36,7 +36,9 @@ class RPCErrorException extends \Exception
{ {
use TL\PrettyException; use TL\PrettyException;
private bool $fetched = false; private bool $fetched = false;
/** @internal */
public static array $descriptions = ['RPC_MCGET_FAIL' => 'Telegram is having internal issues, please try again later.', 'RPC_CALL_FAIL' => 'Telegram is having internal issues, please try again later.', 'USER_PRIVACY_RESTRICTED' => "The user's privacy settings do not allow you to do this", 'CHANNEL_PRIVATE' => "You haven't joined this channel/supergroup", 'USER_IS_BOT' => "Bots can't send messages to other bots", 'BOT_METHOD_INVALID' => 'This method cannot be run by a bot', 'PHONE_CODE_EXPIRED' => 'The phone code you provided has expired, this may happen if it was sent to any chat on telegram (if the code is sent through a telegram chat (not the official account) to avoid it append or prepend to the code some chars)', 'USERNAME_INVALID' => 'The provided username is not valid', 'ACCESS_TOKEN_INVALID' => 'The provided token is not valid', 'ACTIVE_USER_REQUIRED' => 'The method is only available to already activated users', 'FIRSTNAME_INVALID' => 'The first name is invalid', 'LASTNAME_INVALID' => 'The last name is invalid', 'PHONE_NUMBER_INVALID' => 'The phone number is invalid', 'PHONE_CODE_HASH_EMPTY' => 'phone_code_hash is missing', 'PHONE_CODE_EMPTY' => 'phone_code is missing', 'API_ID_INVALID' => 'The api_id/api_hash combination is invalid', 'PHONE_NUMBER_OCCUPIED' => 'The phone number is already in use', 'PHONE_NUMBER_UNOCCUPIED' => 'The phone number is not yet being used', 'USERS_TOO_FEW' => 'Not enough users (to create a chat, for example)', 'USERS_TOO_MUCH' => 'The maximum number of users has been exceeded (to create a chat, for example)', 'TYPE_CONSTRUCTOR_INVALID' => 'The type constructor is invalid', 'FILE_PART_INVALID' => 'The file part number is invalid', 'FILE_PARTS_INVALID' => 'The number of file parts is invalid', 'MD5_CHECKSUM_INVALID' => 'The MD5 checksums do not match', 'PHOTO_INVALID_DIMENSIONS' => 'The photo dimensions are invalid', 'FIELD_NAME_INVALID' => 'The field with the name FIELD_NAME is invalid', 'FIELD_NAME_EMPTY' => 'The field with the name FIELD_NAME is missing', 'MSG_WAIT_FAILED' => 'A waiting call returned an error', 'USERNAME_NOT_OCCUPIED' => 'The provided username is not occupied', 'PHONE_NUMBER_BANNED' => 'The provided phone number is banned from telegram', 'AUTH_KEY_UNREGISTERED' => 'The authorization key has expired', 'INVITE_HASH_EXPIRED' => 'The invite link has expired', 'USER_DEACTIVATED' => 'The user was deactivated', 'USER_ALREADY_PARTICIPANT' => 'The user is already in the group', 'MESSAGE_ID_INVALID' => 'The provided message id is invalid', 'PEER_ID_INVALID' => 'The provided peer id is invalid', 'CHAT_ID_INVALID' => 'The provided chat id is invalid', 'MESSAGE_DELETE_FORBIDDEN' => "You can't delete one of the messages you tried to delete, most likely because it is a service message.", 'CHAT_ADMIN_REQUIRED' => 'You must be an admin in this chat to do this', -429 => 'Too many requests', 'PEER_FLOOD' => "You are spamreported, you can't do this"]; public static array $descriptions = ['RPC_MCGET_FAIL' => 'Telegram is having internal issues, please try again later.', 'RPC_CALL_FAIL' => 'Telegram is having internal issues, please try again later.', 'USER_PRIVACY_RESTRICTED' => "The user's privacy settings do not allow you to do this", 'CHANNEL_PRIVATE' => "You haven't joined this channel/supergroup", 'USER_IS_BOT' => "Bots can't send messages to other bots", 'BOT_METHOD_INVALID' => 'This method cannot be run by a bot', 'PHONE_CODE_EXPIRED' => 'The phone code you provided has expired, this may happen if it was sent to any chat on telegram (if the code is sent through a telegram chat (not the official account) to avoid it append or prepend to the code some chars)', 'USERNAME_INVALID' => 'The provided username is not valid', 'ACCESS_TOKEN_INVALID' => 'The provided token is not valid', 'ACTIVE_USER_REQUIRED' => 'The method is only available to already activated users', 'FIRSTNAME_INVALID' => 'The first name is invalid', 'LASTNAME_INVALID' => 'The last name is invalid', 'PHONE_NUMBER_INVALID' => 'The phone number is invalid', 'PHONE_CODE_HASH_EMPTY' => 'phone_code_hash is missing', 'PHONE_CODE_EMPTY' => 'phone_code is missing', 'API_ID_INVALID' => 'The api_id/api_hash combination is invalid', 'PHONE_NUMBER_OCCUPIED' => 'The phone number is already in use', 'PHONE_NUMBER_UNOCCUPIED' => 'The phone number is not yet being used', 'USERS_TOO_FEW' => 'Not enough users (to create a chat, for example)', 'USERS_TOO_MUCH' => 'The maximum number of users has been exceeded (to create a chat, for example)', 'TYPE_CONSTRUCTOR_INVALID' => 'The type constructor is invalid', 'FILE_PART_INVALID' => 'The file part number is invalid', 'FILE_PARTS_INVALID' => 'The number of file parts is invalid', 'MD5_CHECKSUM_INVALID' => 'The MD5 checksums do not match', 'PHOTO_INVALID_DIMENSIONS' => 'The photo dimensions are invalid', 'FIELD_NAME_INVALID' => 'The field with the name FIELD_NAME is invalid', 'FIELD_NAME_EMPTY' => 'The field with the name FIELD_NAME is missing', 'MSG_WAIT_FAILED' => 'A waiting call returned an error', 'USERNAME_NOT_OCCUPIED' => 'The provided username is not occupied', 'PHONE_NUMBER_BANNED' => 'The provided phone number is banned from telegram', 'AUTH_KEY_UNREGISTERED' => 'The authorization key has expired', 'INVITE_HASH_EXPIRED' => 'The invite link has expired', 'USER_DEACTIVATED' => 'The user was deactivated', 'USER_ALREADY_PARTICIPANT' => 'The user is already in the group', 'MESSAGE_ID_INVALID' => 'The provided message id is invalid', 'PEER_ID_INVALID' => 'The provided peer id is invalid', 'CHAT_ID_INVALID' => 'The provided chat id is invalid', 'MESSAGE_DELETE_FORBIDDEN' => "You can't delete one of the messages you tried to delete, most likely because it is a service message.", 'CHAT_ADMIN_REQUIRED' => 'You must be an admin in this chat to do this', -429 => 'Too many requests', 'PEER_FLOOD' => "You are spamreported, you can't do this"];
/** @internal */
public static array $errorMethodMap = []; public static array $errorMethodMap = [];
private static array $fetchedError = []; private static array $fetchedError = [];
private string $caller = ''; private string $caller = '';

View File

@ -37,8 +37,6 @@ use JsonSerializable;
/** /**
* Represents a login QR code. * Represents a login QR code.
* The `link` public readonly property contains the [QR code login link](https://core.telegram.org/api/links#qr-code-login-links).
* The `expiry` public readonly property contains the expiry date of the link.
*/ */
final class LoginQrCode implements JsonSerializable final class LoginQrCode implements JsonSerializable
{ {

View File

@ -136,7 +136,7 @@ trait DialogHandler
$this->cacheAllBotUsers(); $this->cacheAllBotUsers();
$res = []; $res = [];
foreach ($this->chats as $id => $_) { foreach ($this->chats as $id => $_) {
$res []= $id; $res []= (int) $id;
} }
return $res; return $res;
} }