Upgrade to layer 143: Premium features (long file_size, transcribed audio, chat mgmt...), advanced invoice/purchase, bot attach menu...

This commit is contained in:
Wizou 2022-06-15 01:58:44 +02:00
parent 33a2fb02c1
commit 8898308d9c
10 changed files with 401 additions and 103 deletions

2
.github/dev.yml vendored
View file

@ -2,7 +2,7 @@ pr: none
trigger: trigger:
- master - master
name: 2.4.2-dev.$(Rev:r) name: 2.5.1-dev.$(Rev:r)
pool: pool:
vmImage: ubuntu-latest vmImage: ubuntu-latest

2
.github/release.yml vendored
View file

@ -1,7 +1,7 @@
pr: none pr: none
trigger: none trigger: none
name: 2.4.$(Rev:r) name: 2.5.$(Rev:r)
pool: pool:
vmImage: ubuntu-latest vmImage: ubuntu-latest

View file

@ -369,16 +369,19 @@ By default, WTelegramClient logs are displayed on the Console screen.
If you are not in a Console app or don't want the logs on screen, you can redirect them as you prefer: If you are not in a Console app or don't want the logs on screen, you can redirect them as you prefer:
```csharp ```csharp
// • Log to VS Output debugging pane in addition (+=) to default Console screen logging:
WTelegram.Helpers.Log += (lvl, str) => System.Diagnostics.Debug.WriteLine(str);
// • Log to file in replacement of default Console screen logging, using this static variable: // • Log to file in replacement of default Console screen logging, using this static variable:
static StreamWriter WTelegramLogs = new StreamWriter("WTelegram.log", true, Encoding.UTF8) { AutoFlush = true }; static StreamWriter WTelegramLogs = new StreamWriter("WTelegram.log", true, Encoding.UTF8) { AutoFlush = true };
... ...
WTelegram.Helpers.Log = (lvl, str) => WTelegramLogs.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss} [{"TDIWE!"[lvl]}] {str}"); WTelegram.Helpers.Log = (lvl, str) => WTelegramLogs.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss} [{"TDIWE!"[lvl]}] {str}");
// • In an ASP.NET service, you will typically send logs to an ILogger: // • Log to VS Output debugging pane in addition (+=) to the default Console screen logging:
WTelegram.Helpers.Log += (lvl, str) => System.Diagnostics.Debug.WriteLine(str);
// • In ASP.NET service, you will typically send logs to an ILogger:
WTelegram.Helpers.Log = (lvl, str) => _logger.Log((LogLevel)lvl, str); WTelegram.Helpers.Log = (lvl, str) => _logger.Log((LogLevel)lvl, str);
// • Disable logging (THIS IS NOT RECOMMENDED as you won't be able to diagnose any upcoming problem):
WTelegram.Helpers.Log = (lvl, str) => { };
``` ```
<a name="2FA"></a> <a name="2FA"></a>

6
FAQ.md
View file

