diff --git a/README.md b/README.md
index 64fb19934..2fd983543 100644
--- a/README.md
+++ b/README.md
@@ -401,13 +401,13 @@ Want to add your own open-source project to this list? [Click here!](https://doc
* Dismiss new pending peers recently added to a chat folder deep link »: chatlists.hideChatlistUpdates
* Dismiss or approve a chat join request related to a specific chat or channel: messages.hideChatJoinRequest
* Dismiss or approve all join requests related to a specific chat or channel: messages.hideAllChatJoinRequests
- * Download file to amphp/http-server response: downloadToResponse
- * Download file to an amphp stream, returning it: downloadToReturnedStream
- * Download file to browser: downloadToBrowser
- * Download file to callable: downloadToCallable
- * Download file to directory: downloadToDir
- * Download file to stream: downloadToStream
- * Download file: downloadToFile
+ * Download file to amphp/http-server response: downloadToResponse
+ * Download file to an amphp stream, returning it: downloadToReturnedStream
+ * Download file to browser: downloadToBrowser
+ * Download file to callable: downloadToCallable
+ * Download file to directory: downloadToDir
+ * Download file to stream: downloadToStream
+ * Download file: downloadToFile
* Downloads a file to the browser using the specified session file: downloadServer
* Edit a chat folder deep link »: chatlists.editExportedInvite
* Edit an exported chat invite: messages.editExportedChatInvite
@@ -725,7 +725,7 @@ Want to add your own open-source project to this list? [Click here!](https://doc
* Positive modulo: posmod
* Press an inline callback button and get a callback answer from the bot: messages.getBotCallbackAnswer
* Provide a buffered reader for a file, URL or amp stream: openBuffered
- * Provide a stream for a file, URL or amp stream: getStream
+ * Provide a stream for a file, URL or amp stream: getStream
* Query an inline bot: messages.getInlineBotResults
* Rate a call, returns info about the rating message sent to the official VoIP bot: phone.setCallRating
* Rate transcribed voice message: messages.rateTranscribedAudio
@@ -824,7 +824,7 @@ Want to add your own open-source project to this list? [Click here!](https://doc
* Sends a Telegram Passport authorization form, effectively sharing data with the service: account.acceptAuthorization
* Sends a current user typing event (see SendMessageAction for all event types) to a conversation partner or group: messages.setTyping
* Sends a custom request; for bots only: bots.sendCustomRequest
- * Sends a document: sendDocument
+ * Sends a document: sendDocument
* Sends a list of messages to all peers (users, chats, channels) of the bot: broadcastMessages
* Sends a message to a chat: messages.sendMessage
* Sends a message to all report peers (admins of the bot): sendMessageToAdmins
diff --git a/docs b/docs
index 5da30efc5..b3251b13d 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit 5da30efc5233a9ef6e6804dd48cdd89170e56209
+Subproject commit b3251b13da49ce7c88cd263d1b4859b50b428546
diff --git a/examples/magnaluna b/examples/magnaluna
index 453cf521d..32214a5ad 160000
--- a/examples/magnaluna
+++ b/examples/magnaluna
@@ -1 +1 @@
-Subproject commit 453cf521d71f99f21f84fff96651c744b0f99a34
+Subproject commit 32214a5ad3aa7ffdf4cd7a1592b98990ca5a559b
diff --git a/src/Namespace/Messages.php b/src/Namespace/Messages.php
index 509ea4d77..ddbb15aa5 100644
--- a/src/Namespace/Messages.php
+++ b/src/Namespace/Messages.php
@@ -729,7 +729,7 @@ interface Messages
* Get [instant view](https://instantview.telegram.org) page.
*
* @param string $url URL of IV page to fetch
- * @return array{_: 'webPageEmpty', id: array}|array{_: 'webPagePending', id: array, date: array}|array{_: 'webPage', id: array, url: array, display_url: array, hash: array, type: array, site_name: array, title: array, description: array, photo: array{_: 'photoEmpty', id: array}|array{_: 'photo', has_stickers: array, id: array, access_hash: array, file_reference: array, date: array, sizes: list, video_sizes: list, dc_id: array}, embed_url: array, embed_type: array, embed_width: array, embed_height: array, duration: array, author: array, document: array{_: 'documentEmpty', id: array}|array{_: 'document', id: array, access_hash: array, file_reference: array, date: array, mime_type: array, size: array, thumbs: list, video_thumbs: list, dc_id: array, attributes: list}, cached_page?: array, attributes: list}|array{_: 'webPageNotModified', cached_page_views: array} @see https://docs.madelineproto.xyz/API_docs/types/WebPage.html
+ * @return array{_: 'messages.webPage', webpage: array{_: 'webPageEmpty', id: array}|array{_: 'webPagePending', id: array, date: array}|array{_: 'webPage', id: array, url: array, display_url: array, hash: array, type: array, site_name: array, title: array, description: array, photo: array{_: 'photoEmpty', id: array}|array{_: 'photo', has_stickers: array, id: array, access_hash: array, file_reference: array, date: array, sizes: list, video_sizes: list, dc_id: array}, embed_url: array, embed_type: array, embed_width: array, embed_height: array, duration: array, author: array, document: array{_: 'documentEmpty', id: array}|array{_: 'document', id: array, access_hash: array, file_reference: array, date: array, mime_type: array, size: array, thumbs: list, video_thumbs: list, dc_id: array, attributes: list}, cached_page?: array, attributes: list}|array{_: 'webPageNotModified', cached_page_views: array}, chats: list, users: list} @see https://docs.madelineproto.xyz/API_docs/types/messages.WebPage.html
*/
public function getWebPage(string|null $url = '', int|null $hash = 0): array;
diff --git a/src/Namespace/Stories.php b/src/Namespace/Stories.php
index 761edf8b2..3de85e037 100644
--- a/src/Namespace/Stories.php
+++ b/src/Namespace/Stories.php
@@ -201,7 +201,7 @@ interface Stories
*
*
* @param array|int|string $peer @see https://docs.madelineproto.xyz/API_docs/types/InputPeer.html
- * @return array{_: 'stories.boostsStatus', my_boost: bool, level: int, current_level_boosts: int, boosts: int, next_level_boosts: int, premium_audience?: array{_: 'statsPercentValue', part: float, total: float}} @see https://docs.madelineproto.xyz/API_docs/types/stories.BoostsStatus.html
+ * @return array{_: 'stories.boostsStatus', my_boost: bool, level: int, current_level_boosts: int, boosts: int, next_level_boosts: int, premium_audience?: array{_: 'statsPercentValue', part: float, total: float}, boost_url: string} @see https://docs.madelineproto.xyz/API_docs/types/stories.BoostsStatus.html
*/
public function getBoostsStatus(array|int|string|null $peer = null): array;
diff --git a/src/Settings/TLSchema.php b/src/Settings/TLSchema.php
index e4e17974d..1540caf8b 100644
--- a/src/Settings/TLSchema.php
+++ b/src/Settings/TLSchema.php
@@ -27,11 +27,11 @@ final class TLSchema extends SettingsAbstract
/**
* TL layer version.
*/
- protected int $layer = 164;
+ protected int $layer = 165;
/**
* API schema path.
*/
- protected string $APISchema = __DIR__ . '/../TL_telegram_v164.tl';
+ protected string $APISchema = __DIR__ . '/../TL_telegram_v165.tl';
/**
* MTProto schema path.
*/
diff --git a/src/TL_telegram_v164.tl b/src/TL_telegram_v165.tl
similarity index 99%
rename from src/TL_telegram_v164.tl
rename to src/TL_telegram_v165.tl
index 93ee43704..8a386d988 100644
--- a/src/TL_telegram_v164.tl
+++ b/src/TL_telegram_v165.tl
@@ -1564,7 +1564,7 @@ peerStories#9a35e999 flags:# peer:Peer max_read_id:flags.0?int stories:Vector users:Vector = stories.PeerStories;
-stories.boostsStatus#66ea1fef flags:# my_boost:flags.2?true level:int current_level_boosts:int boosts:int next_level_boosts:flags.0?int premium_audience:flags.1?StatsPercentValue = stories.BoostsStatus;
+stories.boostsStatus#e5c1aa5c flags:# my_boost:flags.2?true level:int current_level_boosts:int boosts:int next_level_boosts:flags.0?int premium_audience:flags.1?StatsPercentValue boost_url:string = stories.BoostsStatus;
stories.canApplyBoostOk#c3173587 = stories.CanApplyBoostResult;
stories.canApplyBoostReplace#712c4655 current_boost:Peer chats:Vector = stories.CanApplyBoostResult;
@@ -1573,6 +1573,8 @@ booster#e9e6380 user_id:long expires:int = Booster;
stories.boostersList#f3dd3d1d flags:# count:int boosters:Vector next_offset:flags.0?string users:Vector = stories.BoostersList;
+messages.webPage#fd5e12bd webpage:WebPage chats:Vector users:Vector = messages.WebPage;
+
---functions---
invokeAfterMsg#cb9f372d {X:Type} msg_id:long query:!X = X;
@@ -1801,7 +1803,7 @@ messages.setInlineGameScore#15ad9f64 flags:# edit_message:flags.0?true force:fla
messages.getGameHighScores#e822649d peer:InputPeer id:int user_id:InputUser = messages.HighScores;
messages.getInlineGameHighScores#f635e1b id:InputBotInlineMessageID user_id:InputUser = messages.HighScores;
messages.getCommonChats#e40ca104 user_id:InputUser max_id:long limit:int = messages.Chats;
-messages.getWebPage#32ca8f91 url:string hash:int = WebPage;
+messages.getWebPage#8d9692a3 url:string hash:int = messages.WebPage;
messages.toggleDialogPin#a731e257 flags:# pinned:flags.0?true peer:InputDialogPeer = Bool;
messages.reorderPinnedDialogs#3b1adf37 flags:# force:flags.0?true folder_id:int order:Vector = Bool;
messages.getPinnedDialogs#d6b94df2 folder_id:int = messages.PeerDialogs;