@ -58,15 +58,15 @@ The `access_hash` must usually be provided within the `Input...` structure you p
You obtain the `access_hash` through **description structures** like `Channel`, `User`, `Photo`, `Document` that you receive through updates or when you query them through API methods like `Messages_GetAllChats`, `Messages_GetAllDialogs`, `Contacts_ResolveUsername`, etc... You obtain the `access_hash` through **description structures** like `Channel`, `User`, `Photo`, `Document` that you receive through updates or when you query them through API methods like `Messages_GetAllChats`, `Messages_GetAllDialogs`, `Contacts_ResolveUsername`, etc...
*(if you have a `Peer` object, you can convert it to a `User`/`Channel`/`Chat` via the `UserOrChat` helper from the root class that contained the peer)* *(if you have a `Peer` object, you can convert it to a `User`/`Channel`/`Chat` via the `UserOrChat` helper from the root class that contained the peer)*
Once you obtained the description structure, there are 3 methods for building your `Input...` structure: Once you obtained the description structure, there are 3 methods for building your `Input...` request structure:
* **Recommended:** If you take a look at the **description structure** class or base class `ChatBase/UserBase`, * **Recommended:** If you take a look at the **description structure** base class `ChatBase/UserBase`,
you will see that they have conversion implicit operators or methods that can create the `Input...` structure for you automatically. you will see that they have conversion implicit operators or methods that can create the `Input...` structure for you automatically.
So you can just pass that structure you already have, in place of the `Input...` argument, it will work! So you can just pass that structure you already have, in place of the `Input...` argument, it will work!
* Alternatively, you can manually create the `Input...` structure yourself by extracting the `access_hash` from the **description structure** * Alternatively, you can manually create the `Input...` structure yourself by extracting the `access_hash` from the **description structure**
* If you have enabled the [CollectAccessHash system](EXAMPLES.md#collect-access-hash) at the start of your session, it will have collected the `access_hash` automatically when you obtained the description structure. * If you have enabled the [CollectAccessHash system](EXAMPLES.md#collect-access-hash) at the start of your session, it will have collected the `access_hash` automatically when you obtained the description structure.
You can then retrieve it with `client.GetAccessHashFor<User/Channel/Photo/Document>(id)` You can then retrieve it with `client.GetAccessHashFor<User/Channel/Photo/Document>(id)`
⚠️ *An `access_hash` obtained from a User/Channel structure with flag `min` may not be used for most requests. See [Min constructors](https://core.telegram.org/api/min).* ⚠️ *An `access_hash` obtained from a User/Channel structure with flag `min` may not be usable for most requests. See [Min constructors](https://core.telegram.org/api/min).*
<a name="dev-versions"></a> <a name="dev-versions"></a>
#### 5. I need to test a feature that has been developed but not yet released in WTelegramClient nuget #### 5. I need to test a feature that has been developed but not yet released in WTelegramClient nuget

View file

@ -1,6 +1,6 @@
[![NuGet version](https://img.shields.io/nuget/v/WTelegramClient)](https://www.nuget.org/packages/WTelegramClient/) [![NuGet version](https://img.shields.io/nuget/v/WTelegramClient)](https://www.nuget.org/packages/WTelegramClient/)
[![Build Status](https://img.shields.io/azure-devops/build/wiz0u/WTelegramClient/7)](https://dev.azure.com/wiz0u/WTelegramClient/_build?definitionId=7) [![Build Status](https://img.shields.io/azure-devops/build/wiz0u/WTelegramClient/7)](https://dev.azure.com/wiz0u/WTelegramClient/_build?definitionId=7)
[![API Layer](https://img.shields.io/badge/API_Layer-142-blueviolet)](https://corefork.telegram.org/methods) [![API Layer](https://img.shields.io/badge/API_Layer-143-blueviolet)](https://corefork.telegram.org/methods)
[![dev nuget](https://img.shields.io/badge/dynamic/json?color=ffc040&label=dev%20nuget&query=%24.versions%5B0%5D&url=https%3A%2F%2Fpkgs.dev.azure.com%2Fwiz0u%2F81bd92b7-0bb9-4701-b426-09090b27e037%2F_packaging%2F46ce0497-7803-4bd4-8c6c-030583e7c371%2Fnuget%2Fv3%2Fflat2%2Fwtelegramclient%2Findex.json)](https://dev.azure.com/wiz0u/WTelegramClient/_artifacts/feed/WTelegramClient/NuGet/WTelegramClient) [![dev nuget](https://img.shields.io/badge/dynamic/json?color=ffc040&label=dev%20nuget&query=%24.versions%5B0%5D&url=https%3A%2F%2Fpkgs.dev.azure.com%2Fwiz0u%2F81bd92b7-0bb9-4701-b426-09090b27e037%2F_packaging%2F46ce0497-7803-4bd4-8c6c-030583e7c371%2Fnuget%2Fv3%2Fflat2%2Fwtelegramclient%2Findex.json)](https://dev.azure.com/wiz0u/WTelegramClient/_artifacts/feed/WTelegramClient/NuGet/WTelegramClient)
[![Support Chat](https://img.shields.io/badge/Chat_with_us-on_Telegram-0088cc)](https://t.me/WTelegramClient) [![Support Chat](https://img.shields.io/badge/Chat_with_us-on_Telegram-0088cc)](https://t.me/WTelegramClient)
[![Donate](https://img.shields.io/badge/Help_this_project:-Donate-ff4444)](http://wizou.fr/donate.html) [![Donate](https://img.shields.io/badge/Help_this_project:-Donate-ff4444)](http://wizou.fr/donate.html)
@ -37,7 +37,7 @@ If the account already exists and has enabled two-step verification (2FA) a **pa
All these login scenarios are handled automatically within the call to `LoginUserIfNeeded`. All these login scenarios are handled automatically within the call to `LoginUserIfNeeded`.
And that's it, you now have access to the **[full range of Telegram Client APIs](https://corefork.telegram.org/methods)**. And that's it, you now have access to the **[full range of Telegram Client APIs](https://corefork.telegram.org/methods)**.
All those API methods are available *(with an underscore in the method name, instead of a dot)*, like this: `await client.Method_Name(...)` All those API methods are available in the `TL` namespace *(with an underscore in the method name, instead of a dot)*, like this: `await client.Method_Name(...)`
# Saved session # Saved session
If you run this program again, you will notice that only **api_hash** is requested, the other prompts are gone and you are automatically logged-on and ready to go. If you run this program again, you will notice that only **api_hash** is requested, the other prompts are gone and you are automatically logged-on and ready to go.
@ -96,8 +96,8 @@ Console.WriteLine("This user has joined the following:");
foreach (var (id, chat) in chats.chats) foreach (var (id, chat) in chats.chats)
switch (chat) // example of downcasting to their real classes: switch (chat) // example of downcasting to their real classes:
{ {
case Chat smallgroup when smallgroup.IsActive: case Chat basicChat when basicChat.IsActive:
Console.WriteLine($"{id}: Small group: {smallgroup.title} with {smallgroup.participants_count} members"); Console.WriteLine($"{id}: Basic chat: {basicChat.title} with {basicChat.participants_count} members");
break; break;
case Channel group when group.IsGroup: case Channel group when group.IsGroup:
Console.WriteLine($"{id}: Group {group.username}: {group.title}"); Console.WriteLine($"{id}: Group {group.username}: {group.title}");

View file

@ -330,15 +330,15 @@ namespace WTelegram
/// <param name="fileSize">(optional) Expected file size</param> /// <param name="fileSize">(optional) Expected file size</param>
/// <param name="progress">(optional) Callback for tracking the progression of the transfer</param> /// <param name="progress">(optional) Callback for tracking the progression of the transfer</param>
/// <returns>The file type</returns> /// <returns>The file type</returns>
public async Task<Storage_FileType> DownloadFileAsync(InputFileLocationBase fileLocation, Stream outputStream, int dc_id = 0, int fileSize = 0, ProgressCallback progress = null) public async Task<Storage_FileType> DownloadFileAsync(InputFileLocationBase fileLocation, Stream outputStream, int dc_id = 0, long fileSize = 0, ProgressCallback progress = null)
{ {
Storage_FileType fileType = Storage_FileType.unknown; Storage_FileType fileType = Storage_FileType.unknown;
var client = dc_id == 0 ? this : await GetClientForDC(dc_id, true); var client = dc_id == 0 ? this : await GetClientForDC(dc_id, true);
using var writeSem = new SemaphoreSlim(1); using var writeSem = new SemaphoreSlim(1);
long streamStartPos = outputStream.Position; long streamStartPos = outputStream.Position;
int fileOffset = 0, maxOffsetSeen = 0; long fileOffset = 0, maxOffsetSeen = 0;
long transmitted = 0; long transmitted = 0;
var tasks = new Dictionary<int, Task>(); var tasks = new Dictionary<long, Task>();
progress?.Invoke(0, fileSize); progress?.Invoke(0, fileSize);
bool abort = false; bool abort = false;
while (!abort) while (!abort)
@ -355,7 +355,7 @@ namespace WTelegram
break; break;
} }
async Task<int> LoadPart(int offset) async Task<int> LoadPart(long offset)
{ {
Upload_FileBase fileBase; Upload_FileBase fileBase;
try try

View file

@ -74,6 +74,7 @@ namespace TL
public static implicit operator InputMediaPhoto(InputPhoto photo) => new() { id = photo }; public static implicit operator InputMediaPhoto(InputPhoto photo) => new() { id = photo };
} }
/// <remarks>Use the <c>UserOrChat(peer)</c> method from the root class you received, in order to convert this to a more useful <see cref="TL.User"/> or <see cref="TL.ChatBase"/></remarks>
partial class Peer partial class Peer
{ {
public abstract long ID { get; } public abstract long ID { get; }

View file

@ -776,6 +776,8 @@ namespace TL
/// <summary>If set, this user was reported by many users as a fake or scam user: be careful when interacting with them.</summary> /// <summary>If set, this user was reported by many users as a fake or scam user: be careful when interacting with them.</summary>
fake = 0x4000000, fake = 0x4000000,
bot_attach_menu = 0x8000000, bot_attach_menu = 0x8000000,
premium = 0x10000000,
attach_menu_enabled = 0x20000000,
} }
} }
@ -1723,6 +1725,7 @@ namespace TL
has_document = 0x1, has_document = 0x1,
/// <summary>Field <see cref="ttl_seconds"/> has a value</summary> /// <summary>Field <see cref="ttl_seconds"/> has a value</summary>
has_ttl_seconds = 0x4, has_ttl_seconds = 0x4,
nopremium = 0x8,
} }
} }
/// <summary>Preview of webpage <para>See <a href="https://corefork.telegram.org/constructor/messageMediaWebPage"/></para></summary> /// <summary>Preview of webpage <para>See <a href="https://corefork.telegram.org/constructor/messageMediaWebPage"/></para></summary>
@ -1944,16 +1947,28 @@ namespace TL
has_info = 0x1, has_info = 0x1,
/// <summary>Field <see cref="shipping_option_id"/> has a value</summary> /// <summary>Field <see cref="shipping_option_id"/> has a value</summary>
has_shipping_option_id = 0x2, has_shipping_option_id = 0x2,
recurring_init = 0x4,
recurring_used = 0x8,
} }
} }
/// <summary>A payment was sent <para>See <a href="https://corefork.telegram.org/constructor/messageActionPaymentSent"/></para></summary> /// <summary>A payment was sent <para>See <a href="https://corefork.telegram.org/constructor/messageActionPaymentSent"/></para></summary>
[TLDef(0x40699CD0)] [TLDef(0x96163F56)]
public class MessageActionPaymentSent : MessageAction public class MessageActionPaymentSent : MessageAction
{ {
public Flags flags;
/// <summary>Three-letter ISO 4217 <a href="https://corefork.telegram.org/bots/payments#supported-currencies">currency</a> code</summary> /// <summary>Three-letter ISO 4217 <a href="https://corefork.telegram.org/bots/payments#supported-currencies">currency</a> code</summary>
public string currency; public string currency;
/// <summary>Price of the product in the smallest units of the currency (integer, not float/double). For example, for a price of <c>US$ 1.45</c> pass <c>amount = 145</c>. See the exp parameter in <a href="https://corefork.telegram.org/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).</summary> /// <summary>Price of the product in the smallest units of the currency (integer, not float/double). For example, for a price of <c>US$ 1.45</c> pass <c>amount = 145</c>. See the exp parameter in <a href="https://corefork.telegram.org/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).</summary>
public long total_amount; public long total_amount;
[IfFlag(0)] public string invoice_slug;
[Flags] public enum Flags : uint
{
/// <summary>Field <see cref="invoice_slug"/> has a value</summary>
has_invoice_slug = 0x1,
recurring_init = 0x4,
recurring_used = 0x8,
}
} }
/// <summary>A phone call <para>See <a href="https://corefork.telegram.org/constructor/messageActionPhoneCall"/></para></summary> /// <summary>A phone call <para>See <a href="https://corefork.telegram.org/constructor/messageActionPhoneCall"/></para></summary>
[TLDef(0x80E11A7F)] [TLDef(0x80E11A7F)]
@ -3813,7 +3828,7 @@ namespace TL
/// <summary><a href="https://corefork.telegram.org/api/folders">Folder</a> ID</summary> /// <summary><a href="https://corefork.telegram.org/api/folders">Folder</a> ID</summary>
public int id; public int id;
/// <summary><a href="https://corefork.telegram.org/api/folders">Folder</a> info</summary> /// <summary><a href="https://corefork.telegram.org/api/folders">Folder</a> info</summary>
[IfFlag(0)] public DialogFilter filter; [IfFlag(0)] public DialogFilterBase filter;
[Flags] public enum Flags : uint [Flags] public enum Flags : uint
{ {
@ -4162,6 +4177,21 @@ namespace TL
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/updateSavedRingtones"/></para></summary> /// <summary><para>See <a href="https://corefork.telegram.org/constructor/updateSavedRingtones"/></para></summary>
[TLDef(0x74D8BE99)] [TLDef(0x74D8BE99)]
public class UpdateSavedRingtones : Update { } public class UpdateSavedRingtones : Update { }
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/updateTranscribedAudio"/></para></summary>
[TLDef(0x0084CD5A)]
public class UpdateTranscribedAudio : Update
{
public Flags flags;
public Peer peer;
public int msg_id;
public long transcription_id;
public string text;
[Flags] public enum Flags : uint
{
pending = 0x1,
}
}
/// <summary>Updates state. <para>See <a href="https://corefork.telegram.org/constructor/updates.state"/></para></summary> /// <summary>Updates state. <para>See <a href="https://corefork.telegram.org/constructor/updates.state"/></para></summary>
[TLDef(0xA56C2A3E)] [TLDef(0xA56C2A3E)]
@ -4887,7 +4917,7 @@ namespace TL
/// <summary>Encrypted file. <para>See <a href="https://corefork.telegram.org/constructor/encryptedFile"/></para></summary> /// <summary>Encrypted file. <para>See <a href="https://corefork.telegram.org/constructor/encryptedFile"/></para></summary>
/// <remarks>a <c>null</c> value means <a href="https://corefork.telegram.org/constructor/encryptedFileEmpty">encryptedFileEmpty</a></remarks> /// <remarks>a <c>null</c> value means <a href="https://corefork.telegram.org/constructor/encryptedFileEmpty">encryptedFileEmpty</a></remarks>
[TLDef(0x4A70994C)] [TLDef(0xA8008CD8)]
public partial class EncryptedFile : IObject public partial class EncryptedFile : IObject
{ {
/// <summary>File ID</summary> /// <summary>File ID</summary>
@ -4895,7 +4925,7 @@ namespace TL
/// <summary>Checking sum depending on user ID</summary> /// <summary>Checking sum depending on user ID</summary>
public long access_hash; public long access_hash;
/// <summary>File size in bytes</summary> /// <summary>File size in bytes</summary>
public int size; public long size;
/// <summary>Number of data center</summary> /// <summary>Number of data center</summary>
public int dc_id; public int dc_id;
/// <summary>32-bit fingerprint of key used for file encryption</summary> /// <summary>32-bit fingerprint of key used for file encryption</summary>
@ -5072,7 +5102,7 @@ namespace TL
public long id; public long id;
} }
/// <summary>Document <para>See <a href="https://corefork.telegram.org/constructor/document"/></para></summary> /// <summary>Document <para>See <a href="https://corefork.telegram.org/constructor/document"/></para></summary>
[TLDef(0x1E87342B)] [TLDef(0x8FD4C4D8)]
public partial class Document : DocumentBase public partial class Document : DocumentBase
{ {
/// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary> /// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary>
@ -5088,7 +5118,7 @@ namespace TL
/// <summary>MIME type</summary> /// <summary>MIME type</summary>
public string mime_type; public string mime_type;
/// <summary>Size</summary> /// <summary>Size</summary>
public int size; public long size;
/// <summary>Thumbnails</summary> /// <summary>Thumbnails</summary>
[IfFlag(0)] public PhotoSizeBase[] thumbs; [IfFlag(0)] public PhotoSizeBase[] thumbs;
/// <summary>Video thumbnails</summary> /// <summary>Video thumbnails</summary>
@ -5864,6 +5894,9 @@ namespace TL
has_title = 0x100, has_title = 0x100,
} }
} }
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/chatInvitePublicJoinRequests"/></para></summary>
[TLDef(0xED107AB7)]
public class ChatInvitePublicJoinRequests : ExportedChatInvite { }
/// <summary>Chat invite <para>Derived classes: <see cref="ChatInviteAlready"/>, <see cref="ChatInvite"/>, <see cref="ChatInvitePeek"/></para> <para>See <a href="https://corefork.telegram.org/type/ChatInvite"/></para></summary> /// <summary>Chat invite <para>Derived classes: <see cref="ChatInviteAlready"/>, <see cref="ChatInvite"/>, <see cref="ChatInvitePeek"/></para> <para>See <a href="https://corefork.telegram.org/type/ChatInvite"/></para></summary>
public abstract class ChatInviteBase : IObject { } public abstract class ChatInviteBase : IObject { }
@ -6022,16 +6055,35 @@ namespace TL
} }
/// <summary>Info about bots (available bot commands, etc) <para>See <a href="https://corefork.telegram.org/constructor/botInfo"/></para></summary> /// <summary>Info about bots (available bot commands, etc) <para>See <a href="https://corefork.telegram.org/constructor/botInfo"/></para></summary>
[TLDef(0xE4169B5D)] [TLDef(0x8F300B57)]
public class BotInfo : IObject public class BotInfo : IObject
{ {
public Flags flags;
/// <summary>ID of the bot</summary> /// <summary>ID of the bot</summary>
public long user_id; [IfFlag(0)] public long user_id;
/// <summary>Description of the bot</summary> /// <summary>Description of the bot</summary>
public string description; [IfFlag(1)] public string description;
[IfFlag(4)] public PhotoBase description_photo;
[IfFlag(5)] public DocumentBase description_document;
/// <summary>Bot commands that can be used in the chat</summary> /// <summary>Bot commands that can be used in the chat</summary>
public BotCommand[] commands; [IfFlag(2)] public BotCommand[] commands;
public BotMenuButtonBase menu_button; [IfFlag(3)] public BotMenuButtonBase menu_button;
[Flags] public enum Flags : uint
{
/// <summary>Field <see cref="user_id"/> has a value</summary>
has_user_id = 0x1,
/// <summary>Field <see cref="description"/> has a value</summary>
has_description = 0x2,
/// <summary>Field <see cref="commands"/> has a value</summary>
has_commands = 0x4,
/// <summary>Field <see cref="menu_button"/> has a value</summary>
has_menu_button = 0x8,
/// <summary>Field <see cref="description_photo"/> has a value</summary>
has_description_photo = 0x10,
/// <summary>Field <see cref="description_document"/> has a value</summary>
has_description_document = 0x20,
}
} }
/// <summary>Bot or inline keyboard buttons <para>Derived classes: <see cref="KeyboardButton"/>, <see cref="KeyboardButtonUrl"/>, <see cref="KeyboardButtonCallback"/>, <see cref="KeyboardButtonRequestPhone"/>, <see cref="KeyboardButtonRequestGeoLocation"/>, <see cref="KeyboardButtonSwitchInline"/>, <see cref="KeyboardButtonGame"/>, <see cref="KeyboardButtonBuy"/>, <see cref="KeyboardButtonUrlAuth"/>, <see cref="InputKeyboardButtonUrlAuth"/>, <see cref="KeyboardButtonRequestPoll"/>, <see cref="InputKeyboardButtonUserProfile"/>, <see cref="KeyboardButtonUserProfile"/></para> <para>See <a href="https://corefork.telegram.org/type/KeyboardButton"/></para></summary> /// <summary>Bot or inline keyboard buttons <para>Derived classes: <see cref="KeyboardButton"/>, <see cref="KeyboardButtonUrl"/>, <see cref="KeyboardButtonCallback"/>, <see cref="KeyboardButtonRequestPhone"/>, <see cref="KeyboardButtonRequestGeoLocation"/>, <see cref="KeyboardButtonSwitchInline"/>, <see cref="KeyboardButtonGame"/>, <see cref="KeyboardButtonBuy"/>, <see cref="KeyboardButtonUrlAuth"/>, <see cref="InputKeyboardButtonUrlAuth"/>, <see cref="KeyboardButtonRequestPoll"/>, <see cref="InputKeyboardButtonUserProfile"/>, <see cref="KeyboardButtonUserProfile"/></para> <para>See <a href="https://corefork.telegram.org/type/KeyboardButton"/></para></summary>
@ -8326,7 +8378,7 @@ namespace TL
} }
/// <summary>Invoice <para>See <a href="https://corefork.telegram.org/constructor/invoice"/></para></summary> /// <summary>Invoice <para>See <a href="https://corefork.telegram.org/constructor/invoice"/></para></summary>
[TLDef(0x0CD886E0)] [TLDef(0x3E85A91B)]
public class Invoice : IObject public class Invoice : IObject
{ {
/// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary> /// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary>
@ -8339,6 +8391,7 @@ namespace TL
[IfFlag(8)] public long max_tip_amount; [IfFlag(8)] public long max_tip_amount;
/// <summary>A vector of suggested amounts of tips in the <em>smallest units</em> of the currency (integer, not float/double). At most 4 suggested tip amounts can be specified. The suggested tip amounts must be positive, passed in a strictly increased order and must not exceed <c>max_tip_amount</c>.</summary> /// <summary>A vector of suggested amounts of tips in the <em>smallest units</em> of the currency (integer, not float/double). At most 4 suggested tip amounts can be specified. The suggested tip amounts must be positive, passed in a strictly increased order and must not exceed <c>max_tip_amount</c>.</summary>
[IfFlag(8)] public long[] suggested_tip_amounts; [IfFlag(8)] public long[] suggested_tip_amounts;
[IfFlag(9)] public string recurring_terms_url;
[Flags] public enum Flags : uint [Flags] public enum Flags : uint
{ {
@ -8360,6 +8413,7 @@ namespace TL
email_to_provider = 0x80, email_to_provider = 0x80,
/// <summary>Field <see cref="max_tip_amount"/> has a value</summary> /// <summary>Field <see cref="max_tip_amount"/> has a value</summary>
has_max_tip_amount = 0x100, has_max_tip_amount = 0x100,
recurring = 0x200,
} }
} }
@ -8560,7 +8614,7 @@ namespace TL
} }
/// <summary>Payment form <para>See <a href="https://corefork.telegram.org/constructor/payments.paymentForm"/></para></summary> /// <summary>Payment form <para>See <a href="https://corefork.telegram.org/constructor/payments.paymentForm"/></para></summary>
[TLDef(0x1694761B)] [TLDef(0xB0133B37)]
public class Payments_PaymentForm : IObject public class Payments_PaymentForm : IObject
{ {
/// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary> /// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary>
@ -8569,6 +8623,9 @@ namespace TL
public long form_id; public long form_id;
/// <summary>Bot ID</summary> /// <summary>Bot ID</summary>
public long bot_id; public long bot_id;
public string title;
public string description;
[IfFlag(5)] public WebDocumentBase photo;
/// <summary>Invoice</summary> /// <summary>Invoice</summary>
public Invoice invoice; public Invoice invoice;
/// <summary>Payment provider ID.</summary> /// <summary>Payment provider ID.</summary>
@ -8598,6 +8655,8 @@ namespace TL
password_missing = 0x8, password_missing = 0x8,
/// <summary>Field <see cref="native_provider"/> has a value</summary> /// <summary>Field <see cref="native_provider"/> has a value</summary>
has_native_provider = 0x10, has_native_provider = 0x10,
/// <summary>Field <see cref="photo"/> has a value</summary>
has_photo = 0x20,
} }
} }
@ -9796,11 +9855,11 @@ namespace TL
} }
/// <summary>SHA256 Hash of an uploaded file, to be checked for validity after download <para>See <a href="https://corefork.telegram.org/constructor/fileHash"/></para></summary> /// <summary>SHA256 Hash of an uploaded file, to be checked for validity after download <para>See <a href="https://corefork.telegram.org/constructor/fileHash"/></para></summary>
[TLDef(0x6242C773)] [TLDef(0xF39B035C)]
public class FileHash : IObject public class FileHash : IObject
{ {
/// <summary>Offset from where to start computing SHA-256 hash</summary> /// <summary>Offset from where to start computing SHA-256 hash</summary>
public int offset; public long offset;
/// <summary>Length</summary> /// <summary>Length</summary>
public int limit; public int limit;
/// <summary>SHA-256 Hash of file chunk, to be checked for validity after download</summary> /// <summary>SHA-256 Hash of file chunk, to be checked for validity after download</summary>
@ -9875,7 +9934,7 @@ namespace TL
/// <summary>Secure <a href="https://corefork.telegram.org/passport">passport</a> file, for more info <a href="https://corefork.telegram.org/passport/encryption#inputsecurefile">see the passport docs »</a> <para>See <a href="https://corefork.telegram.org/constructor/secureFile"/></para></summary> /// <summary>Secure <a href="https://corefork.telegram.org/passport">passport</a> file, for more info <a href="https://corefork.telegram.org/passport/encryption#inputsecurefile">see the passport docs »</a> <para>See <a href="https://corefork.telegram.org/constructor/secureFile"/></para></summary>
/// <remarks>a <c>null</c> value means <a href="https://corefork.telegram.org/constructor/secureFileEmpty">secureFileEmpty</a></remarks> /// <remarks>a <c>null</c> value means <a href="https://corefork.telegram.org/constructor/secureFileEmpty">secureFileEmpty</a></remarks>
[TLDef(0xE0277A62)] [TLDef(0x7D09C27E)]
public partial class SecureFile : IObject public partial class SecureFile : IObject
{ {
/// <summary>ID</summary> /// <summary>ID</summary>
@ -9883,7 +9942,7 @@ namespace TL
/// <summary>Access hash</summary> /// <summary>Access hash</summary>
public long access_hash; public long access_hash;
/// <summary>File size</summary> /// <summary>File size</summary>
public int size; public long size;
/// <summary>DC ID</summary> /// <summary>DC ID</summary>
public int dc_id; public int dc_id;
/// <summary>Date of upload</summary> /// <summary>Date of upload</summary>
@ -10898,7 +10957,7 @@ namespace TL
} }
/// <summary>Autodownload settings <para>See <a href="https://corefork.telegram.org/constructor/autoDownloadSettings"/></para></summary> /// <summary>Autodownload settings <para>See <a href="https://corefork.telegram.org/constructor/autoDownloadSettings"/></para></summary>
[TLDef(0xE04232F3)] [TLDef(0x8EFAB953)]
public class AutoDownloadSettings : IObject public class AutoDownloadSettings : IObject
{ {
/// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary> /// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary>
@ -10906,9 +10965,9 @@ namespace TL
/// <summary>Maximum size of photos to preload</summary> /// <summary>Maximum size of photos to preload</summary>
public int photo_size_max; public int photo_size_max;
/// <summary>Maximum size of videos to preload</summary> /// <summary>Maximum size of videos to preload</summary>
public int video_size_max; public long video_size_max;
/// <summary>Maximum size of other files to preload</summary> /// <summary>Maximum size of other files to preload</summary>
public int file_size_max; public long file_size_max;
/// <summary>Maximum suggested bitrate for <strong>uploading</strong> videos</summary> /// <summary>Maximum suggested bitrate for <strong>uploading</strong> videos</summary>
public int video_upload_maxbitrate; public int video_upload_maxbitrate;
@ -11454,9 +11513,11 @@ namespace TL
public BankCardOpenUrl[] open_urls; public BankCardOpenUrl[] open_urls;
} }
/// <summary>Dialog filter (folders) <para>Derived classes: <see cref="DialogFilter"/></para> <para>See <a href="https://corefork.telegram.org/type/DialogFilter"/></para></summary>
public abstract class DialogFilterBase : IObject { }
/// <summary>Dialog filter AKA <a href="https://corefork.telegram.org/api/folders">folder</a> <para>See <a href="https://corefork.telegram.org/constructor/dialogFilter"/></para></summary> /// <summary>Dialog filter AKA <a href="https://corefork.telegram.org/api/folders">folder</a> <para>See <a href="https://corefork.telegram.org/constructor/dialogFilter"/></para></summary>
[TLDef(0x7438F7E8)] [TLDef(0x7438F7E8)]
public class DialogFilter : IObject public class DialogFilter : DialogFilterBase
{ {
/// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary> /// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary>
public Flags flags; public Flags flags;
@ -11495,13 +11556,16 @@ namespace TL
has_emoticon = 0x2000000, has_emoticon = 0x2000000,
} }
} }
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/dialogFilterDefault"/></para></summary>
[TLDef(0x363293AE)]
public class DialogFilterDefault : DialogFilterBase { }
/// <summary>Suggested <a href="https://corefork.telegram.org/api/folders">folders</a> <para>See <a href="https://corefork.telegram.org/constructor/dialogFilterSuggested"/></para></summary> /// <summary>Suggested <a href="https://corefork.telegram.org/api/folders">folders</a> <para>See <a href="https://corefork.telegram.org/constructor/dialogFilterSuggested"/></para></summary>
[TLDef(0x77744D4A)] [TLDef(0x77744D4A)]
public class DialogFilterSuggested : IObject public class DialogFilterSuggested : IObject
{ {
/// <summary><a href="https://corefork.telegram.org/api/folders">Folder info</a></summary> /// <summary><a href="https://corefork.telegram.org/api/folders">Folder info</a></summary>
public DialogFilter filter; public DialogFilterBase filter;
/// <summary><a href="https://corefork.telegram.org/api/folders">Folder</a> description</summary> /// <summary><a href="https://corefork.telegram.org/api/folders">Folder</a> description</summary>
public string description; public string description;
} }
@ -12744,6 +12808,7 @@ namespace TL
inactive = 0x1, inactive = 0x1,
/// <summary>Field <see cref="around_animation"/> has a value</summary> /// <summary>Field <see cref="around_animation"/> has a value</summary>
has_around_animation = 0x2, has_around_animation = 0x2,
premium = 0x4,
} }
} }
@ -12845,17 +12910,19 @@ namespace TL
} }
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/attachMenuBot"/></para></summary> /// <summary><para>See <a href="https://corefork.telegram.org/constructor/attachMenuBot"/></para></summary>
[TLDef(0xE93CB772)] [TLDef(0xC8AA2CD2)]
public class AttachMenuBot : IObject public class AttachMenuBot : IObject
{ {
public Flags flags; public Flags flags;
public long bot_id; public long bot_id;
public string short_name; public string short_name;
public AttachMenuPeerType[] peer_types;
public AttachMenuBotIcon[] icons; public AttachMenuBotIcon[] icons;
[Flags] public enum Flags : uint [Flags] public enum Flags : uint
{ {
inactive = 0x1, inactive = 0x1,
has_settings = 0x2,
} }
} }
@ -12965,4 +13032,69 @@ namespace TL
{ {
public DocumentBase document; public DocumentBase document;
} }
/// <summary><para>See <a href="https://corefork.telegram.org/type/AttachMenuPeerType"/></para></summary>
public enum AttachMenuPeerType : uint
{
///<summary>See <a href="https://corefork.telegram.org/constructor/attachMenuPeerTypeSameBotPM"/></summary>
SameBotPM = 0x7D6BE90E,
///<summary>See <a href="https://corefork.telegram.org/constructor/attachMenuPeerTypeBotPM"/></summary>
BotPM = 0xC32BFA1A,
///<summary>See <a href="https://corefork.telegram.org/constructor/attachMenuPeerTypePM"/></summary>
PM = 0xF146D31F,
///<summary>See <a href="https://corefork.telegram.org/constructor/attachMenuPeerTypeChat"/></summary>
Chat = 0x0509113F,
///<summary>See <a href="https://corefork.telegram.org/constructor/attachMenuPeerTypeBroadcast"/></summary>
Broadcast = 0x7BFBDEFC,
}
/// <summary><para>See <a href="https://corefork.telegram.org/type/InputInvoice"/></para></summary>
public abstract class InputInvoice : IObject { }
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/inputInvoiceMessage"/></para></summary>
[TLDef(0xC5B56859)]
public class InputInvoiceMessage : InputInvoice
{
public InputPeer peer;
public int msg_id;
}
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/inputInvoiceSlug"/></para></summary>
[TLDef(0xC326CAEF)]
public class InputInvoiceSlug : InputInvoice
{
public string slug;
}
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/payments.exportedInvoice"/></para></summary>
[TLDef(0xAED0CBD9)]
public class Payments_ExportedInvoice : IObject
{
public string url;
}
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/messages.transcribedAudio"/></para></summary>
[TLDef(0x93752C52)]
public class Messages_TranscribedAudio : IObject
{
public Flags flags;
public long transcription_id;
public string text;
[Flags] public enum Flags : uint
{
pending = 0x1,
}
}
/// <summary><para>See <a href="https://corefork.telegram.org/constructor/help.premiumPromo"/></para></summary>
[TLDef(0x8A4F3C29)]
public class Help_PremiumPromo : IObject
{
public string status_text;
public MessageEntity[] status_entities;
public string[] video_sections;
public DocumentBase[] videos;
public string currency;
public long monthly_amount;
public Dictionary<long, User> users;
}
} }

View file

@ -661,7 +661,7 @@ namespace TL
/// <param name="message_channels">Whether to export messages in <a href="https://corefork.telegram.org/api/channel#channels">channels</a></param> /// <param name="message_channels">Whether to export messages in <a href="https://corefork.telegram.org/api/channel#channels">channels</a></param>
/// <param name="files">Whether to export files</param> /// <param name="files">Whether to export files</param>
/// <param name="file_max_size">Maximum size of files to export</param> /// <param name="file_max_size">Maximum size of files to export</param>
public static Task<Account_Takeout> Account_InitTakeoutSession(this Client client, bool contacts = false, bool message_users = false, bool message_chats = false, bool message_megagroups = false, bool message_channels = false, bool files = false, int? file_max_size = null) public static Task<Account_Takeout> Account_InitTakeoutSession(this Client client, bool contacts = false, bool message_users = false, bool message_chats = false, bool message_megagroups = false, bool message_channels = false, bool files = false, long? file_max_size = null)
=> client.Invoke(new Account_InitTakeoutSession => client.Invoke(new Account_InitTakeoutSession
{ {
flags = (Account_InitTakeoutSession.Flags)((contacts ? 0x1 : 0) | (message_users ? 0x2 : 0) | (message_chats ? 0x4 : 0) | (message_megagroups ? 0x8 : 0) | (message_channels ? 0x10 : 0) | (files ? 0x20 : 0) | (file_max_size != null ? 0x20 : 0)), flags = (Account_InitTakeoutSession.Flags)((contacts ? 0x1 : 0) | (message_users ? 0x2 : 0) | (message_chats ? 0x4 : 0) | (message_megagroups ? 0x8 : 0) | (message_channels ? 0x10 : 0) | (files ? 0x20 : 0) | (file_max_size != null ? 0x20 : 0)),
@ -1855,7 +1855,7 @@ namespace TL
/// <param name="sha256">SHA256 of file</param> /// <param name="sha256">SHA256 of file</param>
/// <param name="size">Size of the file in bytes</param> /// <param name="size">Size of the file in bytes</param>
/// <param name="mime_type">Mime type</param> /// <param name="mime_type">Mime type</param>
public static Task<DocumentBase> Messages_GetDocumentByHash(this Client client, byte[] sha256, int size, string mime_type) public static Task<DocumentBase> Messages_GetDocumentByHash(this Client client, byte[] sha256, long size, string mime_type)
=> client.Invoke(new Messages_GetDocumentByHash => client.Invoke(new Messages_GetDocumentByHash
{ {
sha256 = sha256, sha256 = sha256,
@ -2640,7 +2640,7 @@ namespace TL
}); });
/// <summary>Get <a href="https://corefork.telegram.org/api/folders">folders</a> <para>See <a href="https://corefork.telegram.org/method/messages.getDialogFilters"/></para></summary> /// <summary>Get <a href="https://corefork.telegram.org/api/folders">folders</a> <para>See <a href="https://corefork.telegram.org/method/messages.getDialogFilters"/></para></summary>
public static Task<DialogFilter[]> Messages_GetDialogFilters(this Client client) public static Task<DialogFilterBase[]> Messages_GetDialogFilters(this Client client)
=> client.Invoke(new Messages_GetDialogFilters => client.Invoke(new Messages_GetDialogFilters
{ {
}); });
@ -2654,7 +2654,7 @@ namespace TL
/// <summary>Update <a href="https://corefork.telegram.org/api/folders">folder</a> <para>See <a href="https://corefork.telegram.org/method/messages.updateDialogFilter"/></para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/messages.updateDialogFilter#possible-errors">details</a>)</para></summary> /// <summary>Update <a href="https://corefork.telegram.org/api/folders">folder</a> <para>See <a href="https://corefork.telegram.org/method/messages.updateDialogFilter"/></para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/messages.updateDialogFilter#possible-errors">details</a>)</para></summary>
/// <param name="id"><a href="https://corefork.telegram.org/api/folders">Folder</a> ID</param> /// <param name="id"><a href="https://corefork.telegram.org/api/folders">Folder</a> ID</param>
/// <param name="filter"><a href="https://corefork.telegram.org/api/folders">Folder</a> info</param> /// <param name="filter"><a href="https://corefork.telegram.org/api/folders">Folder</a> info</param>
public static Task<bool> Messages_UpdateDialogFilter(this Client client, int id, DialogFilter filter = null) public static Task<bool> Messages_UpdateDialogFilter(this Client client, int id, DialogFilterBase filter = null)
=> client.Invoke(new Messages_UpdateDialogFilter => client.Invoke(new Messages_UpdateDialogFilter
{ {
flags = (Messages_UpdateDialogFilter.Flags)(filter != null ? 0x1 : 0), flags = (Messages_UpdateDialogFilter.Flags)(filter != null ? 0x1 : 0),
@ -3150,27 +3150,29 @@ namespace TL
}); });
/// <summary><para>See <a href="https://corefork.telegram.org/method/messages.requestWebView"/></para></summary> /// <summary><para>See <a href="https://corefork.telegram.org/method/messages.requestWebView"/></para></summary>
public static Task<WebViewResult> Messages_RequestWebView(this Client client, InputPeer peer, InputUserBase bot, bool from_bot_menu = false, bool silent = false, string url = null, string start_param = null, DataJSON theme_params = null, int? reply_to_msg_id = null) public static Task<WebViewResult> Messages_RequestWebView(this Client client, InputPeer peer, InputUserBase bot, bool from_bot_menu = false, bool silent = false, string url = null, string start_param = null, DataJSON theme_params = null, int? reply_to_msg_id = null, InputPeer send_as = null)
=> client.Invoke(new Messages_RequestWebView => client.Invoke(new Messages_RequestWebView
{ {
flags = (Messages_RequestWebView.Flags)((from_bot_menu ? 0x10 : 0) | (silent ? 0x20 : 0) | (url != null ? 0x2 : 0) | (start_param != null ? 0x8 : 0) | (theme_params != null ? 0x4 : 0) | (reply_to_msg_id != null ? 0x1 : 0)), flags = (Messages_RequestWebView.Flags)((from_bot_menu ? 0x10 : 0) | (silent ? 0x20 : 0) | (url != null ? 0x2 : 0) | (start_param != null ? 0x8 : 0) | (theme_params != null ? 0x4 : 0) | (reply_to_msg_id != null ? 0x1 : 0) | (send_as != null ? 0x2000 : 0)),
peer = peer, peer = peer,
bot = bot, bot = bot,
url = url, url = url,
start_param = start_param, start_param = start_param,
theme_params = theme_params, theme_params = theme_params,
reply_to_msg_id = reply_to_msg_id.GetValueOrDefault(), reply_to_msg_id = reply_to_msg_id.GetValueOrDefault(),
send_as = send_as,
}); });
/// <summary><para>See <a href="https://corefork.telegram.org/method/messages.prolongWebView"/></para></summary> /// <summary><para>See <a href="https://corefork.telegram.org/method/messages.prolongWebView"/></para></summary>
public static Task<bool> Messages_ProlongWebView(this Client client, InputPeer peer, InputUserBase bot, long query_id, bool silent = false, int? reply_to_msg_id = null) public static Task<bool> Messages_ProlongWebView(this Client client, InputPeer peer, InputUserBase bot, long query_id, bool silent = false, int? reply_to_msg_id = null, InputPeer send_as = null)
=> client.Invoke(new Messages_ProlongWebView => client.Invoke(new Messages_ProlongWebView
{ {
flags = (Messages_ProlongWebView.Flags)((silent ? 0x20 : 0) | (reply_to_msg_id != null ? 0x1 : 0)), flags = (Messages_ProlongWebView.Flags)((silent ? 0x20 : 0) | (reply_to_msg_id != null ? 0x1 : 0) | (send_as != null ? 0x2000 : 0)),
peer = peer, peer = peer,
bot = bot, bot = bot,
query_id = query_id, query_id = query_id,
reply_to_msg_id = reply_to_msg_id.GetValueOrDefault(), reply_to_msg_id = reply_to_msg_id.GetValueOrDefault(),
send_as = send_as,
}); });
/// <summary><para>See <a href="https://corefork.telegram.org/method/messages.requestSimpleWebView"/></para></summary> /// <summary><para>See <a href="https://corefork.telegram.org/method/messages.requestSimpleWebView"/></para></summary>
@ -3201,6 +3203,24 @@ namespace TL
data = data, data = data,
}); });
/// <summary><para>See <a href="https://corefork.telegram.org/method/messages.transcribeAudio"/></para></summary>
public static Task<Messages_TranscribedAudio> Messages_TranscribeAudio(this Client client, InputPeer peer, int msg_id)
=> client.Invoke(new Messages_TranscribeAudio
{
peer = peer,
msg_id = msg_id,
});
/// <summary><para>See <a href="https://corefork.telegram.org/method/messages.rateTranscribedAudio"/></para></summary>
public static Task<bool> Messages_RateTranscribedAudio(this Client client, InputPeer peer, int msg_id, long transcription_id, bool good)
=> client.Invoke(new Messages_RateTranscribedAudio
{
peer = peer,
msg_id = msg_id,
transcription_id = transcription_id,
good = good,
});
/// <summary>Returns a current state of updates. <para>See <a href="https://corefork.telegram.org/method/updates.getState"/> [bots: ✓]</para></summary> /// <summary>Returns a current state of updates. <para>See <a href="https://corefork.telegram.org/method/updates.getState"/> [bots: ✓]</para></summary>
public static Task<Updates_State> Updates_GetState(this Client client) public static Task<Updates_State> Updates_GetState(this Client client)
=> client.Invoke(new Updates_GetState => client.Invoke(new Updates_GetState
@ -3299,7 +3319,7 @@ namespace TL
/// <param name="location">File location</param> /// <param name="location">File location</param>
/// <param name="offset">Number of bytes to be skipped</param> /// <param name="offset">Number of bytes to be skipped</param>
/// <param name="limit">Number of bytes to be returned</param> /// <param name="limit">Number of bytes to be returned</param>
public static Task<Upload_FileBase> Upload_GetFile(this Client client, InputFileLocationBase location, int offset = default, int limit = int.MaxValue, bool precise = false, bool cdn_supported = false) public static Task<Upload_FileBase> Upload_GetFile(this Client client, InputFileLocationBase location, long offset = default, int limit = int.MaxValue, bool precise = false, bool cdn_supported = false)
=> client.Invoke(new Upload_GetFile => client.Invoke(new Upload_GetFile
{ {
flags = (Upload_GetFile.Flags)((precise ? 0x1 : 0) | (cdn_supported ? 0x2 : 0)), flags = (Upload_GetFile.Flags)((precise ? 0x1 : 0) | (cdn_supported ? 0x2 : 0)),
@ -3338,7 +3358,7 @@ namespace TL
/// <param name="file_token">File token</param> /// <param name="file_token">File token</param>
/// <param name="offset">Offset of chunk to download</param> /// <param name="offset">Offset of chunk to download</param>
/// <param name="limit">Length of chunk to download</param> /// <param name="limit">Length of chunk to download</param>
public static Task<Upload_CdnFileBase> Upload_GetCdnFile(this Client client, byte[] file_token, int offset = default, int limit = int.MaxValue) public static Task<Upload_CdnFileBase> Upload_GetCdnFile(this Client client, byte[] file_token, long offset = default, int limit = int.MaxValue)
=> client.Invoke(new Upload_GetCdnFile => client.Invoke(new Upload_GetCdnFile
{ {
file_token = file_token, file_token = file_token,
@ -3359,7 +3379,7 @@ namespace TL
/// <summary>Get SHA256 hashes for verifying downloaded <a href="https://corefork.telegram.org/cdn">CDN</a> files <para>See <a href="https://corefork.telegram.org/method/upload.getCdnFileHashes"/> [bots: ✓]</para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/upload.getCdnFileHashes#possible-errors">details</a>)</para></summary> /// <summary>Get SHA256 hashes for verifying downloaded <a href="https://corefork.telegram.org/cdn">CDN</a> files <para>See <a href="https://corefork.telegram.org/method/upload.getCdnFileHashes"/> [bots: ✓]</para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/upload.getCdnFileHashes#possible-errors">details</a>)</para></summary>
/// <param name="file_token">File</param> /// <param name="file_token">File</param>
/// <param name="offset">Offset from which to start getting hashes</param> /// <param name="offset">Offset from which to start getting hashes</param>
public static Task<FileHash[]> Upload_GetCdnFileHashes(this Client client, byte[] file_token, int offset = default) public static Task<FileHash[]> Upload_GetCdnFileHashes(this Client client, byte[] file_token, long offset = default)
=> client.Invoke(new Upload_GetCdnFileHashes => client.Invoke(new Upload_GetCdnFileHashes
{ {
file_token = file_token, file_token = file_token,
@ -3369,7 +3389,7 @@ namespace TL
/// <summary>Get SHA256 hashes for verifying downloaded files <para>See <a href="https://corefork.telegram.org/method/upload.getFileHashes"/> [bots: ✓]</para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/upload.getFileHashes#possible-errors">details</a>)</para></summary> /// <summary>Get SHA256 hashes for verifying downloaded files <para>See <a href="https://corefork.telegram.org/method/upload.getFileHashes"/> [bots: ✓]</para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/upload.getFileHashes#possible-errors">details</a>)</para></summary>
/// <param name="location">File</param> /// <param name="location">File</param>
/// <param name="offset">Offset from which to get file hashes</param> /// <param name="offset">Offset from which to get file hashes</param>
public static Task<FileHash[]> Upload_GetFileHashes(this Client client, InputFileLocationBase location, int offset = default) public static Task<FileHash[]> Upload_GetFileHashes(this Client client, InputFileLocationBase location, long offset = default)
=> client.Invoke(new Upload_GetFileHashes => client.Invoke(new Upload_GetFileHashes
{ {
location = location, location = location,
@ -3550,6 +3570,12 @@ namespace TL
hash = hash, hash = hash,
}); });
/// <summary><para>See <a href="https://corefork.telegram.org/method/help.getPremiumPromo"/></para></summary>
public static Task<Help_PremiumPromo> Help_GetPremiumPromo(this Client client)
=> client.Invoke(new Help_GetPremiumPromo
{
});
/// <summary>Mark <a href="https://corefork.telegram.org/api/channel">channel/supergroup</a> history as read <para>See <a href="https://corefork.telegram.org/method/channels.readHistory"/></para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/channels.readHistory#possible-errors">details</a>)</para></summary> /// <summary>Mark <a href="https://corefork.telegram.org/api/channel">channel/supergroup</a> history as read <para>See <a href="https://corefork.telegram.org/method/channels.readHistory"/></para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/channels.readHistory#possible-errors">details</a>)</para></summary>
/// <param name="channel"><a href="https://corefork.telegram.org/api/channel">Channel/supergroup</a></param> /// <param name="channel"><a href="https://corefork.telegram.org/api/channel">Channel/supergroup</a></param>
/// <param name="max_id">ID of message up to which messages should be marked as read</param> /// <param name="max_id">ID of message up to which messages should be marked as read</param>
@ -3955,6 +3981,22 @@ namespace TL
participant = participant, participant = participant,
}); });
/// <summary><para>See <a href="https://corefork.telegram.org/method/channels.toggleJoinToSend"/></para></summary>
public static Task<UpdatesBase> Channels_ToggleJoinToSend(this Client client, InputChannelBase channel, bool enabled)
=> client.Invoke(new Channels_ToggleJoinToSend
{
channel = channel,
enabled = enabled,
});
/// <summary><para>See <a href="https://corefork.telegram.org/method/channels.toggleJoinRequest"/></para></summary>
public static Task<UpdatesBase> Channels_ToggleJoinRequest(this Client client, InputChannelBase channel, bool enabled)
=> client.Invoke(new Channels_ToggleJoinRequest
{
channel = channel,
enabled = enabled,
});
/// <summary>Sends a custom request; for bots only <para>See <a href="https://corefork.telegram.org/method/bots.sendCustomRequest"/> [bots: ✓]</para> <para>Possible <see cref="RpcException"/> codes: 400,403 (<a href="https://corefork.telegram.org/method/bots.sendCustomRequest#possible-errors">details</a>)</para></summary> /// <summary>Sends a custom request; for bots only <para>See <a href="https://corefork.telegram.org/method/bots.sendCustomRequest"/> [bots: ✓]</para> <para>Possible <see cref="RpcException"/> codes: 400,403 (<a href="https://corefork.telegram.org/method/bots.sendCustomRequest#possible-errors">details</a>)</para></summary>
/// <param name="custom_method">The method name</param> /// <param name="custom_method">The method name</param>
/// <param name="params_">JSON-serialized method parameters</param> /// <param name="params_">JSON-serialized method parameters</param>
@ -4037,15 +4079,12 @@ namespace TL
}); });
/// <summary>Get a payment form <para>See <a href="https://corefork.telegram.org/method/payments.getPaymentForm"/></para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/payments.getPaymentForm#possible-errors">details</a>)</para></summary> /// <summary>Get a payment form <para>See <a href="https://corefork.telegram.org/method/payments.getPaymentForm"/></para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/payments.getPaymentForm#possible-errors">details</a>)</para></summary>
/// <param name="peer">The peer where the payment form was sent</param>
/// <param name="msg_id">Message ID of payment form</param>
/// <param name="theme_params">A JSON object with the following keys, containing color theme information (integers, RGB24) to pass to the payment provider, to apply in eventual verification pages: <br/><c>bg_color</c> - Background color <br/><c>text_color</c> - Text color <br/><c>hint_color</c> - Hint text color <br/><c>link_color</c> - Link color <br/><c>button_color</c> - Button color <br/><c>button_text_color</c> - Button text color</param> /// <param name="theme_params">A JSON object with the following keys, containing color theme information (integers, RGB24) to pass to the payment provider, to apply in eventual verification pages: <br/><c>bg_color</c> - Background color <br/><c>text_color</c> - Text color <br/><c>hint_color</c> - Hint text color <br/><c>link_color</c> - Link color <br/><c>button_color</c> - Button color <br/><c>button_text_color</c> - Button text color</param>
public static Task<Payments_PaymentForm> Payments_GetPaymentForm(this Client client, InputPeer peer, int msg_id, DataJSON theme_params = null) public static Task<Payments_PaymentForm> Payments_GetPaymentForm(this Client client, InputInvoice invoice, DataJSON theme_params = null)
=> client.Invoke(new Payments_GetPaymentForm => client.Invoke(new Payments_GetPaymentForm
{ {
flags = (Payments_GetPaymentForm.Flags)(theme_params != null ? 0x1 : 0), flags = (Payments_GetPaymentForm.Flags)(theme_params != null ? 0x1 : 0),
peer = peer, invoice = invoice,
msg_id = msg_id,
theme_params = theme_params, theme_params = theme_params,
}); });
@ -4061,33 +4100,27 @@ namespace TL
/// <summary>Submit requested order information for validation <para>See <a href="https://corefork.telegram.org/method/payments.validateRequestedInfo"/></para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/payments.validateRequestedInfo#possible-errors">details</a>)</para></summary> /// <summary>Submit requested order information for validation <para>See <a href="https://corefork.telegram.org/method/payments.validateRequestedInfo"/></para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/payments.validateRequestedInfo#possible-errors">details</a>)</para></summary>
/// <param name="save">Save order information to re-use it for future orders</param> /// <param name="save">Save order information to re-use it for future orders</param>
/// <param name="peer">Peer where the payment form was sent</param>
/// <param name="msg_id">Message ID of payment form</param>
/// <param name="info">Requested order information</param> /// <param name="info">Requested order information</param>
public static Task<Payments_ValidatedRequestedInfo> Payments_ValidateRequestedInfo(this Client client, InputPeer peer, int msg_id, PaymentRequestedInfo info, bool save = false) public static Task<Payments_ValidatedRequestedInfo> Payments_ValidateRequestedInfo(this Client client, InputInvoice invoice, PaymentRequestedInfo info, bool save = false)
=> client.Invoke(new Payments_ValidateRequestedInfo => client.Invoke(new Payments_ValidateRequestedInfo
{ {
flags = (Payments_ValidateRequestedInfo.Flags)(save ? 0x1 : 0), flags = (Payments_ValidateRequestedInfo.Flags)(save ? 0x1 : 0),
peer = peer, invoice = invoice,
msg_id = msg_id,
info = info, info = info,
}); });
/// <summary>Send compiled payment form <para>See <a href="https://corefork.telegram.org/method/payments.sendPaymentForm"/></para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/payments.sendPaymentForm#possible-errors">details</a>)</para></summary> /// <summary>Send compiled payment form <para>See <a href="https://corefork.telegram.org/method/payments.sendPaymentForm"/></para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/payments.sendPaymentForm#possible-errors">details</a>)</para></summary>
/// <param name="form_id">Form ID</param> /// <param name="form_id">Form ID</param>
/// <param name="peer">The peer where the payment form was sent</param>
/// <param name="msg_id">Message ID of form</param>
/// <param name="requested_info_id">ID of saved and validated <see cref="Payments_ValidatedRequestedInfo"/></param> /// <param name="requested_info_id">ID of saved and validated <see cref="Payments_ValidatedRequestedInfo"/></param>
/// <param name="shipping_option_id">Chosen shipping option ID</param> /// <param name="shipping_option_id">Chosen shipping option ID</param>
/// <param name="credentials">Payment credentials</param> /// <param name="credentials">Payment credentials</param>
/// <param name="tip_amount">Tip, in the smallest units of the currency (integer, not float/double). For example, for a price of <c>US$ 1.45</c> pass <c>amount = 145</c>. See the exp parameter in <a href="https://corefork.telegram.org/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).</param> /// <param name="tip_amount">Tip, in the smallest units of the currency (integer, not float/double). For example, for a price of <c>US$ 1.45</c> pass <c>amount = 145</c>. See the exp parameter in <a href="https://corefork.telegram.org/bots/payments/currencies.json">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).</param>
public static Task<Payments_PaymentResultBase> Payments_SendPaymentForm(this Client client, long form_id, InputPeer peer, int msg_id, InputPaymentCredentialsBase credentials, string requested_info_id = null, string shipping_option_id = null, long? tip_amount = null) public static Task<Payments_PaymentResultBase> Payments_SendPaymentForm(this Client client, long form_id, InputInvoice invoice, InputPaymentCredentialsBase credentials, string requested_info_id = null, string shipping_option_id = null, long? tip_amount = null)
=> client.Invoke(new Payments_SendPaymentForm => client.Invoke(new Payments_SendPaymentForm
{ {
flags = (Payments_SendPaymentForm.Flags)((requested_info_id != null ? 0x1 : 0) | (shipping_option_id != null ? 0x2 : 0) | (tip_amount != null ? 0x4 : 0)), flags = (Payments_SendPaymentForm.Flags)((requested_info_id != null ? 0x1 : 0) | (shipping_option_id != null ? 0x2 : 0) | (tip_amount != null ? 0x4 : 0)),
form_id = form_id, form_id = form_id,
peer = peer, invoice = invoice,
msg_id = msg_id,
requested_info_id = requested_info_id, requested_info_id = requested_info_id,
shipping_option_id = shipping_option_id, shipping_option_id = shipping_option_id,
credentials = credentials, credentials = credentials,
@ -4117,6 +4150,51 @@ namespace TL
number = number, number = number,
}); });
/// <summary><para>See <a href="https://corefork.telegram.org/method/payments.exportInvoice"/></para></summary>
public static Task<Payments_ExportedInvoice> Payments_ExportInvoice(this Client client, InputMedia invoice_media)
=> client.Invoke(new Payments_ExportInvoice
{
invoice_media = invoice_media,
});
/// <summary><para>See <a href="https://corefork.telegram.org/method/payments.assignAppStoreTransaction"/></para></summary>
public static Task<UpdatesBase> Payments_AssignAppStoreTransaction(this Client client, string transaction_id, byte[] receipt, bool restore = false)
=> client.Invoke(new Payments_AssignAppStoreTransaction
{
flags = (Payments_AssignAppStoreTransaction.Flags)(restore ? 0x1 : 0),
transaction_id = transaction_id,
receipt = receipt,
});
/// <summary><para>See <a href="https://corefork.telegram.org/method/payments.assignPlayMarketTransaction"/></para></summary>
public static Task<UpdatesBase> Payments_AssignPlayMarketTransaction(this Client client, string purchase_token)
=> client.Invoke(new Payments_AssignPlayMarketTransaction
{
purchase_token = purchase_token,
});
/// <summary><para>See <a href="https://corefork.telegram.org/method/payments.restorePlayMarketReceipt"/></para></summary>
public static Task<UpdatesBase> Payments_RestorePlayMarketReceipt(this Client client, byte[] receipt)
=> client.Invoke(new Payments_RestorePlayMarketReceipt
{
receipt = receipt,
});
/// <summary><para>See <a href="https://corefork.telegram.org/method/payments.canPurchasePremium"/></para></summary>
public static Task<bool> Payments_CanPurchasePremium(this Client client)
=> client.Invoke(new Payments_CanPurchasePremium
{
});
/// <summary><para>See <a href="https://corefork.telegram.org/method/payments.requestRecurringPayment"/></para></summary>
public static Task<UpdatesBase> Payments_RequestRecurringPayment(this Client client, InputUserBase user_id, string recurring_init_charge, InputMedia invoice_media)
=> client.Invoke(new Payments_RequestRecurringPayment
{
user_id = user_id,
recurring_init_charge = recurring_init_charge,
invoice_media = invoice_media,
});
/// <summary>Create a stickerset, bots only. <para>See <a href="https://corefork.telegram.org/method/stickers.createStickerSet"/> [bots: ✓]</para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/stickers.createStickerSet#possible-errors">details</a>)</para></summary> /// <summary>Create a stickerset, bots only. <para>See <a href="https://corefork.telegram.org/method/stickers.createStickerSet"/> [bots: ✓]</para> <para>Possible <see cref="RpcException"/> codes: 400 (<a href="https://corefork.telegram.org/method/stickers.createStickerSet#possible-errors">details</a>)</para></summary>
/// <param name="masks">Whether this is a mask stickerset</param> /// <param name="masks">Whether this is a mask stickerset</param>
/// <param name="animated">Whether this is an animated stickerset</param> /// <param name="animated">Whether this is an animated stickerset</param>
@ -5141,11 +5219,11 @@ namespace TL.Methods
public string code; public string code;
} }
[TLDef(0xF05B4804)] [TLDef(0x8EF3EAB0)]
public class Account_InitTakeoutSession : IMethod<Account_Takeout> public class Account_InitTakeoutSession : IMethod<Account_Takeout>
{ {
public Flags flags; public Flags flags;
[IfFlag(5)] public int file_max_size; [IfFlag(5)] public long file_max_size;
[Flags] public enum Flags : uint [Flags] public enum Flags : uint
{ {
@ -6130,11 +6208,11 @@ namespace TL.Methods
} }
} }
[TLDef(0x338E2464)] [TLDef(0xB1F2061F)]
public class Messages_GetDocumentByHash : IMethod<DocumentBase> public class Messages_GetDocumentByHash : IMethod<DocumentBase>
{ {
public byte[] sha256; public byte[] sha256;
public int size; public long size;
public string mime_type; public string mime_type;
} }
@ -6817,7 +6895,7 @@ namespace TL.Methods
} }
[TLDef(0xF19ED96D)] [TLDef(0xF19ED96D)]
public class Messages_GetDialogFilters : IMethod<DialogFilter[]> { } public class Messages_GetDialogFilters : IMethod<DialogFilterBase[]> { }
[TLDef(0xA29CD42C)] [TLDef(0xA29CD42C)]
public class Messages_GetSuggestedDialogFilters : IMethod<DialogFilterSuggested[]> { } public class Messages_GetSuggestedDialogFilters : IMethod<DialogFilterSuggested[]> { }
@ -6827,7 +6905,7 @@ namespace TL.Methods
{ {
public Flags flags; public Flags flags;
public int id; public int id;
[IfFlag(0)] public DialogFilter filter; [IfFlag(0)] public DialogFilterBase filter;
[Flags] public enum Flags : uint [Flags] public enum Flags : uint
{ {
@ -7221,7 +7299,7 @@ namespace TL.Methods
public bool enabled; public bool enabled;
} }
[TLDef(0x0FA04DFF)] [TLDef(0x91B15831)]
public class Messages_RequestWebView : IMethod<WebViewResult> public class Messages_RequestWebView : IMethod<WebViewResult>
{ {
public Flags flags; public Flags flags;
@ -7231,6 +7309,7 @@ namespace TL.Methods
[IfFlag(3)] public string start_param; [IfFlag(3)] public string start_param;
[IfFlag(2)] public DataJSON theme_params; [IfFlag(2)] public DataJSON theme_params;
[IfFlag(0)] public int reply_to_msg_id; [IfFlag(0)] public int reply_to_msg_id;
[IfFlag(13)] public InputPeer send_as;
[Flags] public enum Flags : uint [Flags] public enum Flags : uint
{ {
@ -7240,10 +7319,11 @@ namespace TL.Methods
has_start_param = 0x8, has_start_param = 0x8,
from_bot_menu = 0x10, from_bot_menu = 0x10,
silent = 0x20, silent = 0x20,
has_send_as = 0x2000,
} }
} }
[TLDef(0xD22AD148)] [TLDef(0xEA5FBCCE)]
public class Messages_ProlongWebView : IMethod<bool> public class Messages_ProlongWebView : IMethod<bool>
{ {
public Flags flags; public Flags flags;
@ -7251,11 +7331,13 @@ namespace TL.Methods
public InputUserBase bot; public InputUserBase bot;
public long query_id; public long query_id;
[IfFlag(0)] public int reply_to_msg_id; [IfFlag(0)] public int reply_to_msg_id;
[IfFlag(13)] public InputPeer send_as;
[Flags] public enum Flags : uint [Flags] public enum Flags : uint
{ {
has_reply_to_msg_id = 0x1, has_reply_to_msg_id = 0x1,
silent = 0x20, silent = 0x20,
has_send_as = 0x2000,
} }
} }
@ -7289,6 +7371,22 @@ namespace TL.Methods
public string data; public string data;
} }
[TLDef(0x269E9A49)]
public class Messages_TranscribeAudio : IMethod<Messages_TranscribedAudio>
{
public InputPeer peer;
public int msg_id;
}
[TLDef(0x7F1D072F)]
public class Messages_RateTranscribedAudio : IMethod<bool>
{
public InputPeer peer;
public int msg_id;
public long transcription_id;
public bool good;
}
[TLDef(0xEDD4882A)] [TLDef(0xEDD4882A)]
public class Updates_GetState : IMethod<Updates_State> { } public class Updates_GetState : IMethod<Updates_State> { }
@ -7367,12 +7465,12 @@ namespace TL.Methods
public byte[] bytes; public byte[] bytes;
} }
[TLDef(0xB15A9AFC)] [TLDef(0xBE5335BE)]
public class Upload_GetFile : IMethod<Upload_FileBase> public class Upload_GetFile : IMethod<Upload_FileBase>
{ {
public Flags flags; public Flags flags;
public InputFileLocationBase location; public InputFileLocationBase location;
public int offset; public long offset;
public int limit; public int limit;
[Flags] public enum Flags : uint [Flags] public enum Flags : uint
@ -7399,11 +7497,11 @@ namespace TL.Methods
public int limit; public int limit;
} }
[TLDef(0x2000BCC3)] [TLDef(0x395F69DA)]
public class Upload_GetCdnFile : IMethod<Upload_CdnFileBase> public class Upload_GetCdnFile : IMethod<Upload_CdnFileBase>
{ {
public byte[] file_token; public byte[] file_token;
public int offset; public long offset;
public int limit; public int limit;
} }
@ -7414,18 +7512,18 @@ namespace TL.Methods
public byte[] request_token; public byte[] request_token;
} }
[TLDef(0x4DA54231)] [TLDef(0x91DC3F31)]
public class Upload_GetCdnFileHashes : IMethod<FileHash[]> public class Upload_GetCdnFileHashes : IMethod<FileHash[]>
{ {
public byte[] file_token; public byte[] file_token;
public int offset; public long offset;
} }
[TLDef(0xC7025931)] [TLDef(0x9156982A)]
public class Upload_GetFileHashes : IMethod<FileHash[]> public class Upload_GetFileHashes : IMethod<FileHash[]>
{ {
public InputFileLocationBase location; public InputFileLocationBase location;
public int offset; public long offset;
} }
[TLDef(0xC4F9186B)] [TLDef(0xC4F9186B)]
@ -7538,6 +7636,9 @@ namespace TL.Methods
public int hash; public int hash;
} }
[TLDef(0xB81B93D4)]
public class Help_GetPremiumPromo : IMethod<Help_PremiumPromo> { }
[TLDef(0xCC104937)] [TLDef(0xCC104937)]
public class Channels_ReadHistory : IMethod<bool> public class Channels_ReadHistory : IMethod<bool>
{ {
@ -7844,6 +7945,20 @@ namespace TL.Methods
public InputPeer participant; public InputPeer participant;
} }
[TLDef(0xE4CB9580)]
public class Channels_ToggleJoinToSend : IMethod<UpdatesBase>
{
public InputChannelBase channel;
public bool enabled;
}
[TLDef(0x4C2985B6)]
public class Channels_ToggleJoinRequest : IMethod<UpdatesBase>
{
public InputChannelBase channel;
public bool enabled;
}
[TLDef(0xAA2769ED)] [TLDef(0xAA2769ED)]
public class Bots_SendCustomRequest : IMethod<DataJSON> public class Bots_SendCustomRequest : IMethod<DataJSON>
{ {
@ -7905,12 +8020,11 @@ namespace TL.Methods
public ChatAdminRights admin_rights; public ChatAdminRights admin_rights;
} }
[TLDef(0x8A333C8D)] [TLDef(0x37148DBB)]
public class Payments_GetPaymentForm : IMethod<Payments_PaymentForm> public class Payments_GetPaymentForm : IMethod<Payments_PaymentForm>
{ {
public Flags flags; public Flags flags;
public InputPeer peer; public InputInvoice invoice;
public int msg_id;
[IfFlag(0)] public DataJSON theme_params; [IfFlag(0)] public DataJSON theme_params;
[Flags] public enum Flags : uint [Flags] public enum Flags : uint
@ -7926,12 +8040,11 @@ namespace TL.Methods
public int msg_id; public int msg_id;
} }
[TLDef(0xDB103170)] [TLDef(0xB6C8F12B)]
public class Payments_ValidateRequestedInfo : IMethod<Payments_ValidatedRequestedInfo> public class Payments_ValidateRequestedInfo : IMethod<Payments_ValidatedRequestedInfo>
{ {
public Flags flags; public Flags flags;
public InputPeer peer; public InputInvoice invoice;
public int msg_id;
public PaymentRequestedInfo info; public PaymentRequestedInfo info;
[Flags] public enum Flags : uint [Flags] public enum Flags : uint
@ -7940,13 +8053,12 @@ namespace TL.Methods
} }
} }
[TLDef(0x30C3BC9D)] [TLDef(0x2D03522F)]
public class Payments_SendPaymentForm : IMethod<Payments_PaymentResultBase> public class Payments_SendPaymentForm : IMethod<Payments_PaymentResultBase>
{ {
public Flags flags; public Flags flags;
public long form_id; public long form_id;
public InputPeer peer; public InputInvoice invoice;
public int msg_id;
[IfFlag(0)] public string requested_info_id; [IfFlag(0)] public string requested_info_id;
[IfFlag(1)] public string shipping_option_id; [IfFlag(1)] public string shipping_option_id;
public InputPaymentCredentialsBase credentials; public InputPaymentCredentialsBase credentials;
@ -7981,6 +8093,48 @@ namespace TL.Methods
public string number; public string number;
} }
[TLDef(0x0F91B065)]
public class Payments_ExportInvoice : IMethod<Payments_ExportedInvoice>
{
public InputMedia invoice_media;
}
[TLDef(0x0FEC13C6)]
public class Payments_AssignAppStoreTransaction : IMethod<UpdatesBase>
{
public Flags flags;
public string transaction_id;
public byte[] receipt;
[Flags] public enum Flags : uint
{
restore = 0x1,
}
}
[TLDef(0x4FAA4AED)]
public class Payments_AssignPlayMarketTransaction : IMethod<UpdatesBase>
{
public string purchase_token;
}
[TLDef(0xD164E36A)]
public class Payments_RestorePlayMarketReceipt : IMethod<UpdatesBase>
{
public byte[] receipt;
}
[TLDef(0xAA6A90C8)]
public class Payments_CanPurchasePremium : IMethod<bool> { }
[TLDef(0x146E958D)]
public class Payments_RequestRecurringPayment : IMethod<UpdatesBase>
{
public InputUserBase user_id;
public string recurring_init_charge;
public InputMedia invoice_media;
}
[TLDef(0x9021AB67)] [TLDef(0x9021AB67)]
public class Stickers_CreateStickerSet : IMethod<Messages_StickerSet> public class Stickers_CreateStickerSet : IMethod<Messages_StickerSet>
{ {

View file

@ -6,7 +6,7 @@ namespace TL
{ {
public static class Layer public static class Layer
{ {
public const int Version = 142; // fetched 14/05/2022 22:26:18 public const int Version = 143; // fetched 14/06/2022 23:30:05
internal const uint VectorCtor = 0x1CB5C415; internal const uint VectorCtor = 0x1CB5C415;
internal const uint NullCtor = 0x56730BCC; internal const uint NullCtor = 0x56730BCC;
internal const uint RpcResultCtor = 0xF35C6D01; internal const uint RpcResultCtor = 0xF35C6D01;
@ -170,7 +170,7 @@ namespace TL
[0x9FBAB604] = typeof(MessageActionHistoryClear), [0x9FBAB604] = typeof(MessageActionHistoryClear),
[0x92A72876] = typeof(MessageActionGameScore), [0x92A72876] = typeof(MessageActionGameScore),
[0x8F31B327] = typeof(MessageActionPaymentSentMe), [0x8F31B327] = typeof(MessageActionPaymentSentMe),
[0x40699CD0] = typeof(MessageActionPaymentSent), [0x96163F56] = typeof(MessageActionPaymentSent),
[0x80E11A7F] = typeof(MessageActionPhoneCall), [0x80E11A7F] = typeof(MessageActionPhoneCall),
[0x4792929B] = typeof(MessageActionScreenshotTaken), [0x4792929B] = typeof(MessageActionScreenshotTaken),
[0xFAE69F56] = typeof(MessageActionCustomAction), [0xFAE69F56] = typeof(MessageActionCustomAction),
@ -349,6 +349,7 @@ namespace TL
[0x1592B79D] = typeof(UpdateWebViewResultSent), [0x1592B79D] = typeof(UpdateWebViewResultSent),
[0x14B85813] = typeof(UpdateBotMenuButton), [0x14B85813] = typeof(UpdateBotMenuButton),
[0x74D8BE99] = typeof(UpdateSavedRingtones), [0x74D8BE99] = typeof(UpdateSavedRingtones),
[0x0084CD5A] = typeof(UpdateTranscribedAudio),
[0xA56C2A3E] = typeof(Updates_State), [0xA56C2A3E] = typeof(Updates_State),
[0x5D75A138] = typeof(Updates_DifferenceEmpty), [0x5D75A138] = typeof(Updates_DifferenceEmpty),
[0x00F49CA0] = typeof(Updates_Difference), [0x00F49CA0] = typeof(Updates_Difference),
@ -379,7 +380,7 @@ namespace TL
[0x1E1C7C45] = typeof(EncryptedChatDiscarded), [0x1E1C7C45] = typeof(EncryptedChatDiscarded),
[0xF141B5E1] = typeof(InputEncryptedChat), [0xF141B5E1] = typeof(InputEncryptedChat),
[0xC21F497E] = null,//EncryptedFileEmpty [0xC21F497E] = null,//EncryptedFileEmpty
[0x4A70994C] = typeof(EncryptedFile), [0xA8008CD8] = typeof(EncryptedFile),
[0x1837C364] = null,//InputEncryptedFileEmpty [0x1837C364] = null,//InputEncryptedFileEmpty
[0x64BD0306] = typeof(InputEncryptedFileUploaded), [0x64BD0306] = typeof(InputEncryptedFileUploaded),
[0x5A17B5E5] = typeof(InputEncryptedFile), [0x5A17B5E5] = typeof(InputEncryptedFile),
@ -393,7 +394,7 @@ namespace TL
[0x72F0EAAE] = null,//InputDocumentEmpty [0x72F0EAAE] = null,//InputDocumentEmpty
[0x1ABFB575] = typeof(InputDocument), [0x1ABFB575] = typeof(InputDocument),
[0x36F8C871] = typeof(DocumentEmpty), [0x36F8C871] = typeof(DocumentEmpty),
[0x1E87342B] = typeof(Document), [0x8FD4C4D8] = typeof(Document),
[0x17C6B5F6] = typeof(Help_Support), [0x17C6B5F6] = typeof(Help_Support),
[0x9FD40BD8] = typeof(NotifyPeer), [0x9FD40BD8] = typeof(NotifyPeer),
[0xB4C83B4C] = typeof(NotifyUsers), [0xB4C83B4C] = typeof(NotifyUsers),
@ -461,6 +462,7 @@ namespace TL
[0x137948A5] = typeof(Auth_PasswordRecovery), [0x137948A5] = typeof(Auth_PasswordRecovery),
[0xA384B779] = typeof(ReceivedNotifyMessage), [0xA384B779] = typeof(ReceivedNotifyMessage),
[0x0AB4A819] = typeof(ChatInviteExported), [0x0AB4A819] = typeof(ChatInviteExported),
[0xED107AB7] = typeof(ChatInvitePublicJoinRequests),
[0x5A686D7C] = typeof(ChatInviteAlready), [0x5A686D7C] = typeof(ChatInviteAlready),
[0x300C44C1] = typeof(ChatInvite), [0x300C44C1] = typeof(ChatInvite),
[0x61695CB0] = typeof(ChatInvitePeek), [0x61695CB0] = typeof(ChatInvitePeek),
@ -474,7 +476,7 @@ namespace TL
[0xB60A24A6] = typeof(Messages_StickerSet), [0xB60A24A6] = typeof(Messages_StickerSet),
[0xD3F924EB] = null,//Messages_StickerSetNotModified [0xD3F924EB] = null,//Messages_StickerSetNotModified
[0xC27AC8C7] = typeof(BotCommand), [0xC27AC8C7] = typeof(BotCommand),
[0xE4169B5D] = typeof(BotInfo), [0x8F300B57] = typeof(BotInfo),
[0xA2FA4880] = typeof(KeyboardButton), [0xA2FA4880] = typeof(KeyboardButton),
[0x258AFF05] = typeof(KeyboardButtonUrl), [0x258AFF05] = typeof(KeyboardButtonUrl),
[0x35BBDB6B] = typeof(KeyboardButtonCallback), [0x35BBDB6B] = typeof(KeyboardButtonCallback),
@ -649,7 +651,7 @@ namespace TL
[0xA44F3EF6] = typeof(PageBlockMap), [0xA44F3EF6] = typeof(PageBlockMap),
[0x7D748D04] = typeof(DataJSON), [0x7D748D04] = typeof(DataJSON),
[0xCB296BF8] = typeof(LabeledPrice), [0xCB296BF8] = typeof(LabeledPrice),
[0x0CD886E0] = typeof(Invoice), [0x3E85A91B] = typeof(Invoice),
[0xEA02C27E] = typeof(PaymentCharge), [0xEA02C27E] = typeof(PaymentCharge),
[0x1E8CAAEB] = typeof(PostAddress), [0x1E8CAAEB] = typeof(PostAddress),
[0x909C3F94] = typeof(PaymentRequestedInfo), [0x909C3F94] = typeof(PaymentRequestedInfo),
@ -660,7 +662,7 @@ namespace TL
[0xC239D686] = typeof(InputWebFileLocation), [0xC239D686] = typeof(InputWebFileLocation),
[0x9F2221C9] = typeof(InputWebFileGeoPointLocation), [0x9F2221C9] = typeof(InputWebFileGeoPointLocation),
[0x21E753BC] = typeof(Upload_WebFile), [0x21E753BC] = typeof(Upload_WebFile),
[0x1694761B] = typeof(Payments_PaymentForm), [0xB0133B37] = typeof(Payments_PaymentForm),
[0xD1451883] = typeof(Payments_ValidatedRequestedInfo), [0xD1451883] = typeof(Payments_ValidatedRequestedInfo),
[0x4E5F810D] = typeof(Payments_PaymentResult), [0x4E5F810D] = typeof(Payments_PaymentResult),
[0xD8411139] = typeof(Payments_PaymentVerificationNeeded), [0xD8411139] = typeof(Payments_PaymentVerificationNeeded),
@ -754,14 +756,14 @@ namespace TL
[0x514519E2] = typeof(DialogPeerFolder), [0x514519E2] = typeof(DialogPeerFolder),
[0x0D54B65D] = null,//Messages_FoundStickerSetsNotModified [0x0D54B65D] = null,//Messages_FoundStickerSetsNotModified
[0x8AF09DD2] = typeof(Messages_FoundStickerSets), [0x8AF09DD2] = typeof(Messages_FoundStickerSets),
[0x6242C773] = typeof(FileHash), [0xF39B035C] = typeof(FileHash),
[0x75588B3F] = typeof(InputClientProxy), [0x75588B3F] = typeof(InputClientProxy),
[0xE3309F7F] = typeof(Help_TermsOfServiceUpdateEmpty), [0xE3309F7F] = typeof(Help_TermsOfServiceUpdateEmpty),
[0x28ECF961] = typeof(Help_TermsOfServiceUpdate), [0x28ECF961] = typeof(Help_TermsOfServiceUpdate),
[0x3334B0F0] = typeof(InputSecureFileUploaded), [0x3334B0F0] = typeof(InputSecureFileUploaded),
[0x5367E5BE] = typeof(InputSecureFile), [0x5367E5BE] = typeof(InputSecureFile),
[0x64199744] = null,//SecureFileEmpty [0x64199744] = null,//SecureFileEmpty
[0xE0277A62] = typeof(SecureFile), [0x7D09C27E] = typeof(SecureFile),
[0x8AEABEC3] = typeof(SecureData), [0x8AEABEC3] = typeof(SecureData),
[0x7D6099DD] = typeof(SecurePlainPhone), [0x7D6099DD] = typeof(SecurePlainPhone),
[0x21EC5A5F] = typeof(SecurePlainEmail), [0x21EC5A5F] = typeof(SecurePlainEmail),
@ -831,7 +833,7 @@ namespace TL
[0xCDC3858C] = typeof(Account_WallPapers), [0xCDC3858C] = typeof(Account_WallPapers),
[0x8A6469C2] = typeof(CodeSettings), [0x8A6469C2] = typeof(CodeSettings),
[0x1DC1BCA4] = typeof(WallPaperSettings), [0x1DC1BCA4] = typeof(WallPaperSettings),
[0xE04232F3] = typeof(AutoDownloadSettings), [0x8EFAB953] = typeof(AutoDownloadSettings),
[0x63CACF26] = typeof(Account_AutoDownloadSettings), [0x63CACF26] = typeof(Account_AutoDownloadSettings),
[0xD5B3B9F9] = typeof(EmojiKeyword), [0xD5B3B9F9] = typeof(EmojiKeyword),
[0x236DF622] = typeof(EmojiKeywordDeleted), [0x236DF622] = typeof(EmojiKeywordDeleted),
@ -870,6 +872,7 @@ namespace TL
[0xF568028A] = typeof(BankCardOpenUrl), [0xF568028A] = typeof(BankCardOpenUrl),
[0x3E24E573] = typeof(Payments_BankCardData), [0x3E24E573] = typeof(Payments_BankCardData),
[0x7438F7E8] = typeof(DialogFilter), [0x7438F7E8] = typeof(DialogFilter),
[0x363293AE] = typeof(DialogFilterDefault),
[0x77744D4A] = typeof(DialogFilterSuggested), [0x77744D4A] = typeof(DialogFilterSuggested),
[0xB637EDAF] = typeof(StatsDateRangeDays), [0xB637EDAF] = typeof(StatsDateRangeDays),
[0xCB43ACDE] = typeof(StatsAbsValueAndPrev), [0xCB43ACDE] = typeof(StatsAbsValueAndPrev),
@ -954,7 +957,7 @@ namespace TL
[0x2DBF3432] = typeof(Phone_GroupCallStreamRtmpUrl), [0x2DBF3432] = typeof(Phone_GroupCallStreamRtmpUrl),
[0x4576F3F0] = typeof(AttachMenuBotIconColor), [0x4576F3F0] = typeof(AttachMenuBotIconColor),
[0xB2A7386B] = typeof(AttachMenuBotIcon), [0xB2A7386B] = typeof(AttachMenuBotIcon),
[0xE93CB772] = typeof(AttachMenuBot), [0xC8AA2CD2] = typeof(AttachMenuBot),
[0xF1D88A5C] = null,//AttachMenuBotsNotModified [0xF1D88A5C] = null,//AttachMenuBotsNotModified
[0x3C4301C0] = typeof(AttachMenuBots), [0x3C4301C0] = typeof(AttachMenuBots),
[0x93BF667F] = typeof(AttachMenuBotsBot), [0x93BF667F] = typeof(AttachMenuBotsBot),
@ -972,6 +975,11 @@ namespace TL
[0xFF6C8049] = typeof(NotificationSoundRingtone), [0xFF6C8049] = typeof(NotificationSoundRingtone),
[0xB7263F6D] = typeof(Account_SavedRingtone), [0xB7263F6D] = typeof(Account_SavedRingtone),
[0x1F307EB7] = typeof(Account_SavedRingtoneConverted), [0x1F307EB7] = typeof(Account_SavedRingtoneConverted),
[0xC5B56859] = typeof(InputInvoiceMessage),
[0xC326CAEF] = typeof(InputInvoiceSlug),
[0xAED0CBD9] = typeof(Payments_ExportedInvoice),
[0x93752C52] = typeof(Messages_TranscribedAudio),
[0x8A4F3C29] = typeof(Help_PremiumPromo),
// from TL.Secret: // from TL.Secret:
[0xBB718624] = typeof(Layer66.SendMessageUploadRoundAction), [0xBB718624] = typeof(Layer66.SendMessageUploadRoundAction),
[0xE50511D8] = typeof(Layer45.DecryptedMessageMediaWebPage), [0xE50511D8] = typeof(Layer45.DecryptedMessageMediaWebPage),